]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Add qemuProcessVerifyCPU
authorJiri Denemark <jdenemar@redhat.com>
Tue, 11 Jul 2017 11:26:12 +0000 (13:26 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Thu, 13 Jul 2017 07:53:15 +0000 (09:53 +0200)
Separated from qemuProcessUpdateLiveGuestCPU. The function makes sure
a guest CPU provides all features required by a domain definition.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
src/qemu/qemu_process.c

index aa07584ce69798ac1d6431bc703e9a894d63c2b1..b685c15e151abeda41c922b05d8581e0ce2e77f8 100644 (file)
@@ -3974,6 +3974,31 @@ qemuProcessFetchGuestCPU(virQEMUDriverPtr driver,
 }
 
 
+static int
+qemuProcessVerifyCPU(virDomainObjPtr vm,
+                     virCPUDataPtr cpu)
+{
+    virDomainDefPtr def = vm->def;
+
+    if (!cpu)
+        return 0;
+
+    if (qemuProcessVerifyKVMFeatures(def, cpu) < 0 ||
+        qemuProcessVerifyHypervFeatures(def, cpu) < 0)
+        return -1;
+
+    if (!def->cpu ||
+        (def->cpu->mode == VIR_CPU_MODE_CUSTOM &&
+         !def->cpu->model))
+        return 0;
+
+    if (qemuProcessVerifyCPUFeatures(def, cpu) < 0)
+        return -1;
+
+    return 0;
+}
+
+
 static int
 qemuProcessUpdateLiveGuestCPU(virQEMUDriverPtr driver,
                               virDomainObjPtr vm,
@@ -3990,11 +4015,10 @@ qemuProcessUpdateLiveGuestCPU(virQEMUDriverPtr driver,
     if (qemuProcessFetchGuestCPU(driver, vm, asyncJob, &cpu, &disabled) < 0)
         goto cleanup;
 
-    if (cpu) {
-        if (qemuProcessVerifyKVMFeatures(def, cpu) < 0 ||
-            qemuProcessVerifyHypervFeatures(def, cpu) < 0)
-            goto cleanup;
+    if (qemuProcessVerifyCPU(vm, cpu) < 0)
+        goto cleanup;
 
+    if (cpu) {
         if (!def->cpu ||
             (def->cpu->mode == VIR_CPU_MODE_CUSTOM &&
              !def->cpu->model)) {
@@ -4002,9 +4026,6 @@ qemuProcessUpdateLiveGuestCPU(virQEMUDriverPtr driver,
             goto cleanup;
         }
 
-        if (qemuProcessVerifyCPUFeatures(def, cpu) < 0)
-            goto cleanup;
-
         if (!(orig = virCPUDefCopy(def->cpu)))
             goto cleanup;