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

Commit 52b09b1f authored by Dietmar Eggemann's avatar Dietmar Eggemann Committed by Andres Oportus
Browse files

ANDROID: EAS: sched/fair: Re-integrate 'honor sync wakeups' into wakeup path



This patch re-integrates the part which was initially provided by
3b9d7554aeec ("EAS: sched/fair: tunable to honor sync wakeups") into
energy_aware_wake_cpu() into select_energy_cpu_brute().

Change-Id: I748fde3ecdeb44651179bce0a5bb8dd82d1903f6
Signed-off-by: default avatarDietmar Eggemann <dietmar.eggemann@arm.com>
(cherry picked from commit b75b7286cb068d5761621ea134c23dd131db953f)
Signed-off-by: default avatarChris Redpath <chris.redpath@arm.com>
Signed-off-by: default avatarQuentin Perret <quentin.perret@arm.com>
parent 8e862e1e
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -6411,13 +6411,21 @@ static int wake_cap(struct task_struct *p, int cpu, int prev_cpu)
	return min_cap * 1024 < task_util(p) * capacity_margin;
}

static int select_energy_cpu_brute(struct task_struct *p, int prev_cpu)
static int select_energy_cpu_brute(struct task_struct *p, int prev_cpu, int sync)
{
	int i;
	int min_diff = 0, energy_cpu = prev_cpu, spare_cpu = prev_cpu;
	unsigned long max_spare = 0;
	struct sched_domain *sd;

	if (sysctl_sched_sync_hint_enable && sync) {
		int cpu = smp_processor_id();
		cpumask_t search_cpus;
		cpumask_and(&search_cpus, tsk_cpus_allowed(p), cpu_online_mask);
		if (cpumask_test_cpu(cpu, &search_cpus))
			return cpu;
	}

	rcu_read_lock();

	sd = rcu_dereference(per_cpu(sd_ea, prev_cpu));
@@ -6494,7 +6502,7 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_f
	}

	if (energy_aware() && !(cpu_rq(prev_cpu)->rd->overutilized))
		return select_energy_cpu_brute(p, prev_cpu);
		return select_energy_cpu_brute(p, prev_cpu, sync);

	rcu_read_lock();
	for_each_domain(cpu, tmp) {