aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched/fair.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched/fair.c')
-rw-r--r--kernel/sched/fair.c25
1 files changed, 20 insertions, 5 deletions
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}