[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/6] migration/colo.c: Use cpu_synchronize_all_states()
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [PATCH 2/6] migration/colo.c: Use cpu_synchronize_all_states() |
Date: |
Wed, 13 May 2020 10:47:02 +0100 |
User-agent: |
Mutt/1.13.4 (2020-02-15) |
* Lukas Straub (address@hidden) wrote:
> cpu_synchronize_all_pre_loadvm() marks all vcpus as dirty, so the
> registers are loaded from CPUState before we continue running
> the vm. However if we failover during checkpoint, CPUState is not
> initialized and the registers are loaded with garbage. This causes
> guest hangs and crashes.
>
> Fix this by using cpu_synchronize_all_states(), which initializes
> CPUState from the current cpu registers additionally to marking
> the vcpus as dirty.
>
> Signed-off-by: Lukas Straub <address@hidden>
OK, so I think you're saying that if the qemu_loadvm_state_main fails
because we failover, we now have duff CPU state, where we should just
carry on running on the secondary with the current state, so yes
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
> ---
> migration/colo.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/migration/colo.c b/migration/colo.c
> index 09168627bc..6b2ad35aa4 100644
> --- a/migration/colo.c
> +++ b/migration/colo.c
> @@ -696,7 +696,7 @@ static void
> colo_incoming_process_checkpoint(MigrationIncomingState *mis,
> }
>
> qemu_mutex_lock_iothread();
> - cpu_synchronize_all_pre_loadvm();
> + cpu_synchronize_all_states();
> ret = qemu_loadvm_state_main(mis->from_src_file, mis);
> qemu_mutex_unlock_iothread();
>
> --
> 2.20.1
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK
- [PATCH 0/6] colo: migration related bugfixes, Lukas Straub, 2020/05/11
- [PATCH 1/6] migration/colo.c: Use event instead of semaphore, Lukas Straub, 2020/05/11
- [PATCH 2/6] migration/colo.c: Use cpu_synchronize_all_states(), Lukas Straub, 2020/05/11
- Re: [PATCH 2/6] migration/colo.c: Use cpu_synchronize_all_states(),
Dr. David Alan Gilbert <=
- [PATCH 3/6] migration/colo.c: Flush ram cache only after receiving device state, Lukas Straub, 2020/05/11
- [PATCH 4/6] migration/colo.c: Relaunch failover even if there was an error, Lukas Straub, 2020/05/11
- [PATCH 5/6] migration/qemu-file.c: Don't ratelimit a shutdown fd, Lukas Straub, 2020/05/11