Browse Source

hw/vfio/migration: Check base architecture at runtime

Inline vfio_arch_wants_loading_config_after_iter() and
replace the compile time check of the TARGET_ARM definition
by a runtime call to target_base_arm().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Acked-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
Link: https://lore.kernel.org/qemu-devel/20251021161707.8324-1-philmd@linaro.org
Signed-off-by: Cédric Le Goater <clg@redhat.com>
pull/316/head
Philippe Mathieu-Daudé 6 months ago
committed by Cédric Le Goater
parent
commit
78e630fcc4
  1. 17
      hw/vfio/helpers.c
  2. 12
      hw/vfio/migration-multifd.c
  3. 2
      hw/vfio/vfio-helpers.h

17
hw/vfio/helpers.c

@ -210,20 +210,3 @@ retry:
return info;
}
bool vfio_arch_wants_loading_config_after_iter(void)
{
/*
* Starting the config load only after all iterables were loaded (during
* non-iterables loading phase) is required for ARM64 due to this platform
* VFIO dependency on interrupt controller being loaded first.
*
* See commit d329f5032e17 ("vfio: Move the saving of the config space to
* the right place in VFIO migration").
*/
#if defined(TARGET_ARM)
return true;
#else
return false;
#endif
}

12
hw/vfio/migration-multifd.c

@ -16,6 +16,7 @@
#include "qemu/error-report.h"
#include "qemu/lockable.h"
#include "qemu/main-loop.h"
#include "qemu/target-info.h"
#include "qemu/thread.h"
#include "io/channel-buffer.h"
#include "migration/qemu-file.h"
@ -44,7 +45,16 @@ bool vfio_load_config_after_iter(VFIODevice *vbasedev)
}
assert(vbasedev->migration_load_config_after_iter == ON_OFF_AUTO_AUTO);
return vfio_arch_wants_loading_config_after_iter();
/*
* Starting the config load only after all iterables were loaded (during
* non-iterables loading phase) is required for ARM64 due to this platform
* VFIO dependency on interrupt controller being loaded first.
*
* See commit d329f5032e17 ("vfio: Move the saving of the config space to
* the right place in VFIO migration").
*/
return target_base_arm();
}
/* type safety */

2
hw/vfio/vfio-helpers.h

@ -32,6 +32,4 @@ struct vfio_device_info *vfio_get_device_info(int fd);
int vfio_kvm_device_add_fd(int fd, Error **errp);
int vfio_kvm_device_del_fd(int fd, Error **errp);
bool vfio_arch_wants_loading_config_after_iter(void);
#endif /* HW_VFIO_VFIO_HELPERS_H */

Loading…
Cancel
Save