diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 4cc3f0cded7b..d661a77a9d33 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -321,6 +321,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, + bool user, int *ret, bool *done), + TP_ARGS(p, attr, user, ret, done)); + DECLARE_HOOK(android_vh_update_topology_flags_workfn, TP_PROTO(void *unused), TP_ARGS(unused)); diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 773175f6df5d..f27338be5f24 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1884,6 +1884,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, user, &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 f528b1f6cbb9..6926c355facd 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -99,3 +99,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_irqtime_account_process_tick); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_post_init_entity_util_avg); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_effective_cpu_util); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmput); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_uclamp_validate);