问题背景
在调试一块板卡时发现 GPU 驱动存在异常。当时通过 GST 播放视频,想查看 GPU 占用率,却发现按照 RK 系列通常的查询方法无法获取(设备节点不存在),由此怀疑 GPU 驱动未正常加载。
检查方法
方法一:查看启动信息
通过dmesg
命令过滤 GPU 相关日志,判断驱动加载状态:
dmesg | grep gpu
- 正常状态输出示例:
[ 5.136204] panfrost ff9a0000.gpu: clock rate = 500000000
[ 5.144160] panfrost ff9a0000.gpu: mali-t860 id 0x860 major 0x2 minor 0x0 status 0x0
[ 5.152968] panfrost ff9a0000.gpu: features: 00000000,00000407, issues: 00000000,24040400
[ 5.162213] panfrost ff9a0000.gpu: Features: L2:0x07120206 Shader:0x00000000 Tiler:0x00000809 Mem:0x1 MMU:0x00002830 AS:0xff JS:0x7
[ 5.175546] panfrost ff9a0000.gpu: shader_present=0xf l2_present=0x1
[ 5.187126] [drm] Initialized panfrost 1.2.0 20180908 for ff9a0000.gpu on minor 
- 异常状态输出示例:
[ 6.440454] vdd_gpu_s0: supplied by vcc_sys
[ 6.444184] vdd_gpu_s0: 550 <--> 900 mV at 750 mV at 3000 mA, enabled
[ 7.243266] rockchip-pm-domain 27380000.power-management:power-controller: Looking up gpu-supply from device tree
[ 7.243308] rockchip-pm-domain 27380000.power-management:power-controller: Looking up gpu-supply property in node /power-management@27380000/power-controller failed
[ 7.243381] mali 27800000.gpu: Kernel DDK version g25p0-00eac0
[ 7.243400] mali 27800000.gpu: error -ENXIO: IRQ JOB not found
[ 7.243512] mali 27800000.gpu: error -ENXIO: IRQ MMU not found
[ 7.243544] mali 27800000.gpu: error -ENXIO: IRQ GPU not found
[ 7.243571] mali 27800000.gpu: Insufficient register space, will override to the required size
[ 7.243579] mali 27800000.gpu: Register window unavailable
[ 7.243583] mali 27800000.gpu: Failed to map registers
[ 7.243587] mali 27800000.gpu: Register map failed error = -5
[ 7.243592] mali 27800000.gpu: Device initialization failed
[ 7.243619] mali: probe of 27800000.gpu failed with error -5
[ 11.249438] panfrost 27800000.gpu: clock rate = 198000000
[ 11.249602] panfrost 27800000.gpu: Looking up mali-supply from device tree
[ 11.254671] panfrost 27800000.gpu: EM: OPP:600000 is inefficient
[ 11.254682] panfrost 27800000.gpu: EM: OPP:500000 is inefficient
[ 11.254687] panfrost 27800000.gpu: EM: OPP:400000 is inefficient
[ 11.254691] panfrost 27800000.gpu: EM: OPP:300000 is inefficient
[ 11.254836] panfrost 27800000.gpu: EM: created perf domain
[ 11.255212] panfrost 27800000.gpu: mali-g52 id 0x7402 major 0x1 minor 0x0 status 0x0
[ 11.255224] panfrost 27800000.gpu: features: 00000000,00000cf7, issues: 00000000,00000400
[ 11.255230] panfrost 27800000.gpu: Features: L2:0x07120206 Shader:0x00000002 Tiler:0x00000209 Mem:0x1 MMU:0x00002823 AS:0xff JS:0x7
[ 11.255236] panfrost 27800000.gpu: shader_present=0x7 l2_present=0x1
[ 11.292217] [drm] Initialized panfrost 1.2.0 20180908 for 27800000.gpu on minor 2
方法二:检查中断状态
GPU 正常工作时会频繁产生中断,若中断数量为 0 则说明工作异常:
cat /proc/interrupts
方法三:OpenGL/OpenGLES 支持检测
前置准备
安装检测工具:
sudo apt install mesa-utils libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev
注意事项
- 必须在桌面环境的终端中执行检测命令,不可通过 SSH 或串口终端,否则会始终显示
llvmpipe
(CPU 模拟模式)。
分驱动类型检测
- RK 官方驱动(支持 OpenGLES):
es2_info | grep GL_RENDERER
-
正常:输出包含
mali
(GPU 硬件加速) -
异常:输出
llvmpipe
(CPU 模拟)
- 社区开源驱动 Panfrost(支持 OpenGL):
glxinfo -B | grep renderer
-
正常:输出包含
mali
(GPU 硬件加速) -
异常:输出
llvmpipe
(CPU 模拟)
补充说明
- 社区开源驱动 Panfrost 的跑分表现通常优于官方驱动。
参考文章
-
《香橙派 5 rk3588/rk3588s benchmark sbc bench 性能测试 OpenGL 跑分基于香橙派 5 plus》
https://www.bilibili.com/opus/746803008049774646?spm_id_from=333.1387.0.0
-
《Rockchip RK3399 - Mali-T860 GPU 驱动(mesa+Panfrost)》
https://www.cnblogs.com/zyly/p/17459196.html