提交 7bf6f345 编写于 作者: J Jiri Denemark

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: NJiri Denemark <jdenemar@redhat.com>
上级 7c95619c
...@@ -387,7 +387,8 @@ struct _virQEMUCaps { ...@@ -387,7 +387,8 @@ struct _virQEMUCaps {
virArch arch; virArch arch;
virDomainCapsCPUModelsPtr cpuDefinitions; virDomainCapsCPUModelsPtr kvmCPUModels;
virDomainCapsCPUModelsPtr tcgCPUModels;
size_t nmachineTypes; size_t nmachineTypes;
struct virQEMUCapsMachineType *machineTypes; struct virQEMUCapsMachineType *machineTypes;
...@@ -691,7 +692,16 @@ virQEMUCapsParseX86Models(const char *output, ...@@ -691,7 +692,16 @@ virQEMUCapsParseX86Models(const char *output,
goto error; goto error;
} while ((p = next)); } 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; return 0;
error: error:
...@@ -740,7 +750,16 @@ virQEMUCapsParsePPCModels(const char *output, ...@@ -740,7 +750,16 @@ virQEMUCapsParsePPCModels(const char *output,
goto error; goto error;
} while ((p = next)); } 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; return 0;
error: error:
...@@ -2123,9 +2142,15 @@ virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qemuCaps) ...@@ -2123,9 +2142,15 @@ virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qemuCaps)
ret->arch = qemuCaps->arch; ret->arch = qemuCaps->arch;
if (qemuCaps->cpuDefinitions) { if (qemuCaps->kvmCPUModels) {
ret->cpuDefinitions = virDomainCapsCPUModelsCopy(qemuCaps->cpuDefinitions); ret->kvmCPUModels = virDomainCapsCPUModelsCopy(qemuCaps->kvmCPUModels);
if (!ret->cpuDefinitions) if (!ret->kvmCPUModels)
goto error;
}
if (qemuCaps->tcgCPUModels) {
ret->tcgCPUModels = virDomainCapsCPUModelsCopy(qemuCaps->tcgCPUModels);
if (!ret->tcgCPUModels)
goto error; goto error;
} }
...@@ -2169,7 +2194,8 @@ void virQEMUCapsDispose(void *obj) ...@@ -2169,7 +2194,8 @@ void virQEMUCapsDispose(void *obj)
} }
VIR_FREE(qemuCaps->machineTypes); VIR_FREE(qemuCaps->machineTypes);
virObjectUnref(qemuCaps->cpuDefinitions); virObjectUnref(qemuCaps->kvmCPUModels);
virObjectUnref(qemuCaps->tcgCPUModels);
virBitmapFree(qemuCaps->flags); virBitmapFree(qemuCaps->flags);
...@@ -2320,17 +2346,30 @@ const char *virQEMUCapsGetPackage(virQEMUCapsPtr qemuCaps) ...@@ -2320,17 +2346,30 @@ const char *virQEMUCapsGetPackage(virQEMUCapsPtr qemuCaps)
int int
virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCaps, virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCaps,
virDomainVirtType type,
const char **name, const char **name,
size_t count) size_t count)
{ {
size_t i; size_t i;
virDomainCapsCPUModelsPtr cpus = NULL;
if (!qemuCaps->cpuDefinitions && if (type == VIR_DOMAIN_VIRT_KVM && qemuCaps->kvmCPUModels)
!(qemuCaps->cpuDefinitions = virDomainCapsCPUModelsNew(count))) cpus = qemuCaps->kvmCPUModels;
return -1; 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++) { 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) VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0)
return -1; return -1;
} }
...@@ -2341,31 +2380,38 @@ virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCaps, ...@@ -2341,31 +2380,38 @@ virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCaps,
int int
virQEMUCapsGetCPUDefinitions(virQEMUCapsPtr qemuCaps, virQEMUCapsGetCPUDefinitions(virQEMUCapsPtr qemuCaps,
virDomainVirtType type,
char ***names, char ***names,
size_t *count) size_t *count)
{ {
size_t i; size_t i;
char **models = NULL; char **models = NULL;
virDomainCapsCPUModelsPtr cpus;
*count = 0; *count = 0;
if (names) if (names)
*names = NULL; *names = NULL;
if (!qemuCaps->cpuDefinitions) if (type == VIR_DOMAIN_VIRT_KVM)
cpus = qemuCaps->kvmCPUModels;
else
cpus = qemuCaps->tcgCPUModels;
if (!cpus)
return 0; return 0;
if (names && VIR_ALLOC_N(models, qemuCaps->cpuDefinitions->nmodels) < 0) if (names && VIR_ALLOC_N(models, cpus->nmodels) < 0)
return -1; return -1;
for (i = 0; i < qemuCaps->cpuDefinitions->nmodels; i++) { for (i = 0; i < cpus->nmodels; i++) {
virDomainCapsCPUModelPtr cpu = qemuCaps->cpuDefinitions->models + i; virDomainCapsCPUModelPtr cpu = cpus->models + i;
if (models && VIR_STRDUP(models[i], cpu->name) < 0) if (models && VIR_STRDUP(models[i], cpu->name) < 0)
goto error; goto error;
} }
if (names) if (names)
*names = models; *names = models;
*count = qemuCaps->cpuDefinitions->nmodels; *count = cpus->nmodels;
return 0; return 0;
error: error:
...@@ -2387,6 +2433,8 @@ virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuCaps, ...@@ -2387,6 +2433,8 @@ virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuCaps,
virDomainVirtType type, virDomainVirtType type,
virCPUMode mode) virCPUMode mode)
{ {
virDomainCapsCPUModelsPtr cpus;
switch (mode) { switch (mode) {
case VIR_CPU_MODE_HOST_PASSTHROUGH: case VIR_CPU_MODE_HOST_PASSTHROUGH:
return type == VIR_DOMAIN_VIRT_KVM && return type == VIR_DOMAIN_VIRT_KVM &&
...@@ -2396,8 +2444,11 @@ virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuCaps, ...@@ -2396,8 +2444,11 @@ virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuCaps,
return !!qemuCaps->hostCPUModel; return !!qemuCaps->hostCPUModel;
case VIR_CPU_MODE_CUSTOM: case VIR_CPU_MODE_CUSTOM:
return qemuCaps->cpuDefinitions && if (type == VIR_DOMAIN_VIRT_KVM)
qemuCaps->cpuDefinitions->nmodels > 0; cpus = qemuCaps->kvmCPUModels;
else
cpus = qemuCaps->tcgCPUModels;
return cpus && cpus->nmodels > 0;
case VIR_CPU_MODE_LAST: case VIR_CPU_MODE_LAST:
break; break;
...@@ -2714,8 +2765,10 @@ virQEMUCapsProbeQMPMachineTypes(virQEMUCapsPtr qemuCaps, ...@@ -2714,8 +2765,10 @@ virQEMUCapsProbeQMPMachineTypes(virQEMUCapsPtr qemuCaps,
static int static int
virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps, virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps,
qemuMonitorPtr mon) qemuMonitorPtr mon,
bool tcg)
{ {
virDomainCapsCPUModelsPtr models;
qemuMonitorCPUDefInfoPtr *cpus; qemuMonitorCPUDefInfoPtr *cpus;
int ncpus; int ncpus;
int ret = -1; int ret = -1;
...@@ -2724,11 +2777,16 @@ virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps, ...@@ -2724,11 +2777,16 @@ virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps,
if ((ncpus = qemuMonitorGetCPUDefinitions(mon, &cpus)) < 0) if ((ncpus = qemuMonitorGetCPUDefinitions(mon, &cpus)) < 0)
return -1; return -1;
if (!(qemuCaps->cpuDefinitions = virDomainCapsCPUModelsNew(ncpus))) if (!(models = virDomainCapsCPUModelsNew(ncpus)))
goto cleanup; goto cleanup;
if (tcg || !virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM))
qemuCaps->tcgCPUModels = models;
else
qemuCaps->kvmCPUModels = models;
for (i = 0; i < ncpus; i++) { for (i = 0; i < ncpus; i++) {
if (virDomainCapsCPUModelsAddSteal(qemuCaps->cpuDefinitions, if (virDomainCapsCPUModelsAddSteal(models,
&cpus[i]->name, &cpus[i]->name,
VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0) VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0)
goto cleanup; goto cleanup;
...@@ -3006,15 +3064,22 @@ virQEMUCapsInitHostCPUModel(virQEMUCapsPtr qemuCaps, ...@@ -3006,15 +3064,22 @@ virQEMUCapsInitHostCPUModel(virQEMUCapsPtr qemuCaps,
static int static int
virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps, virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt,
virDomainVirtType type)
{ {
virDomainCapsCPUModelsPtr cpus = NULL;
xmlNodePtr *nodes = NULL; xmlNodePtr *nodes = NULL;
char *str = NULL; char *str = NULL;
size_t i; size_t i;
int n; int n;
int ret = -1; 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", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to parse qemu capabilities cpus")); _("failed to parse qemu capabilities cpus"));
goto cleanup; goto cleanup;
...@@ -3025,9 +3090,14 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps, ...@@ -3025,9 +3090,14 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps,
goto cleanup; goto cleanup;
} }
if (!(qemuCaps->cpuDefinitions = virDomainCapsCPUModelsNew(n))) if (!(cpus = virDomainCapsCPUModelsNew(n)))
goto cleanup; goto cleanup;
if (type == VIR_DOMAIN_VIRT_KVM)
qemuCaps->kvmCPUModels = cpus;
else
qemuCaps->tcgCPUModels = cpus;
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
if (!(str = virXMLPropString(nodes[i], "name"))) { if (!(str = virXMLPropString(nodes[i], "name"))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
...@@ -3035,8 +3105,7 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps, ...@@ -3035,8 +3105,7 @@ virQEMUCapsLoadCPUModels(virQEMUCapsPtr qemuCaps,
goto cleanup; goto cleanup;
} }
if (virDomainCapsCPUModelsAddSteal(qemuCaps->cpuDefinitions, if (virDomainCapsCPUModelsAddSteal(cpus, &str,
&str,
VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0) VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0)
goto cleanup; goto cleanup;
} }
...@@ -3178,7 +3247,8 @@ virQEMUCapsLoadCache(virCapsPtr caps, ...@@ -3178,7 +3247,8 @@ virQEMUCapsLoadCache(virCapsPtr caps,
} }
VIR_FREE(str); 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; goto cleanup;
if ((n = virXPathNodeSet("./machine", ctxt, &nodes)) < 0) { if ((n = virXPathNodeSet("./machine", ctxt, &nodes)) < 0) {
...@@ -3296,15 +3366,27 @@ virQEMUCapsLoadCache(virCapsPtr caps, ...@@ -3296,15 +3366,27 @@ virQEMUCapsLoadCache(virCapsPtr caps,
static void static void
virQEMUCapsFormatCPUModels(virQEMUCapsPtr qemuCaps, virQEMUCapsFormatCPUModels(virQEMUCapsPtr qemuCaps,
virBufferPtr buf) virBufferPtr buf,
virDomainVirtType type)
{ {
virDomainCapsCPUModelsPtr cpus;
const char *typeStr;
size_t i; size_t i;
if (qemuCaps->cpuDefinitions) { if (type == VIR_DOMAIN_VIRT_KVM) {
for (i = 0; i < qemuCaps->cpuDefinitions->nmodels; i++) { typeStr = "kvm";
virDomainCapsCPUModelPtr cpu = qemuCaps->cpuDefinitions->models + i; cpus = qemuCaps->kvmCPUModels;
virBufferEscapeString(buf, "<cpu name='%s'/>\n", cpu->name); } else {
} typeStr = "tcg";
cpus = qemuCaps->tcgCPUModels;
}
if (!cpus)
return;
for (i = 0; i < cpus->nmodels; i++) {
virBufferAsprintf(buf, "<cpu type='%s' ", typeStr);
virBufferEscapeString(buf, "name='%s'/>\n", cpus->models[i].name);
} }
} }
...@@ -3351,7 +3433,8 @@ virQEMUCapsFormatCache(virQEMUCapsPtr qemuCaps, ...@@ -3351,7 +3433,8 @@ virQEMUCapsFormatCache(virQEMUCapsPtr qemuCaps,
virBufferAsprintf(&buf, "<arch>%s</arch>\n", virBufferAsprintf(&buf, "<arch>%s</arch>\n",
virArchToString(qemuCaps->arch)); 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++) { for (i = 0; i < qemuCaps->nmachineTypes; i++) {
virBufferEscapeString(&buf, "<machine name='%s'", virBufferEscapeString(&buf, "<machine name='%s'",
...@@ -3468,8 +3551,10 @@ virQEMUCapsReset(virQEMUCapsPtr qemuCaps) ...@@ -3468,8 +3551,10 @@ virQEMUCapsReset(virQEMUCapsPtr qemuCaps)
qemuCaps->arch = VIR_ARCH_NONE; qemuCaps->arch = VIR_ARCH_NONE;
qemuCaps->usedQMP = false; qemuCaps->usedQMP = false;
virObjectUnref(qemuCaps->cpuDefinitions); virObjectUnref(qemuCaps->kvmCPUModels);
qemuCaps->cpuDefinitions = NULL; qemuCaps->kvmCPUModels = NULL;
virObjectUnref(qemuCaps->tcgCPUModels);
qemuCaps->tcgCPUModels = NULL;
for (i = 0; i < qemuCaps->nmachineTypes; i++) { for (i = 0; i < qemuCaps->nmachineTypes; i++) {
VIR_FREE(qemuCaps->machineTypes[i].name); VIR_FREE(qemuCaps->machineTypes[i].name);
...@@ -4029,7 +4114,7 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps, ...@@ -4029,7 +4114,7 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps,
goto cleanup; goto cleanup;
if (virQEMUCapsProbeQMPMachineTypes(qemuCaps, mon) < 0) if (virQEMUCapsProbeQMPMachineTypes(qemuCaps, mon) < 0)
goto cleanup; goto cleanup;
if (virQEMUCapsProbeQMPCPUDefinitions(qemuCaps, mon) < 0) if (virQEMUCapsProbeQMPCPUDefinitions(qemuCaps, mon, false) < 0)
goto cleanup; goto cleanup;
if (virQEMUCapsProbeQMPTPM(qemuCaps, mon) < 0) if (virQEMUCapsProbeQMPTPM(qemuCaps, mon) < 0)
goto cleanup; goto cleanup;
...@@ -4077,6 +4162,9 @@ virQEMUCapsInitQMPMonitorTCG(virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED, ...@@ -4077,6 +4162,9 @@ virQEMUCapsInitQMPMonitorTCG(virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED,
goto cleanup; goto cleanup;
} }
if (virQEMUCapsProbeQMPCPUDefinitions(qemuCaps, mon, true) < 0)
goto cleanup;
ret = 0; ret = 0;
cleanup: cleanup:
return ret; return ret;
...@@ -4869,7 +4957,14 @@ virQEMUCapsFillDomainCPUCaps(virCapsPtr caps, ...@@ -4869,7 +4957,14 @@ virQEMUCapsFillDomainCPUCaps(virCapsPtr caps,
char **models = NULL; char **models = NULL;
if (virCPUGetModels(domCaps->arch, &models) >= 0) { 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); (const char **) models);
virStringListFree(models); virStringListFree(models);
} }
......
...@@ -431,9 +431,11 @@ unsigned int virQEMUCapsGetVersion(virQEMUCapsPtr qemuCaps); ...@@ -431,9 +431,11 @@ unsigned int virQEMUCapsGetVersion(virQEMUCapsPtr qemuCaps);
const char *virQEMUCapsGetPackage(virQEMUCapsPtr qemuCaps); const char *virQEMUCapsGetPackage(virQEMUCapsPtr qemuCaps);
unsigned int virQEMUCapsGetKVMVersion(virQEMUCapsPtr qemuCaps); unsigned int virQEMUCapsGetKVMVersion(virQEMUCapsPtr qemuCaps);
int virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCaps, int virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCaps,
virDomainVirtType type,
const char **name, const char **name,
size_t count); size_t count);
int virQEMUCapsGetCPUDefinitions(virQEMUCapsPtr qemuCaps, int virQEMUCapsGetCPUDefinitions(virQEMUCapsPtr qemuCaps,
virDomainVirtType type,
char ***names, char ***names,
size_t *count); size_t *count);
virCPUDefPtr virQEMUCapsGetHostModel(virQEMUCapsPtr qemuCaps); virCPUDefPtr virQEMUCapsGetHostModel(virQEMUCapsPtr qemuCaps);
......
...@@ -5076,7 +5076,8 @@ qemuProcessUpdateGuestCPU(virDomainDefPtr def, ...@@ -5076,7 +5076,8 @@ qemuProcessUpdateGuestCPU(virDomainDefPtr def,
virQEMUCapsGetHostModel(qemuCaps)) < 0) virQEMUCapsGetHostModel(qemuCaps)) < 0)
goto cleanup; goto cleanup;
if (virQEMUCapsGetCPUDefinitions(qemuCaps, &models, &nmodels) < 0 || if (virQEMUCapsGetCPUDefinitions(qemuCaps, def->virtType,
&models, &nmodels) < 0 ||
virCPUTranslate(def->os.arch, def->cpu, virCPUTranslate(def->os.arch, def->cpu,
(const char **) models, nmodels) < 0) (const char **) models, nmodels) < 0)
goto cleanup; goto cleanup;
......
<domainCapabilities> <domainCapabilities>
<path>/usr/bin/qemu-system-x86_64</path> <path>/usr/bin/qemu-system-x86_64</path>
<domain>kvm</domain> <domain>qemu</domain>
<machine>pc-i440fx-1.7</machine> <machine>pc-i440fx-1.7</machine>
<arch>x86_64</arch> <arch>x86_64</arch>
<vcpu max='255'/> <vcpu max='255'/>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</loader> </loader>
</os> </os>
<cpu> <cpu>
<mode name='host-passthrough' supported='yes'/> <mode name='host-passthrough' supported='no'/>
<mode name='host-model' supported='yes'> <mode name='host-model' supported='yes'>
<model fallback='allow'>Broadwell</model> <model fallback='allow'>Broadwell</model>
</mode> </mode>
......
<domainCapabilities> <domainCapabilities>
<path>/usr/bin/qemu-system-aarch64</path> <path>/usr/bin/qemu-system-aarch64</path>
<domain>kvm</domain> <domain>qemu</domain>
<machine>virt-2.6</machine> <machine>virt-2.6</machine>
<arch>aarch64</arch> <arch>aarch64</arch>
<vcpu max='255'/> <vcpu max='255'/>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</loader> </loader>
</os> </os>
<cpu> <cpu>
<mode name='host-passthrough' supported='yes'/> <mode name='host-passthrough' supported='no'/>
<mode name='host-model' supported='no'/> <mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'> <mode name='custom' supported='yes'>
<model usable='unknown'>pxa262</model> <model usable='unknown'>pxa262</model>
......
<domainCapabilities> <domainCapabilities>
<path>/usr/bin/qemu-system-aarch64</path> <path>/usr/bin/qemu-system-aarch64</path>
<domain>kvm</domain> <domain>qemu</domain>
<machine>virt-2.6</machine> <machine>virt-2.6</machine>
<arch>aarch64</arch> <arch>aarch64</arch>
<vcpu max='255'/> <vcpu max='255'/>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</loader> </loader>
</os> </os>
<cpu> <cpu>
<mode name='host-passthrough' supported='yes'/> <mode name='host-passthrough' supported='no'/>
<mode name='host-model' supported='no'/> <mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'> <mode name='custom' supported='yes'>
<model usable='unknown'>pxa262</model> <model usable='unknown'>pxa262</model>
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
<features> <features>
<gic supported='yes'> <gic supported='yes'>
<enum name='version'> <enum name='version'>
<value>3</value> <value>2</value>
</enum> </enum>
</gic> </gic>
</features> </features>
......
<domainCapabilities> <domainCapabilities>
<path>/usr/bin/qemu-system-aarch64</path> <path>/usr/bin/qemu-system-aarch64</path>
<domain>kvm</domain> <domain>qemu</domain>
<machine>integratorcp</machine> <machine>integratorcp</machine>
<arch>aarch64</arch> <arch>aarch64</arch>
<vcpu max='1'/> <vcpu max='1'/>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</loader> </loader>
</os> </os>
<cpu> <cpu>
<mode name='host-passthrough' supported='yes'/> <mode name='host-passthrough' supported='no'/>
<mode name='host-model' supported='no'/> <mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'> <mode name='custom' supported='yes'>
<model usable='unknown'>pxa262</model> <model usable='unknown'>pxa262</model>
......
<domainCapabilities> <domainCapabilities>
<path>/usr/bin/qemu-system-ppc64</path> <path>/usr/bin/qemu-system-ppc64</path>
<domain>kvm</domain> <domain>qemu</domain>
<machine>pseries-2.6</machine> <machine>pseries-2.6</machine>
<arch>ppc64le</arch> <arch>ppc64le</arch>
<vcpu max='255'/> <vcpu max='255'/>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</loader> </loader>
</os> </os>
<cpu> <cpu>
<mode name='host-passthrough' supported='yes'/> <mode name='host-passthrough' supported='no'/>
<mode name='host-model' supported='yes'> <mode name='host-model' supported='yes'>
<model fallback='allow'>POWER8</model> <model fallback='allow'>POWER8</model>
</mode> </mode>
......
<domainCapabilities> <domainCapabilities>
<path>/usr/bin/qemu-system-x86_64</path> <path>/usr/bin/qemu-system-x86_64</path>
<domain>kvm</domain> <domain>qemu</domain>
<machine>pc-i440fx-2.6</machine> <machine>pc-i440fx-2.6</machine>
<arch>x86_64</arch> <arch>x86_64</arch>
<vcpu max='255'/> <vcpu max='255'/>
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</loader> </loader>
</os> </os>
<cpu> <cpu>
<mode name='host-passthrough' supported='yes'/> <mode name='host-passthrough' supported='no'/>
<mode name='host-model' supported='yes'> <mode name='host-model' supported='yes'>
<model fallback='allow'>Broadwell</model> <model fallback='allow'>Broadwell</model>
</mode> </mode>
......
...@@ -413,27 +413,27 @@ mymain(void) ...@@ -413,27 +413,27 @@ mymain(void)
DO_TEST_QEMU("1.7.0", "caps_1.7.0", DO_TEST_QEMU("1.7.0", "caps_1.7.0",
"/usr/bin/qemu-system-x86_64", NULL, "/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", DO_TEST_QEMU("2.6.0", "caps_2.6.0",
"/usr/bin/qemu-system-x86_64", NULL, "/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", DO_TEST_QEMU("2.6.0", "caps_2.6.0-gicv2",
"/usr/bin/qemu-system-aarch64", NULL, "/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", DO_TEST_QEMU("2.6.0-gicv2", "caps_2.6.0-gicv2",
"/usr/bin/qemu-system-aarch64", "virt", "/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", DO_TEST_QEMU("2.6.0-gicv3", "caps_2.6.0-gicv3",
"/usr/bin/qemu-system-aarch64", "virt", "/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", DO_TEST_QEMU("2.6.0", "caps_2.6.0",
"/usr/bin/qemu-system-ppc64", NULL, "/usr/bin/qemu-system-ppc64", NULL,
"ppc64le", VIR_DOMAIN_VIRT_KVM); "ppc64le", VIR_DOMAIN_VIRT_QEMU);
#endif /* WITH_QEMU */ #endif /* WITH_QEMU */
......
...@@ -114,28 +114,28 @@ ...@@ -114,28 +114,28 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>x86_64</arch> <arch>x86_64</arch>
<cpu name='qemu64'/> <cpu type='tcg' name='qemu64'/>
<cpu name='phenom'/> <cpu type='tcg' name='phenom'/>
<cpu name='core2duo'/> <cpu type='tcg' name='core2duo'/>
<cpu name='kvm64'/> <cpu type='tcg' name='kvm64'/>
<cpu name='qemu32'/> <cpu type='tcg' name='qemu32'/>
<cpu name='kvm32'/> <cpu type='tcg' name='kvm32'/>
<cpu name='coreduo'/> <cpu type='tcg' name='coreduo'/>
<cpu name='486'/> <cpu type='tcg' name='486'/>
<cpu name='pentium'/> <cpu type='tcg' name='pentium'/>
<cpu name='pentium2'/> <cpu type='tcg' name='pentium2'/>
<cpu name='pentium3'/> <cpu type='tcg' name='pentium3'/>
<cpu name='athlon'/> <cpu type='tcg' name='athlon'/>
<cpu name='n270'/> <cpu type='tcg' name='n270'/>
<cpu name='Conroe'/> <cpu type='tcg' name='Conroe'/>
<cpu name='Penryn'/> <cpu type='tcg' name='Penryn'/>
<cpu name='Nehalem'/> <cpu type='tcg' name='Nehalem'/>
<cpu name='Westmere'/> <cpu type='tcg' name='Westmere'/>
<cpu name='SandyBridge'/> <cpu type='tcg' name='SandyBridge'/>
<cpu name='Opteron_G1'/> <cpu type='tcg' name='Opteron_G1'/>
<cpu name='Opteron_G2'/> <cpu type='tcg' name='Opteron_G2'/>
<cpu name='Opteron_G3'/> <cpu type='tcg' name='Opteron_G3'/>
<cpu name='Opteron_G4'/> <cpu type='tcg' name='Opteron_G4'/>
<machine name='pc-1.2' alias='pc' maxCpus='0'/> <machine name='pc-1.2' alias='pc' maxCpus='0'/>
<machine name='isapc' maxCpus='0'/> <machine name='isapc' maxCpus='0'/>
<machine name='pc-0.10' maxCpus='0'/> <machine name='pc-0.10' maxCpus='0'/>
......
...@@ -132,30 +132,30 @@ ...@@ -132,30 +132,30 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>x86_64</arch> <arch>x86_64</arch>
<cpu name='qemu64'/> <cpu type='tcg' name='qemu64'/>
<cpu name='phenom'/> <cpu type='tcg' name='phenom'/>
<cpu name='core2duo'/> <cpu type='tcg' name='core2duo'/>
<cpu name='kvm64'/> <cpu type='tcg' name='kvm64'/>
<cpu name='qemu32'/> <cpu type='tcg' name='qemu32'/>
<cpu name='kvm32'/> <cpu type='tcg' name='kvm32'/>
<cpu name='coreduo'/> <cpu type='tcg' name='coreduo'/>
<cpu name='486'/> <cpu type='tcg' name='486'/>
<cpu name='pentium'/> <cpu type='tcg' name='pentium'/>
<cpu name='pentium2'/> <cpu type='tcg' name='pentium2'/>
<cpu name='pentium3'/> <cpu type='tcg' name='pentium3'/>
<cpu name='athlon'/> <cpu type='tcg' name='athlon'/>
<cpu name='n270'/> <cpu type='tcg' name='n270'/>
<cpu name='Conroe'/> <cpu type='tcg' name='Conroe'/>
<cpu name='Penryn'/> <cpu type='tcg' name='Penryn'/>
<cpu name='Nehalem'/> <cpu type='tcg' name='Nehalem'/>
<cpu name='Westmere'/> <cpu type='tcg' name='Westmere'/>
<cpu name='SandyBridge'/> <cpu type='tcg' name='SandyBridge'/>
<cpu name='Haswell'/> <cpu type='tcg' name='Haswell'/>
<cpu name='Opteron_G1'/> <cpu type='tcg' name='Opteron_G1'/>
<cpu name='Opteron_G2'/> <cpu type='tcg' name='Opteron_G2'/>
<cpu name='Opteron_G3'/> <cpu type='tcg' name='Opteron_G3'/>
<cpu name='Opteron_G4'/> <cpu type='tcg' name='Opteron_G4'/>
<cpu name='Opteron_G5'/> <cpu type='tcg' name='Opteron_G5'/>
<machine name='pc-1.3' alias='pc' maxCpus='0'/> <machine name='pc-1.3' alias='pc' maxCpus='0'/>
<machine name='q35-next' alias='q35' maxCpus='0'/> <machine name='q35-next' alias='q35' maxCpus='0'/>
<machine name='isapc' maxCpus='0'/> <machine name='isapc' maxCpus='0'/>
......
...@@ -133,30 +133,30 @@ ...@@ -133,30 +133,30 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>x86_64</arch> <arch>x86_64</arch>
<cpu name='Opteron_G5'/> <cpu type='tcg' name='Opteron_G5'/>
<cpu name='Opteron_G4'/> <cpu type='tcg' name='Opteron_G4'/>
<cpu name='Opteron_G3'/> <cpu type='tcg' name='Opteron_G3'/>
<cpu name='Opteron_G2'/> <cpu type='tcg' name='Opteron_G2'/>
<cpu name='Opteron_G1'/> <cpu type='tcg' name='Opteron_G1'/>
<cpu name='Haswell'/> <cpu type='tcg' name='Haswell'/>
<cpu name='SandyBridge'/> <cpu type='tcg' name='SandyBridge'/>
<cpu name='Westmere'/> <cpu type='tcg' name='Westmere'/>
<cpu name='Nehalem'/> <cpu type='tcg' name='Nehalem'/>
<cpu name='Penryn'/> <cpu type='tcg' name='Penryn'/>
<cpu name='Conroe'/> <cpu type='tcg' name='Conroe'/>
<cpu name='n270'/> <cpu type='tcg' name='n270'/>
<cpu name='athlon'/> <cpu type='tcg' name='athlon'/>
<cpu name='pentium3'/> <cpu type='tcg' name='pentium3'/>
<cpu name='pentium2'/> <cpu type='tcg' name='pentium2'/>
<cpu name='pentium'/> <cpu type='tcg' name='pentium'/>
<cpu name='486'/> <cpu type='tcg' name='486'/>
<cpu name='coreduo'/> <cpu type='tcg' name='coreduo'/>
<cpu name='kvm32'/> <cpu type='tcg' name='kvm32'/>
<cpu name='qemu32'/> <cpu type='tcg' name='qemu32'/>
<cpu name='kvm64'/> <cpu type='tcg' name='kvm64'/>
<cpu name='core2duo'/> <cpu type='tcg' name='core2duo'/>
<cpu name='phenom'/> <cpu type='tcg' name='phenom'/>
<cpu name='qemu64'/> <cpu type='tcg' name='qemu64'/>
<machine name='pc-i440fx-1.4' alias='pc' maxCpus='0'/> <machine name='pc-i440fx-1.4' alias='pc' maxCpus='0'/>
<machine name='pc-q35-1.4' alias='q35' maxCpus='0'/> <machine name='pc-q35-1.4' alias='q35' maxCpus='0'/>
<machine name='isapc' maxCpus='0'/> <machine name='isapc' maxCpus='0'/>
......
...@@ -144,30 +144,30 @@ ...@@ -144,30 +144,30 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>x86_64</arch> <arch>x86_64</arch>
<cpu name='Opteron_G5'/> <cpu type='tcg' name='Opteron_G5'/>
<cpu name='Opteron_G4'/> <cpu type='tcg' name='Opteron_G4'/>
<cpu name='Opteron_G3'/> <cpu type='tcg' name='Opteron_G3'/>
<cpu name='Opteron_G2'/> <cpu type='tcg' name='Opteron_G2'/>
<cpu name='Opteron_G1'/> <cpu type='tcg' name='Opteron_G1'/>
<cpu name='Haswell'/> <cpu type='tcg' name='Haswell'/>
<cpu name='SandyBridge'/> <cpu type='tcg' name='SandyBridge'/>
<cpu name='Westmere'/> <cpu type='tcg' name='Westmere'/>
<cpu name='Nehalem'/> <cpu type='tcg' name='Nehalem'/>
<cpu name='Penryn'/> <cpu type='tcg' name='Penryn'/>
<cpu name='Conroe'/> <cpu type='tcg' name='Conroe'/>
<cpu name='n270'/> <cpu type='tcg' name='n270'/>
<cpu name='athlon'/> <cpu type='tcg' name='athlon'/>
<cpu name='pentium3'/> <cpu type='tcg' name='pentium3'/>
<cpu name='pentium2'/> <cpu type='tcg' name='pentium2'/>
<cpu name='pentium'/> <cpu type='tcg' name='pentium'/>
<cpu name='486'/> <cpu type='tcg' name='486'/>
<cpu name='coreduo'/> <cpu type='tcg' name='coreduo'/>
<cpu name='kvm32'/> <cpu type='tcg' name='kvm32'/>
<cpu name='qemu32'/> <cpu type='tcg' name='qemu32'/>
<cpu name='kvm64'/> <cpu type='tcg' name='kvm64'/>
<cpu name='core2duo'/> <cpu type='tcg' name='core2duo'/>
<cpu name='phenom'/> <cpu type='tcg' name='phenom'/>
<cpu name='qemu64'/> <cpu type='tcg' name='qemu64'/>
<machine name='pc-i440fx-1.5' alias='pc' maxCpus='255'/> <machine name='pc-i440fx-1.5' alias='pc' maxCpus='255'/>
<machine name='pc-q35-1.4' maxCpus='255'/> <machine name='pc-q35-1.4' maxCpus='255'/>
<machine name='pc-q35-1.5' alias='q35' maxCpus='255'/> <machine name='pc-q35-1.5' alias='q35' maxCpus='255'/>
......
...@@ -149,30 +149,30 @@ ...@@ -149,30 +149,30 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>x86_64</arch> <arch>x86_64</arch>
<cpu name='Opteron_G5'/> <cpu type='tcg' name='Opteron_G5'/>
<cpu name='Opteron_G4'/> <cpu type='tcg' name='Opteron_G4'/>
<cpu name='Opteron_G3'/> <cpu type='tcg' name='Opteron_G3'/>
<cpu name='Opteron_G2'/> <cpu type='tcg' name='Opteron_G2'/>
<cpu name='Opteron_G1'/> <cpu type='tcg' name='Opteron_G1'/>
<cpu name='Haswell'/> <cpu type='tcg' name='Haswell'/>
<cpu name='SandyBridge'/> <cpu type='tcg' name='SandyBridge'/>
<cpu name='Westmere'/> <cpu type='tcg' name='Westmere'/>
<cpu name='Nehalem'/> <cpu type='tcg' name='Nehalem'/>
<cpu name='Penryn'/> <cpu type='tcg' name='Penryn'/>
<cpu name='Conroe'/> <cpu type='tcg' name='Conroe'/>
<cpu name='n270'/> <cpu type='tcg' name='n270'/>
<cpu name='athlon'/> <cpu type='tcg' name='athlon'/>
<cpu name='pentium3'/> <cpu type='tcg' name='pentium3'/>
<cpu name='pentium2'/> <cpu type='tcg' name='pentium2'/>
<cpu name='pentium'/> <cpu type='tcg' name='pentium'/>
<cpu name='486'/> <cpu type='tcg' name='486'/>
<cpu name='coreduo'/> <cpu type='tcg' name='coreduo'/>
<cpu name='kvm32'/> <cpu type='tcg' name='kvm32'/>
<cpu name='qemu32'/> <cpu type='tcg' name='qemu32'/>
<cpu name='kvm64'/> <cpu type='tcg' name='kvm64'/>
<cpu name='core2duo'/> <cpu type='tcg' name='core2duo'/>
<cpu name='phenom'/> <cpu type='tcg' name='phenom'/>
<cpu name='qemu64'/> <cpu type='tcg' name='qemu64'/>
<machine name='pc-i440fx-1.6' alias='pc' maxCpus='255'/> <machine name='pc-i440fx-1.6' alias='pc' maxCpus='255'/>
<machine name='pc-q35-1.4' maxCpus='255'/> <machine name='pc-q35-1.4' maxCpus='255'/>
<machine name='pc-q35-1.5' maxCpus='255'/> <machine name='pc-q35-1.5' maxCpus='255'/>
......
...@@ -151,30 +151,30 @@ ...@@ -151,30 +151,30 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>x86_64</arch> <arch>x86_64</arch>
<cpu name='Opteron_G5'/> <cpu type='tcg' name='Opteron_G5'/>
<cpu name='Opteron_G4'/> <cpu type='tcg' name='Opteron_G4'/>
<cpu name='Opteron_G3'/> <cpu type='tcg' name='Opteron_G3'/>
<cpu name='Opteron_G2'/> <cpu type='tcg' name='Opteron_G2'/>
<cpu name='Opteron_G1'/> <cpu type='tcg' name='Opteron_G1'/>
<cpu name='Haswell'/> <cpu type='tcg' name='Haswell'/>
<cpu name='SandyBridge'/> <cpu type='tcg' name='SandyBridge'/>
<cpu name='Westmere'/> <cpu type='tcg' name='Westmere'/>
<cpu name='Nehalem'/> <cpu type='tcg' name='Nehalem'/>
<cpu name='Penryn'/> <cpu type='tcg' name='Penryn'/>
<cpu name='Conroe'/> <cpu type='tcg' name='Conroe'/>
<cpu name='n270'/> <cpu type='tcg' name='n270'/>
<cpu name='athlon'/> <cpu type='tcg' name='athlon'/>
<cpu name='pentium3'/> <cpu type='tcg' name='pentium3'/>
<cpu name='pentium2'/> <cpu type='tcg' name='pentium2'/>
<cpu name='pentium'/> <cpu type='tcg' name='pentium'/>
<cpu name='486'/> <cpu type='tcg' name='486'/>
<cpu name='coreduo'/> <cpu type='tcg' name='coreduo'/>
<cpu name='kvm32'/> <cpu type='tcg' name='kvm32'/>
<cpu name='qemu32'/> <cpu type='tcg' name='qemu32'/>
<cpu name='kvm64'/> <cpu type='tcg' name='kvm64'/>
<cpu name='core2duo'/> <cpu type='tcg' name='core2duo'/>
<cpu name='phenom'/> <cpu type='tcg' name='phenom'/>
<cpu name='qemu64'/> <cpu type='tcg' name='qemu64'/>
<machine name='pc-i440fx-1.7' alias='pc' maxCpus='255'/> <machine name='pc-i440fx-1.7' alias='pc' maxCpus='255'/>
<machine name='pc-q35-1.4' maxCpus='255'/> <machine name='pc-q35-1.4' maxCpus='255'/>
<machine name='pc-q35-1.5' maxCpus='255'/> <machine name='pc-q35-1.5' maxCpus='255'/>
......
...@@ -166,31 +166,31 @@ ...@@ -166,31 +166,31 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>x86_64</arch> <arch>x86_64</arch>
<cpu name='Opteron_G5'/> <cpu type='tcg' name='Opteron_G5'/>
<cpu name='Opteron_G4'/> <cpu type='tcg' name='Opteron_G4'/>
<cpu name='Opteron_G3'/> <cpu type='tcg' name='Opteron_G3'/>
<cpu name='Opteron_G2'/> <cpu type='tcg' name='Opteron_G2'/>
<cpu name='Opteron_G1'/> <cpu type='tcg' name='Opteron_G1'/>
<cpu name='Broadwell'/> <cpu type='tcg' name='Broadwell'/>
<cpu name='Haswell'/> <cpu type='tcg' name='Haswell'/>
<cpu name='SandyBridge'/> <cpu type='tcg' name='SandyBridge'/>
<cpu name='Westmere'/> <cpu type='tcg' name='Westmere'/>
<cpu name='Nehalem'/> <cpu type='tcg' name='Nehalem'/>
<cpu name='Penryn'/> <cpu type='tcg' name='Penryn'/>
<cpu name='Conroe'/> <cpu type='tcg' name='Conroe'/>
<cpu name='n270'/> <cpu type='tcg' name='n270'/>
<cpu name='athlon'/> <cpu type='tcg' name='athlon'/>
<cpu name='pentium3'/> <cpu type='tcg' name='pentium3'/>
<cpu name='pentium2'/> <cpu type='tcg' name='pentium2'/>
<cpu name='pentium'/> <cpu type='tcg' name='pentium'/>
<cpu name='486'/> <cpu type='tcg' name='486'/>
<cpu name='coreduo'/> <cpu type='tcg' name='coreduo'/>
<cpu name='kvm32'/> <cpu type='tcg' name='kvm32'/>
<cpu name='qemu32'/> <cpu type='tcg' name='qemu32'/>
<cpu name='kvm64'/> <cpu type='tcg' name='kvm64'/>
<cpu name='core2duo'/> <cpu type='tcg' name='core2duo'/>
<cpu name='phenom'/> <cpu type='tcg' name='phenom'/>
<cpu name='qemu64'/> <cpu type='tcg' name='qemu64'/>
<machine name='pc-i440fx-2.1' alias='pc' maxCpus='255'/> <machine name='pc-i440fx-2.1' alias='pc' maxCpus='255'/>
<machine name='pc-1.3' maxCpus='255'/> <machine name='pc-1.3' maxCpus='255'/>
<machine name='pc-0.12' maxCpus='255'/> <machine name='pc-0.12' maxCpus='255'/>
......
...@@ -186,34 +186,34 @@ ...@@ -186,34 +186,34 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>x86_64</arch> <arch>x86_64</arch>
<cpu name='Opteron_G5'/> <cpu type='tcg' name='Opteron_G5'/>
<cpu name='Opteron_G4'/> <cpu type='tcg' name='Opteron_G4'/>
<cpu name='Opteron_G3'/> <cpu type='tcg' name='Opteron_G3'/>
<cpu name='Opteron_G2'/> <cpu type='tcg' name='Opteron_G2'/>
<cpu name='Opteron_G1'/> <cpu type='tcg' name='Opteron_G1'/>
<cpu name='Broadwell'/> <cpu type='tcg' name='Broadwell'/>
<cpu name='Broadwell-noTSX'/> <cpu type='tcg' name='Broadwell-noTSX'/>
<cpu name='Haswell'/> <cpu type='tcg' name='Haswell'/>
<cpu name='Haswell-noTSX'/> <cpu type='tcg' name='Haswell-noTSX'/>
<cpu name='IvyBridge'/> <cpu type='tcg' name='IvyBridge'/>
<cpu name='SandyBridge'/> <cpu type='tcg' name='SandyBridge'/>
<cpu name='Westmere'/> <cpu type='tcg' name='Westmere'/>
<cpu name='Nehalem'/> <cpu type='tcg' name='Nehalem'/>
<cpu name='Penryn'/> <cpu type='tcg' name='Penryn'/>
<cpu name='Conroe'/> <cpu type='tcg' name='Conroe'/>
<cpu name='n270'/> <cpu type='tcg' name='n270'/>
<cpu name='athlon'/> <cpu type='tcg' name='athlon'/>
<cpu name='pentium3'/> <cpu type='tcg' name='pentium3'/>
<cpu name='pentium2'/> <cpu type='tcg' name='pentium2'/>
<cpu name='pentium'/> <cpu type='tcg' name='pentium'/>
<cpu name='486'/> <cpu type='tcg' name='486'/>
<cpu name='coreduo'/> <cpu type='tcg' name='coreduo'/>
<cpu name='kvm32'/> <cpu type='tcg' name='kvm32'/>
<cpu name='qemu32'/> <cpu type='tcg' name='qemu32'/>
<cpu name='kvm64'/> <cpu type='tcg' name='kvm64'/>
<cpu name='core2duo'/> <cpu type='tcg' name='core2duo'/>
<cpu name='phenom'/> <cpu type='tcg' name='phenom'/>
<cpu name='qemu64'/> <cpu type='tcg' name='qemu64'/>
<machine name='pc-i440fx-2.4' alias='pc' maxCpus='255'/> <machine name='pc-i440fx-2.4' alias='pc' maxCpus='255'/>
<machine name='pc-1.3' maxCpus='255'/> <machine name='pc-1.3' maxCpus='255'/>
<machine name='pc-0.12' maxCpus='255'/> <machine name='pc-0.12' maxCpus='255'/>
......
...@@ -192,34 +192,34 @@ ...@@ -192,34 +192,34 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>x86_64</arch> <arch>x86_64</arch>
<cpu name='Opteron_G5'/> <cpu type='tcg' name='Opteron_G5'/>
<cpu name='Opteron_G4'/> <cpu type='tcg' name='Opteron_G4'/>
<cpu name='Opteron_G3'/> <cpu type='tcg' name='Opteron_G3'/>
<cpu name='Opteron_G2'/> <cpu type='tcg' name='Opteron_G2'/>
<cpu name='Opteron_G1'/> <cpu type='tcg' name='Opteron_G1'/>
<cpu name='Broadwell'/> <cpu type='tcg' name='Broadwell'/>
<cpu name='Broadwell-noTSX'/> <cpu type='tcg' name='Broadwell-noTSX'/>
<cpu name='Haswell'/> <cpu type='tcg' name='Haswell'/>
<cpu name='Haswell-noTSX'/> <cpu type='tcg' name='Haswell-noTSX'/>
<cpu name='IvyBridge'/> <cpu type='tcg' name='IvyBridge'/>
<cpu name='SandyBridge'/> <cpu type='tcg' name='SandyBridge'/>
<cpu name='Westmere'/> <cpu type='tcg' name='Westmere'/>
<cpu name='Nehalem'/> <cpu type='tcg' name='Nehalem'/>
<cpu name='Penryn'/> <cpu type='tcg' name='Penryn'/>
<cpu name='Conroe'/> <cpu type='tcg' name='Conroe'/>
<cpu name='n270'/> <cpu type='tcg' name='n270'/>
<cpu name='athlon'/> <cpu type='tcg' name='athlon'/>
<cpu name='pentium3'/> <cpu type='tcg' name='pentium3'/>
<cpu name='pentium2'/> <cpu type='tcg' name='pentium2'/>
<cpu name='pentium'/> <cpu type='tcg' name='pentium'/>
<cpu name='486'/> <cpu type='tcg' name='486'/>
<cpu name='coreduo'/> <cpu type='tcg' name='coreduo'/>
<cpu name='kvm32'/> <cpu type='tcg' name='kvm32'/>
<cpu name='qemu32'/> <cpu type='tcg' name='qemu32'/>
<cpu name='kvm64'/> <cpu type='tcg' name='kvm64'/>
<cpu name='core2duo'/> <cpu type='tcg' name='core2duo'/>
<cpu name='phenom'/> <cpu type='tcg' name='phenom'/>
<cpu name='qemu64'/> <cpu type='tcg' name='qemu64'/>
<machine name='pc-i440fx-2.5' alias='pc' maxCpus='255'/> <machine name='pc-i440fx-2.5' alias='pc' maxCpus='255'/>
<machine name='pc-i440fx-2.4' maxCpus='255'/> <machine name='pc-i440fx-2.4' maxCpus='255'/>
<machine name='pc-1.3' maxCpus='255'/> <machine name='pc-1.3' maxCpus='255'/>
......
...@@ -167,36 +167,36 @@ ...@@ -167,36 +167,36 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>aarch64</arch> <arch>aarch64</arch>
<cpu name='pxa262'/> <cpu type='tcg' name='pxa262'/>
<cpu name='pxa270-a0'/> <cpu type='tcg' name='pxa270-a0'/>
<cpu name='arm1136'/> <cpu type='tcg' name='arm1136'/>
<cpu name='cortex-a15'/> <cpu type='tcg' name='cortex-a15'/>
<cpu name='pxa260'/> <cpu type='tcg' name='pxa260'/>
<cpu name='arm1136-r2'/> <cpu type='tcg' name='arm1136-r2'/>
<cpu name='pxa261'/> <cpu type='tcg' name='pxa261'/>
<cpu name='pxa255'/> <cpu type='tcg' name='pxa255'/>
<cpu name='arm926'/> <cpu type='tcg' name='arm926'/>
<cpu name='arm11mpcore'/> <cpu type='tcg' name='arm11mpcore'/>
<cpu name='pxa250'/> <cpu type='tcg' name='pxa250'/>
<cpu name='ti925t'/> <cpu type='tcg' name='ti925t'/>
<cpu name='cortex-a57'/> <cpu type='tcg' name='cortex-a57'/>
<cpu name='sa1110'/> <cpu type='tcg' name='sa1110'/>
<cpu name='arm1176'/> <cpu type='tcg' name='arm1176'/>
<cpu name='cortex-a53'/> <cpu type='tcg' name='cortex-a53'/>
<cpu name='sa1100'/> <cpu type='tcg' name='sa1100'/>
<cpu name='pxa270-c5'/> <cpu type='tcg' name='pxa270-c5'/>
<cpu name='cortex-a9'/> <cpu type='tcg' name='cortex-a9'/>
<cpu name='cortex-a8'/> <cpu type='tcg' name='cortex-a8'/>
<cpu name='pxa270-c0'/> <cpu type='tcg' name='pxa270-c0'/>
<cpu name='arm1026'/> <cpu type='tcg' name='arm1026'/>
<cpu name='pxa270-b1'/> <cpu type='tcg' name='pxa270-b1'/>
<cpu name='cortex-m3'/> <cpu type='tcg' name='cortex-m3'/>
<cpu name='cortex-m4'/> <cpu type='tcg' name='cortex-m4'/>
<cpu name='pxa270-b0'/> <cpu type='tcg' name='pxa270-b0'/>
<cpu name='arm946'/> <cpu type='tcg' name='arm946'/>
<cpu name='cortex-r5'/> <cpu type='tcg' name='cortex-r5'/>
<cpu name='pxa270-a1'/> <cpu type='tcg' name='pxa270-a1'/>
<cpu name='pxa270'/> <cpu type='tcg' name='pxa270'/>
<machine name='integratorcp' maxCpus='1'/> <machine name='integratorcp' maxCpus='1'/>
<machine name='nuri' maxCpus='2'/> <machine name='nuri' maxCpus='2'/>
<machine name='verdex' maxCpus='1'/> <machine name='verdex' maxCpus='1'/>
......
...@@ -167,36 +167,36 @@ ...@@ -167,36 +167,36 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>aarch64</arch> <arch>aarch64</arch>
<cpu name='pxa262'/> <cpu type='tcg' name='pxa262'/>
<cpu name='pxa270-a0'/> <cpu type='tcg' name='pxa270-a0'/>
<cpu name='arm1136'/> <cpu type='tcg' name='arm1136'/>
<cpu name='cortex-a15'/> <cpu type='tcg' name='cortex-a15'/>
<cpu name='pxa260'/> <cpu type='tcg' name='pxa260'/>
<cpu name='arm1136-r2'/> <cpu type='tcg' name='arm1136-r2'/>
<cpu name='pxa261'/> <cpu type='tcg' name='pxa261'/>
<cpu name='pxa255'/> <cpu type='tcg' name='pxa255'/>
<cpu name='arm926'/> <cpu type='tcg' name='arm926'/>
<cpu name='arm11mpcore'/> <cpu type='tcg' name='arm11mpcore'/>
<cpu name='pxa250'/> <cpu type='tcg' name='pxa250'/>
<cpu name='ti925t'/> <cpu type='tcg' name='ti925t'/>
<cpu name='cortex-a57'/> <cpu type='tcg' name='cortex-a57'/>
<cpu name='sa1110'/> <cpu type='tcg' name='sa1110'/>
<cpu name='arm1176'/> <cpu type='tcg' name='arm1176'/>
<cpu name='cortex-a53'/> <cpu type='tcg' name='cortex-a53'/>
<cpu name='sa1100'/> <cpu type='tcg' name='sa1100'/>
<cpu name='pxa270-c5'/> <cpu type='tcg' name='pxa270-c5'/>
<cpu name='cortex-a9'/> <cpu type='tcg' name='cortex-a9'/>
<cpu name='cortex-a8'/> <cpu type='tcg' name='cortex-a8'/>
<cpu name='pxa270-c0'/> <cpu type='tcg' name='pxa270-c0'/>
<cpu name='arm1026'/> <cpu type='tcg' name='arm1026'/>
<cpu name='pxa270-b1'/> <cpu type='tcg' name='pxa270-b1'/>
<cpu name='cortex-m3'/> <cpu type='tcg' name='cortex-m3'/>
<cpu name='cortex-m4'/> <cpu type='tcg' name='cortex-m4'/>
<cpu name='pxa270-b0'/> <cpu type='tcg' name='pxa270-b0'/>
<cpu name='arm946'/> <cpu type='tcg' name='arm946'/>
<cpu name='cortex-r5'/> <cpu type='tcg' name='cortex-r5'/>
<cpu name='pxa270-a1'/> <cpu type='tcg' name='pxa270-a1'/>
<cpu name='pxa270'/> <cpu type='tcg' name='pxa270'/>
<machine name='integratorcp' maxCpus='1'/> <machine name='integratorcp' maxCpus='1'/>
<machine name='nuri' maxCpus='2'/> <machine name='nuri' maxCpus='2'/>
<machine name='verdex' maxCpus='1'/> <machine name='verdex' maxCpus='1'/>
......
...@@ -201,34 +201,34 @@ ...@@ -201,34 +201,34 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package></package> <package></package>
<arch>x86_64</arch> <arch>x86_64</arch>
<cpu name='Opteron_G5'/> <cpu type='tcg' name='Opteron_G5'/>
<cpu name='Opteron_G4'/> <cpu type='tcg' name='Opteron_G4'/>
<cpu name='Opteron_G3'/> <cpu type='tcg' name='Opteron_G3'/>
<cpu name='Opteron_G2'/> <cpu type='tcg' name='Opteron_G2'/>
<cpu name='Opteron_G1'/> <cpu type='tcg' name='Opteron_G1'/>
<cpu name='Broadwell'/> <cpu type='tcg' name='Broadwell'/>
<cpu name='Broadwell-noTSX'/> <cpu type='tcg' name='Broadwell-noTSX'/>
<cpu name='Haswell'/> <cpu type='tcg' name='Haswell'/>
<cpu name='Haswell-noTSX'/> <cpu type='tcg' name='Haswell-noTSX'/>
<cpu name='IvyBridge'/> <cpu type='tcg' name='IvyBridge'/>
<cpu name='SandyBridge'/> <cpu type='tcg' name='SandyBridge'/>
<cpu name='Westmere'/> <cpu type='tcg' name='Westmere'/>
<cpu name='Nehalem'/> <cpu type='tcg' name='Nehalem'/>
<cpu name='Penryn'/> <cpu type='tcg' name='Penryn'/>
<cpu name='Conroe'/> <cpu type='tcg' name='Conroe'/>
<cpu name='n270'/> <cpu type='tcg' name='n270'/>
<cpu name='athlon'/> <cpu type='tcg' name='athlon'/>
<cpu name='pentium3'/> <cpu type='tcg' name='pentium3'/>
<cpu name='pentium2'/> <cpu type='tcg' name='pentium2'/>
<cpu name='pentium'/> <cpu type='tcg' name='pentium'/>
<cpu name='486'/> <cpu type='tcg' name='486'/>
<cpu name='coreduo'/> <cpu type='tcg' name='coreduo'/>
<cpu name='kvm32'/> <cpu type='tcg' name='kvm32'/>
<cpu name='qemu32'/> <cpu type='tcg' name='qemu32'/>
<cpu name='kvm64'/> <cpu type='tcg' name='kvm64'/>
<cpu name='core2duo'/> <cpu type='tcg' name='core2duo'/>
<cpu name='phenom'/> <cpu type='tcg' name='phenom'/>
<cpu name='qemu64'/> <cpu type='tcg' name='qemu64'/>
<machine name='pc-i440fx-2.6' alias='pc' maxCpus='255'/> <machine name='pc-i440fx-2.6' alias='pc' maxCpus='255'/>
<machine name='pc-0.12' maxCpus='255'/> <machine name='pc-0.12' maxCpus='255'/>
<machine name='pc-i440fx-2.4' maxCpus='255'/> <machine name='pc-i440fx-2.4' maxCpus='255'/>
......
...@@ -203,35 +203,35 @@ ...@@ -203,35 +203,35 @@
<kvmVersion>0</kvmVersion> <kvmVersion>0</kvmVersion>
<package> (v2.7.0)</package> <package> (v2.7.0)</package>
<arch>x86_64</arch> <arch>x86_64</arch>
<cpu name='Opteron_G5'/> <cpu type='tcg' name='Opteron_G5'/>
<cpu name='Opteron_G4'/> <cpu type='tcg' name='Opteron_G4'/>
<cpu name='Opteron_G3'/> <cpu type='tcg' name='Opteron_G3'/>
<cpu name='Opteron_G2'/> <cpu type='tcg' name='Opteron_G2'/>
<cpu name='Opteron_G1'/> <cpu type='tcg' name='Opteron_G1'/>
<cpu name='Skylake-Client'/> <cpu type='tcg' name='Skylake-Client'/>
<cpu name='Broadwell'/> <cpu type='tcg' name='Broadwell'/>
<cpu name='Broadwell-noTSX'/> <cpu type='tcg' name='Broadwell-noTSX'/>
<cpu name='Haswell'/> <cpu type='tcg' name='Haswell'/>
<cpu name='Haswell-noTSX'/> <cpu type='tcg' name='Haswell-noTSX'/>
<cpu name='IvyBridge'/> <cpu type='tcg' name='IvyBridge'/>
<cpu name='SandyBridge'/> <cpu type='tcg' name='SandyBridge'/>
<cpu name='Westmere'/> <cpu type='tcg' name='Westmere'/>
<cpu name='Nehalem'/> <cpu type='tcg' name='Nehalem'/>
<cpu name='Penryn'/> <cpu type='tcg' name='Penryn'/>
<cpu name='Conroe'/> <cpu type='tcg' name='Conroe'/>
<cpu name='n270'/> <cpu type='tcg' name='n270'/>
<cpu name='athlon'/> <cpu type='tcg' name='athlon'/>
<cpu name='pentium3'/> <cpu type='tcg' name='pentium3'/>
<cpu name='pentium2'/> <cpu type='tcg' name='pentium2'/>
<cpu name='pentium'/> <cpu type='tcg' name='pentium'/>
<cpu name='486'/> <cpu type='tcg' name='486'/>
<cpu name='coreduo'/> <cpu type='tcg' name='coreduo'/>
<cpu name='kvm32'/> <cpu type='tcg' name='kvm32'/>
<cpu name='qemu32'/> <cpu type='tcg' name='qemu32'/>
<cpu name='kvm64'/> <cpu type='tcg' name='kvm64'/>
<cpu name='core2duo'/> <cpu type='tcg' name='core2duo'/>
<cpu name='phenom'/> <cpu type='tcg' name='phenom'/>
<cpu name='qemu64'/> <cpu type='tcg' name='qemu64'/>
<machine name='pc-i440fx-2.7' alias='pc' hotplugCpus='yes' maxCpus='255'/> <machine name='pc-i440fx-2.7' alias='pc' hotplugCpus='yes' maxCpus='255'/>
<machine name='pc-0.12' hotplugCpus='yes' maxCpus='255'/> <machine name='pc-0.12' hotplugCpus='yes' maxCpus='255'/>
<machine name='pc-i440fx-2.4' hotplugCpus='yes' maxCpus='255'/> <machine name='pc-i440fx-2.4' hotplugCpus='yes' maxCpus='255'/>
......
...@@ -302,20 +302,31 @@ testAddCPUModels(virQEMUCapsPtr caps, bool skipLegacy) ...@@ -302,20 +302,31 @@ testAddCPUModels(virQEMUCapsPtr caps, bool skipLegacy)
}; };
if (ARCH_IS_X86(arch)) { 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) ARRAY_CARDINALITY(x86Models)) < 0)
return -1; return -1;
if (!skipLegacy && if (!skipLegacy) {
virQEMUCapsAddCPUDefinitions(caps, x86LegacyModels, if (virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_KVM,
ARRAY_CARDINALITY(x86LegacyModels)) < 0) x86LegacyModels,
return -1; ARRAY_CARDINALITY(x86LegacyModels)) < 0 ||
virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_QEMU,
x86LegacyModels,
ARRAY_CARDINALITY(x86LegacyModels)) < 0)
return -1;
}
} else if (ARCH_IS_ARM(arch)) { } 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) ARRAY_CARDINALITY(armModels)) < 0)
return -1; return -1;
} else if (ARCH_IS_PPC64(arch)) { } 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) ARRAY_CARDINALITY(ppc64Models)) < 0)
return -1; return -1;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册