|
@@ -215,8 +215,13 @@ EXPORT_SYMBOL_GPL(cpu_topology);
|
|
|
|
|
|
const struct cpumask *cpu_coregroup_mask(int cpu)
|
|
|
{
|
|
|
- const cpumask_t *core_mask = &cpu_topology[cpu].core_sibling;
|
|
|
+ const cpumask_t *core_mask = cpumask_of_node(cpu_to_node(cpu));
|
|
|
|
|
|
+ /* Find the smaller of NUMA, core or LLC siblings */
|
|
|
+ if (cpumask_subset(&cpu_topology[cpu].core_sibling, core_mask)) {
|
|
|
+ /* not numa in package, lets use the package siblings */
|
|
|
+ core_mask = &cpu_topology[cpu].core_sibling;
|
|
|
+ }
|
|
|
if (cpu_topology[cpu].llc_id != -1) {
|
|
|
if (cpumask_subset(&cpu_topology[cpu].llc_sibling, core_mask))
|
|
|
core_mask = &cpu_topology[cpu].llc_sibling;
|