提交 a71d64b4 编写于 作者: A Anton Blanchard 提交者: Benjamin Herrenschmidt

powerpc: Hard disable interrupts in xmon

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: NAnton Blanchard <anton@samba.org>
Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
上级 56758e3c
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/bug.h> #include <linux/bug.h>
#include <linux/nmi.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/string.h> #include <asm/string.h>
...@@ -374,6 +375,7 @@ static int xmon_core(struct pt_regs *regs, int fromipi) ...@@ -374,6 +375,7 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
#endif #endif
local_irq_save(flags); local_irq_save(flags);
hard_irq_disable();
bp = in_breakpoint_table(regs->nip, &offset); bp = in_breakpoint_table(regs->nip, &offset);
if (bp != NULL) { if (bp != NULL) {
...@@ -558,6 +560,7 @@ static int xmon_core(struct pt_regs *regs, int fromipi) ...@@ -558,6 +560,7 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
#endif #endif
insert_cpu_bpts(); insert_cpu_bpts();
touch_nmi_watchdog();
local_irq_restore(flags); local_irq_restore(flags);
return cmd != 'X' && cmd != EOF; return cmd != 'X' && cmd != EOF;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册