aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2013-04-02 04:37:21 -0400
committerShawn Guo <shawn.guo@linaro.org>2013-04-12 07:28:15 -0400
commitdc13ba2950acdd7ca64de3a8addcf85ada8ee908 (patch)
treea7e50cd75002c22889aa0e9dddfaf282c4cb00e0
parent3c03a2fed63881abf5ecb5596625157ecfc9e4eb (diff)
ARM: imx: do not bring up unavailable cores
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>
-rw-r--r--arch/arm/mach-imx/platsmp.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/mach-imx/platsmp.c b/arch/arm/mach-imx/platsmp.c
index 7c0b03f67b05..7061bdedfdb0 100644
--- a/arch/arm/mach-imx/platsmp.c
+++ b/arch/arm/mach-imx/platsmp.c
@@ -79,8 +79,8 @@ static void __init imx_smp_init_cpus(void)
79 79
80 ncores = scu_get_core_count(scu_base); 80 ncores = scu_get_core_count(scu_base);
81 81
82 for (i = 0; i < ncores; i++) 82 for (i = ncores; i < NR_CPUS; i++)
83 set_cpu_possible(i, true); 83 set_cpu_possible(i, false);
84} 84}
85 85
86void imx_smp_prepare(void) 86void imx_smp_prepare(void)