diff options
author | Mike Travis <travis@sgi.com> | 2007-10-19 14:35:03 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2007-10-19 14:35:03 -0400 |
commit | b6278470b7cdbf2bf6ba7345130d83924451a51a (patch) | |
tree | 935ed13ace9c4170ec886c0c7a9f34dbbec15844 /arch/x86/kernel | |
parent | 71fff5e6ca1b738ac4742580e4c0ff79d906f6c8 (diff) |
x86: convert cpu_llc_id to be a per cpu variable
Convert cpu_llc_id from a static array sized by NR_CPUS to a per_cpu
variable. This saves sizeof(cpu_llc_id) * NR unused cpus. Access is
mostly from startup and CPU HOTPLUG functions.
Note there's an additional change of the type of cpu_llc_id from int to
u8 for ARCH i386 to correspond with the same type in ARCH x86_64.
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>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/cpu/intel_cacheinfo.c | 4 | ||||
-rw-r--r-- | arch/x86/kernel/smpboot_32.c | 6 | ||||
-rw-r--r-- | arch/x86/kernel/smpboot_64.c | 6 |
3 files changed, 8 insertions, 8 deletions
diff --git a/arch/x86/kernel/cpu/intel_cacheinfo.c b/arch/x86/kernel/cpu/intel_cacheinfo.c index 297a24116949..35c7ebb57423 100644 --- a/arch/x86/kernel/cpu/intel_cacheinfo.c +++ b/arch/x86/kernel/cpu/intel_cacheinfo.c | |||
@@ -417,14 +417,14 @@ unsigned int __cpuinit init_intel_cacheinfo(struct cpuinfo_x86 *c) | |||
417 | if (new_l2) { | 417 | if (new_l2) { |
418 | l2 = new_l2; | 418 | l2 = new_l2; |
419 | #ifdef CONFIG_X86_HT | 419 | #ifdef CONFIG_X86_HT |
420 | cpu_llc_id[cpu] = l2_id; | 420 | per_cpu(cpu_llc_id, cpu) = l2_id; |
421 | #endif | 421 | #endif |
422 | } | 422 | } |
423 | 423 | ||
424 | if (new_l3) { | 424 | if (new_l3) { |
425 | l3 = new_l3; | 425 | l3 = new_l3; |
426 | #ifdef CONFIG_X86_HT | 426 | #ifdef CONFIG_X86_HT |
427 | cpu_llc_id[cpu] = l3_id; | 427 | per_cpu(cpu_llc_id, cpu) = l3_id; |
428 | #endif | 428 | #endif |
429 | } | 429 | } |
430 | 430 | ||
diff --git a/arch/x86/kernel/smpboot_32.c b/arch/x86/kernel/smpboot_32.c index 631be36ec2a9..47bccfc283d9 100644 --- a/arch/x86/kernel/smpboot_32.c +++ b/arch/x86/kernel/smpboot_32.c | |||
@@ -67,7 +67,7 @@ int smp_num_siblings = 1; | |||
67 | EXPORT_SYMBOL(smp_num_siblings); | 67 | EXPORT_SYMBOL(smp_num_siblings); |
68 | 68 | ||
69 | /* Last level cache ID of each logical CPU */ | 69 | /* Last level cache ID of each logical CPU */ |
70 | int cpu_llc_id[NR_CPUS] __cpuinitdata = {[0 ... NR_CPUS-1] = BAD_APICID}; | 70 | DEFINE_PER_CPU(u8, cpu_llc_id) = BAD_APICID; |
71 | 71 | ||
72 | /* representing HT siblings of each logical CPU */ | 72 | /* representing HT siblings of each logical CPU */ |
73 | DEFINE_PER_CPU(cpumask_t, cpu_sibling_map); | 73 | DEFINE_PER_CPU(cpumask_t, cpu_sibling_map); |
@@ -348,8 +348,8 @@ void __cpuinit set_cpu_sibling_map(int cpu) | |||
348 | } | 348 | } |
349 | 349 | ||
350 | for_each_cpu_mask(i, cpu_sibling_setup_map) { | 350 | for_each_cpu_mask(i, cpu_sibling_setup_map) { |
351 | if (cpu_llc_id[cpu] != BAD_APICID && | 351 | if (per_cpu(cpu_llc_id, cpu) != BAD_APICID && |
352 | cpu_llc_id[cpu] == cpu_llc_id[i]) { | 352 | per_cpu(cpu_llc_id, cpu) == per_cpu(cpu_llc_id, i)) { |
353 | cpu_set(i, c[cpu].llc_shared_map); | 353 | cpu_set(i, c[cpu].llc_shared_map); |
354 | cpu_set(cpu, c[i].llc_shared_map); | 354 | cpu_set(cpu, c[i].llc_shared_map); |
355 | } | 355 | } |
diff --git a/arch/x86/kernel/smpboot_64.c b/arch/x86/kernel/smpboot_64.c index c3e8668c5278..7c8f58643186 100644 --- a/arch/x86/kernel/smpboot_64.c +++ b/arch/x86/kernel/smpboot_64.c | |||
@@ -65,7 +65,7 @@ int smp_num_siblings = 1; | |||
65 | EXPORT_SYMBOL(smp_num_siblings); | 65 | EXPORT_SYMBOL(smp_num_siblings); |
66 | 66 | ||
67 | /* Last level cache ID of each logical CPU */ | 67 | /* Last level cache ID of each logical CPU */ |
68 | u8 cpu_llc_id[NR_CPUS] __cpuinitdata = {[0 ... NR_CPUS-1] = BAD_APICID}; | 68 | DEFINE_PER_CPU(u8, cpu_llc_id) = BAD_APICID; |
69 | 69 | ||
70 | /* Bitmask of currently online CPUs */ | 70 | /* Bitmask of currently online CPUs */ |
71 | cpumask_t cpu_online_map __read_mostly; | 71 | cpumask_t cpu_online_map __read_mostly; |
@@ -283,8 +283,8 @@ static inline void set_cpu_sibling_map(int cpu) | |||
283 | } | 283 | } |
284 | 284 | ||
285 | for_each_cpu_mask(i, cpu_sibling_setup_map) { | 285 | for_each_cpu_mask(i, cpu_sibling_setup_map) { |
286 | if (cpu_llc_id[cpu] != BAD_APICID && | 286 | if (per_cpu(cpu_llc_id, cpu) != BAD_APICID && |
287 | cpu_llc_id[cpu] == cpu_llc_id[i]) { | 287 | per_cpu(cpu_llc_id, cpu) == per_cpu(cpu_llc_id, i)) { |
288 | cpu_set(i, c[cpu].llc_shared_map); | 288 | cpu_set(i, c[cpu].llc_shared_map); |
289 | cpu_set(cpu, c[i].llc_shared_map); | 289 | cpu_set(cpu, c[i].llc_shared_map); |
290 | } | 290 | } |