aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2009-09-10 08:56:16 -0400
committerDavid S. Miller <davem@davemloft.net>2009-09-10 08:56:16 -0400
commit2d0740c4562493b60f59ca9b0330a2d5e01d43ec (patch)
treeb971b0d0f2f9353561178b97ebe99045dca4e2a3 /arch
parent76c36d016a3f958d6231dcdef54a132614c3b578 (diff)
sparc64: Use nmi_enter() and nmi_exit(), as needed.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch')
-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)