From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51927) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WOJZr-00073L-BV for qemu-devel@nongnu.org; Fri, 14 Mar 2014 00:18:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WOJZf-0004UE-Kd for qemu-devel@nongnu.org; Fri, 14 Mar 2014 00:18:35 -0400 Received: from e23smtp08.au.ibm.com ([202.81.31.141]:58360) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WOJZe-0004O9-QI for qemu-devel@nongnu.org; Fri, 14 Mar 2014 00:18:23 -0400 Received: from /spool/local by e23smtp08.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 14 Mar 2014 14:18:16 +1000 From: Alexey Kardashevskiy Date: Fri, 14 Mar 2014 15:18:05 +1100 Message-Id: <1394770689-29039-5-git-send-email-aik@ozlabs.ru> In-Reply-To: <1394770689-29039-1-git-send-email-aik@ozlabs.ru> References: <1394770689-29039-1-git-send-email-aik@ozlabs.ru> Subject: [Qemu-devel] [PATCH 4/8] xics: add pre_load() hook to ICSStateClass 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 , =?UTF-8?q?Andreas=20F=C3=A4rber?= This adds a hook which will be used to reset ICS state before incoming migration. Signed-off-by: Alexey Kardashevskiy --- hw/intc/xics.c | 13 +++++++++++++ include/hw/ppc/xics.h | 1 + 2 files changed, 14 insertions(+) diff --git a/hw/intc/xics.c b/hw/intc/xics.c index 88ef9ef..39c33bc 100644 --- a/hw/intc/xics.c +++ b/hw/intc/xics.c @@ -550,6 +550,18 @@ static void ics_dispatch_pre_save(void *opaque) } } +static int ics_dispatch_pre_load(void *opaque) +{ + ICSState *ics = opaque; + ICSStateClass *info = ICS_GET_CLASS(ics); + + if (info->pre_load) { + return info->pre_load(ics); + } + + return 0; +} + static int ics_dispatch_post_load(void *opaque, int version_id) { ICSState *ics = opaque; @@ -582,6 +594,7 @@ static const VMStateDescription vmstate_ics = { .minimum_version_id = 1, .minimum_version_id_old = 1, .pre_save = ics_dispatch_pre_save, + .pre_load = ics_dispatch_pre_load, .post_load = ics_dispatch_post_load, .fields = (VMStateField []) { /* Sanity check */ diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h index 02bbe31..4b30e9a 100644 --- a/include/hw/ppc/xics.h +++ b/include/hw/ppc/xics.h @@ -126,6 +126,7 @@ struct ICSStateClass { DeviceClass parent_class; void (*pre_save)(ICSState *s); + int (*pre_load)(ICSState *s); int (*post_load)(ICSState *s, int version_id); }; -- 1.8.4.rc4