Message ID | 1520982894-4180-1-git-send-email-igor.druzhinin@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Mar 13, 2018 at 11:14:54PM +0000, Igor Druzhinin wrote: > This should help to avoid problems with accessing the device after > migration/resume without PV drivers by migrating its PCI configuration > space state. Without an explicitly defined state record it resets > every time a VM migrates which confuses the OS and makes every > access to xen-pvdevice MMIO region to fail. PV tools enable some > logic to save and restore PCI configuration state from within the VM > every time it migrates which basically hides the issue. > > Older systems will acquire the new record when migrated which should > not change their state for worse. > > Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com> > Reviewed-by: Paul Durrant <paul.durrant@citrix.com> > --- > v2: add more concrete info > --- > hw/i386/xen/xen_pvdevice.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) Acked-by: Anthony PERARD <anthony.perard@citrix.com> Thanks,
diff --git a/hw/i386/xen/xen_pvdevice.c b/hw/i386/xen/xen_pvdevice.c index f748823..a146f18 100644 --- a/hw/i386/xen/xen_pvdevice.c +++ b/hw/i386/xen/xen_pvdevice.c @@ -71,6 +71,16 @@ static const MemoryRegionOps xen_pv_mmio_ops = { .endianness = DEVICE_LITTLE_ENDIAN, }; +static const VMStateDescription vmstate_xen_pvdevice = { + .name = "xen-pvdevice", + .version_id = 1, + .minimum_version_id = 1, + .fields = (VMStateField[]) { + VMSTATE_PCI_DEVICE(parent_obj, XenPVDevice), + VMSTATE_END_OF_LIST() + } +}; + static void xen_pv_realize(PCIDevice *pci_dev, Error **errp) { XenPVDevice *d = XEN_PV_DEVICE(pci_dev); @@ -120,6 +130,7 @@ static void xen_pv_class_init(ObjectClass *klass, void *data) k->class_id = PCI_CLASS_SYSTEM_OTHER; dc->desc = "Xen PV Device"; dc->props = xen_pv_props; + dc->vmsd = &vmstate_xen_pvdevice; } static const TypeInfo xen_pv_type_info = {