[PATCH] add reg and stack dump to booke WD handler
Dave Jiang
djiang at mvista.com
Sat Apr 14 08:16:57 EST 2007
Have the booke watchdog dump some useful information when triggered.
Hopefully that'll give the user some hint of what happened rather than just a
mysterious reboot.
Signed-off-by: Dave Jiang <djiang at mvista.com>
---
arch/powerpc/kernel/traps.c | 32 +++++++++++++++++++++++++++++++-
1 files changed, 31 insertions(+), 1 deletions(-)
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index f786222..e4d6186 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -1108,9 +1108,39 @@ void unrecoverable_exception(struct pt_regs *regs)
*/
void __attribute__ ((weak)) WatchdogHandler(struct pt_regs *regs)
{
+ unsigned long flags;
+
/* Generic WatchdogHandler, implement your own */
mtspr(SPRN_TCR, mfspr(SPRN_TCR)&(~TCR_WIE));
- return;
+ oops_enter();
+
+ console_verbose();
+ bust_spinlocks(1);
+ local_save_flags(flags);
+
+#ifdef CONFIG_PREEMPT
+ printk("PREEMPT ");
+#endif
+#ifdef CONFIG_SMP
+ printk("SMP NR_CPUS=%d ", NR_CPUS);
+#endif
+#ifdef CONFIG_DEBUG_PAGEALLOC
+ printk("DEBUG_PAGEALLOC ");
+#endif
+#ifdef CONFIG_NUMA
+ printk("NUMA ");
+#endif
+ printk("%s\n", ppc_md.name ? ppc_md.name : "");
+
+ print_modules();
+ show_regs(regs);
+
+ bust_spinlocks(0);
+
+ printk(KERN_EMERG "Waiting for hardware watchdog reset...\n");
+ /* spin until hardware reset */
+ while(1)
+ cpu_relax();
}
void WatchdogException(struct pt_regs *regs)
More information about the Linuxppc-dev
mailing list