qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>,
	Don Slutz <Don@CloudSwitch.Com>,
	qemu-devel@nongnu.org, Anthony Liguori <anthony@codemonkey.ws>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 8/8] qom: Make CPU a child of DeviceState
Date: Wed, 12 Dec 2012 14:34:08 +0100	[thread overview]
Message-ID: <50C887D0.7050704@suse.de> (raw)
In-Reply-To: <1354726153-30264-9-git-send-email-ehabkost@redhat.com>

Am 05.12.2012 17:49, schrieb Eduardo Habkost:
> This finally makes the CPU class a child of DeviceState, allowing us to
> start using DeviceState properties on CPU subclasses.
> 
> It has no_user=1, as creating CPUs using -device doesn't work yet.
> 
> (based on a previous patch from Igor Mammedov)
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
> Changes v1 (imammedo) -> v2 (ehabkost):
>  - Change CPU type declaration to hae TYPE_DEVICE as parent
> 
> Changes v2 -> v3 (ehabkost):
>  - Set no_user=1 on the CPU class
> ---
>  include/qemu/cpu.h | 6 +++---
>  qom/cpu.c          | 5 ++++-
>  2 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/include/qemu/cpu.h b/include/qemu/cpu.h
> index 61b7698..bc004fd 100644
> --- a/include/qemu/cpu.h
> +++ b/include/qemu/cpu.h
> @@ -20,7 +20,7 @@
>  #ifndef QEMU_CPU_H
>  #define QEMU_CPU_H
>  
> -#include "qemu/object.h"
> +#include "hw/qdev-core.h"
>  #include "qemu-thread.h"
>  
>  /**
> @@ -46,7 +46,7 @@ typedef struct CPUState CPUState;
>   */
>  typedef struct CPUClass {
>      /*< private >*/
> -    ObjectClass parent_class;
> +    DeviceClass parent_class;
>      /*< public >*/
>  
>      void (*reset)(CPUState *cpu);
> @@ -62,7 +62,7 @@ typedef struct CPUClass {
>   */
>  struct CPUState {
>      /*< private >*/
> -    Object parent_obj;
> +    DeviceState parent_obj;
>      /*< public >*/
>  
>      struct QemuThread *thread;
> diff --git a/qom/cpu.c b/qom/cpu.c
> index 5b36046..d301f72 100644
> --- a/qom/cpu.c
> +++ b/qom/cpu.c
> @@ -20,6 +20,7 @@
>  
>  #include "qemu/cpu.h"
>  #include "qemu-common.h"
> +#include "hw/qdev-core.h"
>  
>  void cpu_reset(CPUState *cpu)
>  {
> @@ -36,14 +37,16 @@ static void cpu_common_reset(CPUState *cpu)
>  
>  static void cpu_class_init(ObjectClass *klass, void *data)
>  {
> +    DeviceClass *dc = DEVICE_CLASS(klass);
>      CPUClass *k = CPU_CLASS(klass);
>  
>      k->reset = cpu_common_reset;
> +    dc->no_user = 1;
>  }
>  
>  static TypeInfo cpu_type_info = {
>      .name = TYPE_CPU,
> -    .parent = TYPE_OBJECT,
> +    .parent = TYPE_DEVICE,
>      .instance_size = sizeof(CPUState),
>      .abstract = true,
>      .class_size = sizeof(CPUClass),

This patch makes the CPU a device and looks good so far but does not
initialize the devices in cpu_*_init() like Anthony did in his previous
patch. I am unsure whether you forgot to do so or whether you wanted to
help keep our new CPU code clean of old-style qdev_init_nofail() calls?
Since you don't add a qdev initfn here the main difference will be the
devices internally staying in "created" rather than "initialized" state.

If we merge some patch that adds the "realized" property first (probably
not through qom-cpu tree then) we could avoid qdev_init*() but the end
result targetted by Paolo was not to have object creators worry about
realization at all through recursive realization. So either solution
needs to be changed later on.

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

  reply	other threads:[~2012-12-12 13:34 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-05 16:49 [Qemu-devel] [PATCH 0/8] CPU DeviceState v10 Eduardo Habkost
2012-12-05 16:49 ` [Qemu-devel] [PATCH 1/8] Move -I$(SRC_PATH)/include compiler flag to Makefile.objs Eduardo Habkost
2012-12-14 15:34   ` Andreas Färber
2012-12-14 15:38     ` Paolo Bonzini
2012-12-14 17:21     ` Eduardo Habkost
2013-01-02 13:48       ` Andreas Färber
2013-01-02 14:32         ` Eduardo Habkost
2012-12-05 16:49 ` [Qemu-devel] [PATCH 2/8] libqemustub: Add qemu_[un]register_reset() stubs Eduardo Habkost
2012-12-05 16:49 ` [Qemu-devel] [PATCH 3/8] libqemustub: vmstate register/unregister stubs Eduardo Habkost
2013-01-02 12:57   ` Andreas Färber
2012-12-05 16:49 ` [Qemu-devel] [PATCH 4/8] libqemustub: sysbus_get_default() stub Eduardo Habkost
2012-12-05 16:49 ` [Qemu-devel] [PATCH 5/8] qdev: Coding style fixes Eduardo Habkost
2012-12-18 22:01   ` Andreas Färber
2012-12-05 16:49 ` [Qemu-devel] [PATCH 6/8] qdev-properties.c: Separate core from the code used only by qemu-system-* Eduardo Habkost
2012-12-18 22:30   ` Andreas Färber
2012-12-05 16:49 ` [Qemu-devel] [PATCH 7/8] include qdev code into *-user, too Eduardo Habkost
2012-12-05 16:49 ` [Qemu-devel] [PATCH 8/8] qom: Make CPU a child of DeviceState Eduardo Habkost
2012-12-12 13:34   ` Andreas Färber [this message]
2012-12-12 13:59     ` Eduardo Habkost
2012-12-12 14:27       ` Igor Mammedov
2012-12-12 14:36         ` Eduardo Habkost
2012-12-14 15:29         ` Andreas Färber
2012-12-14 15:40           ` Paolo Bonzini
2012-12-14 15:44             ` Andreas Färber
2012-12-14 17:56               ` Eduardo Habkost
2013-01-02 15:08   ` Andreas Färber
2013-01-02 16:40     ` Igor Mammedov
2013-01-02 16:49       ` Eduardo Habkost
2013-01-03 17:36 ` [Qemu-devel] [PATCH 0/8] CPU DeviceState v10 Andreas Färber

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50C887D0.7050704@suse.de \
    --to=afaerber@suse.de \
    --cc=Don@CloudSwitch.Com \
    --cc=anthony@codemonkey.ws \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).