]> git.proxmox.com Git - qemu.git/blobdiff - arch_init.c
migration: run pending/iterate callbacks out of big lock
[qemu.git] / arch_init.c
index 8daeafaf5c9975a3d5306a1f7e93edf7dd800ca4..32b437897c5ead389056ecb02922b5ed0fa19cc9 100644 (file)
@@ -379,6 +379,8 @@ static inline bool migration_bitmap_set_dirty(MemoryRegion *mr,
     return ret;
 }
 
+/* Needs iothread lock! */
+
 static void migration_bitmap_sync(void)
 {
     RAMBlock *block;
@@ -690,7 +692,9 @@ static uint64_t ram_save_pending(QEMUFile *f, void *opaque, uint64_t max_size)
     remaining_size = ram_save_remaining() * TARGET_PAGE_SIZE;
 
     if (remaining_size < max_size) {
+        qemu_mutex_lock_iothread();
         migration_bitmap_sync();
+        qemu_mutex_unlock_iothread();
         remaining_size = ram_save_remaining() * TARGET_PAGE_SIZE;
     }
     return remaining_size;