From 3d5bad71a79830f131d55d077053e1e8993f2f6d Mon Sep 17 00:00:00 2001 From: Wanwei Jiang Date: Thu, 17 Oct 2024 17:20:50 +0800 Subject: [PATCH] ANDROID: sched: Add replace_next_task_fair vendor hook in pick_next_task_fair Add trace_android_rvh_replace_next_task_fair vendor hook in scheduler to support OEM's need to override the selected task from pick_next_task_fair() due to situations where important tasks are not picked in time. Bug: 374011864 Bug: 413566818 Change-Id: I55a0e7e794be77ba32c8adbff7b7eb2d914e4c52 Signed-off-by: Wanwei Jiang [jstultz: reworded commit message] Signed-off-by: John Stultz --- include/trace/hooks/sched.h | 4 ++++ kernel/sched/fair.c | 2 ++ kernel/sched/vendor_hooks.c | 1 + 3 files changed, 7 insertions(+) diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 3b2d20f5fba7..30f3b6261bfc 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -76,6 +76,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_setscheduler, TP_PROTO(struct task_struct *p), TP_ARGS(p), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_replace_next_task_fair, + TP_PROTO(struct rq *rq, struct task_struct **p, struct task_struct *prev), + TP_ARGS(rq, p, prev), 1); + struct sched_group; DECLARE_RESTRICTED_HOOK(android_rvh_sched_balance_find_src_group, TP_PROTO(struct sched_group *busiest, struct rq *dst_rq, int *out_balance), diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 71bc3bd7a336..3b3380277128 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8953,6 +8953,8 @@ pick_next_task_fair(struct rq *rq, struct task_struct *prev, struct rq_flags *rf again: p = pick_task_fair(rq); + trace_android_rvh_replace_next_task_fair(rq, &p, prev); + if (!p) goto idle; se = &p->se; diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index cbd1ef3a579c..d31edbf082fa 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -37,6 +37,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_overutilized); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_setaffinity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_build_sched_domains); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_balance_rt); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_fair); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_by_task);