Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[pandora-kernel.git] / arch / x86 / kernel / apic / hw_nmi.c
index d5e57db..31cb9ae 100644 (file)
@@ -60,22 +60,10 @@ void arch_trigger_all_cpu_backtrace(void)
 }
 
 static int __kprobes
-arch_trigger_all_cpu_backtrace_handler(struct notifier_block *self,
-                        unsigned long cmd, void *__args)
+arch_trigger_all_cpu_backtrace_handler(unsigned int cmd, struct pt_regs *regs)
 {
-       struct die_args *args = __args;
-       struct pt_regs *regs;
        int cpu;
 
-       switch (cmd) {
-       case DIE_NMI:
-               break;
-
-       default:
-               return NOTIFY_DONE;
-       }
-
-       regs = args->regs;
        cpu = smp_processor_id();
 
        if (cpumask_test_cpu(cpu, to_cpumask(backtrace_mask))) {
@@ -86,21 +74,16 @@ arch_trigger_all_cpu_backtrace_handler(struct notifier_block *self,
                show_regs(regs);
                arch_spin_unlock(&lock);
                cpumask_clear_cpu(cpu, to_cpumask(backtrace_mask));
-               return NOTIFY_STOP;
+               return NMI_HANDLED;
        }
 
-       return NOTIFY_DONE;
+       return NMI_DONE;
 }
 
-static __read_mostly struct notifier_block backtrace_notifier = {
-       .notifier_call          = arch_trigger_all_cpu_backtrace_handler,
-       .next                   = NULL,
-       .priority               = NMI_LOCAL_LOW_PRIOR,
-};
-
 static int __init register_trigger_all_cpu_backtrace(void)
 {
-       register_die_notifier(&backtrace_notifier);
+       register_nmi_handler(NMI_LOCAL, arch_trigger_all_cpu_backtrace_handler,
+                               0, "arch_bt");
        return 0;
 }
 early_initcall(register_trigger_all_cpu_backtrace);