unsigned int flags)
{
virCPUDefPtr *cpus = NULL;
+ virCPUDefPtr baseline = NULL;
virCPUDefPtr cpu = NULL;
char *cpustr = NULL;
if (!(cpus = virCPUDefListParse(xmlCPUs, ncpus, VIR_CPU_TYPE_HOST)))
goto cleanup;
- if (!(cpu = cpuBaseline(cpus, ncpus, NULL, 0,
- !!(flags & VIR_CONNECT_BASELINE_CPU_MIGRATABLE))))
+ if (!(baseline = cpuBaseline(cpus, ncpus, NULL, 0,
+ !!(flags & VIR_CONNECT_BASELINE_CPU_MIGRATABLE))))
+ goto cleanup;
+
+ if (!(cpu = virCPUDefCopyWithoutModel(baseline)))
+ goto cleanup;
+
+ if (virCPUDefCopyModelFilter(cpu, baseline, false,
+ virQEMUCapsCPUFilterFeatures,
+ &cpus[0]->arch) < 0)
goto cleanup;
if ((flags & VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES) &&
cleanup:
virCPUDefListFree(cpus);
+ virCPUDefFree(baseline);
virCPUDefFree(cpu);
return cpustr;