RX 480 AMDGPU 驱动程序无法在 Debian Sid 上加载

RX 480 AMDGPU 驱动程序无法在 Debian Sid 上加载

我最近构建了一台带有 RX480 的 PC,并根据以下内容安装了开源 AMDGPU 驱动程序堆栈本指南。我唯一没有完全遵循的步骤是内核编译——我只是从 Debian 实验存储库下载了 4.7.0rc7 内核。

输出uname -a

Linux Eleanor 4.7.0-rc7-amd64 #1 SMP Debian 4.7~rc7-1~exp1 (2016-07-14) x86_64 GNU/Linux

显卡似乎初始化得很好......

输出dmesg | grep amd

[    0.000000] Linux version 4.7.0-rc7-amd64 ([email protected]) (gcc version 5.4.0 20160609 (Debian 5.4.0-6) ) #1 SMP Debian 4.7~rc7-1~exp1 (2016-07-14)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.7.0-rc7-amd64 root=UUID=3117fb8f-0774-4d8e-97aa-3b8e936eff78 ro quiet
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.7.0-rc7-amd64 root=UUID=3117fb8f-0774-4d8e-97aa-3b8e936eff78 ro quiet
[    2.153126] usb usb1: Manufacturer: Linux 4.7.0-rc7-amd64 ehci_hcd
[    2.165066] usb usb2: Manufacturer: Linux 4.7.0-rc7-amd64 ehci_hcd
[    2.166215] usb usb3: Manufacturer: Linux 4.7.0-rc7-amd64 xhci-hcd
[    2.169419] usb usb4: Manufacturer: Linux 4.7.0-rc7-amd64 xhci-hcd
[    2.170615] usb usb5: Manufacturer: Linux 4.7.0-rc7-amd64 xhci-hcd
[    2.173869] usb usb6: Manufacturer: Linux 4.7.0-rc7-amd64 xhci-hcd
[    2.249402] usb usb7: Manufacturer: Linux 4.7.0-rc7-amd64 ohci_hcd
[    2.309116] usb usb8: Manufacturer: Linux 4.7.0-rc7-amd64 ohci_hcd
[    2.369146] usb usb9: Manufacturer: Linux 4.7.0-rc7-amd64 ohci_hcd
[    3.586002] [drm] amdgpu kernel modesetting enabled.
[    3.596360] amdgpu 0000:01:00.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff
[    3.597447] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_mc.bin
[    3.597459] amdgpu 0000:01:00.0: VRAM: 8192M 0x0000000000000000 - 0x00000001FFFFFFFF (8192M used)
[    3.597460] amdgpu 0000:01:00.0: GTT: 8192M 0x0000000200000000 - 0x00000003FFFFFFFF
[    3.600719] [drm] amdgpu: 8192M of VRAM memory ready
[    3.600720] [drm] amdgpu: 8192M of GTT memory ready.
[    3.602047] amdgpu 0000:01:00.0: amdgpu: using MSI.
[    3.602072] [drm] amdgpu: irq initialized.
[    3.602267] amdgpu: powerplay initialized
[    3.603145] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_pfp.bin
[    3.603623] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_me.bin
[    3.604144] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_ce.bin
[    3.604371] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_rlc.bin
[    3.605133] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_mec.bin
[    3.605991] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_mec2.bin
[    3.606549] amdgpu 0000:01:00.0: fence driver on ring 0 use gpu addr 0x0000000200000008, cpu addr 0xffff8800b7e0f008
[    3.606652] amdgpu 0000:01:00.0: fence driver on ring 1 use gpu addr 0x000000020000001c, cpu addr 0xffff8800b7e0f01c
[    3.606681] amdgpu 0000:01:00.0: fence driver on ring 2 use gpu addr 0x0000000200000030, cpu addr 0xffff8800b7e0f030
[    3.607618] amdgpu 0000:01:00.0: fence driver on ring 3 use gpu addr 0x0000000200000044, cpu addr 0xffff8800b7e0f044
[    3.607885] amdgpu 0000:01:00.0: fence driver on ring 4 use gpu addr 0x0000000200000058, cpu addr 0xffff8800b7e0f058
[    3.607936] amdgpu 0000:01:00.0: fence driver on ring 5 use gpu addr 0x000000020000006c, cpu addr 0xffff8800b7e0f06c
[    3.607959] amdgpu 0000:01:00.0: fence driver on ring 6 use gpu addr 0x0000000200000080, cpu addr 0xffff8800b7e0f080
[    3.607981] amdgpu 0000:01:00.0: fence driver on ring 7 use gpu addr 0x0000000200000094, cpu addr 0xffff8800b7e0f094
[    3.608003] amdgpu 0000:01:00.0: fence driver on ring 8 use gpu addr 0x00000002000000a8, cpu addr 0xffff8800b7e0f0a8
[    3.608401] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_sdma.bin
[    3.610223] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_sdma1.bin
[    3.623985] amdgpu 0000:01:00.0: fence driver on ring 9 use gpu addr 0x00000002000000bc, cpu addr 0xffff8800b7e0f0bc
[    3.624056] amdgpu 0000:01:00.0: fence driver on ring 10 use gpu addr 0x00000002000000d0, cpu addr 0xffff8800b7e0f0d0
[    3.633260] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_uvd.bin
[    3.647029] amdgpu 0000:01:00.0: fence driver on ring 11 use gpu addr 0x000000000109c420, cpu addr 0xffffc9000325a420
[    3.648313] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_vce.bin
[    3.653698] amdgpu 0000:01:00.0: fence driver on ring 12 use gpu addr 0x00000002000000f8, cpu addr 0xffff8800b7e0f0f8
[    3.654283] amdgpu 0000:01:00.0: fence driver on ring 13 use gpu addr 0x000000020000010c, cpu addr 0xffff8800b7e0f10c
[    3.725085] amdgpu 0000:01:00.0: firmware: direct-loading firmware amdgpu/polaris10_smc.bin
[    4.358248] fbcon: amdgpudrmfb (fb0) is primary device
[    4.767814] amdgpu 0000:01:00.0: fb0: amdgpudrmfb frame buffer device
[    4.784116] [drm] Initialized amdgpu 3.2.0 20150101 for 0000:01:00.0 on minor 0

GDM3 成功启动,没有图形错误,而在安装驱动程序之前它甚至无法运行。然而,它滞后可怕地非常明显的是,驱动程序实际上并未完全加载,因为 GNOME 中的动画被禁用,并且桌面环境仍然会像老妇人试图收集她的硬币一样丢帧。让我们看一下启动 GNOME 后 Xorg 日志文件中的错误消息。

输出cat .local/share/xorg/Xorg.0.log | grep "(EE)"

        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[   216.095] (EE) Failed to load module "ati" (module does not exist, 0)
[   216.096] (EE) Failed to load module "fbdev" (module does not exist, 0)
[   216.096] (EE) Failed to load module "vesa" (module does not exist, 0)
[   216.220] (EE) AMDGPU(0): glamor detected, failed to initialize EGL.
[   216.952] (EE) AIGLX error: Calling driver entry point failed
[   216.952] (EE) AIGLX: reverting to software rendering

尽管通过软件渲染器运行,但运行glxgears仍设法输出大量帧,但问题更多是相同的......

输出LIBGL_DEBUG=verbose glxgears

pci id for fd 4: 1002:67df, driver (null)
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/radeonsi_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
pci id for fd 5: 1002:67df, driver (null)
libGL error: failed to create dri screen
libGL error: failed to load driver: radeonsi
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
libGL: Can't open configuration file /home/jessie/.drirc: No such file or directory.
libGL: Can't open configuration file /home/jessie/.drirc: No such file or directory.
5197 frames in 5.0 seconds = 1039.346 FPS

我快速查看了一下以确定,司机确实在场,/usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so所以这不是失踪的问题。glxinfo也会产生相同的错误,尽管我不确定如何处理它的输出。

输出glxinfo | grep OpenGL

pci id for fd 4: 1002:67df, driver (null)
pci id for fd 5: 1002:67df, driver (null)
libGL error: failed to create dri screen
libGL error: failed to load driver: radeonsi
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.8, 128 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 11.2.2
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 11.2.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 11.2.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:

看情况就知道问题所在可能与“AMDGPU(0):检测到魅力,无法初始化 EGL”相关。启动 X 服务器时创建的消息,因为驱动程序在该错误后无法直接加载。但是,我已经查找了该错误,但找不到与我的具体情况相关的任何内容。还提供安装驱动程序的文档和指南难以置信即使不是不存在,也是稀疏的。我只能找到上面一份恰好适用于 Debian 的指南。我想这就是我购买一张基于运行实验驱动程序的全新架构构建的全新卡时所要求的。我已经摆弄了 10 个小时才达到这一点,但我终于被困住了。有谁知道下一步该去哪里,或者问题可能是由什么引起的?

而且,这个安装是完全新鲜的。就像在新安装系统后立即构建并安装驱动程序一样。我之前做的唯一可能造成干扰的事情是尝试从 AMD 网站安装专有驱动程序。我惨遭失败,它几乎不起作用,可能是因为该软件包是针对 Ubuntu 系统的。仅安装了一半的软件包,在无法安装整套软件包后我立即删除了所有软件包。

谢谢。

答案1

软件包中包含缺少的 AMD GPU 固件固件 AMD 显卡。然而,Debian Sid 中当前包含的版本相当旧(20160110-1),并且尚未包含所需的固件。如果你不想等待更新,可以尝试直接从 trunk 拉取最新版本:

http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/polaris10_mc.bin

将文件复制到/lib/固件/amdgpu/

您可能还想安装xserver-xorg-视频-amdgpu用于匹配的 x-server 组件。

相关内容