We may switch to a BQL-free loadvm model. Be prepared with it. Cc: Cédric Le Goater <c...@redhat.com> Cc: Maciej S. Szmigiero <m...@maciej.szmigiero.name> Signed-off-by: Peter Xu <pet...@redhat.com> --- 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); -- 2.50.1