当我启用硬件 IOMMU 并将光盘插入 CD 驱动器时,我的系统将拒绝启动。内核将循环显示以下错误消息:AMD-Vi: Event logged [IO_PAGE_FAULT device=...]
唯一的解决方案似乎是根本不使用光驱或使用内核参数启动iommu=soft
。
不幸的是,我无法找出这个参数到底起什么作用。 kernel.org 上有一个文档,其中包含所有 IOMMU 选项,但它并没有真正解释功能上的变化:AMD64 特定的启动选项
据我了解,iommu=soft 会绕过硬件 IOMMU 或禁用它并使用软件实现。这样对吗?我应该在 BIOS 中禁用硬件 IOMMU 还是保持启用状态?在这种情况下还有其他选择吗?
答案1
在这里我找到了一个更清晰但简单的解释: IOMMU SWIOTLB
正如文章所说:
SWIOTLB 绕过 IOMMU,允许更易于配置的内存管理接口。无需深入研究其工作原理,页表缓存在旁路缓冲区中,从而减少了不断访问物理 RAM 来映射内存的需要。该技术也称为反弹缓冲区,因为内存映射的物理地址保存在此虚拟空间中,并且 I/O 通过此虚拟旁路缓冲区在物理 I/O 和物理内存之间反弹。
这使得内存映射能够快速执行,并且比在 RAM 中物理创建并呈现给系统可用时更快地提供物理内存空间。