diff options
| author | Maciej S. Szmigiero <maciej.szmigiero@oracle.com> | 2025-07-15 16:37:36 +0200 |
|---|---|---|
| committer | Cédric Le Goater <clg@redhat.com> | 2025-07-15 17:11:12 +0200 |
| commit | 6380b0a02fbdac253b8a98b300398319ab655237 (patch) | |
| tree | 82034d019d945f357457f2a0a7d3f2f3e80ea6ec /hw/vfio/migration.c | |
| parent | a59d06305fff9d10ddeeaebc66590af422362701 (diff) | |
| download | focaccia-qemu-6380b0a02fbdac253b8a98b300398319ab655237.tar.gz focaccia-qemu-6380b0a02fbdac253b8a98b300398319ab655237.zip | |
vfio/migration: Add x-migration-load-config-after-iter VFIO property
This property allows configuring whether to start the config load only after all iterables were loaded, during non-iterables loading phase. Such interlocking is required for ARM64 due to this platform VFIO dependency on interrupt controller being loaded first. The property defaults to AUTO, which means ON for ARM, OFF for other platforms. Reviewed-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Avihai Horon <avihaih@nvidia.com> Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com> Link: https://lore.kernel.org/qemu-devel/0e03c60dbc91f9a9ba2516929574df605b7dfcb4.1752589295.git.maciej.szmigiero@oracle.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
Diffstat (limited to 'hw/vfio/migration.c')
| -rw-r--r-- | hw/vfio/migration.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c index c329578eec..4c06e3db93 100644 --- a/hw/vfio/migration.c +++ b/hw/vfio/migration.c @@ -675,7 +675,11 @@ static void vfio_save_state(QEMUFile *f, void *opaque) int ret; if (vfio_multifd_transfer_enabled(vbasedev)) { - vfio_multifd_emit_dummy_eos(vbasedev, f); + if (vfio_load_config_after_iter(vbasedev)) { + qemu_put_be64(f, VFIO_MIG_FLAG_DEV_CONFIG_LOAD_READY); + } else { + vfio_multifd_emit_dummy_eos(vbasedev, f); + } return; } @@ -784,6 +788,10 @@ static int vfio_load_state(QEMUFile *f, void *opaque, int version_id) return ret; } + case VFIO_MIG_FLAG_DEV_CONFIG_LOAD_READY: + { + return vfio_load_state_config_load_ready(vbasedev); + } default: error_report("%s: Unknown tag 0x%"PRIx64, vbasedev->name, data); return -EINVAL; |