mdevs aren't "physical" devices and when asking for backing IOMMU info, it fails the entire provisioning of the guest. Fix that by filling caps info when IOMMU_GET_HW_INFO succeeds plus discarding the error we would get into iommufd_backend_get_device_info().
Cc: Zhenzhong Duan <zhenzhong.d...@intel.com> Fixes: 930589520128 ("vfio/iommufd: Implement HostIOMMUDeviceClass::realize() handler") Signed-off-by: Joao Martins <joao.m.mart...@oracle.com> --- hw/vfio/iommufd.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index c2f158e60386..a4d23f488b01 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -631,15 +631,13 @@ static bool hiod_iommufd_vfio_realize(HostIOMMUDevice *hiod, void *opaque, hiod->agent = opaque; - if (!iommufd_backend_get_device_info(vdev->iommufd, vdev->devid, - &type, &data, sizeof(data), errp)) { - return false; + if (iommufd_backend_get_device_info(vdev->iommufd, vdev->devid, + &type, &data, sizeof(data), NULL)) { + hiod->name = g_strdup(vdev->name); + caps->type = type; + caps->aw_bits = vfio_device_get_aw_bits(vdev); } - hiod->name = g_strdup(vdev->name); - caps->type = type; - caps->aw_bits = vfio_device_get_aw_bits(vdev); - return true; } -- 2.17.2