diff --git a/kernel/sched/walt/sysctl.c b/kernel/sched/walt/sysctl.c index 76f929eba9dd..85df1c2836dd 100644 --- a/kernel/sched/walt/sysctl.c +++ b/kernel/sched/walt/sysctl.c @@ -56,6 +56,7 @@ unsigned int __read_mostly sysctl_sched_asym_cap_sibling_freq_match_pct; unsigned int sysctl_walt_low_latency_task_threshold; /* disabled by default */ unsigned int sysctl_sched_conservative_pl; unsigned int sysctl_sched_min_task_util_for_boost = 51; +unsigned int sysctl_sched_min_task_util_for_uclamp = 51; unsigned int sysctl_sched_min_task_util_for_colocation = 35; unsigned int sysctl_sched_many_wakeup_threshold = WALT_MANY_WAKEUP_DEFAULT; const int sched_user_hint_max = 1000; @@ -543,6 +544,15 @@ struct ctl_table walt_table[] = { .extra1 = SYSCTL_ZERO, .extra2 = &one_thousand, }, + { + .procname = "sched_min_task_util_for_uclamp", + .data = &sysctl_sched_min_task_util_for_uclamp, + .maxlen = sizeof(unsigned int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = SYSCTL_ZERO, + .extra2 = &one_thousand, + }, { .procname = "sched_min_task_util_for_colocation", .data = &sysctl_sched_min_task_util_for_colocation, diff --git a/kernel/sched/walt/walt.h b/kernel/sched/walt/walt.h index dd335d0cc299..d6bd55f6e975 100644 --- a/kernel/sched/walt/walt.h +++ b/kernel/sched/walt/walt.h @@ -202,6 +202,7 @@ extern unsigned int __read_mostly sched_load_granule; /* 1ms default for 20ms window size scaled to 1024 */ extern unsigned int sysctl_sched_min_task_util_for_boost; +extern unsigned int sysctl_sched_min_task_util_for_uclamp; /* 0.68ms default for 20ms window size scaled to 1024 */ extern unsigned int sysctl_sched_min_task_util_for_colocation; extern unsigned int __read_mostly sysctl_sched_silver_thres; @@ -484,9 +485,8 @@ static inline enum sched_boost_policy task_boost_policy(struct task_struct *p) 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; + return ((uclamp_eff_value(p, UCLAMP_MIN) > 0) && + (task_util(p) > sysctl_sched_min_task_util_for_uclamp)); } static inline unsigned long capacity_of(int cpu)