GPU Firmware
1 | UVD feature version: 0, firmware version: 0x40000d00 |
现代 GPU/NPU 芯片里一般都会搭载多个微处理器(或微控制器), 像 Intel GuC (uC 指 µC, micro controller), AMD MEC(MicroEngine Compute), NVIDIA GSP (GPU System Processor)。跑在这些微控制器上的代码一般以**固件 (Firmware)**的形式存在,即使是在 Linux 内核里也是二进制格式,源代码一般是不公开的,Linux 社区有一个专门的 git tree linux-firmware 来维护各种硬件的固件二进制文件,而这些 bin 文件在 Linux 系统中会存储在文件系统, 路径一般是 /lib/firmware/
。
例如,在一个 5.4.18-85-generic 的 Linux 发行版系统中, amdgpu 和 radeon 的 gpu ip 固件 bin 文件就分别有 469, 247 个
1 | for dir in amdgpu radeon; do ls /lib/firmware/$dir | wc; done |
而且 KMD 也提供 sys 文件系统接口允许用户查看固件信息 (需要 root 权限), 例如,在 AMD R7340 显卡机器上输出本文开头的固件信息
1 | cat /sys/kernel/debug/dri/0/amdgpu_firmware_info | grep -v 'firmware version: 0x00000000' |