From a822c7ebe19d055210665fa4612474b56082477d Mon Sep 17 00:00:00 2001 From: Sai Harshini Nimmala Date: Thu, 22 Apr 2021 22:59:35 -0700 Subject: [PATCH] sched/walt: Add small task filtering to uclamp Currently, small tasks get placed on mid-cap CPUs if uclamp is active on them. This causes power numbers to increase. Introduce filtering such that small tasks stay on silver. Change-Id: I7e31d8a5ffd4c4f64d7bd3668970216550d23d24 Signed-off-by: Sai Harshini Nimmala --- kernel/sched/walt/walt.h | 9 ++++++++- kernel/sched/walt/walt_cfs.c | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/kernel/sched/walt/walt.h b/kernel/sched/walt/walt.h index 4fe045436825..1c5cd2288fff 100644 --- a/kernel/sched/walt/walt.h +++ b/kernel/sched/walt/walt.h @@ -478,6 +478,13 @@ static inline enum sched_boost_policy task_boost_policy(struct task_struct *p) return policy; } +static inline bool walt_uclamp_boosted(struct task_struct *p) +{ + struct walt_task_struct *wts = (struct walt_task_struct *) p->android_vendor_data1; + + return uclamp_eff_value(p, UCLAMP_MIN) > 0 && wts->unfilter; +} + static inline unsigned long capacity_of(int cpu) { return cpu_rq(cpu)->cpu_capacity; @@ -702,7 +709,7 @@ static inline bool task_fits_max(struct task_struct *p, int cpu) if (is_min_capacity_cpu(cpu)) { if (task_boost_policy(p) == SCHED_BOOST_ON_BIG || task_boost > 0 || - uclamp_boosted(p) || + walt_uclamp_boosted(p) || walt_should_kick_upmigrate(p, cpu)) return false; } else { /* mid cap cpu */ diff --git a/kernel/sched/walt/walt_cfs.c b/kernel/sched/walt/walt_cfs.c index 808c1c8a5822..0677b7a90b3c 100644 --- a/kernel/sched/walt/walt_cfs.c +++ b/kernel/sched/walt/walt_cfs.c @@ -514,7 +514,7 @@ int walt_find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, u64 start_t = 0; int delta = 0; int task_boost = per_task_boost(p); - bool uclamp_boost = uclamp_boosted(p); + bool uclamp_boost = walt_uclamp_boosted(p); int start_cpu, order_index, end_index; if (walt_is_many_wakeup(sibling_count_hint) && prev_cpu != cpu &&