From 6fb5714d19ede9bc999a508e9d9a37ddcf453def Mon Sep 17 00:00:00 2001 From: Stephen Dickey Date: Thu, 6 Jan 2022 16:11:49 -0800 Subject: [PATCH] ANDROID: sched: core: hook for get_nohz_timer_target Allow module to control behavior of get_nohz_timer_target. This is needed to implement CPU Pause via vendor modules. Bug: 205164003 Change-Id: I38cb201ebf06db7bbce0d6cb68dbbe3729355be8 Signed-off-by: Stephen Dickey Signed-off-by: Ashay Jaiswal --- include/trace/hooks/sched.h | 4 ++++ kernel/sched/core.c | 5 +++++ kernel/sched/vendor_hooks.c | 1 + 3 files changed, 10 insertions(+) diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index eb418958c119..43b5595272f8 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -64,6 +64,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_is_cpu_allowed, TP_PROTO(struct task_struct *p, int cpu, bool *allowed), TP_ARGS(p, cpu, allowed), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_get_nohz_timer_target, + TP_PROTO(int *cpu, bool *done), + TP_ARGS(cpu, done), 1); + DECLARE_RESTRICTED_HOOK(android_rvh_set_user_nice, TP_PROTO(struct task_struct *p, long *nice, bool *allowed), TP_ARGS(p, nice, allowed), 1); diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 481d45159e02..33b0a7892bc0 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1088,6 +1088,11 @@ int get_nohz_timer_target(void) int i, cpu = smp_processor_id(), default_cpu = -1; struct sched_domain *sd; const struct cpumask *hk_mask; + bool done = false; + + trace_android_rvh_get_nohz_timer_target(&cpu, &done); + if (done) + return cpu; if (housekeeping_cpu(cpu, HK_TYPE_TIMER)) { if (!idle_cpu(cpu)) diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index 83ea30011ce4..1825d84b62f3 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -73,3 +73,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_cpu_capacity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_misfit_status); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_rto_next_cpu); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_is_cpu_allowed); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_get_nohz_timer_target);