diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-ia64/sn/arch.h | 36 | ||||
| -rw-r--r-- | include/asm-ia64/sn/io.h | 2 | ||||
| -rw-r--r-- | include/asm-ia64/sn/klconfig.h | 34 | ||||
| -rw-r--r-- | include/asm-ia64/sn/sn_cpuid.h | 3 | ||||
| -rw-r--r-- | include/asm-ia64/sn/sn_sal.h | 12 | ||||
| -rw-r--r-- | include/asm-ia64/sn/xp.h | 2 |
6 files changed, 33 insertions, 56 deletions
diff --git a/include/asm-ia64/sn/arch.h b/include/asm-ia64/sn/arch.h index ab827d298569..1a3831c04af6 100644 --- a/include/asm-ia64/sn/arch.h +++ b/include/asm-ia64/sn/arch.h | |||
| @@ -18,6 +18,32 @@ | |||
| 18 | #include <asm/sn/sn_cpuid.h> | 18 | #include <asm/sn/sn_cpuid.h> |
| 19 | 19 | ||
| 20 | /* | 20 | /* |
| 21 | * This is the maximum number of NUMALINK nodes that can be part of a single | ||
| 22 | * SSI kernel. This number includes C-brick, M-bricks, and TIOs. Nodes in | ||
| 23 | * remote partitions are NOT included in this number. | ||
| 24 | * The number of compact nodes cannot exceed size of a coherency domain. | ||
| 25 | * The purpose of this define is to specify a node count that includes | ||
| 26 | * all C/M/TIO nodes in an SSI system. | ||
| 27 | * | ||
| 28 | * SGI system can currently support up to 256 C/M nodes plus additional TIO nodes. | ||
| 29 | * | ||
| 30 | * Note: ACPI20 has an architectural limit of 256 nodes. When we upgrade | ||
| 31 | * to ACPI3.0, this limit will be removed. The notion of "compact nodes" | ||
| 32 | * should be deleted and TIOs should be included in MAX_NUMNODES. | ||
| 33 | */ | ||
| 34 | #define MAX_COMPACT_NODES 512 | ||
| 35 | |||
| 36 | /* | ||
| 37 | * Maximum number of nodes in all partitions and in all coherency domains. | ||
| 38 | * This is the total number of nodes accessible in the numalink fabric. It | ||
| 39 | * includes all C & M bricks, plus all TIOs. | ||
| 40 | * | ||
| 41 | * This value is also the value of the maximum number of NASIDs in the numalink | ||
| 42 | * fabric. | ||
| 43 | */ | ||
| 44 | #define MAX_NUMALINK_NODES 16384 | ||
| 45 | |||
| 46 | /* | ||
| 21 | * The following defines attributes of the HUB chip. These attributes are | 47 | * The following defines attributes of the HUB chip. These attributes are |
| 22 | * frequently referenced. They are kept in the per-cpu data areas of each cpu. | 48 | * frequently referenced. They are kept in the per-cpu data areas of each cpu. |
| 23 | * They are kept together in a struct to minimize cache misses. | 49 | * They are kept together in a struct to minimize cache misses. |
| @@ -41,15 +67,6 @@ DECLARE_PER_CPU(struct sn_hub_info_s, __sn_hub_info); | |||
| 41 | 67 | ||
| 42 | 68 | ||
| 43 | /* | 69 | /* |
| 44 | * This is the maximum number of nodes that can be part of a kernel. | ||
| 45 | * Effectively, it's the maximum number of compact node ids (cnodeid_t). | ||
| 46 | * This is not necessarily the same as MAX_NASIDS. | ||
| 47 | */ | ||
| 48 | #define MAX_COMPACT_NODES 2048 | ||
| 49 | #define CPUS_PER_NODE 4 | ||
| 50 | |||
| 51 | |||
| 52 | /* | ||
| 53 | * Compact node ID to nasid mappings kept in the per-cpu data areas of each | 70 | * Compact node ID to nasid mappings kept in the per-cpu data areas of each |
| 54 | * cpu. | 71 | * cpu. |
| 55 | */ | 72 | */ |
| @@ -57,7 +74,6 @@ DECLARE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_NUMNODES]); | |||
| 57 | #define sn_cnodeid_to_nasid (&__get_cpu_var(__sn_cnodeid_to_nasid[0])) | 74 | #define sn_cnodeid_to_nasid (&__get_cpu_var(__sn_cnodeid_to_nasid[0])) |
| 58 | 75 | ||
| 59 | 76 | ||
| 60 | |||
| 61 | extern u8 sn_partition_id; | 77 | extern u8 sn_partition_id; |
| 62 | extern u8 sn_system_size; | 78 | extern u8 sn_system_size; |
| 63 | extern u8 sn_sharing_domain_size; | 79 | extern u8 sn_sharing_domain_size; |
diff --git a/include/asm-ia64/sn/io.h b/include/asm-ia64/sn/io.h index 7597a52b426c..41c73a735628 100644 --- a/include/asm-ia64/sn/io.h +++ b/include/asm-ia64/sn/io.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | extern void * sn_io_addr(unsigned long port) __attribute_const__; /* Forward definition */ | 14 | extern void * sn_io_addr(unsigned long port) __attribute_const__; /* Forward definition */ |
| 15 | extern void __sn_mmiowb(void); /* Forward definition */ | 15 | extern void __sn_mmiowb(void); /* Forward definition */ |
| 16 | 16 | ||
| 17 | extern int numionodes; | 17 | extern int num_cnodes; |
| 18 | 18 | ||
| 19 | #define __sn_mf_a() ia64_mfa() | 19 | #define __sn_mf_a() ia64_mfa() |
| 20 | 20 | ||
diff --git a/include/asm-ia64/sn/klconfig.h b/include/asm-ia64/sn/klconfig.h index 9f920c70a62a..bcbf209d63be 100644 --- a/include/asm-ia64/sn/klconfig.h +++ b/include/asm-ia64/sn/klconfig.h | |||
| @@ -208,19 +208,6 @@ typedef struct lboard_s { | |||
| 208 | klconf_off_t brd_next_same; /* Next BOARD with same nasid */ | 208 | klconf_off_t brd_next_same; /* Next BOARD with same nasid */ |
| 209 | } lboard_t; | 209 | } lboard_t; |
| 210 | 210 | ||
| 211 | #define KLCF_NUM_COMPS(_brd) ((_brd)->brd_numcompts) | ||
| 212 | #define NODE_OFFSET_TO_KLINFO(n,off) ((klinfo_t*) TO_NODE_CAC(n,off)) | ||
| 213 | #define KLCF_NEXT(_brd) \ | ||
| 214 | ((_brd)->brd_next_same ? \ | ||
| 215 | (NODE_OFFSET_TO_LBOARD((_brd)->brd_next_same_host, (_brd)->brd_next_same)): NULL) | ||
| 216 | #define KLCF_NEXT_ANY(_brd) \ | ||
| 217 | ((_brd)->brd_next_any ? \ | ||
| 218 | (NODE_OFFSET_TO_LBOARD(NASID_GET(_brd), (_brd)->brd_next_any)): NULL) | ||
| 219 | #define KLCF_COMP(_brd, _ndx) \ | ||
| 220 | ((((_brd)->brd_compts[(_ndx)]) == 0) ? 0 : \ | ||
| 221 | (NODE_OFFSET_TO_KLINFO(NASID_GET(_brd), (_brd)->brd_compts[(_ndx)]))) | ||
| 222 | |||
| 223 | |||
| 224 | /* | 211 | /* |
| 225 | * Generic info structure. This stores common info about a | 212 | * Generic info structure. This stores common info about a |
| 226 | * component. | 213 | * component. |
| @@ -249,24 +236,11 @@ typedef struct klinfo_s { /* Generic info */ | |||
| 249 | } klinfo_t ; | 236 | } klinfo_t ; |
| 250 | 237 | ||
| 251 | 238 | ||
| 252 | static inline lboard_t *find_lboard_any(lboard_t * start, unsigned char brd_type) | 239 | static inline lboard_t *find_lboard_next(lboard_t * brd) |
| 253 | { | 240 | { |
| 254 | /* Search all boards stored on this node. */ | 241 | if (brd && brd->brd_next_any) |
| 255 | 242 | return NODE_OFFSET_TO_LBOARD(NASID_GET(brd), brd->brd_next_any); | |
| 256 | while (start) { | 243 | return NULL; |
| 257 | if (start->brd_type == brd_type) | ||
| 258 | return start; | ||
| 259 | start = KLCF_NEXT_ANY(start); | ||
| 260 | } | ||
| 261 | /* Didn't find it. */ | ||
| 262 | return (lboard_t *) NULL; | ||
| 263 | } | 244 | } |
| 264 | 245 | ||
| 265 | |||
| 266 | /* external declarations of Linux kernel functions. */ | ||
| 267 | |||
| 268 | extern lboard_t *root_lboard[]; | ||
| 269 | extern klinfo_t *find_component(lboard_t *brd, klinfo_t *kli, unsigned char type); | ||
| 270 | extern klinfo_t *find_first_component(lboard_t *brd, unsigned char type); | ||
| 271 | |||
| 272 | #endif /* _ASM_IA64_SN_KLCONFIG_H */ | 246 | #endif /* _ASM_IA64_SN_KLCONFIG_H */ |
diff --git a/include/asm-ia64/sn/sn_cpuid.h b/include/asm-ia64/sn/sn_cpuid.h index d2c1d34dcce4..749deb2ca6c1 100644 --- a/include/asm-ia64/sn/sn_cpuid.h +++ b/include/asm-ia64/sn/sn_cpuid.h | |||
| @@ -105,7 +105,6 @@ extern short physical_node_map[]; /* indexed by nasid to get cnode */ | |||
| 105 | #define cpuid_to_nasid(cpuid) (sn_nodepda->phys_cpuid[cpuid].nasid) | 105 | #define cpuid_to_nasid(cpuid) (sn_nodepda->phys_cpuid[cpuid].nasid) |
| 106 | #define cpuid_to_subnode(cpuid) (sn_nodepda->phys_cpuid[cpuid].subnode) | 106 | #define cpuid_to_subnode(cpuid) (sn_nodepda->phys_cpuid[cpuid].subnode) |
| 107 | #define cpuid_to_slice(cpuid) (sn_nodepda->phys_cpuid[cpuid].slice) | 107 | #define cpuid_to_slice(cpuid) (sn_nodepda->phys_cpuid[cpuid].slice) |
| 108 | #define cpuid_to_cnodeid(cpuid) (physical_node_map[cpuid_to_nasid(cpuid)]) | ||
| 109 | 108 | ||
| 110 | 109 | ||
| 111 | /* | 110 | /* |
| @@ -113,8 +112,6 @@ extern short physical_node_map[]; /* indexed by nasid to get cnode */ | |||
| 113 | * of potentially large tables. | 112 | * of potentially large tables. |
| 114 | */ | 113 | */ |
| 115 | extern int nasid_slice_to_cpuid(int, int); | 114 | extern int nasid_slice_to_cpuid(int, int); |
| 116 | #define nasid_slice_to_cpu_physical_id(nasid, slice) \ | ||
| 117 | cpu_physical_id(nasid_slice_to_cpuid(nasid, slice)) | ||
| 118 | 115 | ||
| 119 | /* | 116 | /* |
| 120 | * cnodeid_to_nasid - convert a cnodeid to a NASID | 117 | * cnodeid_to_nasid - convert a cnodeid to a NASID |
diff --git a/include/asm-ia64/sn/sn_sal.h b/include/asm-ia64/sn/sn_sal.h index 92df48a0412f..81af4e51afa6 100644 --- a/include/asm-ia64/sn/sn_sal.h +++ b/include/asm-ia64/sn/sn_sal.h | |||
| @@ -206,26 +206,16 @@ ia64_sn_get_master_baseio_nasid(void) | |||
| 206 | return ret_stuff.v0; | 206 | return ret_stuff.v0; |
| 207 | } | 207 | } |
| 208 | 208 | ||
| 209 | static inline char * | 209 | static inline void * |
| 210 | ia64_sn_get_klconfig_addr(nasid_t nasid) | 210 | ia64_sn_get_klconfig_addr(nasid_t nasid) |
| 211 | { | 211 | { |
| 212 | struct ia64_sal_retval ret_stuff; | 212 | struct ia64_sal_retval ret_stuff; |
| 213 | int cnodeid; | ||
| 214 | 213 | ||
| 215 | cnodeid = nasid_to_cnodeid(nasid); | ||
| 216 | ret_stuff.status = 0; | 214 | ret_stuff.status = 0; |
| 217 | ret_stuff.v0 = 0; | 215 | ret_stuff.v0 = 0; |
| 218 | ret_stuff.v1 = 0; | 216 | ret_stuff.v1 = 0; |
| 219 | ret_stuff.v2 = 0; | 217 | ret_stuff.v2 = 0; |
| 220 | SAL_CALL(ret_stuff, SN_SAL_GET_KLCONFIG_ADDR, (u64)nasid, 0, 0, 0, 0, 0, 0); | 218 | SAL_CALL(ret_stuff, SN_SAL_GET_KLCONFIG_ADDR, (u64)nasid, 0, 0, 0, 0, 0, 0); |
| 221 | |||
| 222 | /* | ||
| 223 | * We should panic if a valid cnode nasid does not produce | ||
| 224 | * a klconfig address. | ||
| 225 | */ | ||
| 226 | if (ret_stuff.status != 0) { | ||
| 227 | panic("ia64_sn_get_klconfig_addr: Returned error %lx\n", ret_stuff.status); | ||
| 228 | } | ||
| 229 | return ret_stuff.v0 ? __va(ret_stuff.v0) : NULL; | 219 | return ret_stuff.v0 ? __va(ret_stuff.v0) : NULL; |
| 230 | } | 220 | } |
| 231 | 221 | ||
diff --git a/include/asm-ia64/sn/xp.h b/include/asm-ia64/sn/xp.h index 1df1c9f61a65..75a2f39c6ac6 100644 --- a/include/asm-ia64/sn/xp.h +++ b/include/asm-ia64/sn/xp.h | |||
| @@ -49,7 +49,7 @@ | |||
| 49 | * C-brick nasids, thus the need for bitmaps which don't account for | 49 | * C-brick nasids, thus the need for bitmaps which don't account for |
| 50 | * odd-numbered (non C-brick) nasids. | 50 | * odd-numbered (non C-brick) nasids. |
| 51 | */ | 51 | */ |
| 52 | #define XP_MAX_PHYSNODE_ID (MAX_PHYSNODE_ID / 2) | 52 | #define XP_MAX_PHYSNODE_ID (MAX_NUMALINK_NODES / 2) |
| 53 | #define XP_NASID_MASK_BYTES ((XP_MAX_PHYSNODE_ID + 7) / 8) | 53 | #define XP_NASID_MASK_BYTES ((XP_MAX_PHYSNODE_ID + 7) / 8) |
| 54 | #define XP_NASID_MASK_WORDS ((XP_MAX_PHYSNODE_ID + 63) / 64) | 54 | #define XP_NASID_MASK_WORDS ((XP_MAX_PHYSNODE_ID + 63) / 64) |
| 55 | 55 | ||
