一个 IOMMU 组中的多个 PCIe 设备可以分别添加到不同的 KVM VM 吗?

一个 IOMMU 组中的多个 PCIe 设备可以分别添加到不同的 KVM VM 吗?

我想知道一个 IOMMU 组中的多个 PCIe 设备是否可以分别添加到不同的 KVM VM?

我收到了失败消息,例如“卡 1 被 VM1 使用,卡 2 在卡 1 的组中并添加到 VM2,因此 VM2 无法启动”

我尝试过 vfio 驱动程序,但没有用,我该怎么办?试试 SR-IOV?还是更新 KVM-QEMU 或更新内核?

主板:ASUS 390-A(英特尔支持 VT-D) 主机操作系统:Ubuntu 18.04,内核 4.18.0-15 KVM-QEMU:版本 2.11.1

答案1

总结:你不应该,但可以尝试伪造/强制系统进入

将设备放在同一组中是您想要实现的用例所用的硬件/固件的不足之处。使用不同卡的访客可以有效地读取/写入彼此的内存(实际上更复杂,但简化得很好)。这绝对不是您想要从虚拟化中获得的。

有一些非上游接受的补丁可以帮助您伪造/强制拆分其中一些 IOMMU 组。但实际上 - 请阅读它的作用并了解相关风险维护者在这里

如果你真的想要你可以考虑使用补丁编译自己的内核然后使用这些启动参数来帮助(假)拆分设备:

pcie_acs_override=downstream,multifunction

如果您有多个 PCIe 插槽,移动卡是实现相同目的的更好(且更安全)的方法。

相关内容