Hi,
we want to use a virtual machine with PCI passthrough on the IMX95 SoC. It seems that this isn't possible at all because the SMMU is not cache coherent and the vfio_pci driver requires that. See also:
https://community.nxp.com/t5/i-MX-Processors/i-MX95-19x19-EVK-SMMU-coherent-table-walks-IDR0-COHACC-...
and
https://github.com/NXP/dpdk/blob/25.11-qoriq/nxp/README_imx95_enetc_vf_vfio#L32
Disabling the IOMMU is not an option. Also I doubt that it will help as the kernel parameter reads:
MODULE_PARM_DESC(enable_unsafe_noiommu_mode, "Enable UNSAFE, no-IOMMU mode. This mode provides no device isolation, no DMA translation, no host kernel protection, cannot be used for device assignment to virtual machines, requires RAWIO permissions, and will taint the kernel. If you do not know what this is for, step away. (default: false)");
Could you confirm, that is actually impossible to use the IMX95 SoC with (safe) PCI passthrough? If not, what am I missing here?
Best regards,
-michael
Hi,
thanks for the quick answer. But I'm not sure I'm getting it completely. Just to be sure, we don't want to use DPDK, but a generic qemu/kvm virtual machine where we pass through a PCI device. How does this relate to the uio-pci-generic framework?
Thanks,
-michael
Hi,
Thank you for your interest in NXP Semiconductor products,
In this case, you need to stick with my colleagues response, which is from DPDK team. The only alternative is the one said in the response:
"If the customer wants to use SMMU for other use cases, but acceptable to bypass for the DPDK (does not want to use iommu.passthrough=1 in bootargs or disable SMMU node in dts).
Then can try to bind the uio-pci-generic framework and disable VSI-PSI messaging (export ENETC4_VSI_MSG_DISABLE=1). But disabling VSI-PSI messages means user won’t be able to use some ENETC features like promisc, VLAN MAC filtering, link information."
Regards