Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 78ff98b3 authored by Patrick Bellasi's avatar Patrick Bellasi Committed by Todd Kjos
Browse files

sched/fair: ignore backup CPU when not valid



The find_best_target can sometimes not return a valid backup CPU, either
because it cannot find one or just becasue it returns prev_cpu as a backup.
In these cases we should skip the energy_diff evaluation for the backup CPU.

Change-Id: I3787dbdfe74122348dd7a7485b88c4679051bd32
Signed-off-by: default avatarPatrick Bellasi <patrick.bellasi@arm.com>
Signed-off-by: default avatarChris Redpath <chris.redpath@arm.com>
(cherry picked from commit d9bcf5b88594a0225b51878236e49305f272eadc)
[trivial cherry-pick issue]
Signed-off-by: default avatarQuentin Perret <quentin.perret@arm.com>
parent 6abf18bd
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -7071,7 +7071,9 @@ static int select_energy_cpu_brute(struct task_struct *p, int prev_cpu, int sync
			/* No energy saving for target_cpu, try backup */
			target_cpu = tmp_backup;
			eenv.dst_cpu = target_cpu;
			if (tmp_backup < 0 || energy_diff(&eenv) >= 0) {
			if (tmp_backup < 0 || 
			    tmp_backup == prev_cpu ||
			    energy_diff(&eenv) >= 0) {
				schedstat_inc(p->se.statistics.nr_wakeups_secb_no_nrg_sav);
				schedstat_inc(this_rq()->eas_stats.secb_no_nrg_sav);
				target_cpu = prev_cpu;