]> err.no Git - linux-2.6/commitdiff
[IA64] Bugfix for system with 32 cpus
authorTony Luck <tony.luck@intel.com>
Mon, 30 Jun 2008 22:03:14 +0000 (15:03 -0700)
committerTony Luck <tony.luck@intel.com>
Mon, 30 Jun 2008 22:03:14 +0000 (15:03 -0700)
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>
arch/ia64/kernel/setup.c

index 4ae15c8c2488fa8741086943ea58ee915bfbf69a..632cda8f2e7667fab870c85dd97af1fb2ed118f7 100644 (file)
@@ -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