The serial device mapped on the I/O bus hold a migratable
SerialState. Keep the same version range from SerialState:

 837 const VMStateDescription vmstate_serial = {
 838     .name = "serial",
 839     .version_id = 3,
 840     .minimum_version_id = 2,

Fixes: 10315a7089 ("serial: make SerialIO a sysbus device")
Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org>
---
 hw/char/serial.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/hw/char/serial.c b/hw/char/serial.c
index 9eebcb27e7..c167b584fb 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -1002,12 +1002,22 @@ static void serial_io_realize(DeviceState *dev, Error 
**errp)
     sysbus_init_irq(SYS_BUS_DEVICE(sio), &s->irq);
 }
 
+static const VMStateDescription vmstate_serial_io = {
+    .name = "serial",
+    .version_id = 3,
+    .minimum_version_id = 2,
+    .fields = (VMStateField[]) {
+        VMSTATE_STRUCT(serial, SerialIO, 0, vmstate_serial, SerialState),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
 static void serial_io_class_init(ObjectClass *klass, void* data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
 
     dc->realize = serial_io_realize;
-    /* No dc->vmsd: class has no migratable state */
+    dc->vmsd = &vmstate_serial_io;
 }
 
 static void serial_io_instance_init(Object *o)
-- 
2.21.3


Reply via email to