On 08/12/2016 09:33 AM, Jiri Denemark wrote:
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: Jiri Denemark <jdenemar(a)redhat.com>
---
src/cpu/cpu.c | 15 +++++++++------
src/libvirt-host.c | 3 ++-
tools/virsh-host.c | 10 +++++++---
3 files changed, 18 insertions(+), 10 deletions(-)
[...]
diff --git a/src/libvirt-host.c b/src/libvirt-host.c
index 2a3de03..335798a 100644
--- a/src/libvirt-host.c
+++ b/src/libvirt-host.c
@@ -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,
diff --git a/tools/virsh-host.c b/tools/virsh-host.c
index 57f0c0e..7ac2812 100644
--- a/tools/virsh-host.c
+++ b/tools/virsh-host.c
@@ -1127,9 +1127,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) {
+ vshPrint(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]);
+ }
I seem to recall some recent work around the -q[uiet] switch - is that
something that this code needs to be concerned with? (as silly as that
seems while I'm typing it!)
}
VIR_FREE(models);