Peter Xu <[email protected]> writes:

> We may switch to a BQL-free loadvm model.  Be prepared with it.
>
> Cc: Cédric Le Goater <[email protected]>
> Cc: Maciej S. Szmigiero <[email protected]>
> Signed-off-by: Peter Xu <[email protected]>
> ---
>  hw/vfio/migration-multifd.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/hw/vfio/migration-multifd.c b/hw/vfio/migration-multifd.c
> index e4785031a7..8dc8444f0d 100644
> --- a/hw/vfio/migration-multifd.c
> +++ b/hw/vfio/migration-multifd.c
> @@ -763,16 +763,21 @@ int vfio_multifd_switchover_start(VFIODevice *vbasedev)
>  {
>      VFIOMigration *migration = vbasedev->migration;
>      VFIOMultifd *multifd = migration->multifd;
> +    bool bql_is_locked = bql_locked();
>  
>      assert(multifd);
>  
>      /* The lock order is load_bufs_mutex -> BQL so unlock BQL here first */
> -    bql_unlock();
> +    if (bql_is_locked) {
> +        bql_unlock();
> +    }
>      WITH_QEMU_LOCK_GUARD(&multifd->load_bufs_mutex) {
>          assert(!multifd->load_bufs_thread_running);
>          multifd->load_bufs_thread_running = true;
>      }
> -    bql_lock();
> +    if (bql_is_locked) {
> +        bql_lock();
> +    }
>  
>      qemu_loadvm_start_load_thread(vfio_load_bufs_thread, vbasedev);

Reviewed-by: Fabiano Rosas <[email protected]>

Reply via email to