Hi Eric,
after struggling with this issue for some time, I think that it's just
some incosistent usage of NR_IRQS throughout the source probably due to
some include hell. I really don't understand the how the mach-*/ includes
are supposed to work.
I found out (by disassembling resulting vmlinux binaries) that in
arch/i386/kernel/entry.S, the loop in irq_entries_start does too little
iterations compared to NR_IRQS value as seen in for example io_apic.c
The super-stupid proof-patch below fixes the panic on my system. It's just
to demonstrate that the i386 includes really need fixing to be consistent
somehow.
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S
index 976438c..b20dc07 100644
--- a/arch/i386/kernel/entry.S
+++ b/arch/i386/kernel/entry.S
@@ -53,6 +53,8 @@
#include <asm/dwarf2.h>
#include "irq_vectors.h"
+#define NR_IRQS 4096
+
/*
* We use macros for low-level operations which need to be overridden
* for paravirtualization. The following will never clobber any registers:
--
Jiri Kosina
-