Merge branch 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[pandora-kernel.git] / arch / x86 / kernel / apic / x2apic_uv_x.c
index cfeb978..62ae300 100644 (file)
@@ -672,18 +672,11 @@ void __cpuinit uv_cpu_init(void)
 /*
  * When NMI is received, print a stack trace.
  */
-int uv_handle_nmi(struct notifier_block *self, unsigned long reason, void *data)
+int uv_handle_nmi(unsigned int reason, struct pt_regs *regs)
 {
        unsigned long real_uv_nmi;
        int bid;
 
-       if (reason != DIE_NMIUNKNOWN)
-               return NOTIFY_OK;
-
-       if (in_crash_kexec)
-               /* do nothing if entering the crash kernel */
-               return NOTIFY_OK;
-
        /*
         * Each blade has an MMR that indicates when an NMI has been sent
         * to cpus on the blade. If an NMI is detected, atomically
@@ -704,7 +697,7 @@ int uv_handle_nmi(struct notifier_block *self, unsigned long reason, void *data)
        }
 
        if (likely(__get_cpu_var(cpu_last_nmi_count) == uv_blade_info[bid].nmi_count))
-               return NOTIFY_DONE;
+               return NMI_DONE;
 
        __get_cpu_var(cpu_last_nmi_count) = uv_blade_info[bid].nmi_count;
 
@@ -717,17 +710,12 @@ int uv_handle_nmi(struct notifier_block *self, unsigned long reason, void *data)
        dump_stack();
        spin_unlock(&uv_nmi_lock);
 
-       return NOTIFY_STOP;
+       return NMI_HANDLED;
 }
 
-static struct notifier_block uv_dump_stack_nmi_nb = {
-       .notifier_call  = uv_handle_nmi,
-       .priority = NMI_LOCAL_LOW_PRIOR - 1,
-};
-
 void uv_register_nmi_notifier(void)
 {
-       if (register_die_notifier(&uv_dump_stack_nmi_nb))
+       if (register_nmi_handler(NMI_UNKNOWN, uv_handle_nmi, 0, "uv"))
                printk(KERN_WARNING "UV NMI handler failed to register\n");
 }