]> git.ipfire.org Git - thirdparty/qemu.git/commit
vfio/{iommufd, container}: Invoke HostIOMMUDevice::realize() during attach_device()
authorJoao Martins <joao.m.martins@oracle.com>
Mon, 22 Jul 2024 21:13:21 +0000 (22:13 +0100)
committerCédric Le Goater <clg@redhat.com>
Tue, 23 Jul 2024 15:14:52 +0000 (17:14 +0200)
commit83a4d596a93bc22ace521789979f5ccdcd91ab96
tree2b95d1ea02cc7deb63ff5c67e843cf964f300897
parent21e8d3a3aa1627079088e2430946dea62bf5c703
vfio/{iommufd, container}: Invoke HostIOMMUDevice::realize() during attach_device()

Move the HostIOMMUDevice::realize() to be invoked during the attach of the device
before we allocate IOMMUFD hardware pagetable objects (HWPT). This allows the use
of the hw_caps obtained by IOMMU_GET_HW_INFO that essentially tell if the IOMMU
behind the device supports dirty tracking.

Note: The HostIOMMUDevice data from legacy backend is static and doesn't
need any information from the (type1-iommu) backend to be initialized.
In contrast however, the IOMMUFD HostIOMMUDevice data requires the
iommufd FD to be connected and having a devid to be able to successfully
GET_HW_INFO. This means vfio_device_hiod_realize() is called in
different places within the backend .attach_device() implementation.

Suggested-by: Cédric Le Goater <clg@redhat.cm>
Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
[ clg: Fixed error handling in iommufd_cdev_attach() ]
Signed-off-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
hw/vfio/common.c
hw/vfio/container.c
hw/vfio/helpers.c
hw/vfio/iommufd.c
include/hw/vfio/vfio-common.h