powerpc/smp: Move coregroup mask updation to a new function
Move the logic for updating the coregroup mask of a CPU to its own function. This will help in reworking the updation of coregroup mask in subsequent patch. Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200921095653.9701-11-srikar@linux.vnet.ibm.com
This commit is contained in:
committed by
Michael Ellerman
parent
3ab33d6dc3
commit
b8a97cb459
@ -1337,6 +1337,23 @@ static inline void add_cpu_to_smallcore_masks(int cpu)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void update_coregroup_mask(int cpu)
|
||||||
|
{
|
||||||
|
int first_thread = cpu_first_thread_sibling(cpu);
|
||||||
|
int coregroup_id = cpu_to_coregroup_id(cpu);
|
||||||
|
int i;
|
||||||
|
|
||||||
|
cpumask_set_cpu(cpu, cpu_coregroup_mask(cpu));
|
||||||
|
for_each_cpu_and(i, cpu_online_mask, cpu_cpu_mask(cpu)) {
|
||||||
|
int fcpu = cpu_first_thread_sibling(i);
|
||||||
|
|
||||||
|
if (fcpu == first_thread)
|
||||||
|
set_cpus_related(cpu, i, cpu_coregroup_mask);
|
||||||
|
else if (coregroup_id == cpu_to_coregroup_id(i))
|
||||||
|
set_cpus_related(cpu, i, cpu_coregroup_mask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void add_cpu_to_masks(int cpu)
|
static void add_cpu_to_masks(int cpu)
|
||||||
{
|
{
|
||||||
int first_thread = cpu_first_thread_sibling(cpu);
|
int first_thread = cpu_first_thread_sibling(cpu);
|
||||||
@ -1355,19 +1372,8 @@ static void add_cpu_to_masks(int cpu)
|
|||||||
add_cpu_to_smallcore_masks(cpu);
|
add_cpu_to_smallcore_masks(cpu);
|
||||||
update_mask_by_l2(cpu);
|
update_mask_by_l2(cpu);
|
||||||
|
|
||||||
if (has_coregroup_support()) {
|
if (has_coregroup_support())
|
||||||
int coregroup_id = cpu_to_coregroup_id(cpu);
|
update_coregroup_mask(cpu);
|
||||||
|
|
||||||
cpumask_set_cpu(cpu, cpu_coregroup_mask(cpu));
|
|
||||||
for_each_cpu_and(i, cpu_online_mask, cpu_cpu_mask(cpu)) {
|
|
||||||
int fcpu = cpu_first_thread_sibling(i);
|
|
||||||
|
|
||||||
if (fcpu == first_thread)
|
|
||||||
set_cpus_related(cpu, i, cpu_coregroup_mask);
|
|
||||||
else if (coregroup_id == cpu_to_coregroup_id(i))
|
|
||||||
set_cpus_related(cpu, i, cpu_coregroup_mask);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Activate a secondary processor. */
|
/* Activate a secondary processor. */
|
||||||
|
Reference in New Issue
Block a user