qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com>
To: qemu-devel@nongnu.org
Cc: mszeredi@redhat.com, lukasstraub2@web.de, quintela@redhat.com,
	pannengyuan@huawei.com, f4bug@amsat.org, stefanha@redhat.com
Subject: [PULL 08/12] migration/colo.c: Use cpu_synchronize_all_states()
Date: Mon,  1 Jun 2020 19:40:00 +0100	[thread overview]
Message-ID: <20200601184004.272784-9-dgilbert@redhat.com> (raw)
In-Reply-To: <20200601184004.272784-1-dgilbert@redhat.com>

From: Lukas Straub <lukasstraub2@web.de>

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 <lukasstraub2@web.de>
Message-Id: <9675031ce557b73ebd10e7bd20ebbf57f30b177c.1589193382.git.lukasstraub2@web.de>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 migration/colo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/migration/colo.c b/migration/colo.c
index fe0d6e93e5..d00b3b9d6b 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -705,7 +705,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.26.2



  parent reply	other threads:[~2020-06-01 18:41 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-01 18:39 [PULL 00/12] migration/virtiofs/hmp queue Dr. David Alan Gilbert (git)
2020-06-01 18:39 ` [PULL 01/12] migration/rdma: fix potential nullptr access in rdma_start_incoming_migration Dr. David Alan Gilbert (git)
2020-06-01 18:39 ` [PULL 02/12] migration/rdma: cleanup rdma context before g_free to avoid memleaks Dr. David Alan Gilbert (git)
2020-06-01 18:39 ` [PULL 03/12] hmp: Implement qom-get HMP command Dr. David Alan Gilbert (git)
2020-06-01 18:39 ` [PULL 04/12] hmp: Simplify qom-set Dr. David Alan Gilbert (git)
2020-06-02  6:47   ` Markus Armbruster
2020-06-02  9:26     ` Dr. David Alan Gilbert
2020-06-03 10:25       ` David Hildenbrand
2020-06-03 10:43         ` Dr. David Alan Gilbert
2020-06-03 11:31           ` David Hildenbrand
2020-06-03 11:33             ` David Hildenbrand
2020-06-03 11:43             ` Dr. David Alan Gilbert
2020-06-03 12:18               ` David Hildenbrand
2020-06-03 12:24                 ` Dr. David Alan Gilbert
2020-06-03 12:26                   ` David Hildenbrand
2020-06-03 12:43                     ` David Hildenbrand
2020-06-03 13:33                       ` Dr. David Alan Gilbert
2020-06-01 18:39 ` [PULL 05/12] virtiofsd: remove symlink fallbacks Dr. David Alan Gilbert (git)
2020-06-01 18:39 ` [PULL 06/12] migration/vmstate: Remove unnecessary MemoryRegion forward declaration Dr. David Alan Gilbert (git)
2020-06-01 18:39 ` [PULL 07/12] migration/colo.c: Use event instead of semaphore Dr. David Alan Gilbert (git)
2020-06-01 18:40 ` Dr. David Alan Gilbert (git) [this message]
2020-06-01 18:40 ` [PULL 09/12] migration/colo.c: Flush ram cache only after receiving device state Dr. David Alan Gilbert (git)
2020-06-01 18:40 ` [PULL 10/12] migration/colo.c: Relaunch failover even if there was an error Dr. David Alan Gilbert (git)
2020-06-01 18:40 ` [PULL 11/12] migration/colo.c: Move colo_notify_compares_event to the right place Dr. David Alan Gilbert (git)
2020-06-01 18:40 ` [PULL 12/12] migration/migration.c: Fix hang in ram_save_host_page Dr. David Alan Gilbert (git)
2020-06-02  9:22 ` [PULL 00/12] migration/virtiofs/hmp queue Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200601184004.272784-9-dgilbert@redhat.com \
    --to=dgilbert@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=lukasstraub2@web.de \
    --cc=mszeredi@redhat.com \
    --cc=pannengyuan@huawei.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).