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 /kernel/sched.c | |
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 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index bba57adb9504..78c8fbd373a3 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -5869,7 +5869,7 @@ static int cpu_to_core_group(int cpu, const cpumask_t *cpu_map, | |||
5869 | struct sched_group **sg) | 5869 | struct sched_group **sg) |
5870 | { | 5870 | { |
5871 | int group; | 5871 | int group; |
5872 | cpumask_t mask = cpu_sibling_map[cpu]; | 5872 | cpumask_t mask = per_cpu(cpu_sibling_map, cpu); |
5873 | cpus_and(mask, mask, *cpu_map); | 5873 | cpus_and(mask, mask, *cpu_map); |
5874 | group = first_cpu(mask); | 5874 | group = first_cpu(mask); |
5875 | if (sg) | 5875 | if (sg) |
@@ -5898,7 +5898,7 @@ static int cpu_to_phys_group(int cpu, const cpumask_t *cpu_map, | |||
5898 | cpus_and(mask, mask, *cpu_map); | 5898 | cpus_and(mask, mask, *cpu_map); |
5899 | group = first_cpu(mask); | 5899 | group = first_cpu(mask); |
5900 | #elif defined(CONFIG_SCHED_SMT) | 5900 | #elif defined(CONFIG_SCHED_SMT) |
5901 | cpumask_t mask = cpu_sibling_map[cpu]; | 5901 | cpumask_t mask = per_cpu(cpu_sibling_map, cpu); |
5902 | cpus_and(mask, mask, *cpu_map); | 5902 | cpus_and(mask, mask, *cpu_map); |
5903 | group = first_cpu(mask); | 5903 | group = first_cpu(mask); |
5904 | #else | 5904 | #else |
@@ -6132,7 +6132,7 @@ static int build_sched_domains(const cpumask_t *cpu_map) | |||
6132 | p = sd; | 6132 | p = sd; |
6133 | sd = &per_cpu(cpu_domains, i); | 6133 | sd = &per_cpu(cpu_domains, i); |
6134 | *sd = SD_SIBLING_INIT; | 6134 | *sd = SD_SIBLING_INIT; |
6135 | sd->span = cpu_sibling_map[i]; | 6135 | sd->span = per_cpu(cpu_sibling_map, i); |
6136 | cpus_and(sd->span, sd->span, *cpu_map); | 6136 | cpus_and(sd->span, sd->span, *cpu_map); |
6137 | sd->parent = p; | 6137 | sd->parent = p; |
6138 | p->child = sd; | 6138 | p->child = sd; |
@@ -6143,7 +6143,7 @@ static int build_sched_domains(const cpumask_t *cpu_map) | |||
6143 | #ifdef CONFIG_SCHED_SMT | 6143 | #ifdef CONFIG_SCHED_SMT |
6144 | /* Set up CPU (sibling) groups */ | 6144 | /* Set up CPU (sibling) groups */ |
6145 | for_each_cpu_mask(i, *cpu_map) { | 6145 | for_each_cpu_mask(i, *cpu_map) { |
6146 | cpumask_t this_sibling_map = cpu_sibling_map[i]; | 6146 | cpumask_t this_sibling_map = per_cpu(cpu_sibling_map, i); |
6147 | cpus_and(this_sibling_map, this_sibling_map, *cpu_map); | 6147 | cpus_and(this_sibling_map, this_sibling_map, *cpu_map); |
6148 | if (i != first_cpu(this_sibling_map)) | 6148 | if (i != first_cpu(this_sibling_map)) |
6149 | continue; | 6149 | continue; |