x86: make set_nmi_callback return the old nmi callback
authorFeng Wu <feng.wu@intel.com>
Tue, 3 Jun 2014 09:29:38 +0000 (11:29 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 3 Jun 2014 09:29:38 +0000 (11:29 +0200)
This patch makes set_nmi_callback return the old nmi callback, so
we can set it back later.

Signed-off-by: Feng Wu <feng.wu@intel.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/traps.c
xen/include/asm-x86/nmi.h

index b82b1b345e67e2d5563c0f1fb517d6682f646f0b..81615854902868db278ed5d2136f73890bac1ad5 100644 (file)
@@ -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)
index 98b5e04341bf0e047ef2c7f8179e84c80126c3db..58cd9a1b5e3b6efbb09406f7019cb36a2d957794 100644 (file)
@@ -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