[libvirt] [PATCH 13/18] cpu: Support multiple PVRs in the ppc64 driver

Jiri Denemark jdenemar at redhat.com
Thu Aug 6 14:51:39 UTC 2015


On Thu, Aug 06, 2015 at 16:30:37 +0200, Andrea Bolognani wrote:
> On Thu, 2015-08-06 at 13:53 +0200, Jiri Denemark wrote:
> > 
> > >      model = map->models;
> > >      while (model) {
> > > -        if (model->data->pvr == pvr)
> > > -            return model;
> > > +        for (i = 0; i < model->data->len; i++)
> > > +            if (model->data->pvr[i].value == pvr)
> > > +                return model;
> > 
> > I think the for loop would deserve {} around its body.
> 
> Added.
> 
> > > +
> > > +    for (i = 0; i < n; i++) {
> > > +
> > 
> > Drop the empty line here.
> 
> Done.
> 
> > > +        if (!(prop = virXMLPropString(nodes[i], "value"))) {
> > > +            virReportError(VIR_ERR_INTERNAL_ERROR,
> > > +                           _("Missing PVR value in CPU model %s"),
> > > +                           model->name);
> > > +            goto ignore;
> > > +        }
> > > +
> > > +        if (virStrToLong_ul(prop, NULL, 16, &pvr) < 0) {
> > > +            virReportError(VIR_ERR_INTERNAL_ERROR,
> > > +                           _("Invalid PVR value in CPU model %s"),
> > > +                           model->name);
> > > +            goto ignore;
> > > +        }
> > 
> > Any particular reason to replace virXPathULongHex with the above 
> > code?
> 
> Because I no longer have a single <pvr> element, but a number of
> them, that I retrieved a few lines above using virXPathNodeSet().
> 
> I'm definitely no XPath expert, so if you're thinking of a way of
> making this simpler feel free to share :)

Ah, right, you'd have to do something similar to this:

    orig_node = ctxt->node;
    for (...) {
        virXPathULongHex("@value", ...);
    }
    ctxt->node = orig_node;

Jirka




More information about the libvir-list mailing list