From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:39096) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TinHc-0004B2-7C for qemu-devel@nongnu.org; Wed, 12 Dec 2012 09:27:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TinHV-0006AH-57 for qemu-devel@nongnu.org; Wed, 12 Dec 2012 09:27:36 -0500 Received: from mx1.redhat.com ([209.132.183.28]:35477) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TinHU-0006A3-SK for qemu-devel@nongnu.org; Wed, 12 Dec 2012 09:27:29 -0500 Date: Wed, 12 Dec 2012 15:27:24 +0100 From: Igor Mammedov Message-ID: <20121212152724.7693d277@nial.usersys.redhat.com> In-Reply-To: <20121212135901.GD3236@otherpad.lan.raisama.net> References: <1354726153-30264-1-git-send-email-ehabkost@redhat.com> <1354726153-30264-9-git-send-email-ehabkost@redhat.com> <50C887D0.7050704@suse.de> <20121212135901.GD3236@otherpad.lan.raisama.net> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 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: Paolo Bonzini , Don Slutz , Andreas =?ISO-8859-1?B?RuRyYmVy?= , Anthony Liguori , qemu-devel@nongnu.org On Wed, 12 Dec 2012 11:59:01 -0200 Eduardo Habkost wrote: > On Wed, Dec 12, 2012 at 02:34:08PM +0100, Andreas F=E4rber wrote: > > Am 05.12.2012 17:49, schrieb Eduardo Habkost: > [...] > > > 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), > >=20 > > 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. >=20 > I think I used a version without the qdev_init_nofail() as base for this > series (we had multiple proposals being sent in parallel, in the > beginning), and in the end I forgot that we had a version with those > calls being added. >=20 > The CPU classes don't set any DeviceClass.init() method, so in theory > the missing qdev_init() calls wouldn't make any difference by now. On > the other hand, keeping the device in "created" state sounds bad... but > maybe this acceptable while we are still converting the CPU realize() > functions to fit inside the DeviceState initialization abstraction? Testing shows that lack of qdev_create()/init() doesn't break anything so far. I was planing to send hot-plug RFC after properties and subclasses for x86 are done and temporally wrap x86_cpu_realize() inside DeviceClass.init() so we could use qdev_create()/init() and device_add() for CPU. It's still on my TODO list. Perhaps after I resubmit properties series (I hope to do it this week), I'll redo hot-plug prototype using as a base my experimental subclasses branch https://github.com/imammedo/qemu/commits/x86-cpu-classes.WIP