From 77759c22e5fe49782675d49a3a79659fe60602e4 Mon Sep 17 00:00:00 2001 From: Peter-TY Tsai Date: Wed, 2 Oct 2024 13:32:34 +0800 Subject: [PATCH] ANDROID: sched: Update android_rvh_check_preempt_wakeup hook check_preempt_wakeup was modified heavily in latest kernel, so modify this hook to match latest update (ex., add suffix _fair). Bug: 377203921 Change-Id: I58f9746e68f2ac944d79ffb2918335a617790b27 Signed-off-by: Peter-TY Tsai --- include/trace/hooks/sched.h | 8 +++----- kernel/sched/fair.c | 7 +++++++ kernel/sched/vendor_hooks.c | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 8df94c8d3101..fde7268d8ad7 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -227,12 +227,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_sched_balance_rt, TP_PROTO(struct rq *rq, struct task_struct *p, int *done), TP_ARGS(rq, p, done), 1); -DECLARE_RESTRICTED_HOOK(android_rvh_check_preempt_wakeup, +DECLARE_RESTRICTED_HOOK(android_rvh_check_preempt_wakeup_fair, TP_PROTO(struct rq *rq, struct task_struct *p, bool *preempt, bool *nopreempt, - int wake_flags, struct sched_entity *se, struct sched_entity *pse, - int next_buddy_marked, unsigned int granularity), - TP_ARGS(rq, p, preempt, nopreempt, wake_flags, se, pse, next_buddy_marked, - granularity), 1); + int wake_flags, struct sched_entity *se, struct sched_entity *pse), + TP_ARGS(rq, p, preempt, nopreempt, wake_flags, se, pse), 1); DECLARE_RESTRICTED_HOOK(android_rvh_set_cpus_allowed_by_task, TP_PROTO(const struct cpumask *cpu_valid_mask, const struct cpumask *new_mask, diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 170faf92cc67..ac89db078a67 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8836,6 +8836,7 @@ static void check_preempt_wakeup_fair(struct rq *rq, struct task_struct *p, int struct cfs_rq *cfs_rq = task_cfs_rq(curr); int cse_is_idle, pse_is_idle; bool ignore = false; + bool preempt = false; if (unlikely(se == pse)) return; @@ -8895,6 +8896,12 @@ static void check_preempt_wakeup_fair(struct rq *rq, struct task_struct *p, int cfs_rq = cfs_rq_of(se); update_curr(cfs_rq); + trace_android_rvh_check_preempt_wakeup_fair(rq, p, &preempt, &ignore, + wake_flags, se, pse); + if (preempt) + goto preempt; + if (ignore) + return; /* * If @p has a shorter slice than current and @p is eligible, override * current's slice protection in order to allow preemption. diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index 72da1f9c441b..c3f7e9489928 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -39,7 +39,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_build_sched_domains); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_balance_rt); -EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_fair); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_by_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_uclamp_eff_get);