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

Steven Dake sdake at mvista.com
Mon Feb 27 11:45:13 PST 2006


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 <sdake at mvista.com>
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.


More information about the kdb mailing list