diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 9e3235b668c0..da98a4c25a48 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -513,6 +513,11 @@ DECLARE_RESTRICTED_HOOK(android_rvh_set_iowait, TP_PROTO(struct task_struct *p, struct rq *rq, int *should_iowait_boost), TP_ARGS(p, rq, should_iowait_boost), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_util_fits_cpu, + TP_PROTO(unsigned long util, unsigned long uclamp_min, unsigned long uclamp_max, + int cpu, bool *fits, bool *done), + TP_ARGS(util, uclamp_min, uclamp_max, cpu, fits, done), 1); + /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_SCHED_H */ diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 6cca0d69826b..a92dbaebefc2 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -5171,7 +5171,12 @@ static inline int util_fits_cpu(unsigned long util, { unsigned long capacity = capacity_of(cpu); unsigned long capacity_orig; - bool fits, uclamp_max_fits; + bool fits, uclamp_max_fits, done = false; + + trace_android_rvh_util_fits_cpu(util, uclamp_min, uclamp_max, cpu, &fits, &done); + + if (done) + return fits; /* * Check if the real util fits without any uclamp boost/cap applied. diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index 54ce25efd4c7..29e0028acbe9 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -132,4 +132,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_rt_rq_load_avg); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_sugov_sched_attr); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_iowait); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_uclamp_validate); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_util_fits_cpu); +