I'm not sure if this is the right solution, but I figured I'd post it
and take the flamage if I'm just being dumb. Basically in
clear_IO_APIC_pin, I read the apic entry to make sure the delivery_mode
isn't dest_SMI. If it is, we leave the apic entry alone and return.
With this patch, the box boots and SMIs appear to function properly.
Let me know if you have any thoughts or suggestions.
thanks
-john
diff -Nru a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
--- a/arch/i386/kernel/io_apic.c Tue May 6 14:46:58 2003
+++ b/arch/i386/kernel/io_apic.c Tue May 6 14:46:58 2003
@@ -219,6 +219,14 @@
{
struct IO_APIC_route_entry entry;
unsigned long flags;
+
+ /* Check delivery_mode to be sure we're not clearing an SMI pin */
+ *(((int*)&entry) + 0) = io_apic_read(apic, 0x10 + 2 * pin);
+ *(((int*)&entry) + 1) = io_apic_read(apic, 0x11 + 2 * pin);
+ if (entry.delivery_mode == dest_SMI){
+ printk(KERN_INFO "apic %i pin %i is an SMI pin!\n", apic, pin);
+ return;
+ }
/*
* Disable it in the IO-APIC irq-routing table:
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/