diff options
author | Mike Travis <travis@sgi.com> | 2007-10-19 14:35:04 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2007-10-19 14:35:04 -0400 |
commit | 92cb7612aee39642d109b8d935ad265e602c0563 (patch) | |
tree | 307f4183226f52418bd6842b5d970f03524ad1c1 /arch/x86/kernel/tsc_32.c | |
parent | f1df280f53d7c3ce8613a3b25d1efe009b9860dd (diff) |
x86: convert cpuinfo_x86 array to a per_cpu array
cpu_data is currently an array defined using NR_CPUS. This means that
we overallocate since we will rarely really use maximum configured cpus.
When NR_CPU count is raised to 4096 the size of cpu_data becomes
3,145,728 bytes.
These changes were adopted from the sparc64 (and ia64) code. An
additional field was added to cpuinfo_x86 to be a non-ambiguous cpu
index. This corresponds to the index into a cpumask_t as well as the
per_cpu index. It's used in various places like show_cpuinfo().
cpu_data is defined to be the boot_cpu_data structure for the NON-SMP
case.
Signed-off-by: Mike Travis <travis@sgi.com>
Acked-by: Christoph Lameter <clameter@sgi.com>
Cc: Andi Kleen <ak@suse.de>
Cc: James Bottomley <James.Bottomley@steeleye.com>
Cc: Dmitry Torokhov <dtor@mail.ru>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Cc: Mark M. Hoffman <mhoffman@lightlink.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/tsc_32.c')
-rw-r--r-- | arch/x86/kernel/tsc_32.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/x86/kernel/tsc_32.c b/arch/x86/kernel/tsc_32.c index e87a3939ed40..b8a7cf671432 100644 --- a/arch/x86/kernel/tsc_32.c +++ b/arch/x86/kernel/tsc_32.c | |||
@@ -181,8 +181,8 @@ int recalibrate_cpu_khz(void) | |||
181 | if (cpu_has_tsc) { | 181 | if (cpu_has_tsc) { |
182 | cpu_khz = calculate_cpu_khz(); | 182 | cpu_khz = calculate_cpu_khz(); |
183 | tsc_khz = cpu_khz; | 183 | tsc_khz = cpu_khz; |
184 | cpu_data[0].loops_per_jiffy = | 184 | cpu_data(0).loops_per_jiffy = |
185 | cpufreq_scale(cpu_data[0].loops_per_jiffy, | 185 | cpufreq_scale(cpu_data(0).loops_per_jiffy, |
186 | cpu_khz_old, cpu_khz); | 186 | cpu_khz_old, cpu_khz); |
187 | return 0; | 187 | return 0; |
188 | } else | 188 | } else |
@@ -215,7 +215,7 @@ time_cpufreq_notifier(struct notifier_block *nb, unsigned long val, void *data) | |||
215 | return 0; | 215 | return 0; |
216 | } | 216 | } |
217 | ref_freq = freq->old; | 217 | ref_freq = freq->old; |
218 | loops_per_jiffy_ref = cpu_data[freq->cpu].loops_per_jiffy; | 218 | loops_per_jiffy_ref = cpu_data(freq->cpu).loops_per_jiffy; |
219 | cpu_khz_ref = cpu_khz; | 219 | cpu_khz_ref = cpu_khz; |
220 | } | 220 | } |
221 | 221 | ||
@@ -223,7 +223,7 @@ time_cpufreq_notifier(struct notifier_block *nb, unsigned long val, void *data) | |||
223 | (val == CPUFREQ_POSTCHANGE && freq->old > freq->new) || | 223 | (val == CPUFREQ_POSTCHANGE && freq->old > freq->new) || |
224 | (val == CPUFREQ_RESUMECHANGE)) { | 224 | (val == CPUFREQ_RESUMECHANGE)) { |
225 | if (!(freq->flags & CPUFREQ_CONST_LOOPS)) | 225 | if (!(freq->flags & CPUFREQ_CONST_LOOPS)) |
226 | cpu_data[freq->cpu].loops_per_jiffy = | 226 | cpu_data(freq->cpu).loops_per_jiffy = |
227 | cpufreq_scale(loops_per_jiffy_ref, | 227 | cpufreq_scale(loops_per_jiffy_ref, |
228 | ref_freq, freq->new); | 228 | ref_freq, freq->new); |
229 | 229 | ||