diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 4d624bd3ca4a..9b22b8d6a966 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -380,6 +380,26 @@ struct sugov_policy; DECLARE_RESTRICTED_HOOK(android_rvh_set_sugov_update, TP_PROTO(struct sugov_policy *sg_policy, unsigned int next_freq, bool *should_update), TP_ARGS(sg_policy, next_freq, should_update), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_update_rq_clock_pelt, + TP_PROTO(struct rq *rq, s64 delta, int *ret), + TP_ARGS(rq, delta, ret), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_update_load_avg_blocked_se, + TP_PROTO(u64 now, struct sched_entity *se, int *ret), + TP_ARGS(now, se, ret), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_update_load_avg_se, + TP_PROTO(u64 now, struct cfs_rq *cfs_rq, struct sched_entity *se, int *ret), + TP_ARGS(now, cfs_rq, se, ret), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_update_load_avg_cfs_rq, + TP_PROTO(u64 now, struct cfs_rq *cfs_rq, int *ret), + TP_ARGS(now, cfs_rq, ret), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_update_rt_rq_load_avg_internal, + TP_PROTO(u64 now, struct rq *rq, int running, int *ret), + TP_ARGS(now, rq, running, ret), 1); /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_SCHED_H */ diff --git a/kernel/sched/pelt.c b/kernel/sched/pelt.c index 81ef2a3c6bd3..9afaa32a467f 100644 --- a/kernel/sched/pelt.c +++ b/kernel/sched/pelt.c @@ -294,6 +294,12 @@ ___update_load_avg(struct sched_avg *sa, unsigned long load) int __update_load_avg_blocked_se(u64 now, struct sched_entity *se) { + int ret = -1; + + trace_android_rvh_update_load_avg_blocked_se(now, se, &ret); + if (ret != -1) + return ret; + if (___update_load_sum(now, &se->avg, 0, 0, 0)) { ___update_load_avg(&se->avg, se_weight(se)); trace_pelt_se_tp(se); @@ -306,6 +312,12 @@ EXPORT_SYMBOL_GPL(__update_load_avg_blocked_se); int __update_load_avg_se(u64 now, struct cfs_rq *cfs_rq, struct sched_entity *se) { + int ret = -1; + + trace_android_rvh_update_load_avg_se(now, cfs_rq, se, &ret); + if (ret != -1) + return ret; + if (___update_load_sum(now, &se->avg, !!se->on_rq, se_runnable(se), cfs_rq->curr == se)) { @@ -320,6 +332,12 @@ int __update_load_avg_se(u64 now, struct cfs_rq *cfs_rq, struct sched_entity *se int __update_load_avg_cfs_rq(u64 now, struct cfs_rq *cfs_rq) { + int ret = -1; + + trace_android_rvh_update_load_avg_cfs_rq(now, cfs_rq, &ret); + if (ret != -1) + return ret; + if (___update_load_sum(now, &cfs_rq->avg, scale_load_down(cfs_rq->load.weight), cfs_rq->h_nr_running, @@ -346,6 +364,12 @@ int __update_load_avg_cfs_rq(u64 now, struct cfs_rq *cfs_rq) int update_rt_rq_load_avg(u64 now, struct rq *rq, int running) { + int ret = -1; + + trace_android_rvh_update_rt_rq_load_avg_internal(now, rq, running, &ret); + if (ret != -1) + return ret; + if (___update_load_sum(now, &rq->avg_rt, running, running, diff --git a/kernel/sched/pelt.h b/kernel/sched/pelt.h index cbd8b8463eff..aa852a8635d0 100644 --- a/kernel/sched/pelt.h +++ b/kernel/sched/pelt.h @@ -1,4 +1,5 @@ #ifdef CONFIG_SMP +#include #include "sched-pelt.h" int __update_load_avg_blocked_se(u64 now, struct sched_entity *se); @@ -103,6 +104,12 @@ static inline void _update_idle_rq_clock_pelt(struct rq *rq) */ static inline void update_rq_clock_pelt(struct rq *rq, s64 delta) { + int ret = 0; + + trace_android_rvh_update_rq_clock_pelt(rq, delta, &ret); + if (ret) + return; + if (unlikely(is_idle_task(rq->curr))) { _update_idle_rq_clock_pelt(rq); return; diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index 9458814eb037..7498b944e609 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -99,3 +99,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_ptr); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_blocked_fair); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_task_comm); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_sugov_update); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_rq_clock_pelt); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_load_avg_blocked_se); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_load_avg_se); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_load_avg_cfs_rq); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_rt_rq_load_avg_internal);