diff options
author | Mike Travis <travis@sgi.com> | 2007-10-16 04:24:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-16 12:42:50 -0400 |
commit | d5a7430ddcdb598261d70f7eb1bf450b5be52085 (patch) | |
tree | 3b94672e0dbc2bff125de3266908f1a47a17b795 /include | |
parent | 083576112940fda783d716fd5ccc744f81667b2f (diff) |
Convert cpu_sibling_map to be a per cpu variable
Convert cpu_sibling_map from a static array sized by NR_CPUS to a per_cpu
variable. This saves sizeof(cpumask_t) * NR unused cpus. Access is mostly
from startup and CPU HOTPLUG functions.
Signed-off-by: Mike Travis <travis@sgi.com>
Cc: Andi Kleen <ak@suse.de>
Cc: Christoph Lameter <clameter@sgi.com>
Cc: "Siddha, Suresh B" <suresh.b.siddha@intel.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-ia64/smp.h | 2 | ||||
-rw-r--r-- | include/asm-ia64/topology.h | 2 | ||||
-rw-r--r-- | include/asm-powerpc/smp.h | 4 | ||||
-rw-r--r-- | include/asm-powerpc/topology.h | 2 | ||||
-rw-r--r-- | include/asm-sparc64/smp.h | 3 | ||||
-rw-r--r-- | include/asm-sparc64/topology.h | 2 | ||||
-rw-r--r-- | include/asm-x86/smp_32.h | 2 | ||||
-rw-r--r-- | include/asm-x86/smp_64.h | 6 | ||||
-rw-r--r-- | include/asm-x86/topology_32.h | 2 | ||||
-rw-r--r-- | include/asm-x86/topology_64.h | 2 |
10 files changed, 16 insertions, 11 deletions
diff --git a/include/asm-ia64/smp.h b/include/asm-ia64/smp.h index 6314b29e8c4d..1703c9d885bd 100644 --- a/include/asm-ia64/smp.h +++ b/include/asm-ia64/smp.h | |||
@@ -58,7 +58,7 @@ extern char no_int_routing __devinitdata; | |||
58 | 58 | ||
59 | extern cpumask_t cpu_online_map; | 59 | extern cpumask_t cpu_online_map; |
60 | extern cpumask_t cpu_core_map[NR_CPUS]; | 60 | extern cpumask_t cpu_core_map[NR_CPUS]; |
61 | extern cpumask_t cpu_sibling_map[NR_CPUS]; | 61 | DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); |
62 | extern int smp_num_siblings; | 62 | extern int smp_num_siblings; |
63 | extern int smp_num_cpucores; | 63 | extern int smp_num_cpucores; |
64 | extern void __iomem *ipi_base_addr; | 64 | extern void __iomem *ipi_base_addr; |
diff --git a/include/asm-ia64/topology.h b/include/asm-ia64/topology.h index 233f1caae048..2d67b72b18d0 100644 --- a/include/asm-ia64/topology.h +++ b/include/asm-ia64/topology.h | |||
@@ -112,7 +112,7 @@ void build_cpu_to_node_map(void); | |||
112 | #define topology_physical_package_id(cpu) (cpu_data(cpu)->socket_id) | 112 | #define topology_physical_package_id(cpu) (cpu_data(cpu)->socket_id) |
113 | #define topology_core_id(cpu) (cpu_data(cpu)->core_id) | 113 | #define topology_core_id(cpu) (cpu_data(cpu)->core_id) |
114 | #define topology_core_siblings(cpu) (cpu_core_map[cpu]) | 114 | #define topology_core_siblings(cpu) (cpu_core_map[cpu]) |
115 | #define topology_thread_siblings(cpu) (cpu_sibling_map[cpu]) | 115 | #define topology_thread_siblings(cpu) (per_cpu(cpu_sibling_map, cpu)) |
116 | #define smt_capable() (smp_num_siblings > 1) | 116 | #define smt_capable() (smp_num_siblings > 1) |
117 | #endif | 117 | #endif |
118 | 118 | ||
diff --git a/include/asm-powerpc/smp.h b/include/asm-powerpc/smp.h index 19102bfc14ca..505f35bacaa9 100644 --- a/include/asm-powerpc/smp.h +++ b/include/asm-powerpc/smp.h | |||
@@ -26,6 +26,7 @@ | |||
26 | #ifdef CONFIG_PPC64 | 26 | #ifdef CONFIG_PPC64 |
27 | #include <asm/paca.h> | 27 | #include <asm/paca.h> |
28 | #endif | 28 | #endif |
29 | #include <asm/percpu.h> | ||
29 | 30 | ||
30 | extern int boot_cpuid; | 31 | extern int boot_cpuid; |
31 | 32 | ||
@@ -58,7 +59,7 @@ extern int smp_hw_index[]; | |||
58 | (smp_hw_index[(cpu)] = (phys)) | 59 | (smp_hw_index[(cpu)] = (phys)) |
59 | #endif | 60 | #endif |
60 | 61 | ||
61 | extern cpumask_t cpu_sibling_map[NR_CPUS]; | 62 | DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); |
62 | 63 | ||
63 | /* Since OpenPIC has only 4 IPIs, we use slightly different message numbers. | 64 | /* Since OpenPIC has only 4 IPIs, we use slightly different message numbers. |
64 | * | 65 | * |
@@ -77,6 +78,7 @@ void smp_init_pSeries(void); | |||
77 | void smp_init_cell(void); | 78 | void smp_init_cell(void); |
78 | void smp_init_celleb(void); | 79 | void smp_init_celleb(void); |
79 | void smp_setup_cpu_maps(void); | 80 | void smp_setup_cpu_maps(void); |
81 | void smp_setup_cpu_sibling_map(void); | ||
80 | 82 | ||
81 | extern int __cpu_disable(void); | 83 | extern int __cpu_disable(void); |
82 | extern void __cpu_die(unsigned int cpu); | 84 | extern void __cpu_die(unsigned int cpu); |
diff --git a/include/asm-powerpc/topology.h b/include/asm-powerpc/topology.h index 0ad21a849b5f..ca23b681ad05 100644 --- a/include/asm-powerpc/topology.h +++ b/include/asm-powerpc/topology.h | |||
@@ -108,7 +108,7 @@ static inline void sysfs_remove_device_from_node(struct sys_device *dev, | |||
108 | #ifdef CONFIG_PPC64 | 108 | #ifdef CONFIG_PPC64 |
109 | #include <asm/smp.h> | 109 | #include <asm/smp.h> |
110 | 110 | ||
111 | #define topology_thread_siblings(cpu) (cpu_sibling_map[cpu]) | 111 | #define topology_thread_siblings(cpu) (per_cpu(cpu_sibling_map, cpu)) |
112 | #endif | 112 | #endif |
113 | #endif | 113 | #endif |
114 | 114 | ||
diff --git a/include/asm-sparc64/smp.h b/include/asm-sparc64/smp.h index e8a96a31761b..42c09949526c 100644 --- a/include/asm-sparc64/smp.h +++ b/include/asm-sparc64/smp.h | |||
@@ -28,8 +28,9 @@ | |||
28 | 28 | ||
29 | #include <asm/bitops.h> | 29 | #include <asm/bitops.h> |
30 | #include <asm/atomic.h> | 30 | #include <asm/atomic.h> |
31 | #include <asm/percpu.h> | ||
31 | 32 | ||
32 | extern cpumask_t cpu_sibling_map[NR_CPUS]; | 33 | DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); |
33 | extern cpumask_t cpu_core_map[NR_CPUS]; | 34 | extern cpumask_t cpu_core_map[NR_CPUS]; |
34 | extern int sparc64_multi_core; | 35 | extern int sparc64_multi_core; |
35 | 36 | ||
diff --git a/include/asm-sparc64/topology.h b/include/asm-sparc64/topology.h index 290ac75f385b..c6b557034f68 100644 --- a/include/asm-sparc64/topology.h +++ b/include/asm-sparc64/topology.h | |||
@@ -5,7 +5,7 @@ | |||
5 | #define topology_physical_package_id(cpu) (cpu_data(cpu).proc_id) | 5 | #define topology_physical_package_id(cpu) (cpu_data(cpu).proc_id) |
6 | #define topology_core_id(cpu) (cpu_data(cpu).core_id) | 6 | #define topology_core_id(cpu) (cpu_data(cpu).core_id) |
7 | #define topology_core_siblings(cpu) (cpu_core_map[cpu]) | 7 | #define topology_core_siblings(cpu) (cpu_core_map[cpu]) |
8 | #define topology_thread_siblings(cpu) (cpu_sibling_map[cpu]) | 8 | #define topology_thread_siblings(cpu) (per_cpu(cpu_sibling_map, cpu)) |
9 | #define mc_capable() (sparc64_multi_core) | 9 | #define mc_capable() (sparc64_multi_core) |
10 | #define smt_capable() (sparc64_multi_core) | 10 | #define smt_capable() (sparc64_multi_core) |
11 | #endif /* CONFIG_SMP */ | 11 | #endif /* CONFIG_SMP */ |
diff --git a/include/asm-x86/smp_32.h b/include/asm-x86/smp_32.h index 01ab31bb262a..955dd7c8538f 100644 --- a/include/asm-x86/smp_32.h +++ b/include/asm-x86/smp_32.h | |||
@@ -30,7 +30,7 @@ | |||
30 | extern void smp_alloc_memory(void); | 30 | extern void smp_alloc_memory(void); |
31 | extern int pic_mode; | 31 | extern int pic_mode; |
32 | extern int smp_num_siblings; | 32 | extern int smp_num_siblings; |
33 | extern cpumask_t cpu_sibling_map[]; | 33 | DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); |
34 | DECLARE_PER_CPU(cpumask_t, cpu_core_map); | 34 | DECLARE_PER_CPU(cpumask_t, cpu_core_map); |
35 | 35 | ||
36 | extern void (*mtrr_hook) (void); | 36 | extern void (*mtrr_hook) (void); |
diff --git a/include/asm-x86/smp_64.h b/include/asm-x86/smp_64.h index 65f844864415..f5bcee1c0927 100644 --- a/include/asm-x86/smp_64.h +++ b/include/asm-x86/smp_64.h | |||
@@ -38,12 +38,14 @@ extern void unlock_ipi_call_lock(void); | |||
38 | extern int smp_num_siblings; | 38 | extern int smp_num_siblings; |
39 | extern void smp_send_reschedule(int cpu); | 39 | extern void smp_send_reschedule(int cpu); |
40 | 40 | ||
41 | extern cpumask_t cpu_sibling_map[NR_CPUS]; | ||
42 | /* | 41 | /* |
43 | * cpu_core_map lives in a per cpu area | 42 | * cpu_sibling_map and cpu_core_map now live |
43 | * in the per cpu area | ||
44 | * | 44 | * |
45 | * extern cpumask_t cpu_sibling_map[NR_CPUS]; | ||
45 | * extern cpumask_t cpu_core_map[NR_CPUS]; | 46 | * extern cpumask_t cpu_core_map[NR_CPUS]; |
46 | */ | 47 | */ |
48 | DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); | ||
47 | DECLARE_PER_CPU(cpumask_t, cpu_core_map); | 49 | DECLARE_PER_CPU(cpumask_t, cpu_core_map); |
48 | extern u8 cpu_llc_id[NR_CPUS]; | 50 | extern u8 cpu_llc_id[NR_CPUS]; |
49 | 51 | ||
diff --git a/include/asm-x86/topology_32.h b/include/asm-x86/topology_32.h index 7b68dbcd0eb0..ae1074603c4b 100644 --- a/include/asm-x86/topology_32.h +++ b/include/asm-x86/topology_32.h | |||
@@ -31,7 +31,7 @@ | |||
31 | #define topology_physical_package_id(cpu) (cpu_data[cpu].phys_proc_id) | 31 | #define topology_physical_package_id(cpu) (cpu_data[cpu].phys_proc_id) |
32 | #define topology_core_id(cpu) (cpu_data[cpu].cpu_core_id) | 32 | #define topology_core_id(cpu) (cpu_data[cpu].cpu_core_id) |
33 | #define topology_core_siblings(cpu) (per_cpu(cpu_core_map, cpu)) | 33 | #define topology_core_siblings(cpu) (per_cpu(cpu_core_map, cpu)) |
34 | #define topology_thread_siblings(cpu) (cpu_sibling_map[cpu]) | 34 | #define topology_thread_siblings(cpu) (per_cpu(cpu_sibling_map, cpu)) |
35 | #endif | 35 | #endif |
36 | 36 | ||
37 | #ifdef CONFIG_NUMA | 37 | #ifdef CONFIG_NUMA |
diff --git a/include/asm-x86/topology_64.h b/include/asm-x86/topology_64.h index b8590dff34c8..848c17f92226 100644 --- a/include/asm-x86/topology_64.h +++ b/include/asm-x86/topology_64.h | |||
@@ -59,7 +59,7 @@ extern int __node_distance(int, int); | |||
59 | #define topology_physical_package_id(cpu) (cpu_data[cpu].phys_proc_id) | 59 | #define topology_physical_package_id(cpu) (cpu_data[cpu].phys_proc_id) |
60 | #define topology_core_id(cpu) (cpu_data[cpu].cpu_core_id) | 60 | #define topology_core_id(cpu) (cpu_data[cpu].cpu_core_id) |
61 | #define topology_core_siblings(cpu) (per_cpu(cpu_core_map, cpu)) | 61 | #define topology_core_siblings(cpu) (per_cpu(cpu_core_map, cpu)) |
62 | #define topology_thread_siblings(cpu) (cpu_sibling_map[cpu]) | 62 | #define topology_thread_siblings(cpu) (per_cpu(cpu_sibling_map, cpu)) |
63 | #define mc_capable() (boot_cpu_data.x86_max_cores > 1) | 63 | #define mc_capable() (boot_cpu_data.x86_max_cores > 1) |
64 | #define smt_capable() (smp_num_siblings > 1) | 64 | #define smt_capable() (smp_num_siblings > 1) |
65 | #endif | 65 | #endif |