Message ID | 20230521111534.207973-7-shentey@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | VIA and general PCI IDE cleanup | expand |
On Sun, 21 May 2023, Bernhard Beschow wrote: > The modern, declarative way to set up VM state handling is to assign to > DeviceClass::vmsd attribute. > > There shouldn't be any change in behavior since dc->vmsd causes > vmstate_register_with_alias_id() to be called on the instance during > the instance init phase. vmstate_register() was also called during the > instance init phase which forwards to vmstate_register_with_alias_id() > internally. Checking the migration schema before and after this patch confirms: > > before: >> qemu-system-x86_64 -S >> qemu > migrate -d exec:cat>before.mig > > after: >> qemu-system-x86_64 -S >> qemu > migrate -d exec:cat>after.mig > >> analyze-migration.py -d desc -f before.mig > before.json >> analyze-migration.py -d desc -f after.mig > after.json >> diff before.json after.json > -> empty Missing Signed-off-by line. Regards, BALATON Zoltah > --- > hw/ide/piix.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/hw/ide/piix.c b/hw/ide/piix.c > index 47e0b474c3..151f206046 100644 > --- a/hw/ide/piix.c > +++ b/hw/ide/piix.c > @@ -28,7 +28,6 @@ > */ > > #include "qemu/osdep.h" > -#include "migration/vmstate.h" > #include "qapi/error.h" > #include "hw/pci/pci.h" > #include "hw/ide/piix.h" > @@ -159,8 +158,6 @@ static void pci_piix_ide_realize(PCIDevice *dev, Error **errp) > bmdma_setup_bar(d); > pci_register_bar(dev, 4, PCI_BASE_ADDRESS_SPACE_IO, &d->bmdma_bar); > > - vmstate_register(VMSTATE_IF(dev), 0, &vmstate_ide_pci, d); > - > for (unsigned i = 0; i < 2; i++) { > if (!pci_piix_init_bus(d, i, errp)) { > return; > @@ -186,6 +183,7 @@ static void piix3_ide_class_init(ObjectClass *klass, void *data) > PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > > dc->reset = piix_ide_reset; > + dc->vmsd = &vmstate_ide_pci; > k->realize = pci_piix_ide_realize; > k->exit = pci_piix_ide_exitfn; > k->vendor_id = PCI_VENDOR_ID_INTEL; > @@ -208,6 +206,7 @@ static void piix4_ide_class_init(ObjectClass *klass, void *data) > PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > > dc->reset = piix_ide_reset; > + dc->vmsd = &vmstate_ide_pci; > k->realize = pci_piix_ide_realize; > k->exit = pci_piix_ide_exitfn; > k->vendor_id = PCI_VENDOR_ID_INTEL; >
On 21/05/2023 12:15, Bernhard Beschow wrote: > The modern, declarative way to set up VM state handling is to assign to > DeviceClass::vmsd attribute. > > There shouldn't be any change in behavior since dc->vmsd causes > vmstate_register_with_alias_id() to be called on the instance during > the instance init phase. vmstate_register() was also called during the > instance init phase which forwards to vmstate_register_with_alias_id() > internally. Checking the migration schema before and after this patch confirms: > > before: >> qemu-system-x86_64 -S >> qemu > migrate -d exec:cat>before.mig > > after: >> qemu-system-x86_64 -S >> qemu > migrate -d exec:cat>after.mig > >> analyze-migration.py -d desc -f before.mig > before.json >> analyze-migration.py -d desc -f after.mig > after.json >> diff before.json after.json > -> empty > --- > hw/ide/piix.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/hw/ide/piix.c b/hw/ide/piix.c > index 47e0b474c3..151f206046 100644 > --- a/hw/ide/piix.c > +++ b/hw/ide/piix.c > @@ -28,7 +28,6 @@ > */ > > #include "qemu/osdep.h" > -#include "migration/vmstate.h" > #include "qapi/error.h" > #include "hw/pci/pci.h" > #include "hw/ide/piix.h" > @@ -159,8 +158,6 @@ static void pci_piix_ide_realize(PCIDevice *dev, Error **errp) > bmdma_setup_bar(d); > pci_register_bar(dev, 4, PCI_BASE_ADDRESS_SPACE_IO, &d->bmdma_bar); > > - vmstate_register(VMSTATE_IF(dev), 0, &vmstate_ide_pci, d); > - > for (unsigned i = 0; i < 2; i++) { > if (!pci_piix_init_bus(d, i, errp)) { > return; > @@ -186,6 +183,7 @@ static void piix3_ide_class_init(ObjectClass *klass, void *data) > PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > > dc->reset = piix_ide_reset; > + dc->vmsd = &vmstate_ide_pci; > k->realize = pci_piix_ide_realize; > k->exit = pci_piix_ide_exitfn; > k->vendor_id = PCI_VENDOR_ID_INTEL; > @@ -208,6 +206,7 @@ static void piix4_ide_class_init(ObjectClass *klass, void *data) > PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); > > dc->reset = piix_ide_reset; > + dc->vmsd = &vmstate_ide_pci; > k->realize = pci_piix_ide_realize; > k->exit = pci_piix_ide_exitfn; > k->vendor_id = PCI_VENDOR_ID_INTEL; Thanks for confirming that the migration still works! Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> ATB, Mark.
diff --git a/hw/ide/piix.c b/hw/ide/piix.c index 47e0b474c3..151f206046 100644 --- a/hw/ide/piix.c +++ b/hw/ide/piix.c @@ -28,7 +28,6 @@ */ #include "qemu/osdep.h" -#include "migration/vmstate.h" #include "qapi/error.h" #include "hw/pci/pci.h" #include "hw/ide/piix.h" @@ -159,8 +158,6 @@ static void pci_piix_ide_realize(PCIDevice *dev, Error **errp) bmdma_setup_bar(d); pci_register_bar(dev, 4, PCI_BASE_ADDRESS_SPACE_IO, &d->bmdma_bar); - vmstate_register(VMSTATE_IF(dev), 0, &vmstate_ide_pci, d); - for (unsigned i = 0; i < 2; i++) { if (!pci_piix_init_bus(d, i, errp)) { return; @@ -186,6 +183,7 @@ static void piix3_ide_class_init(ObjectClass *klass, void *data) PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); dc->reset = piix_ide_reset; + dc->vmsd = &vmstate_ide_pci; k->realize = pci_piix_ide_realize; k->exit = pci_piix_ide_exitfn; k->vendor_id = PCI_VENDOR_ID_INTEL; @@ -208,6 +206,7 @@ static void piix4_ide_class_init(ObjectClass *klass, void *data) PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); dc->reset = piix_ide_reset; + dc->vmsd = &vmstate_ide_pci; k->realize = pci_piix_ide_realize; k->exit = pci_piix_ide_exitfn; k->vendor_id = PCI_VENDOR_ID_INTEL;