On Mon, Jun 26, 2017 at 10:39:53AM +0800, Peter Xu wrote:
> On Fri, Jun 23, 2017 at 06:31:27PM -0300, Eduardo Habkost wrote:
> > On Fri, Jun 23, 2017 at 12:46:38PM +0800, Peter Xu wrote:
> > > Introduce this new field for the accelerator classes so that each
> > > specific accelerator in the future can register its own global
> > > properties to be used further by the system. It works just like how the
> > > old machine compatible properties do, but only tailored for
> > > accelerators.
> > > 
> > > Introduce register_compat_props_array() for it. Export it so that it may
> > > be used in other codes as well in the future.
> > > 
> > > Suggested-by: Eduardo Habkost <ehabk...@redhat.com>
> > > Signed-off-by: Peter Xu <pet...@redhat.com>
> > > ---
> > >  accel/accel.c                |  6 ++++++
> > >  hw/core/qdev-properties.c    |  7 +++++++
> > >  include/hw/qdev-properties.h |  1 +
> > >  include/sysemu/accel.h       | 10 ++++++++++
> > >  vl.c                         |  1 +
> > >  5 files changed, 25 insertions(+)
> > > 
> > > diff --git a/accel/accel.c b/accel/accel.c
> > > index 7c079a5..fa85844 100644
> > > --- a/accel/accel.c
> > > +++ b/accel/accel.c
> > > @@ -120,6 +120,12 @@ void configure_accelerator(MachineState *ms)
> > >      }
> > >  }
> > >  
> > > +void accel_register_compat_props(AccelState *accel)
> > > +{
> > > +    AccelClass *class = ACCEL_GET_CLASS(accel);
> > > +    register_compat_props_array(class->global_props);
> > > +}
> > > +
> > >  static void register_accel_types(void)
> > >  {
> > >      type_register_static(&accel_type);
> > > diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
> > > index 6ff1ac3..19fa335 100644
> > > --- a/hw/core/qdev-properties.c
> > > +++ b/hw/core/qdev-properties.c
> > > @@ -1060,6 +1060,13 @@ void register_compat_prop(const char *driver,
> > >      qdev_prop_register_global(p);
> > >  }
> > >  
> > > +void register_compat_props_array(GlobalProperty *prop)
> > 
> > Note for a later: we need to stop reusing struct GlobalProperty here,
> > because the 'user_provided', 'used', and 'errp' fields are ignored by
> > register_compat_prop(), but people may believe the are not.
> > 
> > I suggest defining:
> > 
> >   struct GlobalPropertyValue {
> >       const char *driver, *property, *value;
> >   };
> > 
> > and use it instead of GlobalProperty for MachineClass::compat_props,
> > AccelClass::global_props, and register_compat_prop().
> 
> Yeah maybe another definition would be nicer.
> 
> Do you mind I skip this change in this series? After all it can be
> done on top, and can be separated from current work.
> 

No problem.  This was just a suggestion for later.

-- 
Eduardo

Reply via email to