AMDGPU 驱动程序显然未加载固件

AMDGPU 驱动程序显然未加载固件

我有一个 RX 580 (Polaris 10 GPU),用于我的 Gentoo 系统。我构建了自己的内核,这与 Gentoo 完全一样。我没有使用任何 initramfs,但内核在启动过程中加载 amdgpu 模块。

AMDGPU 驱动程序似乎没有加载任何固件。我使用以下选项构建了内核:

CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_CIK=y
CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
CONFIG_EXTRA_FIRMWARE="intel-ucode/06-2d-07 radeon/tahiti_ce.bin radeon/tahiti_mc.bin radeon/tahiti_me.bin radeon/tahiti_pfp.bin radeon/tahiti_rlc.bin radeon/tahiti_smc.bin radeon/TAHITI_uvd.bin amdgpu/polaris10_ce.bin amdgpu/polaris10_ce_2.bin amdgpu/polaris10_k_smc.bin amdgpu/polaris10_k2_smc.bin amdgpu/polaris10_k_mc.bin amdgpu/polaris10_mc.bin amdgpu/polaris10_me.bin amdgpu/polaris10_me_2.bin amdgpu/polaris10_mec2.bin amdgpu/polaris10_mec2_2.bin amdgpu/polaris10_mec.bin amdgpu/polaris10_mec_2.bin amdgpu/polaris10_pfp.bin amdgpu/polaris10_pfp_2.bin amdgpu/polaris10_rlc.bin amdgpu/polaris10_sdma1.bin amdgpu/polaris10_sdma.bin amdgpu/polaris10_smc.bin amdgpu/polaris10_smc_sk.bin amdgpu/polaris10_uvd.bin amdgpu/polaris10_vce.bin"

固件配置还包括我的 CPU 的固件(加载良好)以及我旧的基于 Tahiti 的 GPU。我已验证指定的所有 Polaris 固件均位于 /lib/firmware/amdgpu 目录中,并且该目录中的所有 Polaris 固件均列在内核配置中。

但我在 dmesg 中没有看到任何固件已加载或加载失败的消息。 环顾四周我似乎找到了固件应该有加载消息的示例,但我没有这些消息,例如:

[    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

但我没有这样的消息,至少对于 GPU 来说是这样。 (CPU 微码加载正常)。

好奇的是,问题的根源在于该卡存在 VFIO 重置错误。众所周知,RX 580 对此很挑剔,但我希望获取更新的固件可能会有所帮助。该卡工作得很好,足以在 Linux 中显示内容,所以我知道基本的驱动程序功能很好。

“modinfo -Ffirmware amdgpu”会产生大量输出,包括针对 amdgpu 驱动程序支持的每个 GPU 的全部 21 个固件 blob,以及数百个其他 blob。

以下是“dmesg | grep -e amdgpu -e drm”的输出

[    7.253557] [drm] amdgpu kernel modesetting enabled.
[    7.253688] amdgpu 0000:01:00.0: remove_conflicting_pci_framebuffers: bar 0: 0xc0000000 -> 0xcfffffff
[    7.253689] amdgpu 0000:01:00.0: remove_conflicting_pci_framebuffers: bar 2: 0xd0000000 -> 0xd01fffff
[    7.253690] amdgpu 0000:01:00.0: remove_conflicting_pci_framebuffers: bar 5: 0xfbe00000 -> 0xfbe3ffff
[    7.253692] amdgpu 0000:01:00.0: vgaarb: deactivate vga console
[    7.254864] [drm] initializing kernel modesetting (POLARIS10 0x1002:0x67DF 0x1043:0x0519 0xE7).
[    7.254871] [drm] register mmio base: 0xFBE00000
[    7.254872] [drm] register mmio size: 262144
[    7.254874] [drm] PCIE atomic ops is not supported
[    7.254877] [drm] add ip block number 0 <vi_common>
[    7.254878] [drm] add ip block number 1 <gmc_v8_0>
[    7.254878] [drm] add ip block number 2 <tonga_ih>
[    7.254878] [drm] add ip block number 3 <gfx_v8_0>
[    7.254879] [drm] add ip block number 4 <sdma_v3_0>
[    7.254879] [drm] add ip block number 5 <powerplay>
[    7.254880] [drm] add ip block number 6 <dm>
[    7.254880] [drm] add ip block number 7 <uvd_v6_0>
[    7.254881] [drm] add ip block number 8 <vce_v3_0>
[    7.255067] amdgpu 0000:01:00.0: No more image in the PCI ROM
[    7.255095] [drm] UVD is enabled in VM mode
[    7.255096] [drm] UVD ENC is enabled in VM mode
[    7.255097] [drm] VCE enabled in VM mode
[    7.255116] [drm] vm size is 128 GB, 2 levels, block size is 10-bit, fragment size is 9-bit
[    7.255124] amdgpu 0000:01:00.0: VRAM: 8192M 0x000000F400000000 - 0x000000F5FFFFFFFF (8192M used)
[    7.255125] amdgpu 0000:01:00.0: GART: 256M 0x000000FF00000000 - 0x000000FF0FFFFFFF
[    7.255127] [drm] Detected VRAM RAM=8192M, BAR=256M
[    7.255128] [drm] RAM width 256bits GDDR5
[    7.255374] [drm] amdgpu: 8192M of VRAM memory ready
[    7.255376] [drm] amdgpu: 8192M of GTT memory ready.
[    7.255391] [drm] GART: num cpu pages 65536, num gpu pages 65536
[    7.256003] [drm] PCIE GART of 256M enabled (table at 0x000000F400900000).
[    7.256064] [drm] Chained IB support enabled!
[    7.256820] amdgpu: [powerplay] hwmgr_sw_init smu backed is polaris10_smu
[    7.256827] [drm] Found UVD firmware Version: 1.130 Family ID: 16
[    7.257311] [drm] Found VCE firmware Version: 53.26 Binary ID: 3
[    7.312157] [drm] DM_PPLIB: values for Engine clock
[    7.312158] [drm] DM_PPLIB:   300000
[    7.312158] [drm] DM_PPLIB:   751000
[    7.312159] [drm] DM_PPLIB:   1048000
[    7.312159] [drm] DM_PPLIB:   1158000
[    7.312159] [drm] DM_PPLIB:   1240000
[    7.312160] [drm] DM_PPLIB:   1309000
[    7.312160] [drm] DM_PPLIB:   1364000
[    7.312160] [drm] DM_PPLIB:   1411000
[    7.312161] [drm] DM_PPLIB: Validation clocks:
[    7.312161] [drm] DM_PPLIB:    engine_max_clock: 141100
[    7.312162] [drm] DM_PPLIB:    memory_max_clock: 200000
[    7.312162] [drm] DM_PPLIB:    level           : 8
[    7.312163] [drm] DM_PPLIB: values for Memory clock
[    7.312163] [drm] DM_PPLIB:   300000
[    7.312164] [drm] DM_PPLIB:   1000000
[    7.312164] [drm] DM_PPLIB:   2000000
[    7.312164] [drm] DM_PPLIB: Validation clocks:
[    7.312165] [drm] DM_PPLIB:    engine_max_clock: 141100
[    7.312165] [drm] DM_PPLIB:    memory_max_clock: 200000
[    7.312165] [drm] DM_PPLIB:    level           : 8
[    7.312575] [drm] Display Core initialized with v3.2.35!
[    7.347039] [drm] SADs count is: -2, don't need to read it
[    7.397092] [drm] SADs count is: -2, don't need to read it
[    7.458278] amdgpu 0000:01:00.0: DVI-D-1: EDID is invalid:
[    7.458288] [drm] SADs count is: -2, don't need to read it
[    7.458297] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    7.458297] [drm] Driver supports precise vblank timestamp query.
[    7.484629] [drm] UVD and UVD ENC initialized successfully.
[    7.585582] [drm] VCE initialized successfully.
[    7.587422] [drm] fb mappable at 0xC0E30000
[    7.587423] [drm] vram apper at 0xC0000000
[    7.587423] [drm] size 1228800
[    7.587424] [drm] fb depth is 24
[    7.587424] [drm]    pitch is 2560
[    7.587478] fbcon: amdgpudrmfb (fb0) is primary device
[    7.634376] amdgpu 0000:01:00.0: fb0: amdgpudrmfb frame buffer device
[    7.635745] [drm] Initialized amdgpu 3.33.0 20150101 for 0000:01:00.0 on minor 0

相关内容