Am 29.07.2013 04:03, schrieb Andreas Färber: > Hello, > > Based on a comment from mst, this mini-series proposes to change semantics of > VMStateDescription registration to be more similar to those of static > properties. > > 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 parent > field. > > 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 changing > CPU's > DeviceClass::vmsd (as opposed to DeviceClass::vmsd->fields[0].vmsd) would need > to assure appropriate .field_exists tests or bump the version of derived > types' > vmsd as if a field had been added there.
Ping? Andreas > > Only rudimentarily tested: I've run some machines that didn't crash on > startup. > > Regards, > Andreas > > Cc: Michael S. Tsirkin <m...@redhat.com> > Cc: Juan Quintela <quint...@redhat.com> > Cc: Anthony Liguori <anth...@codemonkey.ws> > Cc: Paolo Bonzini <pbonz...@redhat.com> > > Andreas Färber (2): > qdev: Construct VMStateDescription from type hierarchy > cpu: Move VMSTATE_CPU() into TYPE_CPU VMStateDescription > > 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(-) > -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg