powerpc: Hard disable interrupts in xmon
authorAnton Blanchard <anton@samba.org>
Tue, 5 Aug 2014 04:55:00 +0000 (14:55 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 13 Aug 2014 05:13:48 +0000 (15:13 +1000)
xmon only soft disables interrupts. This seems like a bad idea - we
certainly don't want decrementer and PMU exceptions going off when
we are debugging something inside xmon.

This issue was uncovered when the hard lockup detector went off
inside xmon. To ensure we wont get a spurious hard lockup warning,
I also call touch_nmi_watchdog() when exiting xmon.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/xmon/xmon.c

index 8d198b5e9e0a72813cc2beb702826e1a52072a4f..b988b5addf864a581ff8c36e177379c32ba92518 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/interrupt.h>
 #include <linux/irq.h>
 #include <linux/bug.h>
+#include <linux/nmi.h>
 
 #include <asm/ptrace.h>
 #include <asm/string.h>
@@ -374,6 +375,7 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
 #endif
 
        local_irq_save(flags);
+       hard_irq_disable();
 
        bp = in_breakpoint_table(regs->nip, &offset);
        if (bp != NULL) {
@@ -558,6 +560,7 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
 #endif
        insert_cpu_bpts();
 
+       touch_nmi_watchdog();
        local_irq_restore(flags);
 
        return cmd != 'X' && cmd != EOF;