From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:56217) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TimS4-0003r7-Hn for qemu-devel@nongnu.org; Wed, 12 Dec 2012 08:34:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TimRy-0008Jh-Ff for qemu-devel@nongnu.org; Wed, 12 Dec 2012 08:34:20 -0500 Received: from cantor2.suse.de ([195.135.220.15]:35275 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TimRy-0008JZ-65 for qemu-devel@nongnu.org; Wed, 12 Dec 2012 08:34:14 -0500 Message-ID: <50C887D0.7050704@suse.de> Date: Wed, 12 Dec 2012 14:34:08 +0100 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1354726153-30264-1-git-send-email-ehabkost@redhat.com> <1354726153-30264-9-git-send-email-ehabkost@redhat.com> In-Reply-To: <1354726153-30264-9-git-send-email-ehabkost@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 8/8] qom: Make CPU a child of DeviceState List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost Cc: Igor Mammedov , Don Slutz , qemu-devel@nongnu.org, Anthony Liguori , Paolo Bonzini 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. >=20 > It has no_user=3D1, as creating CPUs using -device doesn't work yet. >=20 > (based on a previous patch from Igor Mammedov) >=20 > Signed-off-by: Eduardo Habkost > --- > Changes v1 (imammedo) -> v2 (ehabkost): > - Change CPU type declaration to hae TYPE_DEVICE as parent >=20 > Changes v2 -> v3 (ehabkost): > - Set no_user=3D1 on the CPU class > --- > include/qemu/cpu.h | 6 +++--- > qom/cpu.c | 5 ++++- > 2 files changed, 7 insertions(+), 4 deletions(-) >=20 > 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 > =20 > -#include "qemu/object.h" > +#include "hw/qdev-core.h" > #include "qemu-thread.h" > =20 > /** > @@ -46,7 +46,7 @@ typedef struct CPUState CPUState; > */ > typedef struct CPUClass { > /*< private >*/ > - ObjectClass parent_class; > + DeviceClass parent_class; > /*< public >*/ > =20 > void (*reset)(CPUState *cpu); > @@ -62,7 +62,7 @@ typedef struct CPUClass { > */ > struct CPUState { > /*< private >*/ > - Object parent_obj; > + DeviceState parent_obj; > /*< public >*/ > =20 > 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 @@ > =20 > #include "qemu/cpu.h" > #include "qemu-common.h" > +#include "hw/qdev-core.h" > =20 > void cpu_reset(CPUState *cpu) > { > @@ -36,14 +37,16 @@ static void cpu_common_reset(CPUState *cpu) > =20 > static void cpu_class_init(ObjectClass *klass, void *data) > { > + DeviceClass *dc =3D DEVICE_CLASS(klass); > CPUClass *k =3D CPU_CLASS(klass); > =20 > k->reset =3D cpu_common_reset; > + dc->no_user =3D 1; > } > =20 > static TypeInfo cpu_type_info =3D { > .name =3D TYPE_CPU, > - .parent =3D TYPE_OBJECT, > + .parent =3D TYPE_DEVICE, > .instance_size =3D sizeof(CPUState), > .abstract =3D true, > .class_size =3D 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 --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg