qapi/misc.json | 6 +++++- vl.c | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-)
When user doesn't request any explicit CPU model with libvirt or QEMU,
a machine type specific CPU model is picked. Currently there is no way
to determine what this QEMU built-in default is, so libvirt cannot
report this back to the user in the XML config.
This extends the "query-machines" QMP command so that it reports the
default CPU model typename for each machine.
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
Changed in v2:
- Fix qapi docs version tag
qapi/misc.json | 6 +++++-
vl.c | 4 ++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/qapi/misc.json b/qapi/misc.json
index 8b3ca4fdd3..9e2dedd938 100644
--- a/qapi/misc.json
+++ b/qapi/misc.json
@@ -2018,12 +2018,16 @@
#
# @hotpluggable-cpus: cpu hotplug via -device is supported (since 2.7.0)
#
+# @default-cpu-type: default CPU model typename if none is requested via
+# the -cpu argument. (since 4.1)
+#
# Since: 1.2.0
##
{ 'struct': 'MachineInfo',
'data': { 'name': 'str', '*alias': 'str',
'*is-default': 'bool', 'cpu-max': 'int',
- 'hotpluggable-cpus': 'bool'} }
+ 'hotpluggable-cpus': 'bool',
+ '*default-cpu-type': 'str'} }
##
# @query-machines:
diff --git a/vl.c b/vl.c
index 201144b162..b2de329bd2 100644
--- a/vl.c
+++ b/vl.c
@@ -1519,6 +1519,10 @@ MachineInfoList *qmp_query_machines(Error **errp)
info->name = g_strdup(mc->name);
info->cpu_max = !mc->max_cpus ? 1 : mc->max_cpus;
info->hotpluggable_cpus = mc->has_hotpluggable_cpus;
+ if (mc->default_cpu_type) {
+ info->default_cpu_type = g_strdup(mc->default_cpu_type);
+ info->has_default_cpu_type = true;
+ }
entry = g_malloc0(sizeof(*entry));
entry->value = info;
--
2.21.0
ping, any comments / thoughts ? On Wed, Jun 12, 2019 at 01:41:25PM +0200, Daniel P. Berrangé wrote: > When user doesn't request any explicit CPU model with libvirt or QEMU, > a machine type specific CPU model is picked. Currently there is no way > to determine what this QEMU built-in default is, so libvirt cannot > report this back to the user in the XML config. > > This extends the "query-machines" QMP command so that it reports the > default CPU model typename for each machine. > > Reviewed-by: Eric Blake <eblake@redhat.com> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> > --- > > Changed in v2: > > - Fix qapi docs version tag > > qapi/misc.json | 6 +++++- > vl.c | 4 ++++ > 2 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/qapi/misc.json b/qapi/misc.json > index 8b3ca4fdd3..9e2dedd938 100644 > --- a/qapi/misc.json > +++ b/qapi/misc.json > @@ -2018,12 +2018,16 @@ > # > # @hotpluggable-cpus: cpu hotplug via -device is supported (since 2.7.0) > # > +# @default-cpu-type: default CPU model typename if none is requested via > +# the -cpu argument. (since 4.1) > +# > # Since: 1.2.0 > ## > { 'struct': 'MachineInfo', > 'data': { 'name': 'str', '*alias': 'str', > '*is-default': 'bool', 'cpu-max': 'int', > - 'hotpluggable-cpus': 'bool'} } > + 'hotpluggable-cpus': 'bool', > + '*default-cpu-type': 'str'} } > > ## > # @query-machines: > diff --git a/vl.c b/vl.c > index 201144b162..b2de329bd2 100644 > --- a/vl.c > +++ b/vl.c > @@ -1519,6 +1519,10 @@ MachineInfoList *qmp_query_machines(Error **errp) > info->name = g_strdup(mc->name); > info->cpu_max = !mc->max_cpus ? 1 : mc->max_cpus; > info->hotpluggable_cpus = mc->has_hotpluggable_cpus; > + if (mc->default_cpu_type) { > + info->default_cpu_type = g_strdup(mc->default_cpu_type); > + info->has_default_cpu_type = true; > + } > > entry = g_malloc0(sizeof(*entry)); > entry->value = info; > -- > 2.21.0 > > Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
On Wed, 12 Jun 2019 13:41:25 +0200 Daniel P. Berrangé <berrange@redhat.com> wrote: > When user doesn't request any explicit CPU model with libvirt or QEMU, > a machine type specific CPU model is picked. Currently there is no way > to determine what this QEMU built-in default is, so libvirt cannot > report this back to the user in the XML config. > > This extends the "query-machines" QMP command so that it reports the > default CPU model typename for each machine. > > Reviewed-by: Eric Blake <eblake@redhat.com> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> we probably need to allow feed it back to QEMU -cpu directly for all machines (currently it will work only with a handfull of them) something like: diff --git a/exec.c b/exec.c index e7622d1956..ea4d2d74a6 100644 --- a/exec.c +++ b/exec.c @@ -999,11 +999,14 @@ const char *parse_cpu_option(const char *cpu_option) exit(1); } - oc = cpu_class_by_name(CPU_RESOLVING_TYPE, model_pieces[0]); - if (oc == NULL) { - error_report("unable to find CPU model '%s'", model_pieces[0]); - g_strfreev(model_pieces); - exit(EXIT_FAILURE); + oc = object_class_by_name(model_pieces[0]); + if (!oc) { + oc = cpu_class_by_name(CPU_RESOLVING_TYPE, model_pieces[0]); + if (oc == NULL) { + error_report("unable to find CPU model '%s'", model_pieces[0]); + g_strfreev(model_pieces); + exit(EXIT_FAILURE); + } } cpu_type = object_class_get_name(oc); > --- > > Changed in v2: > > - Fix qapi docs version tag > > qapi/misc.json | 6 +++++- > vl.c | 4 ++++ > 2 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/qapi/misc.json b/qapi/misc.json > index 8b3ca4fdd3..9e2dedd938 100644 > --- a/qapi/misc.json > +++ b/qapi/misc.json > @@ -2018,12 +2018,16 @@ > # > # @hotpluggable-cpus: cpu hotplug via -device is supported (since 2.7.0) > # > +# @default-cpu-type: default CPU model typename if none is requested via > +# the -cpu argument. (since 4.1) > +# > # Since: 1.2.0 > ## > { 'struct': 'MachineInfo', > 'data': { 'name': 'str', '*alias': 'str', > '*is-default': 'bool', 'cpu-max': 'int', > - 'hotpluggable-cpus': 'bool'} } > + 'hotpluggable-cpus': 'bool', > + '*default-cpu-type': 'str'} } > > ## > # @query-machines: > diff --git a/vl.c b/vl.c > index 201144b162..b2de329bd2 100644 > --- a/vl.c > +++ b/vl.c > @@ -1519,6 +1519,10 @@ MachineInfoList *qmp_query_machines(Error **errp) > info->name = g_strdup(mc->name); > info->cpu_max = !mc->max_cpus ? 1 : mc->max_cpus; > info->hotpluggable_cpus = mc->has_hotpluggable_cpus; > + if (mc->default_cpu_type) { > + info->default_cpu_type = g_strdup(mc->default_cpu_type); > + info->has_default_cpu_type = true; > + } > > entry = g_malloc0(sizeof(*entry)); > entry->value = info;
© 2016 - 2024 Red Hat, Inc.