summaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
authorTony Luck <tony.luck@intel.com>2008-06-30 15:03:14 -0700
committerTony Luck <tony.luck@intel.com>2008-06-30 15:03:14 -0700
commitdd4f0888f8b42a97c93a66617a4f9acaff3089d6 (patch)
treef0442424a2b73f01a4ff198e943d08a4df4d0d23 /arch/ia64
parent543cf4cb3fe6f6cae3651ba918b9c56200b257d0 (diff)
downloadlinux-stable-dd4f0888f8b42a97c93a66617a4f9acaff3089d6.tar.gz
linux-stable-dd4f0888f8b42a97c93a66617a4f9acaff3089d6.tar.bz2
linux-stable-dd4f0888f8b42a97c93a66617a4f9acaff3089d6.zip
[IA64] Bugfix for system with 32 cpus
On a system where there are no hot pluggable cpus "additional_cpus" is still set to -1 at the point where we call per_cpu_scan_finalize(). If we didn't find an SRAT table and so pick the default "32" for the number of cpus, when we get to: high_cpu = min(high_cpu + reserve_cpus, NR_CPUS); we will end up initializing for just 31 cpus ... and so we will die horribly when bringing up cpu#32. Problem introduced by: 2c6e6db41f01b6b4eb98809350827c9678996698 "Minimize per_cpu reservations." Acked-by: Robin Holt <holt@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/kernel/setup.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index 4ae15c8c2488..632cda8f2e76 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -547,7 +547,8 @@ setup_arch (char **cmdline_p)
# ifdef CONFIG_ACPI_NUMA
acpi_numa_init();
per_cpu_scan_finalize((cpus_weight(early_cpu_possible_map) == 0 ?
- 32 : cpus_weight(early_cpu_possible_map)), additional_cpus);
+ 32 : cpus_weight(early_cpu_possible_map)),
+ additional_cpus > 0 ? additional_cpus : 0);
# endif
#else
# ifdef CONFIG_SMP