powerpc/smp: Optimize start_secondary
In start_secondary, even if shared_cache was already set, system does a redundant match for cpumask. This redundant check can be removed by checking if shared_cache is already set. While here, localize the sibling_mask variable to within the if condition. Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200810071834.92514-7-srikar@linux.vnet.ibm.com
This commit is contained in:
parent
f6606cfdfb
commit
caa8e29da5
@ -852,7 +852,7 @@ static int powerpc_shared_cache_flags(void)
|
||||
*/
|
||||
static const struct cpumask *shared_cache_mask(int cpu)
|
||||
{
|
||||
return cpu_l2_cache_mask(cpu);
|
||||
return per_cpu(cpu_l2_cache_map, cpu);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SCHED_SMT
|
||||
@ -1319,7 +1319,6 @@ static void add_cpu_to_masks(int cpu)
|
||||
void start_secondary(void *unused)
|
||||
{
|
||||
unsigned int cpu = smp_processor_id();
|
||||
struct cpumask *(*sibling_mask)(int) = cpu_sibling_mask;
|
||||
|
||||
mmgrab(&init_mm);
|
||||
current->active_mm = &init_mm;
|
||||
@ -1345,14 +1344,20 @@ void start_secondary(void *unused)
|
||||
/* Update topology CPU masks */
|
||||
add_cpu_to_masks(cpu);
|
||||
|
||||
if (has_big_cores)
|
||||
sibling_mask = cpu_smallcore_mask;
|
||||
/*
|
||||
* Check for any shared caches. Note that this must be done on a
|
||||
* per-core basis because one core in the pair might be disabled.
|
||||
*/
|
||||
if (!cpumask_equal(cpu_l2_cache_mask(cpu), sibling_mask(cpu)))
|
||||
shared_caches = true;
|
||||
if (!shared_caches) {
|
||||
struct cpumask *(*sibling_mask)(int) = cpu_sibling_mask;
|
||||
struct cpumask *mask = cpu_l2_cache_mask(cpu);
|
||||
|
||||
if (has_big_cores)
|
||||
sibling_mask = cpu_smallcore_mask;
|
||||
|
||||
if (cpumask_weight(mask) > cpumask_weight(sibling_mask(cpu)))
|
||||
shared_caches = true;
|
||||
}
|
||||
|
||||
set_numa_node(numa_cpu_lookup_table[cpu]);
|
||||
set_numa_mem(local_memory_node(numa_cpu_lookup_table[cpu]));
|
||||
|
Loading…
Reference in New Issue
Block a user