From aa797c66256700eeed3f76a5e9f6bfcf9136ecf8 Mon Sep 17 00:00:00 2001 From: Collin Walling Date: Wed, 2 Oct 2019 13:48:17 +0200 Subject: [PATCH] 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 --- src/qemu/qemu_driver.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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,