]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: add ABI stability checks for IOMMU options
authorJán Tomko <jtomko@redhat.com>
Fri, 12 May 2017 14:59:45 +0000 (16:59 +0200)
committerJán Tomko <jtomko@redhat.com>
Mon, 15 May 2017 13:44:12 +0000 (15:44 +0200)
https://bugzilla.redhat.com/show_bug.cgi?id=1427005

src/conf/domain_conf.c

index 669860c3ee2f6fec214bf60e6bedbf0d98687679..9eba70a950746f4f0cee7fe83296dc0dec611fb5 100644 (file)
@@ -19691,6 +19691,16 @@ virDomainDefFeaturesCheckABIStability(virDomainDefPtr src,
         }
     }
 
+    /* ioapic */
+    if (src->ioapic != dst->ioapic) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("State of ioapic differs: "
+                         "source: '%s', destination: '%s'"),
+                       virDomainIOAPICTypeToString(src->ioapic),
+                       virDomainIOAPICTypeToString(dst->ioapic));
+        return false;
+    }
+
     return true;
 }
 
@@ -19830,6 +19840,22 @@ virDomainIOMMUDefCheckABIStability(virDomainIOMMUDefPtr src,
                        virDomainIOMMUModelTypeToString(src->model));
         return false;
     }
+    if (src->intremap != dst->intremap) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("Target domain IOMMU device intremap value '%s' "
+                         "does not match source '%s'"),
+                       virTristateSwitchTypeToString(dst->intremap),
+                       virTristateSwitchTypeToString(src->intremap));
+        return false;
+    }
+    if (src->caching_mode != dst->caching_mode) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("Target domain IOMMU device caching mode '%s' "
+                         "does not match source '%s'"),
+                       virTristateSwitchTypeToString(dst->caching_mode),
+                       virTristateSwitchTypeToString(src->caching_mode));
+        return false;
+    }
     return true;
 }