在我的 Lenovo Ideapad 320(最新可用 BIOS)上启动 Debian bullseye 时,5.9.0-1-amd64 #1 SMP Debian 5.9.1-1 (2020-10-17) x86_64 GNU/Linux
我收到那些固件错误,抱怨 IVRS 表中缺少 IOAPIC 条目。
请注意以下详细输出amd_iommu_dump=1
来自这个类似的问题
[ 0.242293] AMD-Vi: Using IVHD type 0x11
[ 0.243158] AMD-Vi: device: 00:00.2 cap: 0040 seg: 0 flags: b8 info 0000
[ 0.243159] AMD-Vi: mmio-addr: 00000000feb80000
[ 0.243184] AMD-Vi: DEV_SELECT_RANGE_START devid: 00:01.0 flags: 00
[ 0.243186] AMD-Vi: DEV_RANGE_END devid: ff:1f.6
[ 0.243857] AMD-Vi: DEV_ALIAS_RANGE devid: ff:00.0 flags: 00 devid_to: 00:14.4
[ 0.243858] AMD-Vi: DEV_RANGE_END devid: ff:1f.7
[ 0.243863] AMD-Vi: DEV_SPECIAL(HPET[0]) devid: 00:14.0
[ 0.243904] AMD-Vi: [Firmware Bug]: : IOAPIC[4] not in IVRS table
[ 0.243910] AMD-Vi: [Firmware Bug]: : IOAPIC[5] not in IVRS table
[ 0.243912] AMD-Vi: [Firmware Bug]: : No southbridge IOAPIC found
[ 0.243913] AMD-Vi: Disabling interrupt remapping
以下是我们感兴趣的设备:
$ lspci -nn | egrep "SMBus | IOMMU"
00:00.2 IOMMU [0806]: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 60h-6fh) I/O Memory Management Unit [1022:1577]
00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b] (rev 4a)
现在,在启动系统时ivrs_ioapic[4]=00:14.0 ivrs_ioapic[5]=00:02.0
向内核命令行添加内容似乎有效,直到 X 尝试启动。屏幕保持黑色(只有静态光标在屏幕的上角可见),内核消息如下:
$ journalctl -p err -b -1
kernel: pci 0000:00:14.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0000 address=0xfdf800ff98 flags=0x0008]
kernel: kfd kfd: TOPAZ not supported in kfd
kernel: iommu ivhd0: AMD-Vi: Event logged [INVALID_DEVICE_REQUEST device=00:00.1 pasid=0x00000 address=0xfdf8160020 flags>
kernel: rcu: INFO: rcu_sched self-detected stall on CPU
kernel: rcu: 3-....: (20999 ticks this GP) idle=d6e/1/0x4000000000000000 softirq=5416/5416 fqs=5246
kernel: rcu: INFO: rcu_sched detected expedited stalls on CPUs/tasks: { 3-... } 21442 jiffies s: 125 root: 0x8/.
kernel: rcu: blocking rcu_node structures:
kernel: watchdog: BUG: soft lockup - CPU#3 stuck for 22s! [pipewire-media-:993]
kernel: watchdog: BUG: soft lockup - CPU#3 stuck for 22s! [pipewire-media-:993]
kernel: rcu: INFO: rcu_sched self-detected stall on CPU
kernel: rcu: 3-....: (84002 ticks this GP) idle=d6e/1/0x4000000000000000 softirq=5416/5416 fqs=20988
kernel: rcu: INFO: rcu_sched detected expedited stalls on CPUs/tasks: { 3-... } 87490 jiffies s: 125 root: 0x8/.
kernel: rcu: blocking rcu_node structures:
我也尝试使用 VGA_SWITCHEROO=N 重新编译内核,如这个内核错误报告,但没有变化。
我还注意到有问题的参数似乎是ivrs_ioapic[5]=00:02.0
。事实上,如果我只使用固件启动系统,ivrs_ioapic[4]=00:14.0
错误消息就会消失,桌面也会按预期启动。