qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC for-next 0/2] QOM VMStateDescription remix


From: Andreas Färber
Subject: [Qemu-devel] [RFC for-next 0/2] QOM VMStateDescription remix
Date: Mon, 29 Jul 2013 04:03:56 +0200

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.

Only rudimentarily tested: I've run some machines that didn't crash on startup.

Regards,
Andreas

Cc: Michael S. Tsirkin <address@hidden>
Cc: Juan Quintela <address@hidden>
Cc: Anthony Liguori <address@hidden>
Cc: Paolo Bonzini <address@hidden>

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(-)

-- 
1.8.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]