Am 02.07.2015 um 16:10 schrieb Cornelia Huck:
> We need to migrate the revision field as well. No compatibility
> concerns as we already introduced migration of ->config_vector in
> this release.
>
> Signed-off-by: Cornelia Huck <[email protected]>
> ---
> hw/s390x/virtio-ccw.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
> index 8597ac4..d631337 100644
> --- a/hw/s390x/virtio-ccw.c
> +++ b/hw/s390x/virtio-ccw.c
> @@ -1472,6 +1472,7 @@ static void virtio_ccw_save_config(DeviceState *d,
> QEMUFile *f)
> qemu_put_be16(f, vdev->config_vector);
> qemu_put_be64(f, dev->routes.adapter.ind_offset);
> qemu_put_byte(f, dev->thinint_isc);
> + qemu_put_be32(f, dev->revision);
> }
>
> static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f)
> @@ -1512,6 +1513,7 @@ static int virtio_ccw_load_config(DeviceState *d,
> QEMUFile *f)
> dev->thinint_isc, true, false,
> &dev->routes.adapter.adapter_id);
> }
> + dev->revision = qemu_get_be32(f);
>
> return 0;
> }
>
This broke migration:
2015-07-07T11:22:55.570968Z qemu-system-s390x: VQ 39 address 0x0 inconsistent
with Host index 0x100
2015-07-07T11:22:55.571008Z qemu-system-s390x: error while loading state for
instance 0x0 of
Seems that revision is used before it is loaded, something like
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index d631337..f524140 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -1448,6 +1448,7 @@ static void virtio_ccw_save_config(DeviceState *d,
QEMUFile *f)
VirtIODevice *vdev = virtio_ccw_get_vdev(s);
subch_device_save(s, f);
+ qemu_put_be32(f, dev->revision);
if (dev->indicators != NULL) {
qemu_put_be32(f, dev->indicators->len);
qemu_put_be64(f, dev->indicators->addr);
@@ -1472,7 +1473,6 @@ static void virtio_ccw_save_config(DeviceState *d,
QEMUFile *f)
qemu_put_be16(f, vdev->config_vector);
qemu_put_be64(f, dev->routes.adapter.ind_offset);
qemu_put_byte(f, dev->thinint_isc);
- qemu_put_be32(f, dev->revision);
}
static int virtio_ccw_load_config(DeviceState *d, QEMUFile *f)
@@ -1484,6 +1484,7 @@ static int virtio_ccw_load_config(DeviceState *d,
QEMUFile *f)
s->driver_data = dev;
subch_device_load(s, f);
+ dev->revision = qemu_get_be32(f);
len = qemu_get_be32(f);
if (len != 0) {
dev->indicators = get_indicator(qemu_get_be64(f), len);
@@ -1513,7 +1514,6 @@ static int virtio_ccw_load_config(DeviceState *d,
QEMUFile *f)
dev->thinint_isc, true, false,
&dev->routes.adapter.adapter_id);
}
- dev->revision = qemu_get_be32(f);
return 0;
}
Seems to do the trick.