From: David Gibson <david@gibson.dropbear.id.au>
To: peter.maydell@linaro.org
Cc: agraf@suse.de, thuth@redhat.com, lvivier@redhat.com,
sursingh@redhat.com, sbobroff@redhat.com,
mdroth@linux.vnet.ibm.com, qemu-ppc@nongnu.org,
qemu-devel@nongnu.org, Greg Kurz <groug@kaod.org>,
David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PULL 10/21] xics: directly register ICPState objects to vmstate
Date: Fri, 30 Jun 2017 20:46:21 +1000 [thread overview]
Message-ID: <20170630104632.27942-11-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20170630104632.27942-1-david@gibson.dropbear.id.au>
From: Greg Kurz <groug@kaod.org>
The ICPState objects are currently registered to vmstate as qdev objects.
Their instance ids are hence computed automatically in the migration code,
and thus depends on the order the CPU cores were plugged.
If the destination had its CPU cores plugged in a different order than the
source, then ICPState objects will have different instance_ids and load
the wrong state.
Since CPU objects have a reliable cpu_index which is already used as
instance_id in vmstate, let's use it for ICPState as well.
Please note that this doesn't break migration. Older machine types used to
allocate and realize all ICPState objects at machine init time, for the whole
lifetime of the machine. The qdev instance ids are thus 0,1,2... nr_servers
and happen to map to the vCPU indexes.
Signed-off-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
hw/intc/xics.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index d4194d6..a84ba51 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -344,10 +344,14 @@ static void icp_realize(DeviceState *dev, Error **errp)
}
qemu_register_reset(icp_reset, dev);
+ vmstate_register(NULL, icp->cs->cpu_index, &vmstate_icp_server, icp);
}
static void icp_unrealize(DeviceState *dev, Error **errp)
{
+ ICPState *icp = ICP(dev);
+
+ vmstate_unregister(NULL, &vmstate_icp_server, icp);
qemu_unregister_reset(icp_reset, dev);
}
@@ -355,7 +359,6 @@ static void icp_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
- dc->vmsd = &vmstate_icp_server;
dc->realize = icp_realize;
dc->unrealize = icp_unrealize;
}
--
2.9.4
next prev parent reply other threads:[~2017-06-30 10:46 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-30 10:46 [Qemu-devel] [PULL 00/21] ppc-for-2.10 queue 20170730 David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 01/21] hw/ppc/prep: Remove superfluous call to soundhw_init() David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 02/21] qapi: add explicit null to string input and output visitors David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 03/21] pseries: Move CPU compatibility property to machine David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 04/21] pseries: Reset CPU compatibility mode David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 05/21] ppc: Rework CPU compatibility testing across migration David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 06/21] spapr: Add a "no HPT" encoding to HTAB migration stream David Gibson
2017-07-17 19:54 ` [Qemu-devel] [Qemu-ppc] " Laurent Vivier
2017-07-18 3:37 ` David Gibson
2017-07-18 7:36 ` Thomas Huth
2017-06-30 10:46 ` [Qemu-devel] [PULL 07/21] spapr: Fix migration of Radix guests David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 08/21] target/ppc/excp_helper: Take BQL before calling cpu_interrupt() David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 09/21] target/ppc: Fix return value in tcg radix mmu fault handler David Gibson
2017-06-30 10:46 ` David Gibson [this message]
2017-06-30 10:46 ` [Qemu-devel] [PULL 11/21] spapr: fix migration of ICPState objects from/to older QEMU David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 12/21] target/ppc: Proper cleanup when ppc_cpu_realizefn fails David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 13/21] spapr: prevent QEMU crash when CPU realization fails David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 14/21] hw/ppc/spapr.c: consecutive 'spapr->patb_entry = 0' statements David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 15/21] target-ppc: Enable open-pic timers to count and generate interrupts David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 16/21] spapr: Start hotplugged PCI devices in ISOLATED state David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 17/21] spapr: Eliminate DRC 'signalled' state variable David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 18/21] spapr: Split DRC release from DRC detach David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 19/21] spapr: Make DRC reset force DRC into known state David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 20/21] spapr: Clean up DRC set_allocation_state path David Gibson
2017-06-30 10:46 ` [Qemu-devel] [PULL 21/21] spapr: Clean up DRC set_isolation_state() path David Gibson
2017-06-30 11:03 ` [Qemu-devel] [PULL 00/21] ppc-for-2.10 queue 20170730 Greg Kurz
2017-07-01 6:47 ` David Gibson
2017-06-30 12:26 ` 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=20170630104632.27942-11-david@gibson.dropbear.id.au \
--to=david@gibson.dropbear.id.au \
--cc=agraf@suse.de \
--cc=groug@kaod.org \
--cc=lvivier@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=sbobroff@redhat.com \
--cc=sursingh@redhat.com \
--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).