From 238faa9daf9f3dff782128302c5fd923e49f2143 Mon Sep 17 00:00:00 2001 From: Feng Wu Date: Tue, 3 Jun 2014 11:29:38 +0200 Subject: [PATCH] x86: make set_nmi_callback return the old nmi callback 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 | 6 +++++- xen/include/asm-x86/nmi.h | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index b82b1b345e..8161585490 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -3328,9 +3328,13 @@ 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 98b5e04341..58cd9a1b5e 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 -- 2.30.2