From: Collin Walling Date: Wed, 2 Oct 2019 11:48:17 +0000 (+0200) Subject: qemu_driver: expand cpu features after baseline X-Git-Tag: v5.9.0-rc1~378 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aa797c66256700eeed3f76a5e9f6bfcf9136ecf8;p=thirdparty%2Flibvirt.git qemu_driver: expand cpu features after baseline 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 Message-Id: <1568924706-2311-11-git-send-email-walling@linux.ibm.com> Reviewed-by: Jiri Denemark --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 5daa4b3f82..461c22529d 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -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,