summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-realview
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2010-12-03 11:42:58 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-12-20 16:08:26 +0100
commitbbc3d14e9aca023bb98e580aa1c9350af8effdb1 (patch)
treed4b70bc67c04d1cbe05948a9368f916198237dbc /arch/arm/mach-realview
parentARM: SMP: ensure smp_send_stop() waits for CPUs to stop (diff)
downloadlinux-bbc3d14e9aca023bb98e580aa1c9350af8effdb1.tar.xz
linux-bbc3d14e9aca023bb98e580aa1c9350af8effdb1.zip
ARM: SMP: move CPU number sanity checks to smp_init_cpus()
Ensure that the number of CPUs is sanity checked before setting the number of possible CPUs. This avoids any chance of overflowing the cpu_possible bitmap. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-realview')
-rw-r--r--arch/arm/mach-realview/platsmp.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/arch/arm/mach-realview/platsmp.c b/arch/arm/mach-realview/platsmp.c
index af3d9093390b..108e92f9746b 100644
--- a/arch/arm/mach-realview/platsmp.c
+++ b/arch/arm/mach-realview/platsmp.c
@@ -160,16 +160,6 @@ void __init smp_init_cpus(void)
{
unsigned int i, ncores = get_core_count();
- for (i = 0; i < ncores; i++)
- set_cpu_possible(i, true);
-}
-
-void __init smp_prepare_cpus(unsigned int max_cpus)
-{
- unsigned int ncores = get_core_count();
- unsigned int cpu = smp_processor_id();
- int i;
-
/* sanity check */
if (ncores == 0) {
printk(KERN_ERR
@@ -186,6 +176,16 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
ncores = NR_CPUS;
}
+ for (i = 0; i < ncores; i++)
+ set_cpu_possible(i, true);
+}
+
+void __init smp_prepare_cpus(unsigned int max_cpus)
+{
+ unsigned int ncores = num_possible_cpus();
+ unsigned int cpu = smp_processor_id();
+ int i;
+
smp_store_cpu_info(cpu);
/*