Currently edu device doesn't support live migration. Part of PCI configuration information would be lost after migration.
PCI device state in source VM: Bus 0, device 3, function 0: Class 0255: PCI device 1234:11e8 PCI subsystem 1af4:1100 IRQ 11, pin A BAR0: 32 bit memory at 0xfea00000 [0xfeafffff]. id "" PCI device state in destination VM: Bus 0, device 3, function 0: Class 0255: PCI device 1234:11e8 PCI subsystem 1af4:1100 IRQ 0, pin A BAR0: 32 bit memory at 0xffffffffffffffff [0x000ffffe]. id "" Add VMState for edu device to support migration. Signed-off-by: Gao Chao <chao....@intel.com> Signed-off-by: Zeng Guang <guang.z...@intel.com> Reviewed-by: Wei Wang <wei.w.w...@intel.com> --- hw/misc/edu.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hw/misc/edu.c b/hw/misc/edu.c index ec617e63f3..3ff2759ee1 100644 --- a/hw/misc/edu.c +++ b/hw/misc/edu.c @@ -27,6 +27,7 @@ #include "hw/pci/pci.h" #include "hw/hw.h" #include "hw/pci/msi.h" +#include "migration/vmstate.h" #include "qemu/timer.h" #include "qemu/main-loop.h" /* iothread mutex */ #include "qemu/module.h" @@ -405,6 +406,16 @@ static void edu_instance_init(Object *obj) &edu->dma_mask, OBJ_PROP_FLAG_READWRITE); } +static const VMStateDescription vmstate_edu = { + .name = "edu", + .version_id = 1, + .minimum_version_id = 1, + .fields = (VMStateField[]) { + VMSTATE_PCI_DEVICE(pdev, EduState), + VMSTATE_END_OF_LIST() + } +}; + static void edu_class_init(ObjectClass *class, void *data) { DeviceClass *dc = DEVICE_CLASS(class); @@ -415,6 +426,7 @@ static void edu_class_init(ObjectClass *class, void *data) k->vendor_id = PCI_VENDOR_ID_QEMU; k->device_id = 0x11e8; k->revision = 0x10; + dc->vmsd = &vmstate_edu; k->class_id = PCI_CLASS_OTHERS; set_bit(DEVICE_CATEGORY_MISC, dc->categories); } -- 2.17.1