AMD在发布基于RDNA3架构的新RadeonRX7900GPU时,让Linux用户无法获得强大的图形支持。图形内核很旧,在启动期间没有为用户准备更新的固件。现在,工程师们开始通过新发布的固件更新将注意力转移到对RDNA3的支持上,允许用户在AMDGPU驱动程序崩溃时依赖固件中的帧缓冲区。
AMDLinux图形内核在当前的GPU请求补丁系列中寻求提高效率
AMD工程师MarioLinomciellow致力于当前的补丁,概述并解释了该过程的工作原理以及如何解决该问题。AMD研究员解释说,KMS驱动程序最初通过代码“drm_aperture_remove_conflicting_pci_framebuffers”从系统中破坏固件帧缓冲区。因此,如果显卡未检测到,则在调用KMS驱动程序时用户会收到一个冻结的屏幕,尤其是在引入对GPU的新支持时。这是因为用户必须升级到更新版本的Linux内核以配合最近的更改。
由于“IP发现”的迁移,AMDGPU进一步导致问题成为问题。IP发现导致AMDGPU尝试从公司中拉出所有GPU以寻找正确的驱动程序,如果块中缺少支持,这将减慢(如果不是冻结)系统的速度。
Linomciellow解释了最近的Ubuntu21.10的情况:
完美的例子是Ubuntu21.10和AMD刚刚推出的新dGPU。安装介质随内核5.19(具有IP发现)一起提供,但对这些IP块的amdgpu支持在内核6.0中登陆。配套的Linux固件在21.10发布后发布。
如果没有nomodeset,屏幕将冻结。即使用户设法安装并在安装后升级到内核6.0,他们仍然会遇到缺少固件和相同体验的问题。
这对用户来说是相当不和谐的,特别是如果他们不知道他们必须使用“nomodeset”来安装。为了解决这种情况,允许驱动程序在失败的探测期间重新运行固件帧缓冲区的初始化进程。由于此问题在amdgpu中最为明显,因此这是唯一更改的驱动程序。但如果这对其他KMS驱动程序更普遍,则也可以将调用添加到清理例程中。
Phoronix网站的MichaelLarabel今天发现,图形后端的AMDLinux工程师要求为Linux驱动程序请求RDNA3用户模式图形队列。
希望开始支持RadenRX7000GPU系列及更高版本。这将影响AMDGPULinuxDRM驱动程序,并允许“从用户空间图形上下文直接提交工作负载,这将允许为AMD独有的多个应用程序和游戏以及全屏场景提高性能和增强图形管理。Larabel指出,AMDROCm计算堆栈已经允许类似的功能。