From 25d620ba79947eb76332cc41ca84d35aeb92a4c0 Mon Sep 17 00:00:00 2001 From: Choonghoon Park Date: Thu, 1 Apr 2021 13:59:15 +0900 Subject: [PATCH] ANDROID: GKI: sched: add rvh for new cfs task util A vendor hook is added in post_init_entity_util_avg before a new cfs task's util is attached to cfs_rq's util so that vendors can gather and modify se's information to modify scheduling behavior and DVFS as they want. trace_android_rvh_new_task_stats is not a proper hook because it is called after the task's util is attached to cfs_rq's util, which means updating cfs_rq's sched_avg and DVFS request are done. Bug: 184219858 Signed-off-by: Choonghoon Park Change-Id: I2deaa93297f8464895978496c9838cdffaa35b7f --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/sched.h | 4 ++++ kernel/sched/fair.c | 2 ++ 3 files changed, 7 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index f1c536a29ef2..96f63b6acbf0 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -197,3 +197,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_rto_next_cpu); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_em_dev_register_pd); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_logbuf); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_logbuf_pr_cont); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_post_init_entity_util_avg); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index b5f2633e08bd..06f0e5e58279 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -323,6 +323,10 @@ DECLARE_HOOK(android_vh_em_dev_register_pd, TP_PROTO(bool *cond), TP_ARGS(cond)); +DECLARE_RESTRICTED_HOOK(android_rvh_post_init_entity_util_avg, + TP_PROTO(struct sched_entity *se), + TP_ARGS(se), 1); + #endif /* _TRACE_HOOK_SCHED_H */ /* This part must be outside protection */ #include diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index ebd00235d5b5..4faad3f099b9 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -809,6 +809,8 @@ void post_init_entity_util_avg(struct task_struct *p) return; } + /* Hook before this se's util is attached to cfs_rq's util */ + trace_android_rvh_post_init_entity_util_avg(se); attach_entity_cfs_rq(se); }