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 /drivers/acpi/processor_driver.c | |
parent | 3975d16760d4be7402d1067c548c30c427971331 (diff) | |
download | linux-75cbfb97a156dd3dabdc81295fb8144576332366.tar.gz linux-75cbfb97a156dd3dabdc81295fb8144576332366.tar.bz2 linux-75cbfb97a156dd3dabdc81295fb8144576332366.zip |
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>
Diffstat (limited to 'drivers/acpi/processor_driver.c')
-rw-r--r-- | drivers/acpi/processor_driver.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c index b1034a9ada4e..38ea0cc6dc49 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)); /* |