@samitouri / QOSamiQemu / commits / 32603ba372

colo: Fix crash during device vmstate load

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. This fixes a crash when using COLO with Q35 machine. The reset adds 10-20ms overhead to the checkpointing proces in my testing. Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: Lukas Straub <lukasstraub2@web.de> Link: https://lore.kernel.org/qemu-devel/20260302-colo_unit_test_multifd-v11-10-d653fb3b1d80@web.de Signed-off-by: Fabiano Rosas <farosas@suse.de>

Lukas Straub committed Mar 2, 2026 at 12:45 UTC 32603ba372266f9a32cd56f4c5d7137ea00fdf15
1 file changed +6
migration/colo.c
+6
@@ -729,6 +729,12 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
729
730 bql_lock();
731 vmstate_loading = true;
732 + /*
733 + * With colo we load device vmstate during each checkpoint, on top of
734 + * a vm that was already running. Some devices expect a reset before
735 + * loading vmstate on such a previously running vm.
736 + */
737 + qemu_system_reset(SHUTDOWN_CAUSE_SNAPSHOT_LOAD);
738 colo_flush_ram_cache();
739 ret = qemu_load_device_state(fb, errp);
740 if (ret < 0) {