diff options
| -rw-r--r-- | arch/sparc/kernel/nmi.c | 5 |
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 | ||
| 125 | static inline unsigned int get_nmi_count(int cpu) | 130 | static inline unsigned int get_nmi_count(int cpu) |
