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