diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 0cfb3de85637..9e3235b668c0 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -322,6 +322,11 @@ DECLARE_HOOK(android_vh_setscheduler_uclamp, TP_PROTO(struct task_struct *tsk, int clamp_id, unsigned int value), TP_ARGS(tsk, clamp_id, value)); +DECLARE_HOOK(android_vh_uclamp_validate, + TP_PROTO(struct task_struct *p, const struct sched_attr *attr, + int *ret, bool *done), + TP_ARGS(p, attr, ret, done)); + DECLARE_HOOK(android_vh_update_topology_flags_workfn, TP_PROTO(void *unused), TP_ARGS(unused)); diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c index a5d913535613..044aa147de00 100644 --- a/kernel/sched/syscalls.c +++ b/kernel/sched/syscalls.c @@ -358,6 +358,12 @@ static int uclamp_validate(struct task_struct *p, { int util_min = p->uclamp_req[UCLAMP_MIN].value; int util_max = p->uclamp_req[UCLAMP_MAX].value; + bool done = false; + int ret = 0; + + trace_android_vh_uclamp_validate(p, attr, &ret, &done); + if (done) + return ret; if (attr->sched_flags & SCHED_FLAG_UTIL_CLAMP_MIN) { util_min = attr->sched_util_min; diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index f9570db9a35c..54ce25efd4c7 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -131,4 +131,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_prio_restore); 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);