On Wed, 12 Sep 2018 16:55:28 +0400 Marc-André Lureau <[email protected]> wrote:
> Set globals for all objects, although only TYPE_DEVICE & > TYPE_USER_CREATABLE can have globals for now. > > Signed-off-by: Marc-André Lureau <[email protected]> > --- > hw/core/qdev.c | 6 ------ > qom/object.c | 2 ++ > 2 files changed, 2 insertions(+), 6 deletions(-) > > diff --git a/hw/core/qdev.c b/hw/core/qdev.c > index 473060b551..28c6c8d7c9 100644 > --- a/hw/core/qdev.c > +++ b/hw/core/qdev.c > @@ -974,11 +974,6 @@ static void device_initfn(Object *obj) > QLIST_INIT(&dev->gpios); > } > > -static void device_post_init(Object *obj) > -{ > - object_property_set_globals(obj); > -} > - > /* Unlink device from bus and free the structure. */ > static void device_finalize(Object *obj) > { > @@ -1103,7 +1098,6 @@ static const TypeInfo device_type_info = { > .parent = TYPE_OBJECT, > .instance_size = sizeof(DeviceState), > .instance_init = device_initfn, > - .instance_post_init = device_post_init, > .instance_finalize = device_finalize, > .class_base_init = device_class_base_init, > .class_init = device_class_init, > diff --git a/qom/object.c b/qom/object.c > index 0703e8e4ff..025ad0e191 100644 > --- a/qom/object.c > +++ b/qom/object.c > @@ -12,6 +12,7 @@ > > #include "qemu/osdep.h" > #include "qapi/error.h" > +#include "qom/globals.h" > #include "qom/object.h" > #include "qom/object_interfaces.h" > #include "qemu/cutils.h" > @@ -382,6 +383,7 @@ static void object_initialize_with_type(void *data, > size_t size, TypeImpl *type) > obj->properties = g_hash_table_new_full(g_str_hash, g_str_equal, > NULL, object_property_free); > object_init_with_type(obj, type); > + object_property_set_globals(obj); > object_post_init_with_type(obj, type); this would somewhat inverse post_init call chain, if there weren't any other instance_post_init() users that would be fine but it potentially can break arm_cpu_post_init() since globals would be set before the later finishes creating per instance properties. arm cpu feature setting code is spread across initfn/post_init/realize and it's unreadable mess. Maybe we should get rid of instance_post_init() altogether and explicitly call arm_cpu_post_init() from each initfn(). > } >
