Am 28.07.2013 15:44, schrieb Andreas Färber: > Am 28.07.2013 03:41, schrieb Andreas Färber: >> Patch 1 assumes the following are equivalent: >> a) - Struct A >> - Field Aa >> ... >> - Field X >> ... >> b) - Struct A >> - Field Aa >> ... >> - Field X >> >> Patch 2 relies on XHCI not being released yet, thus no compatibiliy concerns. >> >> Patch 3 assumes the following are equivalent: >> a) - Struct A >> - Field Aa >> ... >> - Field X >> b) - Struct A >> - Field Aa >> ... >> - Subsection Ax >> - Field X >> >> CC'ing Juan to verify which of these are correct/safe. > > If the answer is "doing both as subsections will work fine" then this > series could be postponed post-1.6, of course. > > Looking deeper at PCI devices, I notice that while XHCI was the only > device to use VMSTATE_MSIX() macro, other devices were using > msix_init*() as well, namely > * nvme (unmigratable) > * pci-assign (unmigratable) > * vfio (unmigratable) > * vmxnet3 - does an extra register_savevm() just for msix_save() > * ivshmem - calling msix_save() conditionally after pci_device_save() > * virtio-pci - calling msix_save() conditionally after pci_device_save()
Sorry, unconditionally, but msix_save() is no-op if !msix_present(), so effect is the same - stored immediately after for some devices, with ivshmem using its own qdev property condition hopefully equivalent to msix_present() and vmxnet3 breaking that scheme. While pci_device_save() internally reuses vmstate_pci[e]_device, neither ivshmem nor virtio-pci set PCIDeviceClass::is_express, so are unaffected by changes of vmstate_pcie_device in this series. Stefan, do you see bumping vmxnet3 version_id post-1.6 as an acceptable solution? Then we could make MSI-X a vmstate_pci_device subsection, too, if I'm not making a thinko. Andreas > * megasas - #ifdef USE_MSIX'ed out, will need changes > > CC'ing net and scsi maintainers and Hannes. > > Regards, > Andreas > -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg