aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/sparc/kernel/nmi.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/sparc/kernel/nmi.c b/arch/sparc/kernel/nmi.c
index 47a465fe3c38..7de19dd30f40 100644
--- a/arch/sparc/kernel/nmi.c
+++ b/arch/sparc/kernel/nmi.c
@@ -84,6 +84,7 @@ static void die_nmi(const char *str, struct pt_regs *regs, int do_panic)
84 if (do_panic || panic_on_oops) 84 if (do_panic || panic_on_oops)
85 panic("Non maskable interrupt"); 85 panic("Non maskable interrupt");
86 86
87 nmi_exit();
87 local_irq_enable(); 88 local_irq_enable();
88 do_exit(SIGBUS); 89 do_exit(SIGBUS);
89} 90}
@@ -98,6 +99,8 @@ notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
98 99
99 local_cpu_data().__nmi_count++; 100 local_cpu_data().__nmi_count++;
100 101
102 nmi_enter();
103
101 if (notify_die(DIE_NMI, "nmi", regs, 0, 104 if (notify_die(DIE_NMI, "nmi", regs, 0,
102 pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP) 105 pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP)
103 touched = 1; 106 touched = 1;
@@ -120,6 +123,8 @@ notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
120 write_pic(picl_value(nmi_hz)); 123 write_pic(picl_value(nmi_hz));
121 pcr_ops->write(pcr_enable); 124 pcr_ops->write(pcr_enable);
122 } 125 }
126
127 nmi_exit();
123} 128}
124 129
125static inline unsigned int get_nmi_count(int cpu) 130static inline unsigned int get_nmi_count(int cpu)