diff -urpN --exclude-from=/home/davej/.exclude bk-linus/include/asm-i386/io_apic.h linux-2.5/include/asm-i386/io_apic.h
--- bk-linus/include/asm-i386/io_apic.h	2002-11-21 02:21:50.000000000 +0000
+++ linux-2.5/include/asm-i386/io_apic.h	2002-11-21 18:03:23.000000000 +0000
@@ -16,7 +16,8 @@
 #define APIC_MISMATCH_DEBUG
 
 #define IO_APIC_BASE(idx) \
-		((volatile int *)__fix_to_virt(FIX_IO_APIC_BASE_0 + idx))
+		((volatile int *)(__fix_to_virt(FIX_IO_APIC_BASE_0 + idx) \
+		+ (mp_ioapics[idx].mpc_apicaddr & ~PAGE_MASK)))
 
 /*
  * The structure of the IO-APIC: