IOMMU_GET_HW_INFO fails for a vfio mediated device (aka mdev), because the devid is associated with kernel type IOMMUFD_OBJ_ACCESS, not IOMMUFD_OBJ_DEVICE. Assume IOMMU_HW_INFO_TYPE_NONE and proceed.
Signed-off-by: Steve Sistare <steven.sist...@oracle.com> --- hw/vfio/iommufd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index cb7257b..d8928d4 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -635,6 +635,7 @@ static void vfio_iommu_iommufd_class_init(ObjectClass *klass, void *data) static bool hiod_iommufd_vfio_realize(HostIOMMUDevice *hiod, void *opaque, Error **errp) { + Error *err = NULL; VFIODevice *vdev = opaque; HostIOMMUDeviceCaps *caps = &hiod->caps; enum iommu_hw_info_type type; @@ -645,8 +646,9 @@ 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; + &type, &data, sizeof(data), &err)) { + warn_report_err(err); + type = IOMMU_HW_INFO_TYPE_NONE; } hiod->name = g_strdup(vdev->name); -- 1.8.3.1