From fe35672a0f7897d4bfbe77d0fc25fd03bbc41e9e Mon Sep 17 00:00:00 2001 From: Kishore Sri venkata Ganesh Bolisetty Date: Mon, 10 Aug 2020 22:58:18 -0700 Subject: [PATCH] sched/walt: Improve the scheduler This change is for general scheduler improvement. Change-Id: I4d860d155697178feaed9c6418bf9fa1f773180c Signed-off-by: Kishore Sri venkata Ganesh Bolisetty Signed-off-by: Abhijeet Dharmapurikar --- kernel/sched/fair.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index ee7bc7b7a780..e5edf21534f0 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8197,6 +8197,27 @@ int can_migrate_task(struct task_struct *p, struct lb_env *env) return 0; } +#ifdef CONFIG_SCHED_WALT + if ((env->idle == CPU_NEWLY_IDLE) && + is_min_capacity_cpu(env->dst_cpu) && + !is_min_capacity_cpu(env->src_cpu) && + walt_get_rtg_status(p)) { + bool pull_to_silver_allowed = false; + unsigned int cpu; + + for_each_cpu(cpu, env->cpus) { + if (!is_min_capacity_cpu(cpu) && + cpu_overutilized(cpu)) { + pull_to_silver_allowed = true; + break; + } + } + + if (!pull_to_silver_allowed) + return 0; + } +#endif + /* * Aggressive migration if: * 1) IDLE or NEWLY_IDLE balance.