|
@@ -6030,11 +6030,14 @@ build_overlap_sched_groups(struct sched_domain *sd, int cpu)
|
|
|
|
|
|
cpumask_or(covered, covered, sg_span);
|
|
cpumask_or(covered, covered, sg_span);
|
|
|
|
|
|
- sg->sgp = *per_cpu_ptr(sdd->sgp, cpumask_first(sg_span));
|
|
|
|
|
|
+ sg->sgp = *per_cpu_ptr(sdd->sgp, i);
|
|
atomic_inc(&sg->sgp->ref);
|
|
atomic_inc(&sg->sgp->ref);
|
|
|
|
|
|
- if (cpumask_test_cpu(cpu, sg_span))
|
|
|
|
|
|
+ if ((!groups && cpumask_test_cpu(cpu, sg_span)) ||
|
|
|
|
+ cpumask_first(sg_span) == cpu) {
|
|
|
|
+ WARN_ON_ONCE(!cpumask_test_cpu(cpu, sg_span));
|
|
groups = sg;
|
|
groups = sg;
|
|
|
|
+ }
|
|
|
|
|
|
if (!first)
|
|
if (!first)
|
|
first = sg;
|
|
first = sg;
|