Bumps up MAX_APICS for Summit.
diff -purN -X /home/mbligh/.diff.exclude subarch-4/arch/i386/kernel/mpparse.c subarch-5/arch/i386/kernel/mpparse.c
--- subarch-4/arch/i386/kernel/mpparse.c	Mon Oct 14 11:15:27 2002
+++ subarch-5/arch/i386/kernel/mpparse.c	Mon Oct 14 11:22:29 2002
@@ -71,6 +71,7 @@ static unsigned int __initdata num_proce
 unsigned long phys_cpu_present_map;
 
 int summit_x86 = 0;
+u8 raw_phys_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID };
 
 /*
  * Intel MP BIOS table parsing routines:
@@ -192,7 +193,7 @@ void __init MP_processor_info (struct mp
 	if (clustered_apic_mode) {
 		phys_cpu_present_map |= (logical_apicid&0xf) << (4*quad);
 	} else {
-		phys_cpu_present_map |= 1 << m->mpc_apicid;
+		phys_cpu_present_map |= apicid_to_cpu_present(m->mpc_apicid);
 	}
 	/*
 	 * Validate version
@@ -202,6 +203,7 @@ void __init MP_processor_info (struct mp
 		ver = 0x10;
 	}
 	apic_version[m->mpc_apicid] = ver;
+	raw_phys_apicid[num_processors - 1] = m->mpc_apicid;
 }
 
 static void __init MP_bus_info (struct mpc_config_bus *m)
diff -purN -X /home/mbligh/.diff.exclude subarch-4/arch/i386/kernel/smpboot.c subarch-5/arch/i386/kernel/smpboot.c
--- subarch-4/arch/i386/kernel/smpboot.c	Fri Oct 11 21:22:07 2002
+++ subarch-5/arch/i386/kernel/smpboot.c	Mon Oct 14 11:29:39 2002
@@ -51,6 +51,7 @@
 #include <asm/desc.h>
 #include <asm/arch_hooks.h>
 #include "smpboot_hooks.h"
+#include "mach_apic.h"
 
 /* Set if we find a B stepping CPU */
 static int __initdata smp_b_stepping;
diff -purN -X /home/mbligh/.diff.exclude subarch-4/arch/i386/mach-generic/mach_apic.h subarch-5/arch/i386/mach-generic/mach_apic.h
--- subarch-4/arch/i386/mach-generic/mach_apic.h	Mon Oct 14 11:18:22 2002
+++ subarch-5/arch/i386/mach-generic/mach_apic.h	Mon Oct 14 11:22:57 2002
@@ -30,4 +30,17 @@ static inline void clustered_apic_check(
 		(clustered_apic_mode ? "NUMA-Q" : "Flat"), nr_ioapics);
 }
 
+static inline int cpu_present_to_apicid(int mps_cpu)
+{
+	if (clustered_apic_mode)
+		return ( ((mps_cpu/4)*16) + (1<<(mps_cpu%4)) );
+	else
+		return mps_cpu;
+}
+
+static inline unsigned long apicid_to_cpu_present(int apicid)
+{
+	return (1ul << apicid);
+}
+
 #endif /* __ASM_MACH_APIC_H */
diff -purN -X /home/mbligh/.diff.exclude subarch-4/arch/i386/mach-summit/mach_apic.h subarch-5/arch/i386/mach-summit/mach_apic.h
--- subarch-4/arch/i386/mach-summit/mach_apic.h	Mon Oct 14 11:18:08 2002
+++ subarch-5/arch/i386/mach-summit/mach_apic.h	Mon Oct 14 11:24:16 2002
@@ -38,4 +38,20 @@ static inline void clustered_apic_check(
 		(x86_summit ? "Summit" : "Flat"), nr_ioapics);
 }
 
+static inline int cpu_present_to_apicid(int mps_cpu)
+{
+	if (x86_summit)
+		return (int) raw_phys_apicid[mps_cpu];
+	else
+		return mps_cpu;
+}
+
+static inline unsigned long apicid_to_phys_cpu_present(int apicid)
+{
+	if (x86_summit)
+		return (1ul << (((apicid >> 4) << 2) | (apicid & 0x3)));
+	else
+		return (1ul << apicid);
+}
+
 #endif /* __ASM_MACH_APIC_H */
diff -purN -X /home/mbligh/.diff.exclude subarch-4/include/asm-i386/mpspec.h subarch-5/include/asm-i386/mpspec.h
--- subarch-4/include/asm-i386/mpspec.h	Fri Oct 11 21:21:02 2002
+++ subarch-5/include/asm-i386/mpspec.h	Mon Oct 14 11:22:29 2002
@@ -16,11 +16,11 @@
 /*
  * a maximum of 16 APICs with the current APIC ID architecture.
  */
-#ifdef CONFIG_X86_NUMAQ
+#ifdef CONFIG_X86_NUMA
 #define MAX_APICS 256
-#else /* !CONFIG_X86_NUMAQ */
+#else /* !CONFIG_X86_NUMA */
 #define MAX_APICS 16
-#endif /* CONFIG_X86_NUMAQ */
+#endif /* CONFIG_X86_NUMA */
 
 #define MAX_MPC_ENTRY 1024
 
diff -purN -X /home/mbligh/.diff.exclude subarch-4/include/asm-i386/smp.h subarch-5/include/asm-i386/smp.h
--- subarch-4/include/asm-i386/smp.h	Mon Oct 14 10:59:14 2002
+++ subarch-5/include/asm-i386/smp.h	Mon Oct 14 11:22:29 2002
@@ -65,6 +65,7 @@ extern void zap_low_mappings (void);
  * the real APIC ID <-> CPU # mapping.
  */
 #define MAX_APICID 256
+#define BAD_APICID 0xFFu
 extern volatile int cpu_to_physical_apicid[NR_CPUS];
 extern volatile int physical_apicid_to_cpu[MAX_APICID];
 extern volatile int cpu_to_logical_apicid[NR_CPUS];
diff -purN -X /home/mbligh/.diff.exclude subarch-4/include/asm-i386/smpboot.h subarch-5/include/asm-i386/smpboot.h
--- subarch-4/include/asm-i386/smpboot.h	Fri Oct 11 21:22:19 2002
+++ subarch-5/include/asm-i386/smpboot.h	Mon Oct 14 11:22:29 2002
@@ -24,15 +24,6 @@
 #endif /* CONFIG_CLUSTERED_APIC */
 
 /*
- * How to map from the cpu_present_map
- */
-#ifdef CONFIG_CLUSTERED_APIC
- #define cpu_present_to_apicid(mps_cpu) ( ((mps_cpu/4)*16) + (1<<(mps_cpu%4)) )
-#else /* !CONFIG_CLUSTERED_APIC */
- #define cpu_present_to_apicid(apicid) (apicid)
-#endif /* CONFIG_CLUSTERED_APIC */
-
-/*
  * Mappings between logical cpu number and logical / physical apicid
  * The first four macros are trivial, but it keeps the abstraction consistent
  */
-
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/