Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+7 −2
Original line number Original line Diff line number Diff line
@@ -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)


	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)
	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;
+6 −9
Original line number Original line Diff line number Diff line
@@ -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;
 * 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 */
+0 −8
Original line number Original line Diff line number Diff line
@@ -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
	 */
	 */
+9 −9
Original line number Original line Diff line number Diff line
@@ -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)])