From mboxrd@z Thu Jan 1 00:00:00 1970 From: Feng Wu Subject: [PATCH v3 3/5] x86: Make set_nmi_callback return the old nmi callback Date: Fri, 30 May 2014 16:56:23 +0800 Message-ID: <1401440185-11266-4-git-send-email-feng.wu@intel.com> References: <1401440185-11266-1-git-send-email-feng.wu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1401440185-11266-1-git-send-email-feng.wu@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org Cc: Feng Wu , ian.campbell@citrix.com, andrew.cooper3@citrix.com, tim@xen.org, keir.xen@gmail.com, stefano.stabellini@citrix.com, JBeulich@suse.com, boris.ostrovsky@oracle.com List-Id: xen-devel@lists.xenproject.org This patch makes set_nmi_callback return the old nmi callback, so we can set it back later. Signed-off-by: Feng Wu Reviewed-by: Andrew Cooper --- xen/arch/x86/traps.c | 4 +++- xen/include/asm-x86/nmi.h | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 1722912..171cff0 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -3322,9 +3322,11 @@ void do_nmi(struct cpu_user_regs *regs) } } -void set_nmi_callback(nmi_callback_t callback) +nmi_callback_t set_nmi_callback(nmi_callback_t callback) { + nmi_callback_t old_nmi_callback = nmi_callback; nmi_callback = callback; + return old_nmi_callback; } void unset_nmi_callback(void) diff --git a/xen/include/asm-x86/nmi.h b/xen/include/asm-x86/nmi.h index 98b5e04..58cd9a1 100644 --- a/xen/include/asm-x86/nmi.h +++ b/xen/include/asm-x86/nmi.h @@ -15,9 +15,9 @@ typedef int (*nmi_callback_t)(struct cpu_user_regs *regs, int cpu); * set_nmi_callback * * Set a handler for an NMI. Only one handler may be - * set. Return 1 if the NMI was handled. + * set. Return the old nmi callback handler. */ -void set_nmi_callback(nmi_callback_t callback); +nmi_callback_t set_nmi_callback(nmi_callback_t callback); /** * unset_nmi_callback -- 1.8.3.1