From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Stefan Berger" <stefanb@linux.vnet.ibm.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
qemu-ppc@nongnu.org, "Nicholas Piggin" <npiggin@gmail.com>,
qemu-s390x@nongnu.org, "Gerd Hoffmann" <kraxel@redhat.com>,
"Corey Minyard" <cminyard@mvista.com>,
"Samuel Thibault" <samuel.thibault@ens-lyon.org>,
"Richard Henderson" <richard.henderson@linaro.org>,
"David Hildenbrand" <david@redhat.com>,
"Ilya Leoshkevich" <iii@linux.ibm.com>,
"Fabiano Rosas" <farosas@suse.de>,
"Eric Farman" <farman@linux.ibm.com>,
"Peter Xu" <peterx@redhat.com>,
"Harsh Prateek Bora" <harshpb@linux.ibm.com>,
"John Snow" <jsnow@redhat.com>,
qemu-block@nongnu.org,
"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Stefan Weil" <sw@weilnetz.de>,
qemu-arm@nongnu.org, "Juan Quintela" <quintela@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Corey Minyard" <minyard@acm.org>,
"Leonardo Bras" <leobras@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Cédric Le Goater" <clg@kaod.org>,
"David Gibson" <david@gibson.dropbear.id.au>,
"Halil Pasic" <pasic@linux.ibm.com>,
"Daniel Henrique Barboza" <danielhb413@gmail.com>,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>
Subject: [PATCH 09/13] migration: Check in savevm_state_handler_insert for dups
Date: Thu, 19 Oct 2023 21:08:27 +0200 [thread overview]
Message-ID: <20231019190831.20363-10-quintela@redhat.com> (raw)
In-Reply-To: <20231019190831.20363-1-quintela@redhat.com>
From: Peter Xu <peterx@redhat.com>
Before finally register one SaveStateEntry, we detect for duplicated
entries. This could be helpful to notify us asap instead of get
silent migration failures which could be hard to diagnose.
For example, this patch will generate a message like this (if without
previous fixes on x2apic) as long as we wants to boot a VM instance
with "-smp 200,maxcpus=288,sockets=2,cores=72,threads=2" and QEMU will
bail out even before VM starts:
savevm_state_handler_insert: Detected duplicate SaveStateEntry: id=apic, instance_id=0x0
Suggested-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
migration/savevm.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/migration/savevm.c b/migration/savevm.c
index 8622f229e5..e26833eaae 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -237,6 +237,8 @@ static SaveState savevm_state = {
.global_section_id = 0,
};
+static SaveStateEntry *find_se(const char *idstr, uint32_t instance_id);
+
static bool should_validate_capability(int capability)
{
assert(capability >= 0 && capability < MIGRATION_CAPABILITY__MAX);
@@ -716,6 +718,18 @@ static void savevm_state_handler_insert(SaveStateEntry *nse)
assert(priority <= MIG_PRI_MAX);
+ /*
+ * This should never happen otherwise migration will probably fail
+ * silently somewhere because we can be wrongly applying one
+ * object properties upon another one. Bail out ASAP.
+ */
+ if (find_se(nse->idstr, nse->instance_id)) {
+ error_report("%s: Detected duplicate SaveStateEntry: "
+ "id=%s, instance_id=0x%"PRIx32, __func__,
+ nse->idstr, nse->instance_id);
+ exit(EXIT_FAILURE);
+ }
+
for (i = priority - 1; i >= 0; i--) {
se = savevm_state.handler_pri_head[i];
if (se != NULL) {
--
2.41.0
next prev parent reply other threads:[~2023-10-19 19:10 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-19 19:08 [PATCH 00/13] migration: Check for duplicates on vmstate_register() Juan Quintela
2023-10-19 19:08 ` [PATCH 01/13] migration: Create vmstate_register_any() Juan Quintela
2023-10-19 20:18 ` Stefan Berger
2023-10-19 19:08 ` [PATCH 02/13] migration: Use vmstate_register_any() Juan Quintela
2023-10-19 20:18 ` Stefan Berger
2023-10-19 19:08 ` [PATCH 03/13] migration: Use vmstate_register_any() for isa-ide Juan Quintela
2023-10-19 20:19 ` Stefan Berger
2023-10-19 19:08 ` [PATCH 04/13] migration: Use vmstate_register_any() for ipmi-bt* Juan Quintela
2023-10-19 20:20 ` Stefan Berger
2023-10-19 19:08 ` [PATCH 05/13] migration: Use VMSTATE_INSTANCE_ID_ANY for slirp Juan Quintela
2023-10-19 20:29 ` Stefan Berger
2023-10-19 19:08 ` [PATCH 06/13] migration: Use VMSTATE_INSTANCE_ID_ANY for s390 devices Juan Quintela
2023-10-19 20:30 ` Stefan Berger
2023-10-19 19:08 ` [PATCH 07/13] RFC migration: icp/server is a mess Juan Quintela
2023-10-19 20:49 ` Greg Kurz
2023-10-19 21:15 ` Cédric Le Goater
2023-10-20 5:10 ` Thomas Huth
2023-10-20 7:39 ` Cédric Le Goater
2023-10-19 21:39 ` Greg Kurz
2023-10-20 7:30 ` Juan Quintela
2023-10-20 8:06 ` Greg Kurz
2023-10-20 8:12 ` Thomas Huth
2023-10-20 8:57 ` Juan Quintela
2023-10-20 7:49 ` Nicholas Piggin
2023-10-20 8:33 ` Juan Quintela
2023-10-20 8:33 ` Greg Kurz
2023-10-20 10:21 ` Nicholas Piggin
2023-10-19 19:08 ` [PATCH 08/13] migration: vmstate_register() check that instance_id is valid Juan Quintela
2023-10-19 19:08 ` Juan Quintela [this message]
2023-10-19 19:08 ` [PATCH 10/13] migration: Improve example and documentation of vmstate_register() Juan Quintela
2023-10-19 20:38 ` Stefan Berger
2023-10-20 9:03 ` Juan Quintela
2023-10-19 19:08 ` [PATCH 11/13] migration: Use vmstate_register_any() for audio Juan Quintela
2023-10-19 20:39 ` Stefan Berger
2023-10-19 19:08 ` [PATCH 12/13] migration: Use vmstate_register_any() for eeprom93xx Juan Quintela
2023-10-19 20:39 ` Stefan Berger
2023-10-19 19:08 ` [PATCH 13/13] migration: Use vmstate_register_any() for vmware_vga Juan Quintela
2023-10-19 20:42 ` Stefan Berger
2023-10-20 7:33 ` Juan Quintela
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=20231019190831.20363-10-quintela@redhat.com \
--to=quintela@redhat.com \
--cc=borntraeger@linux.ibm.com \
--cc=clg@kaod.org \
--cc=cminyard@mvista.com \
--cc=danielhb413@gmail.com \
--cc=david@gibson.dropbear.id.au \
--cc=david@redhat.com \
--cc=dgilbert@redhat.com \
--cc=farman@linux.ibm.com \
--cc=farosas@suse.de \
--cc=harshpb@linux.ibm.com \
--cc=iii@linux.ibm.com \
--cc=jasowang@redhat.com \
--cc=jsnow@redhat.com \
--cc=kraxel@redhat.com \
--cc=leobras@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=minyard@acm.org \
--cc=mst@redhat.com \
--cc=npiggin@gmail.com \
--cc=pasic@linux.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=samuel.thibault@ens-lyon.org \
--cc=stefanb@linux.vnet.ibm.com \
--cc=sw@weilnetz.de \
--cc=thuth@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).