华硕主板配备 Thunderbolt 4 时出现启动错误 IO_PAGE_FAULT

华硕主板配备 Thunderbolt 4 时出现启动错误 IO_PAGE_FAULT

我最近为我的新电脑配置了 Ubuntu 20.04.3 LTS。这台电脑配有华硕 ProArt B550-Creator 主板和 AMD 5700G CPU。我之所以选择这款主板,是因为它有 2 个 Thunderbolt 4 端口。启动过程需要很长时间(将近 2 分钟!),我注意到启动日志中有几条错误消息可能与此有关:

[   21.554202] thunderbolt 0000:05:00.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0008 address=0xc5c9e400 flags=0x0020]
[   42.034409] thunderbolt 0000:05:00.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0008 address=0xc5c9e500 flags=0x0020]
[   62.514241] thunderbolt 0000:05:00.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0008 address=0xc5c9e600 flags=0x0020]
[   82.990546] thunderbolt 0000:05:00.0: failed to send driver ready to ICM
[   82.990943] thunderbolt: probe of 0000:05:00.0 failed with error -110

为了检查这是否是硬件问题,我还将这台电脑配置为启动 Windows 10,但电脑在 10 秒内启动时没有任何错误,所以我认为这一定是 Ubuntu 的问题。有人能建议我如何追踪这个问题吗?

编辑:根据@galexite的建议,我禁用了“快速启动”,并使用iommu=soft和启动iommu=off。 这两个选项都导致[IO_PAGE_FAULT...]行被替换为[ 82.990461] thunderbolt 0000:05:00.0: failed to send driver ready to ICM [ 82.990774] thunderbolt: probe of 0000:05:00.0 failed with error -110。 (启动时间进一步增加,如果是,则增加iommu=off9 秒……)

答案1

我也遇到了同样的问题,使用的是同样的主板。到目前为止,对我有用的唯一方法是禁用 UEFI 中的 Thunderbolt 支持,这是我通过搜索功能 (F9) 才找到的设置。

一旦禁用,启动时间立即缩短了十倍。不幸的是,这似乎完全禁用了主板上的两个 Thunderbolt 端口,而且我也无法将它们用作常规 USB-C 端口。

我希望这会有所帮助,尽管这显然不是一个真正的修复,而是一个解决方法,如果你不特别需要这些端口的话。

如果我以某种方式让它们在启用 Thunderbolt 支持的情况下工作,我一定会在这里提供更新。

答案2

对于那些仍然感兴趣的人,我找到了一些解决这个问题的方法。

  1. 在加载时将一些雷电设备连接到 PC。它对我的外部 gpu 有帮助。(但产生了一些与雷电无关的其他错误,哈哈)
  2. 替代方案。只是黑名单'thunderbolt' 内核模块用于系统启动。在这种情况下,您仍然可以将 thunderbolt 端口用作 usb 端口和 pci-passthrough 端口(我可以使用外部 gpu)。只需执行以下操作: sudo bash -c "echo blacklist thunderbolt > /etc/modprobe.d/blacklist-thunderbolt.conf" 并且不要忘记更新 initramfs 映像 sudo update-initramfs -uk all 然后重新启动。如果这样不起作用,您也可以尝试使能够强制开启雷电芯片的开机状态sudo bash -c "echo 1 > /sys/bus/wmi/devices/86CCFD48-205E-4A77-9C48-2021CBEDE341/force_power"
  3. 一些奇怪的巫术。您只能从 initramfs 映像中删除 thunderbolt 内核模块。在这种情况下,启动不会因这些错误而延迟(它们仍会出现在后台,但不会干扰您的 GUI)。这里的神奇之处在于,只有在这种情况下,我才能重新加载 thunderbolt 内核模块,以便它在设备连接时正常工作。因此,您必须创建在创建 initrams 映像时删除 thunderbolt.ko 文件的挂钩脚本。 echo $'#!/bin/sh\nfind ${DESTDIR} -name thunderbolt.ko -delete' | sudo tee /etc/initramfs-tools/hooks/handle_thunderbolt然后使其可执行sudo chmod a+x /etc/initramfs-tools/hooks/handle_thunderbolt ,并再次不要忘记更新 initramfs 映像 sudo update-initramfs -uk all ,然后再次重新启动。所以只有在这种情况下,我才能毫无错误地加载 thunderbolt 模块。操作如下:连接设备、移除模块sudo modprobe -r thunderbolt、再次加载模块sudo modprobe thunderbolt。有兴趣的人欢迎解释发生了什么或进一步调查。

相关内容