arm64: topology: Initialise default topology state immediately
authorMark Brown <broonie@linaro.org>
Fri, 2 May 2014 20:38:28 +0000 (21:38 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 16 May 2014 16:12:16 +0000 (17:12 +0100)
As a legacy of the way 32 bit ARM did things the topology code uses a null
topology map by default and then overwrites it by mapping cores with no
information to a cluster by themselves later. In order to make it simpler
to reset things as part of recovering from parse failures in firmware
information directly set this configuration on init. A core will always be
its own sibling so there should be no risk of confusion with firmware
provided information.

Signed-off-by: Mark Brown <broonie@linaro.org>
Reviewed-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kernel/topology.c

index 3e06b0be4ec81ee1e80c81975e7f8f0c3763d318..ff662b23af5f60b53ccda3c65628c63536730eaf 100644 (file)
@@ -43,9 +43,6 @@ static void update_siblings_masks(unsigned int cpuid)
                 * reset it to default behaviour
                 */
                pr_debug("CPU%u: No topology information configured\n", cpuid);
-               cpuid_topo->core_id = 0;
-               cpumask_set_cpu(cpuid, &cpuid_topo->core_sibling);
-               cpumask_set_cpu(cpuid, &cpuid_topo->thread_sibling);
                return;
        }
 
@@ -87,9 +84,12 @@ void __init init_cpu_topology(void)
                struct cpu_topology *cpu_topo = &cpu_topology[cpu];
 
                cpu_topo->thread_id = -1;
-               cpu_topo->core_id =  -1;
+               cpu_topo->core_id = 0;
                cpu_topo->cluster_id = -1;
+
                cpumask_clear(&cpu_topo->core_sibling);
+               cpumask_set_cpu(cpu, &cpu_topo->core_sibling);
                cpumask_clear(&cpu_topo->thread_sibling);
+               cpumask_set_cpu(cpu, &cpu_topo->thread_sibling);
        }
 }