On Thu, 28 Jul 2022, Peter Maydell wrote:
> On Thu, 28 Jul 2022 at 15:44, Dr. David Alan Gilbert
> <dgilb...@redhat.com> wrote:
> > Isn't the problem partially due to a 'stub' vmsd which isn't terminated?
>
> Yes, but setting these properties causes that vmsd
> (vmstate_acpi_pcihp_pci_status) to not be used:
>
> * it is used only in VMSTATE_PCI_HOTPLUG()
> * that macro is used only in hw/acpi/ich9.c (not relevant here) and
> hw/acpi/piix4.c
> * in piix4.c it is invoked passing it the test functions
> vmstate_test_use_acpi_hotplug_bridge and
> vmstate_test_migrate_acpi_index
> * setting the properties on the device as this patch does
> causes those test functions to return false, so the
> vmstate_acpi_pcihp_pci_status is never examined
I believe this happens in vmstate_save_state_v() in this condition
checking:
while (field->name) {
if ((field->field_exists &&
field->field_exists(opaque, version_id)) ||
(!field->field_exists &&
field->version_id <= version_id)) {