ARM: imx: do not bring up unavailable cores
authorShawn Guo <shawn.guo@linaro.org>
Tue, 2 Apr 2013 08:37:21 +0000 (16:37 +0800)
committerShawn Guo <shawn.guo@linaro.org>
Fri, 12 Apr 2013 11:28:15 +0000 (19:28 +0800)
The i.MX6 Quad can be fused as i.MX6 Dual chip, and similarly i.MX6
DualLite can be fused as i.MX6 Solo.  The actual number of available
cores can be found out from SCU.

Since we do not reflect the fusing thing in device tree, the function
arm_dt_init_cpu_maps() will always call set_cpu_possible(true) for 4
cores on i.MX6 Quad/Dual and 2 cores for i.MX6 DualLite/Solo.  This
causes failures when kernel tries to bring those unavailable cores
online.  For example, the following failure message will be seen when
booting an i.MX6 Solo chip.

  CPU1: failed to come online

Though kernel will still boot fine, the message is somehow annoying.
Let's get rid of it by calling set_cpu_possible(false) on those
unavailable cores.

While at it, the set_cpu_possible(true) for available cores is removed,
since it's already been done in arm_dt_init_cpu_maps().

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
arch/arm/mach-imx/platsmp.c

index 7c0b03f67b056d32ecd73d774f71d158638b5e9a..7061bdedfdb01616eb3caac3380895ef67a636ae 100644 (file)
@@ -79,8 +79,8 @@ static void __init imx_smp_init_cpus(void)
 
        ncores = scu_get_core_count(scu_base);
 
-       for (i = 0; i < ncores; i++)
-               set_cpu_possible(i, true);
+       for (i = ncores; i < NR_CPUS; i++)
+               set_cpu_possible(i, false);
 }
 
 void imx_smp_prepare(void)