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]>
