qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 6/9] qom/object: set globals when initializing o


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH 6/9] qom/object: set globals when initializing object
Date: Mon, 29 Oct 2018 13:20:30 +0100

On Wed, 12 Sep 2018 16:55:28 +0400
Marc-André Lureau <address@hidden> wrote:

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

>  }
>  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]