aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched')
-rw-r--r--kernel/sched/core.c7
-rw-r--r--kernel/sched/fair.c25
2 files changed, 25 insertions, 7 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 55733616baaa..3a69374fb427 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -6030,11 +6030,14 @@ build_overlap_sched_groups(struct sched_domain *sd, int cpu)
6030 6030
6031 cpumask_or(covered, covered, sg_span); 6031 cpumask_or(covered, covered, sg_span);
6032 6032
6033 sg->sgp = *per_cpu_ptr(sdd->sgp, cpumask_first(sg_span)); 6033 sg->sgp = *per_cpu_ptr(sdd->sgp, i);
6034 atomic_inc(&sg->sgp->ref); 6034 atomic_inc(&sg->sgp->ref);
6035 6035
6036 if (cpumask_test_cpu(cpu, sg_span)) 6036 if ((!groups && cpumask_test_cpu(cpu, sg_span)) ||
6037 cpumask_first(sg_span) == cpu) {
6038 WARN_ON_ONCE(!cpumask_test_cpu(cpu, sg_span));
6037 groups = sg; 6039 groups = sg;
6040 }
6038 6041
6039 if (!first) 6042 if (!first)
6040 first = sg; 6043 first = sg;
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 940e6d17cf96..f0380d4987b3 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -3574,11 +3574,26 @@ void update_group_power(struct sched_domain *sd, int cpu)
3574 3574
3575 power = 0; 3575 power = 0;
3576 3576
3577 group = child->groups; 3577 if (child->flags & SD_OVERLAP) {
3578 do { 3578 /*
3579 power += group->sgp->power; 3579 * SD_OVERLAP domains cannot assume that child groups
3580 group = group->next; 3580 * span the current group.
3581 } while (group != child->groups); 3581 */
3582
3583 for_each_cpu(cpu, sched_group_cpus(sdg))
3584 power += power_of(cpu);
3585 } else {
3586 /*
3587 * !SD_OVERLAP domains can assume that child groups
3588 * span the current group.
3589 */
3590
3591 group = child->groups;
3592 do {
3593 power += group->sgp->power;
3594 group = group->next;
3595 } while (group != child->groups);
3596 }
3582 3597
3583 sdg->sgp->power = power; 3598 sdg->sgp->power = power;
3584} 3599}