[PATCH 4/4] invoke kgdb via magic sysrq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Frank Rowand <frank.rowand@xxxxxxxxxxx>

Add hooks so that the host can connect to KGDB or asynchronously invoke an
already connected KGDB via a magic sysrq.  This should work for most MIPS
targets that support KGDB, though it has only been tested on the Toshiba
RBTX4927.  This can be useful to invoke an already connected KGDB for some
types of system hang.  It also allows normally booting without connecting
to KGDB, then later connecting to KGDB if kernel debugging is desired.

This functionality exists for PowerPC and sh.

Signed-off-by: Frank Rowand <frank.rowand@xxxxxxxxxxx>
---
 arch/mips/kernel/gdb-stub.c |   26 	26 +	0 -	0 !
 1 files changed, 26 insertions(+)

Index: linux-2.6.24-rc7/arch/mips/kernel/gdb-stub.c
===================================================================
--- linux-2.6.24-rc7.orig/arch/mips/kernel/gdb-stub.c
+++ linux-2.6.24-rc7/arch/mips/kernel/gdb-stub.c
@@ -131,6 +131,7 @@
 #include <linux/spinlock.h>
 #include <linux/slab.h>
 #include <linux/reboot.h>
+#include <linux/sysrq.h>
 
 #include <asm/asm.h>
 #include <asm/cacheflush.h>
@@ -1154,3 +1155,28 @@ static int __init register_gdb_console(v
 console_initcall(register_gdb_console);
 
 #endif
+
+#ifdef CONFIG_MAGIC_SYSRQ
+static void sysrq_handle_gdb(int key, struct tty_struct *tty)
+{
+	if (!initialized) {
+		printk(KERN_ALERT "Wait for gdb client connection ...\n");
+		set_debug_traps();
+	}
+
+	breakpoint();
+}
+static struct sysrq_key_op sysrq_gdb_op = {
+	.handler        = sysrq_handle_gdb,
+	.help_msg       = "Gdb",
+	.action_msg     = "GDB",
+};
+
+static int gdb_register_sysrq(void)
+{
+	printk(KERN_INFO "Registering GDB sysrq handler\n");
+	register_sysrq_key('g', &sysrq_gdb_op);
+	return 0;
+}
+module_init(gdb_register_sysrq);
+#endif





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux