From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52856) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WjlvA-0006Mx-Mt for qemu-devel@nongnu.org; Mon, 12 May 2014 04:49:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wjlv2-00046X-A0 for qemu-devel@nongnu.org; Mon, 12 May 2014 04:49:16 -0400 Received: from e23smtp07.au.ibm.com ([202.81.31.140]:40587) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wjlut-000450-AG for qemu-devel@nongnu.org; Mon, 12 May 2014 04:49:08 -0400 Received: from /spool/local by e23smtp07.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 12 May 2014 18:46:40 +1000 From: Alexey Kardashevskiy Date: Mon, 12 May 2014 18:46:32 +1000 Message-Id: <1399884392-5690-1-git-send-email-aik@ozlabs.ru> Subject: [Qemu-devel] [PATCH] spapr_iommu: Replace @instance_id with LIOBN for migration List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Alexey Kardashevskiy , qemu-ppc@nongnu.org, Alexander Graf SPAPR IOMMU is a bus-less device and therefore its only ID in migration stream is an instance id which is not reliable ID as it depends on the command line parameters order. Since libvirt may change the order, we need something better than that. This removes VMSD descriptor from the class definitiion and registers it with @liobn as an intance ID to let the destination side find the right device to receive migration data. Signed-off-by: Alexey Kardashevskiy --- hw/ppc/spapr_iommu.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/ppc/spapr_iommu.c b/hw/ppc/spapr_iommu.c index 72493d8..7c3f8c2 100644 --- a/hw/ppc/spapr_iommu.c +++ b/hw/ppc/spapr_iommu.c @@ -140,6 +140,9 @@ static int spapr_tce_table_realize(DeviceState *dev) QLIST_INSERT_HEAD(&spapr_tce_tables, tcet, list); + vmstate_register(DEVICE(tcet), tcet->liobn, &vmstate_spapr_tce_table, + tcet); + return 0; } @@ -323,7 +326,6 @@ int spapr_tcet_dma_dt(void *fdt, int node_off, const char *propname, static void spapr_tce_table_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); - dc->vmsd = &vmstate_spapr_tce_table; dc->init = spapr_tce_table_realize; dc->reset = spapr_tce_reset; -- 1.9.rc0