On 18/03/2025 09:53, Cédric Le Goater wrote:
> Both of these routines are only used in file "migration.c". Move them
> there.
> 
> Signed-off-by: Cédric Le Goater <c...@redhat.com>

Reviewed-by: Joao Martins <joao.m.mart...@oracle.com>

> ---
>  include/hw/vfio/vfio-common.h |  2 --
>  hw/vfio/common.c              | 62 -----------------------------------
>  hw/vfio/migration.c           | 62 +++++++++++++++++++++++++++++++++++
>  3 files changed, 62 insertions(+), 64 deletions(-)
> 
> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
> index 
> 5fc7ee76573375bc8464baee29ab88974fac3d3b..5f082e5a321d97e90066d48cd3c1eaad56912ccb
>  100644
> --- a/include/hw/vfio/vfio-common.h
> +++ b/include/hw/vfio/vfio-common.h
> @@ -290,8 +290,6 @@ extern VFIODeviceList vfio_device_list;
>  extern const MemoryListener vfio_memory_listener;
>  extern int vfio_kvm_device_fd;
>  
> -int vfio_block_multiple_devices_migration(VFIODevice *vbasedev, Error 
> **errp);
> -void vfio_unblock_multiple_devices_migration(void);
>  bool vfio_viommu_preset(VFIODevice *vbasedev);
>  bool vfio_device_state_is_running(VFIODevice *vbasedev);
>  bool vfio_device_state_is_precopy(VFIODevice *vbasedev);
> diff --git a/hw/vfio/common.c b/hw/vfio/common.c
> index 
> 4205f4f7ec87e1a2a5e4110eabc8fde835d39c7f..ace7a4403bd49f35cf85009015b3ba315f80cd30
>  100644
> --- a/hw/vfio/common.c
> +++ b/hw/vfio/common.c
> @@ -41,7 +41,6 @@
>  #include "trace.h"
>  #include "qapi/error.h"
>  #include "migration/misc.h"
> -#include "migration/blocker.h"
>  #include "migration/qemu-file.h"
>  #include "system/tcg.h"
>  #include "system/tpm.h"
> @@ -66,67 +65,6 @@ int vfio_kvm_device_fd = -1;
>   * Device state interfaces
>   */
>  
> -static Error *multiple_devices_migration_blocker;
> -
> -/*
> - * Multiple devices migration is allowed only if all devices support P2P
> - * migration. Single device migration is allowed regardless of P2P migration
> - * support.
> - */
> -static bool vfio_multiple_devices_migration_is_supported(void)
> -{
> -    VFIODevice *vbasedev;
> -    unsigned int device_num = 0;
> -    bool all_support_p2p = true;
> -
> -    QLIST_FOREACH(vbasedev, &vfio_device_list, global_next) {
> -        if (vbasedev->migration) {
> -            device_num++;
> -
> -            if (!(vbasedev->migration->mig_flags & VFIO_MIGRATION_P2P)) {
> -                all_support_p2p = false;
> -            }
> -        }
> -    }
> -
> -    return all_support_p2p || device_num <= 1;
> -}
> -
> -int vfio_block_multiple_devices_migration(VFIODevice *vbasedev, Error **errp)
> -{
> -    int ret;
> -
> -    if (vfio_multiple_devices_migration_is_supported()) {
> -        return 0;
> -    }
> -
> -    if (vbasedev->enable_migration == ON_OFF_AUTO_ON) {
> -        error_setg(errp, "Multiple VFIO devices migration is supported only 
> if "
> -                         "all of them support P2P migration");
> -        return -EINVAL;
> -    }
> -
> -    if (multiple_devices_migration_blocker) {
> -        return 0;
> -    }
> -
> -    error_setg(&multiple_devices_migration_blocker,
> -               "Multiple VFIO devices migration is supported only if all of "
> -               "them support P2P migration");
> -    ret = migrate_add_blocker_normal(&multiple_devices_migration_blocker, 
> errp);
> -
> -    return ret;
> -}
> -
> -void vfio_unblock_multiple_devices_migration(void)
> -{
> -    if (!multiple_devices_migration_blocker ||
> -        !vfio_multiple_devices_migration_is_supported()) {
> -        return;
> -    }
> -
> -    migrate_del_blocker(&multiple_devices_migration_blocker);
> -}
>  
>  bool vfio_viommu_preset(VFIODevice *vbasedev)
>  {
> diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
> index 
> 75096377ffecf62b3bab91102a00d723827ea4c7..951e073a20287c46ca199b1648782b59415d0d2a
>  100644
> --- a/hw/vfio/migration.c
> +++ b/hw/vfio/migration.c
> @@ -1022,6 +1022,68 @@ static int vfio_migration_init(VFIODevice *vbasedev)
>      return 0;
>  }
>  
> +static Error *multiple_devices_migration_blocker;
> +
> +/*
> + * Multiple devices migration is allowed only if all devices support P2P
> + * migration. Single device migration is allowed regardless of P2P migration
> + * support.
> + */
> +static bool vfio_multiple_devices_migration_is_supported(void)
> +{
> +    VFIODevice *vbasedev;
> +    unsigned int device_num = 0;
> +    bool all_support_p2p = true;
> +
> +    QLIST_FOREACH(vbasedev, &vfio_device_list, global_next) {
> +        if (vbasedev->migration) {
> +            device_num++;
> +
> +            if (!(vbasedev->migration->mig_flags & VFIO_MIGRATION_P2P)) {
> +                all_support_p2p = false;
> +            }
> +        }
> +    }
> +
> +    return all_support_p2p || device_num <= 1;
> +}
> +
> +static int vfio_block_multiple_devices_migration(VFIODevice *vbasedev, Error 
> **errp)
> +{
> +    int ret;
> +
> +    if (vfio_multiple_devices_migration_is_supported()) {
> +        return 0;
> +    }
> +
> +    if (vbasedev->enable_migration == ON_OFF_AUTO_ON) {
> +        error_setg(errp, "Multiple VFIO devices migration is supported only 
> if "
> +                         "all of them support P2P migration");
> +        return -EINVAL;
> +    }
> +
> +    if (multiple_devices_migration_blocker) {
> +        return 0;
> +    }
> +
> +    error_setg(&multiple_devices_migration_blocker,
> +               "Multiple VFIO devices migration is supported only if all of "
> +               "them support P2P migration");
> +    ret = migrate_add_blocker_normal(&multiple_devices_migration_blocker, 
> errp);
> +
> +    return ret;
> +}
> +
> +static void vfio_unblock_multiple_devices_migration(void)
> +{
> +    if (!multiple_devices_migration_blocker ||
> +        !vfio_multiple_devices_migration_is_supported()) {
> +        return;
> +    }
> +
> +    migrate_del_blocker(&multiple_devices_migration_blocker);
> +}
> +
>  static void vfio_migration_deinit(VFIODevice *vbasedev)
>  {
>      VFIOMigration *migration = vbasedev->migration;


Reply via email to