Hello Michael and Gerd, As discussed, this series attempts to clean up PCIe devices fiddling with individual PCI VMStateFields. It is based on my qom-devices queue, containing changes to PCIe devices.
v2 has been changed to use VMStateField::field_exists instead of subsections and unifies PCI and PCIe. Making MSI-X such a conditional field affects PCI, too, now and therefore requires incompatible changes to VMXNET3 PCI NIC. This has been successfully tested with a selection of PCI and PCIe devices on -machine pc (-machine q35 is unfortunately unmigratable due to ich9-ahci) and shows identically sized state files (for "exec:cat > pc-pci.state") and no immediate crashes. Not 1.6 material. A QOM follow-up RFC will be sent out shortly. Regards, Andreas v1 -> v2: * Prepended patches to drop VMSTATE_{PCI,PCIE}_DEVICE() arguments. * Added patch to introduce VMSTATE_BUFFER_UNSAFE_INFO_TEST() macro. * Unified PCI and PCIe VMStateDescriptions (mst). * Instead of moving & turning into subsection, make AER log conditional field. * Instead of subsection, make MSI-X a conditional field. Cc: Michael S. Tsirkin <m...@redhat.com> Cc: Gerd Hoffmann <kra...@redhat.com> Cc: Stefan Hajnoczi <stefa...@gmail.com> Cc: Juan Quintela <quint...@redhat.com> Andreas Färber (6): pci: Simplify VMSTATE_PCI_DEVICE() macro pci: Simplify VMSTATE_PCIE_DEVICE() macro vmstate: Introduce VMSTATE_BUFFER_UNSAFE_INFO_TEST() pci: Unify vmstate_{pci,pcie}_device pci: Move vmstate_pcie_aer_log into vmstate_pci_device pci: Move VMSTATE_MSIX() into vmstate_pci_device hw/acpi/piix4.c | 2 +- hw/audio/ac97.c | 2 +- hw/audio/es1370.c | 2 +- hw/audio/intel-hda.c | 2 +- hw/char/serial-pci.c | 4 +-- hw/char/tpci200.c | 2 +- hw/display/cirrus_vga.c | 2 +- hw/display/qxl.c | 2 +- hw/display/vga-pci.c | 2 +- hw/display/vmware_vga.c | 2 +- hw/i2c/smbus_ich9.c | 2 +- hw/ide/ich.c | 2 +- hw/ide/pci.c | 2 +- hw/isa/i82378.c | 2 +- hw/isa/lpc_ich9.c | 2 +- hw/isa/piix4.c | 2 +- hw/isa/vt82c686.c | 4 +-- hw/misc/ivshmem.c | 7 ++-- hw/net/e1000.c | 2 +- hw/net/eepro100.c | 2 +- hw/net/ne2000.c | 2 +- hw/net/pcnet-pci.c | 2 +- hw/net/rtl8139.c | 2 +- hw/net/vmxnet3.c | 29 +++------------ hw/pci-bridge/ioh3420.c | 4 +-- hw/pci-bridge/pci_bridge_dev.c | 2 +- hw/pci-bridge/xio3130_downstream.c | 4 +-- hw/pci-bridge/xio3130_upstream.c | 4 +-- hw/pci-host/bonito.c | 2 +- hw/pci-host/piix.c | 4 +-- hw/pci-host/prep.c | 2 +- hw/pci-host/q35.c | 2 +- hw/pci/pci.c | 73 +++++++++++++++++++++++--------------- hw/pci/pcie_aer.c | 1 + hw/scsi/esp-pci.c | 2 +- hw/scsi/lsi53c895a.c | 2 +- hw/scsi/megasas.c | 2 +- hw/scsi/vmw_pvscsi.c | 2 +- hw/usb/hcd-ehci-pci.c | 2 +- hw/usb/hcd-uhci.c | 2 +- hw/usb/hcd-xhci.c | 3 +- hw/virtio/virtio-pci.c | 19 +++++----- hw/watchdog/wdt_i6300esb.c | 2 +- hw/xen/xen_platform.c | 2 +- include/hw/pci/msix.h | 7 ++-- include/hw/pci/pci.h | 6 ++-- include/hw/pci/pcie.h | 10 ------ include/migration/vmstate.h | 6 +++- 48 files changed, 116 insertions(+), 133 deletions(-) -- 1.8.1.4