Detect if QEMU was compiled with IOMMUFD.
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
/* 490 */
"scsi-block.migrate-pr", /* QEMU_CAPS_DEVICE_SCSI_BLOCK_MIGRATE_PR */
+ "iommufd", /* QEMU_CAPS_OBJECT_IOMMUFD */
);
{ "tpm-emulator", QEMU_CAPS_DEVICE_TPM_EMULATOR },
{ "tpm-passthrough", QEMU_CAPS_DEVICE_TPM_PASSTHROUGH },
{ "acpi-generic-initiator", QEMU_CAPS_ACPI_GENERIC_INITIATOR },
+ { "iommufd", QEMU_CAPS_OBJECT_IOMMUFD },
};
/* 490 */
QEMU_CAPS_DEVICE_SCSI_BLOCK_MIGRATE_PR, /* persistent reservation migration support */
+ QEMU_CAPS_OBJECT_IOMMUFD, /* -object iommufd */
QEMU_CAPS_LAST /* this must always be the last item */
} virQEMUCapsFlags;
_("VFIO PCI device assignment is not supported by this version of qemu"));
return -1;
}
+
+ if (hostdev->source.subsys.u.pci.driver.iommufd == VIR_TRISTATE_BOOL_YES) {
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_IOMMUFD)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("IOMMUFD is not supported by this version of qemu"));
+ return -1;
+ }
+ }
}
if (hostdev->writeFiltering != VIR_TRISTATE_BOOL_ABSENT) {
<flag name='usb-bot'/>
<flag name='acpi-generic-initiator'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>10000000</version>
<microcodeVersion>61700285</microcodeVersion>
<package>v10.0.0</package>
<flag name='nvme-ns'/>
<flag name='usb-bot'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>10000000</version>
<microcodeVersion>39100285</microcodeVersion>
<package>v10.0.0</package>
<flag name='usb-bot'/>
<flag name='acpi-generic-initiator'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>10000000</version>
<microcodeVersion>43100285</microcodeVersion>
<package>v10.0.0</package>
<flag name='usb-bot'/>
<flag name='acpi-generic-initiator'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>10000000</version>
<microcodeVersion>43100285</microcodeVersion>
<package>v10.0.0</package>
<flag name='usb-bot'/>
<flag name='qom-list-get'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>10001000</version>
<microcodeVersion>39100286</microcodeVersion>
<package>v10.1.0</package>
<flag name='qom-list-get'/>
<flag name='acpi-generic-initiator'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>10001000</version>
<microcodeVersion>43100286</microcodeVersion>
<package>v10.1.0</package>
<flag name='qom-list-get'/>
<flag name='acpi-generic-initiator'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>10001000</version>
<microcodeVersion>43100286</microcodeVersion>
<package>v10.1.0</package>
<flag name='disk-timed-stats'/>
<flag name='query-accelerators'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>10002000</version>
<microcodeVersion>61700287</microcodeVersion>
<package>v10.2.0</package>
<flag name='query-accelerators'/>
<flag name='mshv'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>10002000</version>
<microcodeVersion>43100287</microcodeVersion>
<package>v10.2.0</package>
<flag name='disk-timed-stats'/>
<flag name='query-accelerators'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>10002000</version>
<microcodeVersion>43100287</microcodeVersion>
<package>v10.2.0</package>
<flag name='query-accelerators'/>
<flag name='virtio-iommu.aw-bits'/>
<flag name='scsi-block.migrate-pr'/>
+ <flag name='iommufd'/>
<version>10002050</version>
<microcodeVersion>61700286</microcodeVersion>
<package>v10.2.0-1114-gb3abdfa486</package>
<flag name='query-accelerators'/>
<flag name='virtio-iommu.aw-bits'/>
<flag name='scsi-block.migrate-pr'/>
+ <flag name='iommufd'/>
<version>10002050</version>
<microcodeVersion>43100286</microcodeVersion>
<package>v10.2.0-1114-gb3abdfa486</package>
<flag name='usb-bot'/>
<flag name='acpi-generic-initiator'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>9000000</version>
<microcodeVersion>43100245</microcodeVersion>
<package>v9.0.0</package>
<flag name='nvme-ns'/>
<flag name='usb-bot'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>9001000</version>
<microcodeVersion>39100246</microcodeVersion>
<package>v9.1.0</package>
<flag name='usb-bot'/>
<flag name='acpi-generic-initiator'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>9001000</version>
<microcodeVersion>43100246</microcodeVersion>
<package>v9.1.0</package>
<flag name='nvme-ns'/>
<flag name='usb-bot'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>9002000</version>
<microcodeVersion>39100247</microcodeVersion>
<package>v9.2.0</package>
<flag name='usb-bot'/>
<flag name='acpi-generic-initiator'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>9002000</version>
<microcodeVersion>43100247</microcodeVersion>
<package>v9.2.0</package>
<flag name='usb-bot'/>
<flag name='acpi-generic-initiator'/>
<flag name='virtio-iommu.aw-bits'/>
+ <flag name='iommufd'/>
<version>9002000</version>
<microcodeVersion>43100247</microcodeVersion>
<package>v9.2.0</package>