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; }