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 /drivers/hwmon | |
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 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/coretemp.c | 6 | ||||
-rw-r--r-- | drivers/hwmon/hwmon-vid.c | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c index 6f66551d9e51..5c82ec7f8bbd 100644 --- a/drivers/hwmon/coretemp.c +++ b/drivers/hwmon/coretemp.c | |||
@@ -150,7 +150,7 @@ static struct coretemp_data *coretemp_update_device(struct device *dev) | |||
150 | static int __devinit coretemp_probe(struct platform_device *pdev) | 150 | static int __devinit coretemp_probe(struct platform_device *pdev) |
151 | { | 151 | { |
152 | struct coretemp_data *data; | 152 | struct coretemp_data *data; |
153 | struct cpuinfo_x86 *c = &(cpu_data)[pdev->id]; | 153 | struct cpuinfo_x86 *c = &cpu_data(pdev->id); |
154 | int err; | 154 | int err; |
155 | u32 eax, edx; | 155 | u32 eax, edx; |
156 | 156 | ||
@@ -359,7 +359,7 @@ static int __init coretemp_init(void) | |||
359 | struct pdev_entry *p, *n; | 359 | struct pdev_entry *p, *n; |
360 | 360 | ||
361 | /* quick check if we run Intel */ | 361 | /* quick check if we run Intel */ |
362 | if (cpu_data[0].x86_vendor != X86_VENDOR_INTEL) | 362 | if (cpu_data(0).x86_vendor != X86_VENDOR_INTEL) |
363 | goto exit; | 363 | goto exit; |
364 | 364 | ||
365 | err = platform_driver_register(&coretemp_driver); | 365 | err = platform_driver_register(&coretemp_driver); |
@@ -367,7 +367,7 @@ static int __init coretemp_init(void) | |||
367 | goto exit; | 367 | goto exit; |
368 | 368 | ||
369 | for_each_online_cpu(i) { | 369 | for_each_online_cpu(i) { |
370 | struct cpuinfo_x86 *c = &(cpu_data)[i]; | 370 | struct cpuinfo_x86 *c = &cpu_data(i); |
371 | 371 | ||
372 | /* check if family 6, models e, f, 16 */ | 372 | /* check if family 6, models e, f, 16 */ |
373 | if ((c->cpuid_level < 0) || (c->x86 != 0x6) || | 373 | if ((c->cpuid_level < 0) || (c->x86 != 0x6) || |
diff --git a/drivers/hwmon/hwmon-vid.c b/drivers/hwmon/hwmon-vid.c index f17e771e42f8..3330667280b9 100644 --- a/drivers/hwmon/hwmon-vid.c +++ b/drivers/hwmon/hwmon-vid.c | |||
@@ -200,7 +200,7 @@ static u8 find_vrm(u8 eff_family, u8 eff_model, u8 eff_stepping, u8 vendor) | |||
200 | 200 | ||
201 | u8 vid_which_vrm(void) | 201 | u8 vid_which_vrm(void) |
202 | { | 202 | { |
203 | struct cpuinfo_x86 *c = cpu_data; | 203 | struct cpuinfo_x86 *c = &cpu_data(0); |
204 | u32 eax; | 204 | u32 eax; |
205 | u8 eff_family, eff_model, eff_stepping, vrm_ret; | 205 | u8 eff_family, eff_model, eff_stepping, vrm_ret; |
206 | 206 | ||