From: Jiri Denemark Date: Mon, 14 Nov 2016 16:21:30 +0000 (+0100) Subject: qemu: Probe CPU models for KVM and TCG X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=7bf6f345e0b5b1052ffb46d82c917437b0ab0c23;p=libvirt.git qemu: Probe CPU models for KVM and TCG CPU models (and especially some additional details which we will start probing for later) differ depending on the accelerator. Thus we need to call query-cpu-definitions in both KVM and TCG mode to get all data we want. Tests in tests/domaincapstest.c are temporarily switched to TCG to avoid having to squash even more stuff into this single patch. They will all be switched back later in separate commits. Signed-off-by: Jiri Denemark --- diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 85b1a662b4..9e3d10f702 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -387,7 +387,8 @@ struct _virQEMUCaps { virArch arch; - virDomainCapsCPUModelsPtr cpuDefinitions; + virDomainCapsCPUModelsPtr kvmCPUModels; + virDomainCapsCPUModelsPtr tcgCPUModels; size_t nmachineTypes; struct virQEMUCapsMachineType *machineTypes; @@ -691,7 +692,16 @@ virQEMUCapsParseX86Models(const char *output, goto error; } while ((p = next)); - qemuCaps->cpuDefinitions = cpus; + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) { + virDomainCapsCPUModelsPtr kvmCPUs; + + if (!(kvmCPUs = virDomainCapsCPUModelsCopy(cpus))) + goto error; + + qemuCaps->kvmCPUModels = kvmCPUs; + } + qemuCaps->tcgCPUModels = cpus; + return 0; error: @@ -740,7 +750,16 @@ virQEMUCapsParsePPCModels(const char *output, goto error; } while ((p = next)); - qemuCaps->cpuDefinitions = cpus; + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) { + virDomainCapsCPUModelsPtr kvmCPUs; + + if (!(kvmCPUs = virDomainCapsCPUModelsCopy(cpus))) + goto error; + + qemuCaps->kvmCPUModels = kvmCPUs; + } + qemuCaps->tcgCPUModels = cpus; + return 0; error: @@ -2123,9 +2142,15 @@ virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qemuCaps) ret->arch = qemuCaps->arch; - if (qemuCaps->cpuDefinitions) { - ret->cpuDefinitions = virDomainCapsCPUModelsCopy(qemuCaps->cpuDefinitions); - if (!ret->cpuDefinitions) + if (qemuCaps->kvmCPUModels) { + ret->kvmCPUModels = virDomainCapsCPUModelsCopy(qemuCaps->kvmCPUModels); + if (!ret->kvmCPUModels) + goto error; + } + + if (qemuCaps->tcgCPUModels) { + ret->tcgCPUModels = virDomainCapsCPUModelsCopy(qemuCaps->tcgCPUModels); + if (!ret->tcgCPUModels) goto error; } @@ -2169,7 +2194,8 @@ void virQEMUCapsDispose(void *obj) } VIR_FREE(qemuCaps->machineTypes); - virObjectUnref(qemuCaps->cpuDefinitions); + virObjectUnref(qemuCaps->kvmCPUModels); + virObjectUnref(qemuCaps->tcgCPUModels); virBitmapFree(qemuCaps->flags); @@ -2320,17 +2346,30 @@ const char *virQEMUCapsGetPackage(virQEMUCapsPtr qemuCaps) int virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCaps, + virDomainVirtType type, const char **name, size_t count) { size_t i; + virDomainCapsCPUModelsPtr cpus = NULL; - if (!qemuCaps->cpuDefinitions && - !(qemuCaps->cpuDefinitions = virDomainCapsCPUModelsNew(count))) - return -1; + if (type == VIR_DOMAIN_VIRT_KVM && qemuCaps->kvmCPUModels) + cpus = qemuCaps->kvmCPUModels; + else if (type == VIR_DOMAIN_VIRT_QEMU && qemuCaps->tcgCPUModels) + cpus = qemuCaps->tcgCPUModels; + + if (!cpus) { + if (!(cpus = virDomainCapsCPUModelsNew(count))) + return -1; + + if (type == VIR_DOMAIN_VIRT_KVM) + qemuCaps->kvmCPUModels = cpus; + else + qemuCaps->tcgCPUModels = cpus; + } for (i = 0; i < count; i++) { - if (virDomainCapsCPUModelsAdd(qemuCaps->cpuDefinitions, name[i], -1, + if (virDomainCapsCPUModelsAdd(cpus, name[i], -1, VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0) return -1; } @@ -2341,31 +2380,38 @@ virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCaps, int virQEMUCapsGetCPUDefinitions(virQEMUCapsPtr qemuCaps, + virDomainVirtType type, char ***names, size_t *count) { size_t i; char **models = NULL; + virDomainCapsCPUModelsPtr cpus; *count = 0; if (names) *names = NULL; - if (!qemuCaps->cpuDefinitions) + if (type == VIR_DOMAIN_VIRT_KVM) + cpus = qemuCaps->kvmCPUModels; + else + cpus = qemuCaps->tcgCPUModels; + + if (!cpus) return 0; - if (names && VIR_ALLOC_N(models, qemuCaps->cpuDefinitions->nmodels) < 0) + if (names && VIR_ALLOC_N(models, cpus->nmodels) < 0) return -1; - for (i = 0; i < qemuCaps->cpuDefinitions->nmodels; i++) { - virDomainCapsCPUModelPtr cpu = qemuCaps->cpuDefinitions->models + i; + for (i = 0; i < cpus->nmodels; i++) { + virDomainCapsCPUModelPtr cpu = cpus->models + i; if (models && VIR_STRDUP(models[i], cpu->name) < 0) goto error; } if (names) *names = models; - *count = qemuCaps->cpuDefinitions->nmodels; + *count = cpus->nmodels; return 0; error: @@ -2387,6 +2433,8 @@ virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuCaps, virDomainVirtType type, virCPUMode mode) { + virDomainCapsCPUModelsPtr cpus; + switch (mode) { case VIR_CPU_MODE_HOST_PASSTHROUGH: return type == VIR_DOMAIN_VIRT_KVM && @@ -2396,8 +2444,11 @@ virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuCaps, return !!qemuCaps->hostCPUModel; case VIR_CPU_MODE_CUSTOM: - return qemuCaps->cpuDefinitions && - qemuCaps->cpuDefinitions->nmodels > 0; + if (type == VIR_DOMAIN_VIRT_KVM) + cpus = qemuCaps->kvmCPUModels; + else + cpus = qemuCaps->tcgCPUModels; + return cpus && cpus->nmodels > 0; case VIR_CPU_MODE_LAST: break; @@ -2714,8 +2765,10 @@ virQEMUCapsProbeQMPMachineTypes(virQEMUCapsPtr qemuCaps, static int virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps, - qemuMonitorPtr mon) + qemuMonitorPtr mon, + bool tcg) { + virDomainCapsCPUModelsPtr models; qemuMonitorCPUDefInfoPtr *cpus; int ncpus; int ret = -1; @@ -2724,11 +2777,16 @@ virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps, if ((ncpus = qemuMonitorGetCPUDefinitions(mon, &cpus)) < 0) return -1; - if (!(qemuCaps->cpuDefinitions = virDomainCapsCPUModelsNew(ncpus))) + if (!(models = virDomainCapsCPUModelsNew(ncpus))) goto cleanup; + if (tcg || !virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) + qemuCaps->tcgCPUModels = models; + else + qemuCaps->kvmCPUModels = models; + for (i = 0; i < ncpus; i++) { - if (virDomainCapsCPUModelsAddSteal(qemuCaps->cpuDefinitions, + if (virDomainCapsCPUModelsAddSteal(models, &cpus[i]->name, VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0) goto cleanup; @@ -3006,15 +3064,22 @@ virQEMUCapsInitHostCPUModel(virQEMUCapsPtr qemuCaps, static int virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps, - xmlXPathContextPtr ctxt) + xmlXPathContextPtr ctxt, + virDomainVirtType type) { + virDomainCapsCPUModelsPtr cpus = NULL; xmlNodePtr *nodes = NULL; char *str = NULL; size_t i; int n; int ret = -1; - if ((n = virXPathNodeSet("./cpu", ctxt, &nodes)) < 0) { + if (type == VIR_DOMAIN_VIRT_KVM) + n = virXPathNodeSet("./cpu[@type='kvm']", ctxt, &nodes); + else + n = virXPathNodeSet("./cpu[@type='tcg']", ctxt, &nodes); + + if (n < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("failed to parse qemu capabilities cpus")); goto cleanup; @@ -3025,9 +3090,14 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps, goto cleanup; } - if (!(qemuCaps->cpuDefinitions = virDomainCapsCPUModelsNew(n))) + if (!(cpus = virDomainCapsCPUModelsNew(n))) goto cleanup; + if (type == VIR_DOMAIN_VIRT_KVM) + qemuCaps->kvmCPUModels = cpus; + else + qemuCaps->tcgCPUModels = cpus; + for (i = 0; i < n; i++) { if (!(str = virXMLPropString(nodes[i], "name"))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -3035,8 +3105,7 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps, goto cleanup; } - if (virDomainCapsCPUModelsAddSteal(qemuCaps->cpuDefinitions, - &str, + if (virDomainCapsCPUModelsAddSteal(cpus, &str, VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0) goto cleanup; } @@ -3178,7 +3247,8 @@ virQEMUCapsLoadCache(virCapsPtr caps, } VIR_FREE(str); - if (virQEMUCapsLoadCPUModels(qemuCaps, ctxt) < 0) + if (virQEMUCapsLoadCPUModels(qemuCaps, ctxt, VIR_DOMAIN_VIRT_KVM) < 0 || + virQEMUCapsLoadCPUModels(qemuCaps, ctxt, VIR_DOMAIN_VIRT_QEMU) < 0) goto cleanup; if ((n = virXPathNodeSet("./machine", ctxt, &nodes)) < 0) { @@ -3296,15 +3366,27 @@ virQEMUCapsLoadCache(virCapsPtr caps, static void virQEMUCapsFormatCPUModels(virQEMUCapsPtr qemuCaps, - virBufferPtr buf) + virBufferPtr buf, + virDomainVirtType type) { + virDomainCapsCPUModelsPtr cpus; + const char *typeStr; size_t i; - if (qemuCaps->cpuDefinitions) { - for (i = 0; i < qemuCaps->cpuDefinitions->nmodels; i++) { - virDomainCapsCPUModelPtr cpu = qemuCaps->cpuDefinitions->models + i; - virBufferEscapeString(buf, "\n", cpu->name); - } + if (type == VIR_DOMAIN_VIRT_KVM) { + typeStr = "kvm"; + cpus = qemuCaps->kvmCPUModels; + } else { + typeStr = "tcg"; + cpus = qemuCaps->tcgCPUModels; + } + + if (!cpus) + return; + + for (i = 0; i < cpus->nmodels; i++) { + virBufferAsprintf(buf, "\n", cpus->models[i].name); } } @@ -3351,7 +3433,8 @@ virQEMUCapsFormatCache(virQEMUCapsPtr qemuCaps, virBufferAsprintf(&buf, "%s\n", virArchToString(qemuCaps->arch)); - virQEMUCapsFormatCPUModels(qemuCaps, &buf); + virQEMUCapsFormatCPUModels(qemuCaps, &buf, VIR_DOMAIN_VIRT_KVM); + virQEMUCapsFormatCPUModels(qemuCaps, &buf, VIR_DOMAIN_VIRT_QEMU); for (i = 0; i < qemuCaps->nmachineTypes; i++) { virBufferEscapeString(&buf, "arch = VIR_ARCH_NONE; qemuCaps->usedQMP = false; - virObjectUnref(qemuCaps->cpuDefinitions); - qemuCaps->cpuDefinitions = NULL; + virObjectUnref(qemuCaps->kvmCPUModels); + qemuCaps->kvmCPUModels = NULL; + virObjectUnref(qemuCaps->tcgCPUModels); + qemuCaps->tcgCPUModels = NULL; for (i = 0; i < qemuCaps->nmachineTypes; i++) { VIR_FREE(qemuCaps->machineTypes[i].name); @@ -4029,7 +4114,7 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps, goto cleanup; if (virQEMUCapsProbeQMPMachineTypes(qemuCaps, mon) < 0) goto cleanup; - if (virQEMUCapsProbeQMPCPUDefinitions(qemuCaps, mon) < 0) + if (virQEMUCapsProbeQMPCPUDefinitions(qemuCaps, mon, false) < 0) goto cleanup; if (virQEMUCapsProbeQMPTPM(qemuCaps, mon) < 0) goto cleanup; @@ -4077,6 +4162,9 @@ virQEMUCapsInitQMPMonitorTCG(virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED, goto cleanup; } + if (virQEMUCapsProbeQMPCPUDefinitions(qemuCaps, mon, true) < 0) + goto cleanup; + ret = 0; cleanup: return ret; @@ -4869,7 +4957,14 @@ virQEMUCapsFillDomainCPUCaps(virCapsPtr caps, char **models = NULL; if (virCPUGetModels(domCaps->arch, &models) >= 0) { - filtered = virDomainCapsCPUModelsFilter(qemuCaps->cpuDefinitions, + virDomainCapsCPUModelsPtr cpus; + + if (domCaps->virttype == VIR_DOMAIN_VIRT_KVM) + cpus = qemuCaps->kvmCPUModels; + else + cpus = qemuCaps->tcgCPUModels; + + filtered = virDomainCapsCPUModelsFilter(cpus, (const char **) models); virStringListFree(models); } diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 4e33ddaf87..6d57ffb7ca 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -431,9 +431,11 @@ unsigned int virQEMUCapsGetVersion(virQEMUCapsPtr qemuCaps); const char *virQEMUCapsGetPackage(virQEMUCapsPtr qemuCaps); unsigned int virQEMUCapsGetKVMVersion(virQEMUCapsPtr qemuCaps); int virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCaps, + virDomainVirtType type, const char **name, size_t count); int virQEMUCapsGetCPUDefinitions(virQEMUCapsPtr qemuCaps, + virDomainVirtType type, char ***names, size_t *count); virCPUDefPtr virQEMUCapsGetHostModel(virQEMUCapsPtr qemuCaps); diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index ab0c2c8bfa..64a3f95ea4 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -5076,7 +5076,8 @@ qemuProcessUpdateGuestCPU(virDomainDefPtr def, virQEMUCapsGetHostModel(qemuCaps)) < 0) goto cleanup; - if (virQEMUCapsGetCPUDefinitions(qemuCaps, &models, &nmodels) < 0 || + if (virQEMUCapsGetCPUDefinitions(qemuCaps, def->virtType, + &models, &nmodels) < 0 || virCPUTranslate(def->os.arch, def->cpu, (const char **) models, nmodels) < 0) goto cleanup; diff --git a/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml b/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml index 4aa475c1e7..67f7ee82a5 100644 --- a/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml +++ b/tests/domaincapsschemadata/qemu_1.7.0.x86_64.xml @@ -1,6 +1,6 @@ /usr/bin/qemu-system-x86_64 - kvm + qemu pc-i440fx-1.7 x86_64 @@ -19,7 +19,7 @@ - + Broadwell diff --git a/tests/domaincapsschemadata/qemu_2.6.0-gicv2-virt.aarch64.xml b/tests/domaincapsschemadata/qemu_2.6.0-gicv2-virt.aarch64.xml index 76aee83ba1..a2702f498a 100644 --- a/tests/domaincapsschemadata/qemu_2.6.0-gicv2-virt.aarch64.xml +++ b/tests/domaincapsschemadata/qemu_2.6.0-gicv2-virt.aarch64.xml @@ -1,6 +1,6 @@ /usr/bin/qemu-system-aarch64 - kvm + qemu virt-2.6 aarch64 @@ -19,7 +19,7 @@ - + pxa262 diff --git a/tests/domaincapsschemadata/qemu_2.6.0-gicv3-virt.aarch64.xml b/tests/domaincapsschemadata/qemu_2.6.0-gicv3-virt.aarch64.xml index 104c29fabb..a2702f498a 100644 --- a/tests/domaincapsschemadata/qemu_2.6.0-gicv3-virt.aarch64.xml +++ b/tests/domaincapsschemadata/qemu_2.6.0-gicv3-virt.aarch64.xml @@ -1,6 +1,6 @@ /usr/bin/qemu-system-aarch64 - kvm + qemu virt-2.6 aarch64 @@ -19,7 +19,7 @@ - + pxa262 @@ -108,7 +108,7 @@ - 3 + 2 diff --git a/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml b/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml index ca511f48d8..d2a2e7bd25 100644 --- a/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml +++ b/tests/domaincapsschemadata/qemu_2.6.0.aarch64.xml @@ -1,6 +1,6 @@ /usr/bin/qemu-system-aarch64 - kvm + qemu integratorcp aarch64 @@ -19,7 +19,7 @@ - + pxa262 diff --git a/tests/domaincapsschemadata/qemu_2.6.0.ppc64le.xml b/tests/domaincapsschemadata/qemu_2.6.0.ppc64le.xml index a75764c071..f6a98f7e03 100644 --- a/tests/domaincapsschemadata/qemu_2.6.0.ppc64le.xml +++ b/tests/domaincapsschemadata/qemu_2.6.0.ppc64le.xml @@ -1,6 +1,6 @@ /usr/bin/qemu-system-ppc64 - kvm + qemu pseries-2.6 ppc64le @@ -19,7 +19,7 @@ - + POWER8 diff --git a/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml b/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml index a8975e8e53..33c6eda78e 100644 --- a/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml +++ b/tests/domaincapsschemadata/qemu_2.6.0.x86_64.xml @@ -1,6 +1,6 @@ /usr/bin/qemu-system-x86_64 - kvm + qemu pc-i440fx-2.6 x86_64 @@ -19,7 +19,7 @@ - + Broadwell diff --git a/tests/domaincapstest.c b/tests/domaincapstest.c index e70fa05b68..74a16ce864 100644 --- a/tests/domaincapstest.c +++ b/tests/domaincapstest.c @@ -413,27 +413,27 @@ mymain(void) DO_TEST_QEMU("1.7.0", "caps_1.7.0", "/usr/bin/qemu-system-x86_64", NULL, - "x86_64", VIR_DOMAIN_VIRT_KVM); + "x86_64", VIR_DOMAIN_VIRT_QEMU); DO_TEST_QEMU("2.6.0", "caps_2.6.0", "/usr/bin/qemu-system-x86_64", NULL, - "x86_64", VIR_DOMAIN_VIRT_KVM); + "x86_64", VIR_DOMAIN_VIRT_QEMU); DO_TEST_QEMU("2.6.0", "caps_2.6.0-gicv2", "/usr/bin/qemu-system-aarch64", NULL, - "aarch64", VIR_DOMAIN_VIRT_KVM); + "aarch64", VIR_DOMAIN_VIRT_QEMU); DO_TEST_QEMU("2.6.0-gicv2", "caps_2.6.0-gicv2", "/usr/bin/qemu-system-aarch64", "virt", - "aarch64", VIR_DOMAIN_VIRT_KVM); + "aarch64", VIR_DOMAIN_VIRT_QEMU); DO_TEST_QEMU("2.6.0-gicv3", "caps_2.6.0-gicv3", "/usr/bin/qemu-system-aarch64", "virt", - "aarch64", VIR_DOMAIN_VIRT_KVM); + "aarch64", VIR_DOMAIN_VIRT_QEMU); DO_TEST_QEMU("2.6.0", "caps_2.6.0", "/usr/bin/qemu-system-ppc64", NULL, - "ppc64le", VIR_DOMAIN_VIRT_KVM); + "ppc64le", VIR_DOMAIN_VIRT_QEMU); #endif /* WITH_QEMU */ diff --git a/tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml index 0d792beced..fd44d3378e 100644 --- a/tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml @@ -114,28 +114,28 @@ 0 x86_64 - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml index 97b985851d..4a184c4c16 100644 --- a/tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml @@ -132,30 +132,30 @@ 0 x86_64 - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml index 60dea6f084..14b0a934b1 100644 --- a/tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml @@ -133,30 +133,30 @@ 0 x86_64 - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 2931418790..3432f80d93 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -144,30 +144,30 @@ 0 x86_64 - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 15f2075e5b..63bfafcb43 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -149,30 +149,30 @@ 0 x86_64 - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index 0726443a8e..3614bbba04 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -151,30 +151,30 @@ 0 x86_64 - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 498e2d089e..1df4307dde 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -166,31 +166,31 @@ 0 x86_64 - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml index 18594e68c2..4774a867b7 100644 --- a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml @@ -186,34 +186,34 @@ 0 x86_64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml index 033894a4bb..66b9b9fd8e 100644 --- a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml @@ -192,34 +192,34 @@ 0 x86_64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml index 24fb5843fe..866c307b41 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml @@ -167,36 +167,36 @@ 0 aarch64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml index ecfe07ede3..8657dcac62 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml @@ -167,36 +167,36 @@ 0 aarch64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml index 5fbc9af7b0..a8fd9b6a53 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml @@ -164,436 +164,436 @@ 0 ppc64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml index 2525d2d95d..ae69ef68f4 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml @@ -201,34 +201,34 @@ 0 x86_64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml index f2a305fce1..d5c1fb3fc4 100644 --- a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml @@ -203,35 +203,35 @@ 0 (v2.7.0) x86_64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index e0ef47f09e..8f37ee5375 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -302,20 +302,31 @@ testAddCPUModels(virQEMUCapsPtr caps, bool skipLegacy) }; if (ARCH_IS_X86(arch)) { - if (virQEMUCapsAddCPUDefinitions(caps, x86Models, + if (virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_KVM, x86Models, + ARRAY_CARDINALITY(x86Models)) < 0 || + virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_QEMU, x86Models, ARRAY_CARDINALITY(x86Models)) < 0) return -1; - if (!skipLegacy && - virQEMUCapsAddCPUDefinitions(caps, x86LegacyModels, - ARRAY_CARDINALITY(x86LegacyModels)) < 0) - return -1; + if (!skipLegacy) { + if (virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_KVM, + x86LegacyModels, + ARRAY_CARDINALITY(x86LegacyModels)) < 0 || + virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_QEMU, + x86LegacyModels, + ARRAY_CARDINALITY(x86LegacyModels)) < 0) + return -1; + } } else if (ARCH_IS_ARM(arch)) { - if (virQEMUCapsAddCPUDefinitions(caps, armModels, + if (virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_KVM, armModels, + ARRAY_CARDINALITY(armModels)) < 0 || + virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_QEMU, armModels, ARRAY_CARDINALITY(armModels)) < 0) return -1; } else if (ARCH_IS_PPC64(arch)) { - if (virQEMUCapsAddCPUDefinitions(caps, ppc64Models, + if (virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_KVM, ppc64Models, + ARRAY_CARDINALITY(ppc64Models)) < 0 || + virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_QEMU, ppc64Models, ARRAY_CARDINALITY(ppc64Models)) < 0) return -1; }