Skip to content

Commit

Permalink
sparc64: Normalize NMI watchdog logging and behavior.
Browse files Browse the repository at this point in the history
Bring this code in line with the perf based generic NMI watchdog
in kernel/watchdog.c (which we should convert over to at some
point).

In particular, don't do anything super fancy when the watchdog
triggers, and specifically don't do a do_exit() which only makes
things worse.

Either panic(), or WARN().  The latter of which will do all of
the actions such as give us a stack backtrace.

Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
davem330 committed May 4, 2014
1 parent 49b6c01 commit 16ce8a3
Showing 1 changed file with 5 additions and 16 deletions.
21 changes: 5 additions & 16 deletions arch/sparc/kernel/nmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,27 +68,16 @@ EXPORT_SYMBOL(touch_nmi_watchdog);

static void die_nmi(const char *str, struct pt_regs *regs, int do_panic)
{
int this_cpu = smp_processor_id();

if (notify_die(DIE_NMIWATCHDOG, str, regs, 0,
pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP)
return;

console_verbose();
bust_spinlocks(1);

printk(KERN_EMERG "%s", str);
printk(" on CPU%d, ip %08lx, registers:\n",
smp_processor_id(), regs->tpc);
show_regs(regs);
dump_stack();

bust_spinlocks(0);

if (do_panic || panic_on_oops)
panic("Non maskable interrupt");

nmi_exit();
local_irq_enable();
do_exit(SIGBUS);
panic("Watchdog detected hard LOCKUP on cpu %d", this_cpu);
else
WARN(1, "Watchdog detected hard LOCKUP on cpu %d", this_cpu);
}

notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
Expand Down

0 comments on commit 16ce8a3

Please sign in to comment.