Ubuntu 24.04 DMAR IOMMU 报错修复

📝 问题处理笔记:Ubuntu 24.04 DMAR IOMMU 报错修复

1️⃣ 现象描述

  • 系统:Ubuntu 24.04.3 LTS(内核 6.8)
  • 硬件:Dell 服务器,板载 Intel X722 万兆网卡(PCI 地址 3d:00.0,驱动 i40e
  • 启动/运行时持续输出内核日志报错:
    DMAR: DRHD: handling fault status reg
    DMAR: [DMA Write NO_PASID] fault addr ...
    Request device [3d:00.0] fault reason 0xff (Unknown)
    
  • 系统虽能进入登录界面,但报错频繁,影响观感且可能造成性能损耗。

2️⃣ 根因分析

  • IOMMU(VT-d)与 Intel X722 网卡驱动(i40e)存在兼容性问题,导致网卡发起的 DMA 写操作被 IOMMU 拦截并报告未知错误(fault reason 0xff)。
  • 该问题常见于较新内核(6.8)搭配旧版固件/驱动,属于软件兼容性冲突,非硬件故障

3️⃣ 解决方案

通过修改 GRUB 启动参数,将 IOMMU 设置为直通模式(passthrough),避免不必要的 DMA 重映射检查。

操作步骤

  1. 编辑 GRUB 配置文件:
    sudo nano /etc/default/grub
    
  2. 找到 GRUB_CMDLINE_LINUX_DEFAULT 行,修改为:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=off iommu=pt"
    

    参数解释

    • intel_iommu=off :关闭 Intel IOMMU(保持关闭)
    • iommu=pt :将 IOMMU 设置为直通模式,允许设备绕过 IOMMU 的重映射检查,直接进行 DMA 操作
  3. 保存退出(Ctrl+O → 回车 → Ctrl+X)。
  4. 更新 GRUB 配置并重启:
    sudo update-grub
    sudo reboot
    

备选方案(若直通模式仍无效)

  • 完全禁用 IOMMU:intel_iommu=off
  • 或仅禁用集成显卡 IOMMU:intel_iommu=igfx_off

4️⃣ 验证结果

  • 重启后系统正常运行,DMAR 报错消失(可通过 dmesg | grep DMAR 确认)。
  • 网络功能正常,网卡工作稳定。
  • 无需更换硬件或额外安装驱动。

5️⃣ 注意事项

  • 该修改适用于不需要 IOMMU 严格隔离的场景(如普通服务器、NAS、Web 服务等)。如果后续需要使用 PCI 直通(Passthrough)给虚拟机,建议保留 intel_iommu=on 并尝试更新网卡固件/驱动来彻底解决兼容性问题。
  • 若需回退,只需删除 /etc/default/grub 中添加的参数,重新 update-grub 并重启即可。

6️⃣ 参考资料

posted @ 2026-08-14 19:37  Hey,Coder!  阅读(14)  评论(0)    收藏  举报