This patch is to enable energy efficiency selection path, and rename function find_best_target() to find_idlest_target() so it's used for "prefer_idle" flag or when task has set boost margin > 0.
Signed-off-by: Leo Yan leo.yan@linaro.org --- kernel/sched/fair.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 45b4080..ecc156c 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6186,7 +6186,8 @@ static int start_cpu(bool boosted) return boosted ? rd->max_cap_orig_cpu : rd->min_cap_orig_cpu; }
-static inline int find_best_target(struct task_struct *p, bool boosted, bool prefer_idle) +static inline int find_idlest_target(struct task_struct *p, bool boosted, + bool prefer_idle) { int target_cpu = -1; unsigned long target_util = prefer_idle ? ULONG_MAX : 0; @@ -6434,15 +6435,18 @@ static int select_energy_cpu_brute(struct task_struct *p, int prev_cpu, int sync goto unlock;
/* Find a cpu with sufficient capacity */ - tmp_target = find_best_target(p, boosted, prefer_idle); + if (boosted || prefer_idle) { + tmp_target = find_idlest_target(p, boosted, prefer_idle); + if (tmp_target >= 0) + target_cpu = tmp_target;
- if (tmp_target >= 0) { - target_cpu = tmp_target; - if ((boosted || prefer_idle) && idle_cpu(target_cpu)) { + if (prefer_idle && idle_cpu(target_cpu)) { schedstat_inc(p, se.statistics.nr_wakeups_secb_idle_bt); schedstat_inc(this_rq(), eas_stats.secb_idle_bt); goto unlock; } + } else { + target_cpu = find_nrg_efficient_target(p, sd); }
if (target_cpu != prev_cpu) { -- 1.9.1