设置或复制现有Ubuntu 22.04或24.04系统时,可能会显示运行时故障消息。

症状

由于这种情况会影响整个驱动程序功能,驱动程序可能会返回各种错误消息,包括关于内部错误或硬件故障的消息。例如:

The device could not be calibrated.
Status Code: -50152
A hardware failure has occurred. The operation could note be completed as specified.

受影响的发行版和内核

该问题已在下列系统中出现多次:

  • Ubuntu 22.04.04 HWE (kernel 6.8.0-40-generic)
  • Ubuntu 24.04.01 (kernel 6.8.0-40-generic)

您可以使用以下命令检查内核版本:uname -r

确认问题

使用以下两种方法之一来确定PC是否存在该问题。

  • 在系统日志中查找未设置PTE读取权限内核消息:
    1. 打开新的接线端窗口。
    2. 输入以下命令:

      journalctl -k | grep -i NO_PASID

    3. 查找与此范例类似的日志条目:
      Sep 09 14:00:10 my_test_machine kernel: DMAR: [DMA Read NO_PASID] Request device 
      [03:00.0] fault addr 0x1166b8000 [fault reason 0x06] PTE Read access is not set
    4. 将时间标识关联到上一个故障。

    如需检查上次重启前是否发生类似错误,请改用以下命令:

    journalctl | grep -i NO_PASID

  • 查找指定IOMMU默认域类型为已翻译的内核消息:
    1. 打开新的接线端窗口。
    2. 输入命令:

      journalctl -k | grep -i IOMMU

    3. 查找与此范例类似的日志条目:
      [ 0.262686] iommu: Default domain type: Translated

解决方案

推荐的解决方案是使用以下步骤将IOMMU默认域类型配置为直通模式。

下面将编辑GRUB配置文件。NI强烈建议先创建该文件的副本,然后再编辑。如文件包含错误数据,计算机可能无法启动。

下列过程不包含为GRUB配置文件创建副本的步骤。修改配置之前,请创建现有配置文件的备份副本。开始之前,请先阅读完整的流程。

  1. 编辑GRUB配置文件:
    1. 打开接线端窗口。
    2. 在命令提示符中,输入以下命令,以在VI编辑器中打开文件:

      sudo vi /etc/default/grub

    3. 在出现提示时输入用户密码。
    4. 将光标移至指定变量的行。

      GRUB_CMDLINE_LINUX_DEFAULT

    5. 按<i>键,使VI编辑器进入插入模式。
    6. 添加命令“ iommu=pt”。

      例如:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iommu=pt"

      注: 不要修改或删除现有的变量定义文本。在上例所示位置添加该命令。
    7. 按<Esc>键,使VI编辑器返回命令模式。
    8. 保存GRUB配置文件并使用:wq命令退出VI编辑器
  2. 在接线端窗口中,输入以下命令,重新生成GRUB配置文件:

    sudo update-grub

  3. 重启系统。
  4. 确认GRUB配置已正确更新,且IOMMU默认域类型已配置为直通模式。
    1. 打开新的接线端窗口。
    2. 输入命令:

      journalctl -k | grep -i IOMMU

    3. 查找与此范例类似的日志条目:
      [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.8.0-41-generic root=UUID=d27287cc-623b-4c29-93ec-23a5eb00177a ro quiet splash iommu=pt vt.handoff=7 
      ...
      [ 0.261029] iommu: Default domain type: Passthrough (set via kernel command line)
注: 如使用的是Ubuntu 22.04,则可安装Kernel 6.5作为推荐解决方案的替代方案。