summaryrefslogtreecommitdiff
path: root/kernel/sched/fair.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched/fair.c')
-rw-r--r--kernel/sched/fair.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 7aa10c025c57..1d69e49a6bdf 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -7895,7 +7895,7 @@ group_type group_classify(struct sched_group *group,
* seen a busy group yet and we are close to throttling. We want to
* prioritize spreading work over power optimization.
*/
- cpu = cpumask_first(sched_group_cpus(group));
+ cpu = group_first_cpu(group);
if (sysctl_sched_enable_power_aware &&
(capacity(env->dst_rq) == group_rq_capacity(group)) &&
sgs->sum_nr_running && (env->idle != CPU_NOT_IDLE) &&
@@ -8015,8 +8015,13 @@ static bool update_sd_pick_busiest(struct lb_env *env,
return false;
}
- if (env->flags & LBF_PWR_ACTIVE_BALANCE)
+ if (env->flags & LBF_PWR_ACTIVE_BALANCE) {
+ if (power_cost_at_freq(group_first_cpu(sg), 0) <=
+ power_cost_at_freq(group_first_cpu(sds->busiest), 0))
+ return false;
+
return true;
+ }
if (sgs->avg_load <= busiest->avg_load)
return false;