From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52554) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VGSTS-0004nC-Fy for qemu-devel@nongnu.org; Mon, 02 Sep 2013 07:39:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VGSTN-0000ca-MW for qemu-devel@nongnu.org; Mon, 02 Sep 2013 07:39:14 -0400 Received: from mx1.redhat.com ([209.132.183.28]:41266) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VGSTN-0000cO-Du for qemu-devel@nongnu.org; Mon, 02 Sep 2013 07:39:09 -0400 Date: Mon, 2 Sep 2013 14:41:09 +0300 From: "Michael S. Tsirkin" Message-ID: <20130902114109.GD20911@redhat.com> References: <1375063438-3149-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <1375063438-3149-1-git-send-email-afaerber@suse.de> Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [RFC for-next 0/2] QOM VMStateDescription remix List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Andreas =?iso-8859-1?Q?F=E4rber?= Cc: Paolo Bonzini , qemu-devel@nongnu.org, Anthony Liguori , Juan Quintela On Mon, Jul 29, 2013 at 04:03:56AM +0200, Andreas F=E4rber wrote: > Hello, >=20 > Based on a comment from mst, this mini-series proposes to change semant= ics of > VMStateDescription registration to be more similar to those of static p= roperties. >=20 > Today, a device has one VMStateDescription, the last assignment to dc->= vmsd wins. > This means that a device must take care to include state of its parent = type. > To avoid dealing with individual fields, VMSTATE_STRUCT() and wrappers = have > been used. Such fields often require access of the deprecated QOM paren= t field. >=20 > The proposal is that, e.g., TYPE_CPU assigns its own VMStateDescription= and > derived types (e.g., TYPE_ALPHA_CPU) register a VMStateDescription with= name > and versions to be used and only the fields specific to that type. > In this v1, versions of the parents' vmsd are ignored, so someone chang= ing CPU's > DeviceClass::vmsd (as opposed to DeviceClass::vmsd->fields[0].vmsd) wou= ld need > to assure appropriate .field_exists tests or bump the version of derive= d types' > vmsd as if a field had been added there. >=20 > Only rudimentarily tested: I've run some machines that didn't crash on = startup. >=20 > Regards, > Andreas >=20 > Cc: Michael S. Tsirkin > Cc: Juan Quintela > Cc: Anthony Liguori > Cc: Paolo Bonzini Overall okay Acked-by: Michael S. Tsirkin but obviously this needs much more testing, in particular you need to test migration, not just check that it doesn't crash :) Also - are there devices that already set vmstate at several levels? If yes this will change the wire protocol won't it? > Andreas F=E4rber (2): > qdev: Construct VMStateDescription from type hierarchy > cpu: Move VMSTATE_CPU() into TYPE_CPU VMStateDescription >=20 > hw/core/qdev.c | 102 ++++++++++++++++++++++++++++++++++++++= +++----- > include/hw/qdev-core.h | 1 + > include/qom/cpu.h | 4 -- > qom/cpu.c | 10 +++++ > stubs/vmstate.c | 1 + > target-alpha/machine.c | 1 - > target-openrisc/machine.c | 1 - > 7 files changed, 103 insertions(+), 17 deletions(-) >=20 > --=20 > 1.8.1.4