powerpc/smp: Limit CPUs traversed to within a node.
authorSrikar Dronamraju <srikar@linux.vnet.ibm.com>
Mon, 21 Sep 2020 09:56:47 +0000 (15:26 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 6 Oct 2020 12:22:26 +0000 (23:22 +1100)
All the arch specific topology cpumasks are within a node/DIE.
However when setting these per CPU cpumasks, system traverses through
all the online CPUs. This is redundant.

Reduce the traversal to only CPUs that are online in the node to which
the CPU belongs to.

Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Tested-by: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200921095653.9701-6-srikar@linux.vnet.ibm.com
arch/powerpc/kernel/smp.c

index 9cdb966f00b39d9af580b3ef4d2780ee024cb369..9455af47123c601d00422425dd1169a4fd8dbd60 100644 (file)
@@ -1241,7 +1241,7 @@ static bool update_mask_by_l2(int cpu, struct cpumask *(*mask_fn)(int))
        }
 
        cpumask_set_cpu(cpu, mask_fn(cpu));
-       for_each_cpu(i, cpu_online_mask) {
+       for_each_cpu_and(i, cpu_online_mask, cpu_cpu_mask(cpu)) {
                /*
                 * when updating the marks the current CPU has not been marked
                 * online, but we need to update the cache masks