提交 1bc84843 编写于 作者: J Jiri Denemark

cpu: Special case models == NULL in cpuGetModels

Some CPU drivers (such as arm) do not provide list of CPUs libvirt
supports and just pass any CPU model from domain XML directly to QEMU.
Such driver need to return models == NULL and success from cpuGetModels.
Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
上级 84d38307
......@@ -750,9 +750,13 @@ cpuModelIsAllowed(const char *model,
* @arch: CPU architecture
* @models: where to store the NULL-terminated list of supported models
*
* Fetches all CPU models supported by libvirt on @archName.
* Fetches all CPU models supported by libvirt on @archName. If there are
* no restrictions on CPU models on @archName (i.e., the CPU model is just
* passed directly to a hypervisor), this function returns 0 and sets
* @models to NULL.
*
* Returns number of supported CPU models or -1 on error.
* Returns number of supported CPU models, 0 if any CPU model is supported,
* or -1 on error.
*/
int
cpuGetModels(virArch arch, char ***models)
......@@ -770,10 +774,9 @@ cpuGetModels(virArch arch, char ***models)
}
if (!driver->getModels) {
virReportError(VIR_ERR_NO_SUPPORT,
_("CPU driver for %s has no CPU model support"),
virArchToString(arch));
return -1;
if (models)
*models = NULL;
return 0;
}
return driver->getModels(models);
......
......@@ -1005,7 +1005,8 @@ virConnectCompareCPU(virConnectPtr conn,
*
* Get the list of supported CPU models for a specific architecture.
*
* Returns -1 on error, number of elements in @models on success.
* Returns -1 on error, number of elements in @models on success (0 means
* libvirt accepts any CPU model).
*/
int
virConnectGetCPUModelNames(virConnectPtr conn, const char *arch, char ***models,
......
......@@ -1149,9 +1149,13 @@ cmdCPUModelNames(vshControl *ctl, const vshCmd *cmd)
return false;
}
for (i = 0; i < nmodels; i++) {
vshPrint(ctl, "%s\n", models[i]);
VIR_FREE(models[i]);
if (nmodels == 0) {
vshPrintExtra(ctl, "%s\n", _("all CPU models are accepted"));
} else {
for (i = 0; i < nmodels; i++) {
vshPrint(ctl, "%s\n", models[i]);
VIR_FREE(models[i]);
}
}
VIR_FREE(models);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册