在不断的折腾下,终于成功在盘古m900上跑起GPU加速了,glmark2 成功认到了 GPU Mali-G52 r1
之前一直尝试折腾闭源驱动,从 rk 的仓库里弄了 mali 用户态的驱动,一直跑不起来,开源驱动也一直没跑起来,直到某天突发奇想,想到了解法
折腾的思路如下: 我们可以拿到盘古m900下能运行的最新版本为 5.4.18,而从 5.2 开始则引入了 Mali GPU 的开源驱动 Panfrost,且非常幸运的是这个 5.4 内核是有启用 Panfrost 模块的,意味着我们完全可以使用 Panfrost 替代闭源模块调用 GPU 于是我一开始尝试手动 modprobe panfrost ,但最后依旧没调起来
但是,在 opensuse 的文档可以了解到,盘古m900对应的 GPU G52 是在 5.10 及以后的内核才支持,但现在只有 5.4 内核且没有内核源码,这也就意味着我们修改内核
那有办法解决吗?在 opensuse 的 wiki 开头提到了个 patch(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=72ef7fe96fd20d3d0e538e165b393819f99870ad ),而这个 patch 的内容及其简单,只是添加了个 compatible,那这就意味着只要有较新的 mesa,原先未受支持的内核版本里的 panfrost 也可以驱动盘古m900,而 GXDE 是基于 Debian13 做的,mesa 版本是支持的,所以我们可以尝试用此方法驱动 gpu
现在就遇到了新的问题,我们没有内核源码,不能手动合并这个 patch 怎么办?我们可以注意到 /sys/firmware/fdt 文件是存在的,那就可以意味着我们可以提取到设备树来绕过这个问题
设备树和 /sys/firmware/fdt 是什么,这里就让 ai 解释下吧 设备树简单说就是一份 “硬件清单”。系统内核启动时看不懂五花八门的硬件,所以需要这张清单来告诉它:“板子上接了哪些设备、地址在哪、怎么用”。它专门解决 ARM 等嵌入式平台硬件不统一的问题。
/sys/firmware/fdt 它是这份“硬件清单”在系统运行时的 “原始备份”。内核开机时吃了什么数据,就把原始数据原样复制一份存到这个路径里。
于是我们尝试提取设备树,并反编译得到源文件 dts
sudo dtc -I dtb -O dts /sys/firmware/fdt > pangum900.dts # 需要 root 权限
然后用文本编辑器查找 gpu 相关字段,然后你会发现这个字段
和前面 patch 的地方有些关联,查询资料可知,只有在设备 compatible 字段与源码 panfrost 字段一致时,才会启用 panfrost 所以我们很容易想到,我们可以修改设备树里的这个字段到 panfrost 清单里有的 然后我们浏览 5.4.18 源码 drivers/gpu/drm/panfrost/panfrost_drv.c 文件(https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/gpu/drm/panfrost/panfrost_drv.c?h=v5.4.18 )的相关源码,可以看到支持的 compatible 于是我们将设备树里的 compatible 改成相关设备即可,然后编译回 dtb 即可
drivers/gpu/drm/panfrost/panfrost_drv.c
然后怎么调用设备树呢?这个机器是有 uefi + grub 的,所以我们只需要在 grub 里点 e 参考下面添加 devicetree 条目即可(dtb 文件推荐复制到 /boot 目录方便调用),如想以后都这样可以修改 grub.cfg
linux /boot/vmlinuz-5.4.18-hw15-pangu root=UUID=19a2ef24-1772-44f2-8f6c-da65d6bdfa44 ro quiet splash resume=UUID=f03d355e-4360-46bf-8208-29c0d6eaf034 DEEPIN_GFXMODE=$DEEPIN_GFXMODE console=tty devicetree /boot/dtb-5.4.18-hw15-pangu initrd /boot/initrd.img-5.4.18-hw15-pangu
但是,你现在进系统你会发现还是不认 gpu,怎么办,用 lsmod 你会发现 panfrost 并没有驱动起来,所以我们可以尝试禁用原先闭源 mali 驱动然后设置自动开启 panfrost 驱动,所以我们这么改
/etc/modules-load.d/ 下新建个配置文件,内容为 panfrost 自动启用 panfrost 模块 /etc/modprobe.d/ 下新建个配置文件,内容为 blacklist mali_kbase 禁用闭源 mali 驱动 然后输入命令并重启机器加载调好的设备树,应该就能正常驱动起来了
panfrost
blacklist mali_kbase
sudo update-initramfs -u
glmark2 也可以认到 GPU 了 chrome 也可正常硬解了 (桌面环境推荐搭配 Wayland 使用,会比 x11 流畅很多)
哎,马良GPU就没那么幸运了...
仅做技术分享,侵删
能不能给ARM电视盒子做个适配,比如E900V22C,它刷入armbian后有一个安装deepin的选项,但我从来没成功过
Featured Collection
Popular Ranking
Popular Events
在不断的折腾下,终于成功在盘古m900上跑起GPU加速了,glmark2 成功认到了 GPU Mali-G52 r1

之前一直尝试折腾闭源驱动,从 rk 的仓库里弄了 mali 用户态的驱动,一直跑不起来,开源驱动也一直没跑起来,直到某天突发奇想,想到了解法
折腾的思路如下:
我们可以拿到盘古m900下能运行的最新版本为 5.4.18,而从 5.2 开始则引入了 Mali GPU 的开源驱动 Panfrost,且非常幸运的是这个 5.4 内核是有启用 Panfrost 模块的,意味着我们完全可以使用 Panfrost 替代闭源模块调用 GPU
于是我一开始尝试手动 modprobe panfrost ,但最后依旧没调起来
但是,在 opensuse 的文档可以了解到,盘古m900对应的 GPU G52 是在 5.10 及以后的内核才支持,但现在只有 5.4 内核且没有内核源码,这也就意味着我们修改内核
那有办法解决吗?在 opensuse 的 wiki 开头提到了个 patch(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=72ef7fe96fd20d3d0e538e165b393819f99870ad ),而这个 patch 的内容及其简单,只是添加了个 compatible,那这就意味着只要有较新的 mesa,原先未受支持的内核版本里的 panfrost 也可以驱动盘古m900,而 GXDE 是基于 Debian13 做的,mesa 版本是支持的,所以我们可以尝试用此方法驱动 gpu
现在就遇到了新的问题,我们没有内核源码,不能手动合并这个 patch 怎么办?我们可以注意到 /sys/firmware/fdt 文件是存在的,那就可以意味着我们可以提取到设备树来绕过这个问题
于是我们尝试提取设备树,并反编译得到源文件 dts
然后用文本编辑器查找 gpu 相关字段,然后你会发现这个字段
和前面 patch 的地方有些关联,查询资料可知,只有在设备 compatible 字段与源码 panfrost 字段一致时,才会启用 panfrost
所以我们很容易想到,我们可以修改设备树里的这个字段到 panfrost 清单里有的
然后我们浏览 5.4.18 源码
drivers/gpu/drm/panfrost/panfrost_drv.c文件(https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/gpu/drm/panfrost/panfrost_drv.c?h=v5.4.18 )的相关源码,可以看到支持的 compatible于是我们将设备树里的 compatible 改成相关设备即可,然后编译回 dtb 即可
然后怎么调用设备树呢?这个机器是有 uefi + grub 的,所以我们只需要在 grub 里点 e 参考下面添加 devicetree 条目即可(dtb 文件推荐复制到 /boot 目录方便调用),如想以后都这样可以修改 grub.cfg
但是,你现在进系统你会发现还是不认 gpu,怎么办,用 lsmod 你会发现 panfrost 并没有驱动起来,所以我们可以尝试禁用原先闭源 mali 驱动然后设置自动开启 panfrost 驱动,所以我们这么改
/etc/modules-load.d/ 下新建个配置文件,内容为
panfrost自动启用 panfrost 模块/etc/modprobe.d/ 下新建个配置文件,内容为
blacklist mali_kbase禁用闭源 mali 驱动然后输入命令并重启机器加载调好的设备树,应该就能正常驱动起来了
glmark2 也可以认到 GPU 了

chrome 也可正常硬解了
(桌面环境推荐搭配 Wayland 使用,会比 x11 流畅很多)