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/lib | |
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/lib')
-rw-r--r-- | arch/x86/lib/delay_32.c | 2 | ||||
-rw-r--r-- | arch/x86/lib/delay_64.c | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/arch/x86/lib/delay_32.c b/arch/x86/lib/delay_32.c index f6edb11364df..952e7a89c2ac 100644 --- a/arch/x86/lib/delay_32.c +++ b/arch/x86/lib/delay_32.c | |||
@@ -82,7 +82,7 @@ inline void __const_udelay(unsigned long xloops) | |||
82 | __asm__("mull %0" | 82 | __asm__("mull %0" |
83 | :"=d" (xloops), "=&a" (d0) | 83 | :"=d" (xloops), "=&a" (d0) |
84 | :"1" (xloops), "0" | 84 | :"1" (xloops), "0" |
85 | (cpu_data[raw_smp_processor_id()].loops_per_jiffy * (HZ/4))); | 85 | (cpu_data(raw_smp_processor_id()).loops_per_jiffy * (HZ/4))); |
86 | 86 | ||
87 | __delay(++xloops); | 87 | __delay(++xloops); |
88 | } | 88 | } |
diff --git a/arch/x86/lib/delay_64.c b/arch/x86/lib/delay_64.c index 2dbebd308347..0ebbfb9e7c7f 100644 --- a/arch/x86/lib/delay_64.c +++ b/arch/x86/lib/delay_64.c | |||
@@ -40,7 +40,8 @@ EXPORT_SYMBOL(__delay); | |||
40 | 40 | ||
41 | inline void __const_udelay(unsigned long xloops) | 41 | inline void __const_udelay(unsigned long xloops) |
42 | { | 42 | { |
43 | __delay(((xloops * HZ * cpu_data[raw_smp_processor_id()].loops_per_jiffy) >> 32) + 1); | 43 | __delay(((xloops * HZ * |
44 | cpu_data(raw_smp_processor_id()).loops_per_jiffy) >> 32) + 1); | ||
44 | } | 45 | } |
45 | EXPORT_SYMBOL(__const_udelay); | 46 | EXPORT_SYMBOL(__const_udelay); |
46 | 47 | ||