diff options
author | Mike Travis <travis@sgi.com> | 2008-03-31 11:41:55 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-19 13:44:58 -0400 |
commit | aa6b54461cc5c0019b9d792adf3176b444c10763 (patch) | |
tree | 069955d970b078105dcae6706a9e97c5503900df | |
parent | d18d00f5dbcd1a95811617e9812cf0560bd465ee (diff) |
asm-generic: add node_to_cpumask_ptr macro
Create a simple macro to always return a pointer to the node_to_cpumask(node)
value. This relies on compiler optimization to remove the extra indirection:
#define node_to_cpumask_ptr(v, node) \
cpumask_t _##v = node_to_cpumask(node), *v = &_##v
For those systems with a large cpumask size, then a true pointer
to the array element can be used:
#define node_to_cpumask_ptr(v, node) \
cpumask_t *v = &(node_to_cpumask_map[node])
A node_to_cpumask_ptr_next() macro is provided to access another
node_to_cpumask value.
The other change is to always include asm-generic/topology.h moving the
ifdef CONFIG_NUMA to this same file.
Note: there are no references to either of these new macros in this patch,
only the definition.
Based on 2.6.25-rc5-mm1
# alpha
Cc: Richard Henderson <rth@twiddle.net>
# fujitsu
Cc: David Howells <dhowells@redhat.com>
# ia64
Cc: Tony Luck <tony.luck@intel.com>
# powerpc
Cc: Paul Mackerras <paulus@samba.org>
Cc: Anton Blanchard <anton@samba.org>
# sparc
Cc: David S. Miller <davem@davemloft.net>
Cc: William L. Irwin <wli@holomorphy.com>
# x86
Cc: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Mike Travis <travis@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | include/asm-alpha/topology.h | 3 | ||||
-rw-r--r-- | include/asm-frv/topology.h | 4 | ||||
-rw-r--r-- | include/asm-generic/topology.h | 14 | ||||
-rw-r--r-- | include/asm-ia64/topology.h | 5 | ||||
-rw-r--r-- | include/asm-powerpc/topology.h | 3 | ||||
-rw-r--r-- | include/asm-x86/topology.h | 15 |
6 files changed, 35 insertions, 9 deletions
diff --git a/include/asm-alpha/topology.h b/include/asm-alpha/topology.h index 420ccde6b916..149532e162c4 100644 --- a/include/asm-alpha/topology.h +++ b/include/asm-alpha/topology.h | |||
@@ -41,8 +41,7 @@ static inline cpumask_t node_to_cpumask(int node) | |||
41 | 41 | ||
42 | #define pcibus_to_cpumask(bus) (cpu_online_map) | 42 | #define pcibus_to_cpumask(bus) (cpu_online_map) |
43 | 43 | ||
44 | #else /* CONFIG_NUMA */ | ||
45 | # include <asm-generic/topology.h> | ||
46 | #endif /* !CONFIG_NUMA */ | 44 | #endif /* !CONFIG_NUMA */ |
45 | # include <asm-generic/topology.h> | ||
47 | 46 | ||
48 | #endif /* _ASM_ALPHA_TOPOLOGY_H */ | 47 | #endif /* _ASM_ALPHA_TOPOLOGY_H */ |
diff --git a/include/asm-frv/topology.h b/include/asm-frv/topology.h index abe7298742ac..942724352705 100644 --- a/include/asm-frv/topology.h +++ b/include/asm-frv/topology.h | |||
@@ -5,10 +5,8 @@ | |||
5 | 5 | ||
6 | #error NUMA not supported yet | 6 | #error NUMA not supported yet |
7 | 7 | ||
8 | #else /* !CONFIG_NUMA */ | 8 | #endif /* CONFIG_NUMA */ |
9 | 9 | ||
10 | #include <asm-generic/topology.h> | 10 | #include <asm-generic/topology.h> |
11 | 11 | ||
12 | #endif /* CONFIG_NUMA */ | ||
13 | |||
14 | #endif /* _ASM_TOPOLOGY_H */ | 12 | #endif /* _ASM_TOPOLOGY_H */ |
diff --git a/include/asm-generic/topology.h b/include/asm-generic/topology.h index 342a2a0105c4..a6aea79bca4f 100644 --- a/include/asm-generic/topology.h +++ b/include/asm-generic/topology.h | |||
@@ -27,6 +27,8 @@ | |||
27 | #ifndef _ASM_GENERIC_TOPOLOGY_H | 27 | #ifndef _ASM_GENERIC_TOPOLOGY_H |
28 | #define _ASM_GENERIC_TOPOLOGY_H | 28 | #define _ASM_GENERIC_TOPOLOGY_H |
29 | 29 | ||
30 | #ifndef CONFIG_NUMA | ||
31 | |||
30 | /* Other architectures wishing to use this simple topology API should fill | 32 | /* Other architectures wishing to use this simple topology API should fill |
31 | in the below functions as appropriate in their own <asm/topology.h> file. */ | 33 | in the below functions as appropriate in their own <asm/topology.h> file. */ |
32 | #ifndef cpu_to_node | 34 | #ifndef cpu_to_node |
@@ -52,4 +54,16 @@ | |||
52 | ) | 54 | ) |
53 | #endif | 55 | #endif |
54 | 56 | ||
57 | #endif /* CONFIG_NUMA */ | ||
58 | |||
59 | /* returns pointer to cpumask for specified node */ | ||
60 | #ifndef node_to_cpumask_ptr | ||
61 | |||
62 | #define node_to_cpumask_ptr(v, node) \ | ||
63 | cpumask_t _##v = node_to_cpumask(node), *v = &_##v | ||
64 | |||
65 | #define node_to_cpumask_ptr_next(v, node) \ | ||
66 | _##v = node_to_cpumask(node) | ||
67 | #endif | ||
68 | |||
55 | #endif /* _ASM_GENERIC_TOPOLOGY_H */ | 69 | #endif /* _ASM_GENERIC_TOPOLOGY_H */ |
diff --git a/include/asm-ia64/topology.h b/include/asm-ia64/topology.h index 2d67b72b18d0..f929dde85343 100644 --- a/include/asm-ia64/topology.h +++ b/include/asm-ia64/topology.h | |||
@@ -116,6 +116,11 @@ void build_cpu_to_node_map(void); | |||
116 | #define smt_capable() (smp_num_siblings > 1) | 116 | #define smt_capable() (smp_num_siblings > 1) |
117 | #endif | 117 | #endif |
118 | 118 | ||
119 | #define pcibus_to_cpumask(bus) (pcibus_to_node(bus) == -1 ? \ | ||
120 | CPU_MASK_ALL : \ | ||
121 | node_to_cpumask(pcibus_to_node(bus)) \ | ||
122 | ) | ||
123 | |||
119 | #include <asm-generic/topology.h> | 124 | #include <asm-generic/topology.h> |
120 | 125 | ||
121 | #endif /* _ASM_IA64_TOPOLOGY_H */ | 126 | #endif /* _ASM_IA64_TOPOLOGY_H */ |
diff --git a/include/asm-powerpc/topology.h b/include/asm-powerpc/topology.h index ca23b681ad05..100c6fbfc587 100644 --- a/include/asm-powerpc/topology.h +++ b/include/asm-powerpc/topology.h | |||
@@ -96,11 +96,10 @@ static inline void sysfs_remove_device_from_node(struct sys_device *dev, | |||
96 | { | 96 | { |
97 | } | 97 | } |
98 | 98 | ||
99 | #endif /* CONFIG_NUMA */ | ||
99 | 100 | ||
100 | #include <asm-generic/topology.h> | 101 | #include <asm-generic/topology.h> |
101 | 102 | ||
102 | #endif /* CONFIG_NUMA */ | ||
103 | |||
104 | #ifdef CONFIG_SMP | 103 | #ifdef CONFIG_SMP |
105 | #include <asm/cputable.h> | 104 | #include <asm/cputable.h> |
106 | #define smt_capable() (cpu_has_feature(CPU_FTR_SMT)) | 105 | #define smt_capable() (cpu_has_feature(CPU_FTR_SMT)) |
diff --git a/include/asm-x86/topology.h b/include/asm-x86/topology.h index 81a29eb08ac4..b167ca90f96f 100644 --- a/include/asm-x86/topology.h +++ b/include/asm-x86/topology.h | |||
@@ -88,6 +88,17 @@ static inline int cpu_to_node(int cpu) | |||
88 | #endif | 88 | #endif |
89 | return per_cpu(x86_cpu_to_node_map, cpu); | 89 | return per_cpu(x86_cpu_to_node_map, cpu); |
90 | } | 90 | } |
91 | |||
92 | #ifdef CONFIG_NUMA | ||
93 | |||
94 | /* Returns a pointer to the cpumask of CPUs on Node 'node'. */ | ||
95 | #define node_to_cpumask_ptr(v, node) \ | ||
96 | cpumask_t *v = &(node_to_cpumask_map[node]) | ||
97 | |||
98 | #define node_to_cpumask_ptr_next(v, node) \ | ||
99 | v = &(node_to_cpumask_map[node]) | ||
100 | #endif | ||
101 | |||
91 | #endif /* CONFIG_X86_64 */ | 102 | #endif /* CONFIG_X86_64 */ |
92 | 103 | ||
93 | /* | 104 | /* |
@@ -174,10 +185,10 @@ extern int __node_distance(int, int); | |||
174 | 185 | ||
175 | #else /* CONFIG_NUMA */ | 186 | #else /* CONFIG_NUMA */ |
176 | 187 | ||
177 | #include <asm-generic/topology.h> | ||
178 | |||
179 | #endif | 188 | #endif |
180 | 189 | ||
190 | #include <asm-generic/topology.h> | ||
191 | |||
181 | extern cpumask_t cpu_coregroup_map(int cpu); | 192 | extern cpumask_t cpu_coregroup_map(int cpu); |
182 | 193 | ||
183 | #ifdef ENABLE_TOPO_DEFINES | 194 | #ifdef ENABLE_TOPO_DEFINES |