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. Reviewed-by: Peter Xu <[email protected]> Signed-off-by: Lukas Straub <[email protected]> --- migration/colo.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index 3297aa593cd9f87bf1013598464cc581a9d23531..ce02c71d8857d470be434bdf3a9cacad3baab0d5 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -686,11 +686,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; } @@ -733,6 +729,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
