summaryrefslogtreecommitdiffstats
path: root/hw/s390x/ccw-device.c
diff options
context:
space:
mode:
authorHalil Pasic2017-07-03 23:34:14 +0200
committerChristian Borntraeger2017-07-05 12:16:55 +0200
commit517ff12c7d000fa1f5b1e989b22fb86a286f9cc2 (patch)
treeaa90c178a043677efea46bbcbd61028295a49c7e /hw/s390x/ccw-device.c
parentMerge remote-tracking branch 'remotes/edgar/tags/edgar/xilinx-next.for-upstre... (diff)
downloadqemu-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.c10
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,