KDB isn't entered from panic on x86_64 as it should be

Steven Dake <[email protected]>
Newsgroups gmane.linux.kernel.debugging
Organization MontaVista Software, Inc.
Message-ID <[email protected]>
Jack something that should probably go in your port...

The I/O apic code remaps the interrupt gate for entering KDB after
trap_init.

This patch fixes the problem.

Regards
-steve

MR: 17231
Type: Defect Fix
Disposition: submitted to kdb maintainers
Signed-off-by: Steven Dake <[email protected]>
Description:
        The io apic code would register an interrupt gate (IRQ handler)
        after KDB had set its interrupt handler.  This registration wipes out the
        KDB registration.  This results in KDB_ENTER no longer working which
        is called by the panic notifier.  The solution is to ensure the
        KDBENTER_VECTOR is not assigned during IO APIC IRQ assignment.

Index: linux-2.6.10/arch/x86_64/kernel/io_apic.c
===================================================================
--- linux-2.6.10.orig/arch/x86_64/kernel/io_apic.c
+++ linux-2.6.10/arch/x86_64/kernel/io_apic.c
@@ -31,6 +31,7 @@
 #include <linux/mc146818rtc.h>
 #include <linux/acpi.h>
 #include <linux/sysdev.h>
+#include <linux/kdb.h>
 
 #include <asm/io.h>
 #include <asm/smp.h>
@@ -667,6 +668,11 @@ next:
 	if (current_vector == IA32_SYSCALL_VECTOR)
 		goto next;
 
+#ifdef CONFIG_KDB
+	if (current_vector == KDBENTER_VECTOR)
+		goto next;
+#endif
+
 	if (current_vector >= FIRST_SYSTEM_VECTOR) {
 		offset++;
 		if (!(offset%8))


---------------------------
Use http://oss.sgi.com/ecartis to modify your settings or to unsubscribe.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.