Commit 9b48b466 authored by Dean Nelson's avatar Dean Nelson Committed by Tony Luck

[IA64-SGI] move nodepda pointer out of pda

Remove the p_nodepda and p_subnodepda pointers from the pda_s structure.
And then define a new per-cpu pointer to the nodepda and export it so
that it can be accessed by kernel modules.
Signed-off-by: default avatarDean Nelson <dcn@sgi.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent c4b07b7b
...@@ -76,6 +76,9 @@ EXPORT_PER_CPU_SYMBOL(__sn_hub_info); ...@@ -76,6 +76,9 @@ EXPORT_PER_CPU_SYMBOL(__sn_hub_info);
DEFINE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_NUMNODES]); DEFINE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_NUMNODES]);
EXPORT_PER_CPU_SYMBOL(__sn_cnodeid_to_nasid); EXPORT_PER_CPU_SYMBOL(__sn_cnodeid_to_nasid);
DEFINE_PER_CPU(struct nodepda_s *, __sn_nodepda);
EXPORT_PER_CPU_SYMBOL(__sn_nodepda);
partid_t sn_partid = -1; partid_t sn_partid = -1;
EXPORT_SYMBOL(sn_partid); EXPORT_SYMBOL(sn_partid);
char sn_system_serial_number_string[128]; char sn_system_serial_number_string[128];
...@@ -480,7 +483,8 @@ void __init sn_cpu_init(void) ...@@ -480,7 +483,8 @@ void __init sn_cpu_init(void)
cnode = nasid_to_cnodeid(nasid); cnode = nasid_to_cnodeid(nasid);
pda->p_nodepda = nodepdaindr[cnode]; sn_nodepda = nodepdaindr[cnode];
pda->led_address = pda->led_address =
(typeof(pda->led_address)) (LED0 + (slice << LED_CPU_SHIFT)); (typeof(pda->led_address)) (LED0 + (slice << LED_CPU_SHIFT));
pda->led_state = LED_ALWAYS_SET; pda->led_state = LED_ALWAYS_SET;
...@@ -626,7 +630,8 @@ nasid_slice_to_cpuid(int nasid, int slice) ...@@ -626,7 +630,8 @@ nasid_slice_to_cpuid(int nasid, int slice)
long cpu; long cpu;
for (cpu=0; cpu < NR_CPUS; cpu++) for (cpu=0; cpu < NR_CPUS; cpu++)
if (nodepda->phys_cpuid[cpu].nasid == nasid && nodepda->phys_cpuid[cpu].slice == slice) if (cpuid_to_nasid(cpu) == nasid &&
cpuid_to_slice(cpu) == slice)
return cpu; return cpu;
return -1; return -1;
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/sn/arch.h> #include <asm/sn/arch.h>
#include <asm/sn/intr.h> #include <asm/sn/intr.h>
#include <asm/sn/pda.h>
#include <asm/sn/bte.h> #include <asm/sn/bte.h>
/* /*
...@@ -67,20 +66,18 @@ typedef struct nodepda_s nodepda_t; ...@@ -67,20 +66,18 @@ typedef struct nodepda_s nodepda_t;
* The next set of definitions provides this. * The next set of definitions provides this.
* Routines are expected to use * Routines are expected to use
* *
* nodepda -> to access node PDA for the node on which code is running * sn_nodepda - to access node PDA for the node on which code is running
* subnodepda -> to access subnode PDA for the subnode on which code is running * NODEPDA(cnodeid) - to access node PDA for cnodeid
*
* NODEPDA(cnode) -> to access node PDA for cnodeid
* SUBNODEPDA(cnode,sn) -> to access subnode PDA for cnodeid/subnode
*/ */
#define nodepda pda->p_nodepda /* Ptr to this node's PDA */ DECLARE_PER_CPU(struct nodepda_s *, __sn_nodepda);
#define NODEPDA(cnode) (nodepda->pernode_pdaindr[cnode]) #define sn_nodepda (__get_cpu_var(__sn_nodepda))
#define NODEPDA(cnodeid) (sn_nodepda->pernode_pdaindr[cnodeid])
/* /*
* Check if given a compact node id the corresponding node has all the * Check if given a compact node id the corresponding node has all the
* cpus disabled. * cpus disabled.
*/ */
#define is_headless_node(cnode) (nr_cpus_node(cnode) == 0) #define is_headless_node(cnodeid) (nr_cpus_node(cnodeid) == 0)
#endif /* _ASM_IA64_SN_NODEPDA_H */ #endif /* _ASM_IA64_SN_NODEPDA_H */
...@@ -24,14 +24,6 @@ ...@@ -24,14 +24,6 @@
typedef struct pda_s { typedef struct pda_s {
/* Having a pointer in the begining of PDA tends to increase
* the chance of having this pointer in cache. (Yes something
* else gets pushed out). Doing this reduces the number of memory
* access to all nodepda variables to be one
*/
struct nodepda_s *p_nodepda; /* Pointer to Per node PDA */
struct subnodepda_s *p_subnodepda; /* Pointer to CPU subnode PDA */
/* /*
* Support for SN LEDs * Support for SN LEDs
*/ */
......
...@@ -97,19 +97,19 @@ extern short physical_node_map[]; /* indexed by nasid to get cnode */ ...@@ -97,19 +97,19 @@ extern short physical_node_map[]; /* indexed by nasid to get cnode */
/* /*
* Macros for retrieving info about current cpu * Macros for retrieving info about current cpu
*/ */
#define get_nasid() (nodepda->phys_cpuid[smp_processor_id()].nasid) #define get_nasid() (sn_nodepda->phys_cpuid[smp_processor_id()].nasid)
#define get_subnode() (nodepda->phys_cpuid[smp_processor_id()].subnode) #define get_subnode() (sn_nodepda->phys_cpuid[smp_processor_id()].subnode)
#define get_slice() (nodepda->phys_cpuid[smp_processor_id()].slice) #define get_slice() (sn_nodepda->phys_cpuid[smp_processor_id()].slice)
#define get_cnode() (nodepda->phys_cpuid[smp_processor_id()].cnode) #define get_cnode() (sn_nodepda->phys_cpuid[smp_processor_id()].cnode)
#define get_sapicid() ((ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff) #define get_sapicid() ((ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff)
/* /*
* Macros for retrieving info about an arbitrary cpu * Macros for retrieving info about an arbitrary cpu
* cpuid - logical cpu id * cpuid - logical cpu id
*/ */
#define cpuid_to_nasid(cpuid) (nodepda->phys_cpuid[cpuid].nasid) #define cpuid_to_nasid(cpuid) (sn_nodepda->phys_cpuid[cpuid].nasid)
#define cpuid_to_subnode(cpuid) (nodepda->phys_cpuid[cpuid].subnode) #define cpuid_to_subnode(cpuid) (sn_nodepda->phys_cpuid[cpuid].subnode)
#define cpuid_to_slice(cpuid) (nodepda->phys_cpuid[cpuid].slice) #define cpuid_to_slice(cpuid) (sn_nodepda->phys_cpuid[cpuid].slice)
#define cpuid_to_cnodeid(cpuid) (physical_node_map[cpuid_to_nasid(cpuid)]) #define cpuid_to_cnodeid(cpuid) (physical_node_map[cpuid_to_nasid(cpuid)])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment