您好,
我们希望在 IMX95 SoC 上使用具有 PCI 直通功能的虚拟机。这似乎完全不可能,因为 SMMU 不是缓存一致的,而 vfio_pci 驱动程序需要缓存一致性。参见:
https://community.nxp.com/t5/i-MX-Processors/i-MX95-19x19-EVK-SMMU-coherent-table-walks-IDR0-COHACC-...
和
https://github.com/NXP/dpdk/blob/25.11-qoriq/nxp/README_imx95_enetc_vf_vfio#L32
禁用 IOMMU 不是一个可行的方案。另外,我怀疑这样做是否会有帮助,因为内核参数是这样写的:
MODULE_PARM_DESC(enable_unsafe_noiommu_mode, "启用不安全、无 IOMMU 模式。此模式不提供设备隔离、DMA 转换、主机内核保护,不能用于将设备分配给虚拟机,需要 RAWIO 权限,并且会污染内核。如果你不知道这是做什么用的,请远离。(默认值:false)");
能否确认一下,是否真的无法将 IMX95 SoC 与(安全的)PCI 直通一起使用?如果不是,那我到底漏掉了什么?
此致,
-迈克尔
您好,
感谢您的快速回复。但我不太确定我是否完全理解了。为了确保万无一失,我们不想使用 DPDK,而是使用通用的 qemu/kvm 虚拟机,并在其中传递 PCI 设备。这与 uio-pci-generic 框架有何关系?
谢谢,
-迈克尔
您好,
感谢您对恩智浦半导体产品的关注,
在这种情况下,你需要采纳我同事的回复,也就是 DPDK 团队的回复。唯一的替代方案就是回复中提到的那个:
“如果客户希望将 SMMU 用于其他用例,但可以接受绕过 DPDK(不想在 bootargs 中使用 iommu.passthrough=1 或在 dts 中禁用 SMMU 节点)。
然后可以尝试绑定 uio-pci-generic 框架并禁用 VSI-PSI 消息传递(export ENETC4_VSI_MSG_DISABLE=1)。但是禁用 VSI-PSI 消息意味着用户将无法使用某些 ENETC 功能,例如混杂模式、VLAN MAC 过滤和链路信息。
此致