]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/commitdiff
arm64: topology: refactor reset_cpu_topology to add support for removing topology
authorSudeep Holla <sudeep.holla@arm.com>
Fri, 6 Jul 2018 11:02:42 +0000 (12:02 +0100)
committerWill Deacon <will.deacon@arm.com>
Fri, 6 Jul 2018 12:18:18 +0000 (13:18 +0100)
Currently reset_cpu_topology clears all the CPU topology information
and resets to default values. However we may need to just clear the
information when we hotplug out the CPU. In preparation to add the
support the same, let's refactor reset_cpu_topology to just reset
the information and move clearing out the topology information to
clear_cpu_topology.

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Tested-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
Tested-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/topology.c

index f845a861781204fddecae81118693966055b1b97..b64733c5ea2883fad12e1fb6f0ed7c86de9fcbbc 100644 (file)
@@ -293,6 +293,19 @@ topology_populated:
        update_siblings_masks(cpuid);
 }
 
+static void clear_cpu_topology(int cpu)
+{
+       struct cpu_topology *cpu_topo = &cpu_topology[cpu];
+
+       cpumask_clear(&cpu_topo->llc_siblings);
+       cpumask_set_cpu(cpu, &cpu_topo->llc_siblings);
+
+       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);
+}
+
 static void __init reset_cpu_topology(void)
 {
        unsigned int cpu;
@@ -303,15 +316,9 @@ static void __init reset_cpu_topology(void)
                cpu_topo->thread_id = -1;
                cpu_topo->core_id = 0;
                cpu_topo->package_id = -1;
-
                cpu_topo->llc_id = -1;
-               cpumask_clear(&cpu_topo->llc_siblings);
-               cpumask_set_cpu(cpu, &cpu_topo->llc_siblings);
 
-               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);
+               clear_cpu_topology(cpu);
        }
 }