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(a)linux.ibm.com>
---
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 2a5a3ca..93f1767 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -13845,6 +13845,7 @@ qemuConnectCPUModelBaseline(virQEMUCapsPtr qemuCaps,
const char *libDir,
uid_t runUid,
gid_t runGid,
+ bool expand_features,
int ncpus,
virCPUDefPtr *cpus)
{
@@ -13877,6 +13878,16 @@ qemuConnectCPUModelBaseline(virQEMUCapsPtr qemuCaps,
goto error;
}
+ if (expand_features) {
+ if (qemuMonitorGetCPUModelExpansion(proc->mon,
+ QEMU_MONITOR_CPU_MODEL_EXPANSION_FULL,
+ baseline, true, false, &result) < 0)
+ goto error;
+
+ if (qemuConnectStealCPUModelFromInfo(baseline, &result) < 0)
+ goto error;
+ }
+
cleanup:
qemuProcessQMPFree(proc);
return baseline;
@@ -13957,9 +13968,11 @@ qemuConnectBaselineHypervisorCPU(virConnectPtr conn,
} 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,
- ncpus,
+ expand_features, ncpus,
cpus)))
goto cleanup;
--
2.7.4