diff options
Diffstat (limited to 'arch/sparc/kernel/nmi.c')
| -rw-r--r-- | arch/sparc/kernel/nmi.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/arch/sparc/kernel/nmi.c b/arch/sparc/kernel/nmi.c index 6479256fd5a4..337094556916 100644 --- a/arch/sparc/kernel/nmi.c +++ b/arch/sparc/kernel/nmi.c | |||
| @@ -68,27 +68,16 @@ EXPORT_SYMBOL(touch_nmi_watchdog); | |||
| 68 | 68 | ||
| 69 | static void die_nmi(const char *str, struct pt_regs *regs, int do_panic) | 69 | static void die_nmi(const char *str, struct pt_regs *regs, int do_panic) |
| 70 | { | 70 | { |
| 71 | int this_cpu = smp_processor_id(); | ||
| 72 | |||
| 71 | if (notify_die(DIE_NMIWATCHDOG, str, regs, 0, | 73 | if (notify_die(DIE_NMIWATCHDOG, str, regs, 0, |
| 72 | pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP) | 74 | pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP) |
| 73 | return; | 75 | return; |
| 74 | 76 | ||
| 75 | console_verbose(); | ||
| 76 | bust_spinlocks(1); | ||
| 77 | |||
| 78 | printk(KERN_EMERG "%s", str); | ||
| 79 | printk(" on CPU%d, ip %08lx, registers:\n", | ||
| 80 | smp_processor_id(), regs->tpc); | ||
| 81 | show_regs(regs); | ||
| 82 | dump_stack(); | ||
| 83 | |||
| 84 | bust_spinlocks(0); | ||
| 85 | |||
| 86 | if (do_panic || panic_on_oops) | 77 | if (do_panic || panic_on_oops) |
| 87 | panic("Non maskable interrupt"); | 78 | panic("Watchdog detected hard LOCKUP on cpu %d", this_cpu); |
| 88 | 79 | else | |
| 89 | nmi_exit(); | 80 | WARN(1, "Watchdog detected hard LOCKUP on cpu %d", this_cpu); |
| 90 | local_irq_enable(); | ||
| 91 | do_exit(SIGBUS); | ||
| 92 | } | 81 | } |
| 93 | 82 | ||
| 94 | notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs) | 83 | notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs) |
