We only receive ram into the colo cache here and don't touch anything
else, so the BQL is not needed here.
Move cpu_synchronize_all_states() downwards, before we apply the received
checkpoint. It turns out that qemu_system_reset() already calls it
for us.
Signed-off-by: Lukas Straub <lukasstraub2@web.de>
---
migration/colo.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/migration/colo.c b/migration/colo.c
index 74338a59b563846f4562161942001889dd6191bc..cd1a2b94f497fcb25609bbe117feaa8eed1d7f50 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -684,11 +684,7 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
return;
}
- bql_lock();
- cpu_synchronize_all_states();
ret = qemu_loadvm_state_main(mis->from_src_file, mis, errp);
- bql_unlock();
-
if (ret < 0) {
return;
}
@@ -731,6 +727,8 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
* With colo we load device vmstate during each checkpoint, on top of
* a vm that was already running. Some devices expect a reset before
* loading vmstate on such a previously running vm.
+ *
+ * NOTE: qemu_system_reset() calls cpu_synchronize_all_states() for us
*/
qemu_system_reset(SHUTDOWN_CAUSE_SNAPSHOT_LOAD);
colo_flush_ram_cache();
--
2.39.5