[PATCH] linux-2.5.69_subarch-fix_A0.patch

From: john stultz (johnstul@us.ibm.com)
Date: Wed May 14 2003 - 21:37:09 EST


All,
        This patch fixes a circular dependency (a function in mach_apic.h
requires hard_smp_processor_id() and hard_smp_processor_id() requires
macros from mach_apic.h) that has been in the subarch code for a bit,
but was hacked around with some #ifdefs.

With the inclusion of the generic-subarch the hack was dropped and
bigsmp and summit promptly broke. So this makes things compile again.

thanks
-john

diff -Nru a/include/asm-i386/mach-bigsmp/mach_apic.h b/include/asm-i386/mach-bigsmp/mach_apic.h
--- a/include/asm-i386/mach-bigsmp/mach_apic.h Wed May 14 18:21:20 2003
+++ b/include/asm-i386/mach-bigsmp/mach_apic.h Wed May 14 18:21:20 2003
@@ -40,10 +40,18 @@
 
 #define apicid_cluster(apicid) (apicid & 0xF0)
 
+static inline unsigned get_apic_id(unsigned long x)
+{
+ return (((x)>>24)&0x0F);
+}
+
+#define GET_APIC_ID(x) get_apic_id(x)
+
 static inline unsigned long calculate_ldr(unsigned long old)
 {
         unsigned long id;
- id = xapic_phys_to_log_apicid(hard_smp_processor_id());
+ id = xapic_phys_to_log_apicid(
+ GET_APIC_LOGICAL_ID(*(unsigned long *)(APIC_BASE+APIC_LDR)));
         return ((old & ~APIC_LDR_MASK) | SET_APIC_LOGICAL_ID(id));
 }
 
@@ -128,13 +136,6 @@
 }
 
 #define APIC_ID_MASK (0x0F<<24)
-
-static inline unsigned get_apic_id(unsigned long x)
-{
- return (((x)>>24)&0x0F);
-}
-
-#define GET_APIC_ID(x) get_apic_id(x)
 
 static inline unsigned int cpu_mask_to_apicid (unsigned long cpumask)
 {
diff -Nru a/include/asm-i386/mach-summit/mach_apic.h b/include/asm-i386/mach-summit/mach_apic.h
--- a/include/asm-i386/mach-summit/mach_apic.h Wed May 14 18:21:20 2003
+++ b/include/asm-i386/mach-summit/mach_apic.h Wed May 14 18:21:20 2003
@@ -48,12 +48,20 @@
 
 extern u8 bios_cpu_apicid[];
 
+static inline unsigned get_apic_id(unsigned long x)
+{
+ return (((x)>>24)&0xFF);
+}
+
+#define GET_APIC_ID(x) get_apic_id(x)
+
 static inline void init_apic_ldr(void)
 {
         unsigned long val, id;
 
         if (x86_summit)
- id = xapic_phys_to_log_apicid(hard_smp_processor_id());
+ id = xapic_phys_to_log_apicid(
+ GET_APIC_ID(*(unsigned long *)(APIC_BASE+APIC_ID)));
         else
                 id = 1UL << smp_processor_id();
         apic_write_around(APIC_DFR, APIC_DFR_VALUE);
@@ -136,13 +144,6 @@
 }
 
 #define APIC_ID_MASK (0xFF<<24)
-
-static inline unsigned get_apic_id(unsigned long x)
-{
- return (((x)>>24)&0xFF);
-}
-
-#define GET_APIC_ID(x) get_apic_id(x)
 
 static inline unsigned int cpu_mask_to_apicid (unsigned long cpumask)
 {

-
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/



This archive was generated by hypermail 2b29 : Thu May 15 2003 - 22:00:55 EST