Exposing a virtual IOMMU interface to KVM guests

This proposal has been accepted as a session.


One Line Summary

Discussion around exposing a virtual IOMMU interface to a KVM guest using VFIO/KVM ioctls


Exposing a non-paravirtualised IOMMU to a KVM guest requires some level of in-kernel IOMMU emulation and fiddly userspace interaction between VFIO and KVM. This discussion will present where I’ve got to implementing this with the ARM SMMU and see where things can be improved.

In particular:
– Can other IOMMUs make use of this type of infrastructure?
– Can we improve the mechanisms for passing vfio_group information into kvm device ioctls?
– Do we always need separate page tables for VFIO DMA mappings?
– Do we really need all of: VFIO IOMMU types vs VFIO IOMMU extensions vs IOMMU capabilities vs domain attributes? If so, can we better define how they differ?
– How on Earth do we extend this for non-PCI masters and does that even make sense?
– How do we describe virtual PCI topologies that don’t match the physical topology to the guest?


kvm, VFIO, IOMMU, device passthrough

Presentation Materials