ChangeSet 1.1994.6.25, 2005/03/08 15:02:27-08:00, [EMAIL PROTECTED]

        [IA64-SGI] [PATCH 2/2] - New chipset support for SN platform
        
        - move a number of fields out of the SN pda & into 
          per-cpu data. The pda is ugly & will be deleted. 
          This is a first step.  Additional patches will follow.
        
        Signed-off-by: Jack Steiner <[EMAIL PROTECTED]>
        Signed-off-by: Tony Luck <[EMAIL PROTECTED]>



 arch/ia64/sn/kernel/setup.c |   12 +++++++-----
 include/asm-ia64/sn/addrs.h |    7 ++++---
 include/asm-ia64/sn/arch.h  |   24 ++++++++++++++++++++++++
 include/asm-ia64/sn/pda.h   |   13 -------------
 4 files changed, 35 insertions(+), 21 deletions(-)


diff -Nru a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c
--- a/arch/ia64/sn/kernel/setup.c       2005-03-31 18:06:49 -08:00
+++ b/arch/ia64/sn/kernel/setup.c       2005-03-31 18:06:49 -08:00
@@ -67,9 +67,11 @@
 extern unsigned char acpi_kbd_controller_present;
 
 unsigned long sn_rtc_cycles_per_second;
-
 EXPORT_SYMBOL(sn_rtc_cycles_per_second);
 
+DEFINE_PER_CPU(struct sn_hub_info_s, __sn_hub_info);
+EXPORT_PER_CPU_SYMBOL(__sn_hub_info);
+
 partid_t sn_partid = -1;
 EXPORT_SYMBOL(sn_partid);
 char sn_system_serial_number_string[128];
@@ -242,7 +244,7 @@
        } else {
                for_each_online_node(cnode) {
                        if (is_shub_1_1(cnodeid_to_nasid(cnode)))
-                               shub_1_1_found = 1;
+                               sn_hub_info->shub_1_1_found = 1;
                }
        }
 }
@@ -437,11 +439,11 @@
        static int wars_have_been_checked;
 
        memset(pda, 0, sizeof(pda));
-       if (ia64_sn_get_sn_info(0, &pda->shub2, &pda->nasid_bitmask, 
&pda->nasid_shift, 
+       if (ia64_sn_get_sn_info(0, &sn_hub_info->shub2, 
&sn_hub_info->nasid_bitmask, &sn_hub_info->nasid_shift,
                                &sn_system_size, &sn_sharing_domain_size, 
&sn_partition_id,
                                &sn_coherency_id, &sn_region_size))
                BUG();
-       pda->as_shift = pda->nasid_shift - 2;
+       sn_hub_info->as_shift = sn_hub_info->nasid_shift - 2;
 
        /*
         * The boot cpu makes this call again after platform initialization is
@@ -490,7 +492,7 @@
                sn_check_for_wars();
                wars_have_been_checked = 1;
        }
-       pda->shub_1_1_found = shub_1_1_found;
+       sn_hub_info->shub_1_1_found = shub_1_1_found;
 
        /*
         * Set up addresses of PIO/MEM write status registers.
diff -Nru a/include/asm-ia64/sn/addrs.h b/include/asm-ia64/sn/addrs.h
--- a/include/asm-ia64/sn/addrs.h       2005-03-31 18:06:49 -08:00
+++ b/include/asm-ia64/sn/addrs.h       2005-03-31 18:06:49 -08:00
@@ -11,6 +11,7 @@
 
 #include <asm/percpu.h>
 #include <asm/sn/types.h>
+#include <asm/sn/arch.h>
 #include <asm/sn/pda.h>
 
 /*
@@ -57,9 +58,9 @@
 /*
  * Define basic shift & mask constants for manipulating NASIDs and AS values.
  */
-#define NASID_BITMASK          (pda->nasid_bitmask)
-#define NASID_SHIFT            (pda->nasid_shift)
-#define AS_SHIFT               (pda->as_shift)
+#define NASID_BITMASK          (sn_hub_info->nasid_bitmask)
+#define NASID_SHIFT            (sn_hub_info->nasid_shift)
+#define AS_SHIFT               (sn_hub_info->as_shift)
 #define AS_BITMASK             0x3UL
 
 #define NASID_MASK              ((u64)NASID_BITMASK << NASID_SHIFT)
diff -Nru a/include/asm-ia64/sn/arch.h b/include/asm-ia64/sn/arch.h
--- a/include/asm-ia64/sn/arch.h        2005-03-31 18:06:49 -08:00
+++ b/include/asm-ia64/sn/arch.h        2005-03-31 18:06:49 -08:00
@@ -12,8 +12,32 @@
 #define _ASM_IA64_SN_ARCH_H
 
 #include <asm/types.h>
+#include <asm/percpu.h>
 #include <asm/sn/types.h>
 #include <asm/sn/sn_cpuid.h>
+
+/*
+ * The following defines attributes of the HUB chip. These attributes are
+ * frequently referenced. They are kept in the per-cpu data areas of each cpu.
+ * They are kept together in a struct to minimize cache misses.
+ */
+struct sn_hub_info_s {
+       u8 shub2;
+       u8 nasid_shift;
+       u8 as_shift;
+       u8 shub_1_1_found;
+       u16 nasid_bitmask;
+};
+DECLARE_PER_CPU(struct sn_hub_info_s, __sn_hub_info);
+#define sn_hub_info    (&__get_cpu_var(__sn_hub_info))
+#define is_shub2()     (sn_hub_info->shub2)
+#define is_shub1()     (sn_hub_info->shub2 == 0)
+
+/*
+ * Use this macro to test if shub 1.1 wars should be enabled
+ */
+#define enable_shub_wars_1_1() (sn_hub_info->shub_1_1_found)
+
 
 /*
  * This is the maximum number of nodes that can be part of a kernel.
diff -Nru a/include/asm-ia64/sn/pda.h b/include/asm-ia64/sn/pda.h
--- a/include/asm-ia64/sn/pda.h 2005-03-31 18:06:49 -08:00
+++ b/include/asm-ia64/sn/pda.h 2005-03-31 18:06:49 -08:00
@@ -37,11 +37,6 @@
         * Support for SN LEDs
         */
        volatile short  *led_address;
-       u16             nasid_bitmask;
-       u8              shub2;
-       u8              nasid_shift;
-       u8              as_shift;
-       u8              shub_1_1_found;
        u8              led_state;
        u8              hb_state;       /* supports blinking heartbeat leds */
        unsigned int    hb_count;
@@ -83,13 +78,5 @@
 #define pda            (&__ia64_per_cpu_var(pda_percpu))
 
 #define pdacpu(cpu)    (&per_cpu(pda_percpu, cpu))
-
-/*
- * Use this macro to test if shub 1.1 wars should be enabled
- */
-#define enable_shub_wars_1_1() (pda->shub_1_1_found)
-
-#define is_shub2()     (pda->shub2)
-#define is_shub1()     (pda->shub2 == 0)
 
 #endif /* _ASM_IA64_SN_PDA_H */
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to