diff mbox series

[6/9] qom/object: set globals when initializing object

Message ID 20180912125531.32131-7-marcandre.lureau@redhat.com (mailing list archive)
State New, archived
Headers show
Series hostmem-ram: use whole path for region name with >= 3.1 | expand

Commit Message

Marc-André Lureau Sept. 12, 2018, 12:55 p.m. UTC
Set globals for all objects, although only TYPE_DEVICE &
TYPE_USER_CREATABLE can have globals for now.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 hw/core/qdev.c | 6 ------
 qom/object.c   | 2 ++
 2 files changed, 2 insertions(+), 6 deletions(-)

Comments

Igor Mammedov Oct. 29, 2018, 12:20 p.m. UTC | #1
On Wed, 12 Sep 2018 16:55:28 +0400
Marc-André Lureau <marcandre.lureau@redhat.com> wrote:

> Set globals for all objects, although only TYPE_DEVICE &
> TYPE_USER_CREATABLE can have globals for now.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  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().

>  }
>
diff mbox series

Patch

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);
 }