[libvirt] [PATCH 02/23] conf: Add usability blockers to virDomainCapsCPUModel

Jiri Denemark jdenemar at redhat.com
Fri Oct 13 13:48:12 UTC 2017


On Thu, Oct 12, 2017 at 07:23:25 -0400, John Ferlan wrote:
> 
> 
> On 10/04/2017 10:58 AM, Jiri Denemark wrote:
> > When a hypervisor marks a CPU model as unusable on the current host, it
> > may also give us a list of features which prevent the model from being
> > usable. Storing this list in virDomainCapsCPUModel will help the CPU
> > driver with creating a host-model CPU configuration.
> > 
> > Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> > ---
> >  src/conf/domain_capabilities.c | 30 ++++++++++++++++++++++--------
> >  src/conf/domain_capabilities.h |  7 +++++--
> >  src/qemu/qemu_capabilities.c   | 11 ++++++-----
> >  tests/domaincapstest.c         |  6 +++---
> >  4 files changed, 36 insertions(+), 18 deletions(-)
> > 
> > diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
> > index f62038b96c..be34576204 100644
> > --- a/src/conf/domain_capabilities.c
> > +++ b/src/conf/domain_capabilities.c
> > @@ -163,7 +163,8 @@ virDomainCapsCPUModelsCopy(virDomainCapsCPUModelsPtr old)
> >      for (i = 0; i < old->nmodels; i++) {
> >          if (virDomainCapsCPUModelsAdd(cpuModels,
> >                                        old->models[i].name, -1,
> > -                                      old->models[i].usable) < 0)
> > +                                      old->models[i].usable,
> > +                                      old->models[i].blockers) < 0)
> >              goto error;
> >      }
> >  
> > @@ -195,7 +196,8 @@ virDomainCapsCPUModelsFilter(virDomainCapsCPUModelsPtr old,
> >  
> >          if (virDomainCapsCPUModelsAdd(cpuModels,
> >                                        old->models[i].name, -1,
> > -                                      old->models[i].usable) < 0)
> > +                                      old->models[i].usable,
> > +                                      old->models[i].blockers) < 0)
> >              goto error;
> >      }
> >  
> > @@ -210,7 +212,8 @@ virDomainCapsCPUModelsFilter(virDomainCapsCPUModelsPtr old,
> >  int
> >  virDomainCapsCPUModelsAddSteal(virDomainCapsCPUModelsPtr cpuModels,
> >                                 char **name,
> > -                               virDomainCapsCPUUsable usable)
> > +                               virDomainCapsCPUUsable usable,
> > +                               char ***blockers)
> >  {
> >      if (VIR_RESIZE_N(cpuModels->models, cpuModels->nmodels_max,
> >                       cpuModels->nmodels, 1) < 0)
> > @@ -218,6 +221,10 @@ virDomainCapsCPUModelsAddSteal(virDomainCapsCPUModelsPtr cpuModels,
> >  
> >      cpuModels->models[cpuModels->nmodels].usable = usable;
> >      VIR_STEAL_PTR(cpuModels->models[cpuModels->nmodels].name, *name);
> > +
> > +    if (blockers)
> > +        VIR_STEAL_PTR(cpuModels->models[cpuModels->nmodels].blockers, *blockers);
> > +
> 
> So @name is required and @blockers can be NULL/optional... Hopefully no
> one ever gets confused.

I don't think there's any room for confusion since @blockers only make
sense if the CPU model @name is unusable. They are naturally optional.

Jirka




More information about the libvir-list mailing list