static bool test_no_msix(void *opaque, int version_id) { return !test_msix(opaque, version_id); } static const VMStateDescription ivshmem_vmsd = { .name = "ivshmem", .version_id = 1, .minimum_version_id = 1, .pre_load = ivshmem_pre_load, .post_load = ivshmem_post_load, .fields = (VMStateField[]) { VMSTATE_PCI_DEVICE(parent_obj, IVShmemState), VMSTATE_MSIX_TEST(parent_obj, IVShmemState, test_msix), VMSTATE_UINT32_TEST(intrstatus, IVShmemState, test_no_msix), VMSTATE_UINT32_TEST(intrmask, IVShmemState, test_no_msix), VMSTATE_END_OF_LIST() }, .load_state_old = ivshmem_load_old, .minimum_version_id_old = 0 }; static Property ivshmem_properties[] = { DEFINE_PROP_CHR("chardev", IVShmemState, server_chr), DEFINE_PROP_STRING("size", IVShmemState, sizearg), DEFINE_PROP_UINT32("vectors", IVShmemState, vectors, 1), DEFINE_PROP_BIT("ioeventfd", IVShmemState, features, IVSHMEM_IOEVENTFD, false),
d->wmask[PCI_IO_LIMIT] = 0; } } static const VMStateDescription vmstate_rp_dev = { .name = "pcie-root-port", .priority = MIG_PRI_PCI_BUS, .version_id = 1, .minimum_version_id = 1, .post_load = pcie_cap_slot_post_load, .fields = (VMStateField[]) { VMSTATE_PCI_DEVICE(parent_obj.parent_obj.parent_obj, PCIESlot), VMSTATE_STRUCT(parent_obj.parent_obj.parent_obj.exp.aer_log, PCIESlot, 0, vmstate_pcie_aer_log, PCIEAERLog), VMSTATE_MSIX_TEST(parent_obj.parent_obj.parent_obj.parent_obj, GenPCIERootPort, gen_rp_test_migrate_msix), VMSTATE_END_OF_LIST() } }; static Property gen_rp_props[] = { DEFINE_PROP_BOOL("x-migrate-msix", GenPCIERootPort, migrate_msix, true), DEFINE_PROP_UINT32("bus-reserve", GenPCIERootPort, res_reserve.bus, -1), DEFINE_PROP_SIZE("io-reserve", GenPCIERootPort, res_reserve.io, -1), DEFINE_PROP_SIZE("mem-reserve", GenPCIERootPort, res_reserve.mem_non_pref, -1), DEFINE_PROP_SIZE("pref32-reserve", GenPCIERootPort,