]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Simplify IOMMU device validation
authorAndrea Bolognani <abologna@redhat.com>
Mon, 8 Aug 2022 15:38:42 +0000 (17:38 +0200)
committerAndrea Bolognani <abologna@redhat.com>
Tue, 9 Aug 2022 08:10:08 +0000 (10:10 +0200)
Instead of duplicating the list of attributes that are not
allowed for some of the IOMMU models, use two separate switch
statements: one for the attributes and one for the address.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_validate.c

index 88205c64e083836f83f9164b43151e739d897734..1c78a3d31c372afb50bd8d225a90e763aff1148e 100644 (file)
@@ -2633,6 +2633,7 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *iommu)
 {
     switch (iommu->model) {
     case VIR_DOMAIN_IOMMU_MODEL_SMMUV3:
+    case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
         if (iommu->intremap != VIR_TRISTATE_SWITCH_ABSENT ||
             iommu->caching_mode != VIR_TRISTATE_SWITCH_ABSENT ||
             iommu->eim != VIR_TRISTATE_SWITCH_ABSENT ||
@@ -2643,8 +2644,15 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *iommu)
                            virDomainIOMMUModelTypeToString(iommu->model));
             return -1;
         }
-        G_GNUC_FALLTHROUGH;
+        break;
 
+    case VIR_DOMAIN_IOMMU_MODEL_INTEL:
+    case VIR_DOMAIN_IOMMU_MODEL_LAST:
+        break;
+    }
+
+    switch (iommu->model) {
+    case VIR_DOMAIN_IOMMU_MODEL_SMMUV3:
     case VIR_DOMAIN_IOMMU_MODEL_INTEL:
         if (iommu->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) {
             virReportError(VIR_ERR_XML_ERROR,
@@ -2655,18 +2663,6 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *iommu)
         break;
 
     case VIR_DOMAIN_IOMMU_MODEL_VIRTIO:
-        if (iommu->intremap != VIR_TRISTATE_SWITCH_ABSENT ||
-            iommu->caching_mode != VIR_TRISTATE_SWITCH_ABSENT ||
-            iommu->eim != VIR_TRISTATE_SWITCH_ABSENT ||
-            iommu->iotlb != VIR_TRISTATE_SWITCH_ABSENT ||
-            iommu->aw_bits != 0) {
-            virReportError(VIR_ERR_XML_ERROR,
-                           _("iommu model '%s' doesn't support additional attributes"),
-                           virDomainIOMMUModelTypeToString(iommu->model));
-            return -1;
-        }
-        break;
-
     case VIR_DOMAIN_IOMMU_MODEL_LAST:
         break;
     }