diff options
author | Halil Pasic | 2017-07-03 23:34:14 +0200 |
---|---|---|
committer | Christian Borntraeger | 2017-07-05 12:16:55 +0200 |
commit | 517ff12c7d000fa1f5b1e989b22fb86a286f9cc2 (patch) | |
tree | aa90c178a043677efea46bbcbd61028295a49c7e /hw/s390x/ccw-device.c | |
parent | Merge remote-tracking branch 'remotes/edgar/tags/edgar/xilinx-next.for-upstre... (diff) | |
download | qemu-517ff12c7d000fa1f5b1e989b22fb86a286f9cc2.tar.gz qemu-517ff12c7d000fa1f5b1e989b22fb86a286f9cc2.tar.xz qemu-517ff12c7d000fa1f5b1e989b22fb86a286f9cc2.zip |
s390x: vmstatify config migration for virtio-ccw
Let's vmstatify virtio_ccw_save_config and virtio_ccw_load_config for
flexibility (extending using subsections) and for fun.
To achieve this we need to hack the config_vector, which is VirtIODevice
(that is common virtio) state, in the middle of the VirtioCcwDevice state
representation. This is somewhat ugly, but we have no choice because the
stream format needs to be preserved.
Almost no changes in behavior. Exception is everything that comes with
vmstate like extra bookkeeping about what's in the stream, and maybe some
extra checks and better error reporting.
Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Message-Id: <20170703213414.94298-1-pasic@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'hw/s390x/ccw-device.c')
-rw-r--r-- | hw/s390x/ccw-device.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/hw/s390x/ccw-device.c b/hw/s390x/ccw-device.c index fb8d640a7e..f9bfa154d6 100644 --- a/hw/s390x/ccw-device.c +++ b/hw/s390x/ccw-device.c @@ -50,6 +50,16 @@ static void ccw_device_class_init(ObjectClass *klass, void *data) dc->props = ccw_device_properties; } +const VMStateDescription vmstate_ccw_dev = { + .name = "s390_ccw_dev", + .version_id = 1, + .minimum_version_id = 1, + .fields = (VMStateField[]) { + VMSTATE_STRUCT_POINTER(sch, CcwDevice, vmstate_subch_dev, SubchDev), + VMSTATE_END_OF_LIST() + } +}; + static const TypeInfo ccw_device_info = { .name = TYPE_CCW_DEVICE, .parent = TYPE_DEVICE, |