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

Commit c0a392bb authored by Brendan Jackman's avatar Brendan Jackman Committed by Andres Oportus
Browse files

ANDROID: sched/fair: Sync task util before EAS wakeup



Before using a task's util_avg signal in EAS, we need to ensure that
it has been synced up to the last_update_time of prev_cpu's root
cfs_rq.

We previously relied on the side effect of wake_cap to do that,
however that does not happen when the waking CPU has the same
capacity as the prev_cpu. Therefore just explicitly call
sync_entity_load_avg. This may result in calling that function twice
within the same select_task_rq_fair, but since last_update_time
hasn't changed the second call will bail out very quickly.

Change-Id: I91f1fcd71dfeb96b7f5b73418f1cf9ac311d4655
Signed-off-by: default avatarBrendan Jackman <brendan.jackman@arm.com>
Signed-off-by: default avatarPatrick Bellasi <patrick.bellasi@arm.com>
(cherry picked from commit 595d8e0d207b9dfb0aa412d24293ed80e6478c88)
Signed-off-by: default avatarQuentin Perret <quentin.perret@arm.com>
parent 4ec7d818
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -6842,6 +6842,8 @@ static int select_energy_cpu_brute(struct task_struct *p, int prev_cpu, int sync
	prefer_idle = 0;
#endif

	sync_entity_load_avg(&p->se);

	sd = rcu_dereference(per_cpu(sd_ea, prev_cpu));
	/* Find a cpu with sufficient capacity */
	tmp_target = find_best_target(p, boosted, prefer_idle);