[Enhancement] Make it obvious what firmware nouveau is using
Now that many firmware files aren't shipped as part of the linux tree and are playing a bigger and bigger role in the features and reliability of the driver, I believe it is time to start making it abundantly clear which firmware is being used.
I thus propose two things:
- Print in the kernel logs all the firmware loaded, along with their version
- Expose to the userspace which versions of all the firmware loaded as read-only files in sysfs so that drivers like mesa could warn users about the lack of necessary firmware, or apply version-specific workarounds.
For the latter point, we could copy what amdgpu did:
$ ls -l /sys/class/drm/card1/device/fw_version/
total 0
-r--r--r-- 1 root root 4096 Mar 16 16:41 asd_fw_version
-r--r--r-- 1 root root 4096 Mar 16 16:41 ce_fw_version
-r--r--r-- 1 root root 4096 Mar 16 16:41 mec2_fw_version
-r--r--r-- 1 root root 4096 Mar 16 16:41 mec_fw_version
-r--r--r-- 1 root root 4096 Mar 16 16:41 me_fw_version
-r--r--r-- 1 root root 4096 Mar 16 16:41 pfp_fw_version
-r--r--r-- 1 root root 4096 Mar 16 16:41 rlc_fw_version
-r--r--r-- 1 root root 4096 Mar 16 16:41 sdma2_fw_version
-r--r--r-- 1 root root 4096 Mar 16 16:41 sdma_fw_version
-r--r--r-- 1 root root 4096 Mar 16 16:41 smc_fw_version
-r--r--r-- 1 root root 4096 Mar 16 16:41 sos_fw_version
-r--r--r-- 1 root root 4096 Mar 16 16:41 vcn_fw_version
Or maybe we could make it a bit more generic and instead go with the following tree structure that would be more extensible:
$ ls -l firmware/$name/
total 0
-r--r--r-- 1 root root 4096 Mar 16 16:41 version
-r--r--r-- 1 root root 4096 Mar 16 16:41 load_average
-r--r--r-- 1 root root 4096 Mar 16 16:41 interrupts
-r--r--r-- 1 root root 4096 Mar 16 16:41 ...
Thoughts?
Cc: @gfxstrand, @airlied
Edited by Martin Roukala