diff options
author | Mark Brown <broonie@linaro.org> | 2014-02-25 11:45:16 +0900 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-02-25 12:31:49 +0900 |
commit | aa9b724c7e84c61d733f852a34cbbf3674a0c555 (patch) | |
tree | 2a30bb820795e43d7658b709eb725e8463168124 | |
parent | cc347206daf808c86ced0ce3136313c78f1beeb5 (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.c | 13 |
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; + } + } } |