From 74710cbec0c5ccd96b30ef9a89e1b356812ba4ad Mon Sep 17 00:00:00 2001 From: Xuewen Yan Date: Wed, 24 Nov 2021 14:27:27 +0800 Subject: [PATCH] ANDROID: Add vendor hook to the deadline scheduler android_rvh_select_task_rq_dl: To perform vendor-specific DL task placement. Bug: 207585485 Test: build pass Signed-off-by: Xuewen Yan Change-Id: Ibe147276b52a1be877802a2e53e87ba3eb8c9161 (cherry picked from commit 478f3ee1d3e5be03ecd3603643abfc1186468881) --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/sched.h | 4 ++++ kernel/sched/deadline.c | 7 +++++++ 3 files changed, 12 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index b06689dcfc5d..98a4f3fc8228 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -58,6 +58,7 @@ */ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_task_rq_fair); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_task_rq_rt); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_task_rq_dl); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_select_fallback_rq); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_scheduler_tick); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_enqueue_task); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 463998b97414..7a401bbe2d69 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -19,6 +19,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_select_task_rq_rt, TP_PROTO(struct task_struct *p, int prev_cpu, int sd_flag, int wake_flags, int *new_cpu), TP_ARGS(p, prev_cpu, sd_flag, wake_flags, new_cpu), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_select_task_rq_dl, + TP_PROTO(struct task_struct *p, int prev_cpu, int sd_flag, int wake_flags, int *new_cpu), + TP_ARGS(p, prev_cpu, sd_flag, wake_flags, new_cpu), 1); + DECLARE_RESTRICTED_HOOK(android_rvh_select_fallback_rq, TP_PROTO(int cpu, struct task_struct *p, int *new_cpu), TP_ARGS(cpu, p, new_cpu), 1); diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index e94314633b39..2b62dc585291 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -17,6 +17,7 @@ */ #include "sched.h" #include "pelt.h" +#include struct dl_bandwidth def_dl_bandwidth; @@ -1673,6 +1674,12 @@ select_task_rq_dl(struct task_struct *p, int cpu, int flags) struct task_struct *curr; bool select_rq; struct rq *rq; + int target_cpu = -1; + + trace_android_rvh_select_task_rq_dl(p, cpu, flags & 0xF, + flags, &target_cpu); + if (target_cpu >= 0) + return target_cpu; if (!(flags & WF_TTWU)) goto out;