sparc64: Use nmi_enter() and nmi_exit(), as needed.
authorDavid S. Miller <davem@davemloft.net>
Thu, 10 Sep 2009 12:56:16 +0000 (05:56 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 10 Sep 2009 12:56:16 +0000 (05:56 -0700)
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/kernel/nmi.c

index 47a465fe3c388e3ab2bafc3f9b1d18a0373c1a82..7de19dd30f4086445a2dd9542ae783f42af4ef6e 100644 (file)
@@ -84,6 +84,7 @@ static void die_nmi(const char *str, struct pt_regs *regs, int do_panic)
        if (do_panic || panic_on_oops)
                panic("Non maskable interrupt");
 
+       nmi_exit();
        local_irq_enable();
        do_exit(SIGBUS);
 }
@@ -98,6 +99,8 @@ notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
 
        local_cpu_data().__nmi_count++;
 
+       nmi_enter();
+
        if (notify_die(DIE_NMI, "nmi", regs, 0,
                       pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP)
                touched = 1;
@@ -120,6 +123,8 @@ notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
                write_pic(picl_value(nmi_hz));
                pcr_ops->write(pcr_enable);
        }
+
+       nmi_exit();
 }
 
 static inline unsigned int get_nmi_count(int cpu)