conf: Introduce virtio model for <iommu>

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Andrea Bolognani 2021-09-23 19:40:55 +02:00
parent 672c227037
commit 579f430e3e
6 changed files with 16 additions and 0 deletions

View File

@ -1287,6 +1287,7 @@ VIR_ENUM_IMPL(virDomainIOMMUModel,
VIR_DOMAIN_IOMMU_MODEL_LAST,
"intel",
"smmuv3",
"virtio",
);
VIR_ENUM_IMPL(virDomainVsockModel,

View File

@ -2755,6 +2755,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainSecDef, virDomainSecDefFree);
typedef enum {
VIR_DOMAIN_IOMMU_MODEL_INTEL,
VIR_DOMAIN_IOMMU_MODEL_SMMUV3,
VIR_DOMAIN_IOMMU_MODEL_VIRTIO,
VIR_DOMAIN_IOMMU_MODEL_LAST
} virDomainIOMMUModel;

View File

@ -5457,6 +5457,7 @@
<choice>
<value>intel</value>
<value>smmuv3</value>
<value>virtio</value>
</choice>
</attribute>
<optional>

View File

@ -6451,6 +6451,9 @@ qemuBuildIOMMUCommandLine(virCommand *cmd,
return 0;
case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
return 0;
case VIR_DOMAIN_IOMMU_MODEL_SMMUV3:
/* There is no -device for SMMUv3, so nothing to be done here */
return 0;
@ -7037,6 +7040,7 @@ qemuBuildMachineCommandLine(virCommand *cmd,
break;
case VIR_DOMAIN_IOMMU_MODEL_INTEL:
case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
/* These IOMMUs are formatted in qemuBuildIOMMUCommandLine */
break;

View File

@ -1004,6 +1004,9 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDef *dev,
case VIR_DOMAIN_DEVICE_IOMMU:
switch ((virDomainIOMMUModel) dev->data.iommu->model) {
case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
return 0;
case VIR_DOMAIN_IOMMU_MODEL_INTEL:
case VIR_DOMAIN_IOMMU_MODEL_SMMUV3:
case VIR_DOMAIN_IOMMU_MODEL_LAST:
@ -2382,6 +2385,9 @@ qemuDomainAssignDevicePCISlots(virDomainDef *def,
virDomainIOMMUDef *iommu = def->iommu;
switch ((virDomainIOMMUModel) iommu->model) {
case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
break;
case VIR_DOMAIN_IOMMU_MODEL_INTEL:
case VIR_DOMAIN_IOMMU_MODEL_SMMUV3:
case VIR_DOMAIN_IOMMU_MODEL_LAST:

View File

@ -4865,6 +4865,9 @@ qemuValidateDomainDeviceDefIOMMU(const virDomainIOMMUDef *iommu,
}
break;
case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
break;
case VIR_DOMAIN_IOMMU_MODEL_LAST:
default:
virReportEnumRangeError(virDomainIOMMUModel, iommu->model);