diff options
author | Thomas Renninger <trenn@suse.de> | 2010-05-26 17:03:33 +0200 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2010-06-09 18:04:12 -0400 |
commit | 75cbfb97a156dd3dabdc81295fb8144576332366 (patch) | |
tree | e0eac949aec0e97f739109a354428ce6f41db707 | |
parent | 3975d16760d4be7402d1067c548c30c427971331 (diff) | |
download | kernel_samsung_espresso10-75cbfb97a156dd3dabdc81295fb8144576332366.zip kernel_samsung_espresso10-75cbfb97a156dd3dabdc81295fb8144576332366.tar.gz kernel_samsung_espresso10-75cbfb97a156dd3dabdc81295fb8144576332366.tar.bz2 |
ACPI: Do not try to set up acpi processor stuff on cores exceeding maxcpus=
Patch is against latest Linus master branch and is expected to be
safe bug fix.
You get:
ACPI: HARDWARE addr space,NOT supported yet
for each ACPI defined CPU which status is active, but exceeds
maxcpus= count.
As these "not booted" CPUs do not run an idle routine
and echo X >/proc/acpi/processor/*/throttling did not work
I couldn't find a way to really access not onlined/booted
machines. Still this should get fixed and
/proc/acpi/processor/X dirs of cores exceeding maxcpus
should not show up.
I wonder whether this could get cleaned up by truncating possible cpu mask
and nr_cpu_ids to setup_max_cpus early some day
(and not exporting setup_max_cpus anymore then).
But this needs touching of a lot other places...
Signed-off-by: Thomas Renninger <trenn@suse.de>
CC: travis@sgi.com
CC: linux-acpi@vger.kernel.org
CC: lenb@kernel.org
Signed-off-by: Len Brown <len.brown@intel.com>
-rw-r--r-- | drivers/acpi/processor_driver.c | 5 | ||||
-rw-r--r-- | init/main.c | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c index b1034a9..38ea0cc 100644 --- a/drivers/acpi/processor_driver.c +++ b/drivers/acpi/processor_driver.c @@ -581,6 +581,11 @@ static int __cpuinit acpi_processor_add(struct acpi_device *device) return 0; } +#ifdef CONFIG_SMP + if (pr->id >= setup_max_cpus && pr->id != 0) + return 0; +#endif + BUG_ON((pr->id >= nr_cpu_ids) || (pr->id < 0)); /* diff --git a/init/main.c b/init/main.c index 3bdb152..ac2e4a5 100644 --- a/init/main.c +++ b/init/main.c @@ -125,7 +125,9 @@ static char *ramdisk_execute_command; #ifdef CONFIG_SMP /* Setup configured maximum number of CPUs to activate */ -unsigned int __initdata setup_max_cpus = NR_CPUS; +unsigned int setup_max_cpus = NR_CPUS; +EXPORT_SYMBOL(setup_max_cpus); + /* * Setup routine for controlling SMP activation |