[libvirt] [PATCH v2 11/33] qemu: Store more types in qemuMonitorCPUModelInfo
Jiri Denemark
jdenemar at redhat.com
Wed Feb 22 15:48:13 UTC 2017
On Tue, Feb 21, 2017 at 09:27:45 -0500, John Ferlan wrote:
>
>
> On 02/15/2017 11:44 AM, Jiri Denemark wrote:
> > While query-cpu-model-expansion returns only boolean features on s390,
> > but x86_64 reports some integer and string properties which we are
> > interested in.
> >
> > Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> > ---
> >
> > Notes:
> > Version 2:
> > - no change
> >
> > src/qemu/qemu_capabilities.c | 84 ++++++++++++++++--------
> > src/qemu/qemu_monitor.c | 22 ++++++-
> > src/qemu/qemu_monitor.h | 23 +++++--
> > src/qemu/qemu_monitor_json.c | 37 ++++++++---
> > tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 7 ++
> > 5 files changed, 133 insertions(+), 40 deletions(-)
> >
> > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> > index aab336954..466852d13 100644
> > --- a/src/qemu/qemu_capabilities.c
> > +++ b/src/qemu/qemu_capabilities.c
> > @@ -3074,14 +3074,16 @@ virQEMUCapsInitCPUModelS390(virQEMUCapsPtr qemuCaps,
> > cpu->nfeatures = 0;
> >
> > for (i = 0; i < modelInfo->nprops; i++) {
> > - if (VIR_STRDUP(cpu->features[i].name, modelInfo->props[i].name) < 0)
> > + virCPUFeatureDefPtr feature = cpu->features + cpu->nfeatures;
> > + qemuMonitorCPUPropertyPtr prop = modelInfo->props + i;
> > +
> > + if (prop->type != QEMU_MONITOR_CPU_PROPERTY_BOOLEAN)
> > + continue;
>
> So s390 only supports "boolean" or "default" types?
S390 only supports boolean properties; there's no "default" type.
...
> > @@ -3187,30 +3188,47 @@ virQEMUCapsLoadHostCPUModelInfo(virQEMUCapsPtr qemuCaps,
> > hostCPU->nprops = n;
> >
> > for (i = 0; i < n; i++) {
> > - hostCPU->props[i].name = virXMLPropString(featureNodes[i], "name");
> > - if (!hostCPU->props[i].name) {
> > + qemuMonitorCPUPropertyPtr prop = hostCPU->props + i;
> > + ctxt->node = featureNodes[i];
> > +
> > + if (!(prop->name = virXMLPropString(ctxt->node, "name"))) {
> > virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> > _("missing 'name' attribute for a host CPU"
> > " model property in QEMU capabilities cache"));
> > goto cleanup;
> > }
>
> If you follow the suggestion I have in the previous patch, then if you
> don't find the property named "type", then you know the 'value' is
> either "yes" or "no"
>
> If there is a type then the "value" property is either "string" or "number"
As explained in my previous reply, there's no need to support missing
type attribute.
...
> > diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
> > index 8811d8501..112f041f1 100644
> > --- a/src/qemu/qemu_monitor.h
> > +++ b/src/qemu/qemu_monitor.h
> > @@ -921,16 +921,31 @@ int qemuMonitorGetCPUDefinitions(qemuMonitorPtr mon,
> > qemuMonitorCPUDefInfoPtr **cpus);
> > void qemuMonitorCPUDefInfoFree(qemuMonitorCPUDefInfoPtr cpu);
> >
> > +typedef enum {
> > + QEMU_MONITOR_CPU_PROPERTY_BOOLEAN,
>
> As stated in previous patch, I think should should be "DEFAULT"
No.
>
> > + QEMU_MONITOR_CPU_PROPERTY_STRING,
> > + QEMU_MONITOR_CPU_PROPERTY_ULL,
>
> likewise, "NUMBER" not "ULL"
Yes.
Jirka
More information about the libvir-list
mailing list