On a Monday in 2025, Nathan Chen via Devel wrote:
>Hi,
>
>This series implements support for using iommufd to propagate DMA
>mappings to the kernel for VM-assigned host devices in a qemu VM.
>
>We add a new 'iommufd' attribute for hostdev devices to be
>associated with the iommufd object.
>
>For instance, specifying the iommufd object and associated hostdev in a
>VM definition:
>
> <devices>
>...
> <hostdev mode='subsystem' type='pci' managed='no'>
> <driver iommufd='yes'/>
> <source>
> <address domain='0x0009' bus='0x01' slot='0x00' function='0x0'/>
> </source>
> <address type='pci' domain='0x0000' bus='0x15' slot='0x00' function='0x0'/>
> </hostdev>
> <hostdev mode='subsystem' type='pci' managed='no'>
> <driver iommufd='yes'/>
> <source>
> <address domain='0x0019' bus='0x01' slot='0x00' function='0x0'/>
> </source>
> <address type='pci' domain='0x0000' bus='0x16' slot='0x00' function='0x0'/>
> </hostdev>
>...
> </devices>
>
Are there any hardware/kernel requirements, or something done to be
host? Even when I add the device to the vfio-pci driver, it does not
create /dev/vfio/devices for me:
error: unsupported configuration: VFIO device /dev/vfio/devices/vfio0 not found - ensure device is bound to vfio-pci driver
Kernel: 6.17.6-300.fc43.x86_64 on Fedora
QEMU: v10.1.0-2147-g917ac07f9a (the current master)
Also, I'd expect it to just work with managed='yes'.
Jano
>This would get translated to a qemu command line with the arguments below.
>Note that libvirt will open the /dev/iommu and VFIO cdev, passing the
>associated fd number to qemu:
>
> -object '{"qom-type":"iommufd","id":"iommufd0","fd":"24"}' \
> -device '{"driver":"vfio-pci","host":"0009:01:00.0","id":"hostdev0","iommufd":"iommufd0","fd":"22","bus":"pci.21","addr":"0x0"}' \
> -device '{"driver":"vfio-pci","host":"0019:01:00.0","id":"hostdev1","iommufd":"iommufd0","fd":"25","bus":"pci.22","addr":"0x0"}' \
>
>This series is on Github:
>https://github.com/NathanChenNVIDIA/libvirt/tree/iommufd-10-23-25
>
>Thanks,
>Nathan
>
>Signed-off-by: Nathan Chen <nathanc@nvidia.com>
>
>Nathan Chen (4):
> qemu: Implement support for associating iommufd to hostdev
> qemu: open iommufd FDs from libvirt backend
> qemu: Update Cgroup, namespace, and seclabel for qemu to access
> iommufd paths
> tests: qemuxmlconfdata: provide iommufd sample XML and CLI args
>