]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_driver: expand cpu features after baseline
authorCollin Walling <walling@linux.ibm.com>
Wed, 2 Oct 2019 11:48:17 +0000 (13:48 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Mon, 7 Oct 2019 08:10:17 +0000 (10:10 +0200)
Perform a full CPU model expansion on the result of the baselined
model name when the features flag is present.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Message-Id: <1568924706-2311-11-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
src/qemu/qemu_driver.c

index 5daa4b3f829a632a07fc79b16805a2e6a0e7dfca..461c22529d87b52f7e427517f0b1445499f851a1 100644 (file)
@@ -13783,6 +13783,7 @@ qemuConnectCPUModelBaseline(virQEMUCapsPtr qemuCaps,
                             const char *libDir,
                             uid_t runUid,
                             gid_t runGid,
+                            bool expand_features,
                             virCPUDefPtr *cpus,
                             int ncpus)
 {
@@ -13814,6 +13815,16 @@ qemuConnectCPUModelBaseline(virQEMUCapsPtr qemuCaps,
             goto cleanup;
     }
 
+    if (expand_features) {
+        if (qemuMonitorGetCPUModelExpansion(proc->mon,
+                                            QEMU_MONITOR_CPU_MODEL_EXPANSION_FULL,
+                                            baseline, true, false, &result) < 0)
+            goto cleanup;
+
+        if (qemuConnectStealCPUModelFromInfo(baseline, &result) < 0)
+            goto cleanup;
+    }
+
     VIR_STEAL_PTR(ret, baseline);
 
  cleanup:
@@ -13891,9 +13902,11 @@ qemuConnectBaselineHypervisorCPU(virConnectPtr conn,
             goto cleanup;
     } else if (ARCH_IS_S390(arch) &&
                virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_BASELINE)) {
+        bool expand_features = (flags & VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES);
+
         if (!(cpu = qemuConnectCPUModelBaseline(qemuCaps, cfg->libDir,
                                                 cfg->user, cfg->group,
-                                                cpus, ncpus)))
+                                                expand_features, cpus, ncpus)))
             goto cleanup;
     } else {
         virReportError(VIR_ERR_OPERATION_UNSUPPORTED,