aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2014-02-25 11:45:16 +0900
committerMark Brown <broonie@linaro.org>2014-02-25 12:31:49 +0900
commitaa9b724c7e84c61d733f852a34cbbf3674a0c555 (patch)
tree2a30bb820795e43d7658b709eb725e8463168124
parentcc347206daf808c86ced0ce3136313c78f1beeb5 (diff)
arm64: topology: Place all unknown CPUs in a cluster
The scheduler gets confused if CPUs are not part of the topology when topology is enabled so assign any otherwise unassigned CPUs to a cluster after we have finished parsing. Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r--arch/arm64/kernel/topology.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c
index cb6e0397bec7..616fe0531536 100644
--- a/arch/arm64/kernel/topology.c
+++ b/arch/arm64/kernel/topology.c
@@ -387,4 +387,17 @@ void __init init_cpu_topology(void)
smp_wmb();
parse_dt_topology();
+
+ /*
+ * Assign all remaining CPUs to a cluster so the scheduler
+ * doesn't get confused.
+ */
+ for_each_possible_cpu(cpu) {
+ struct cputopo_arm *cpu_topo = &cpu_topology[cpu];
+
+ if (cpu_topo->socket_id == -1) {
+ cpu_topo->socket_id = INT_MAX;
+ cpu_topo->core_id = cpu;
+ }
+ }
}