diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index bc8dd375d491..5207b75de9fe 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -196,6 +196,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_bpf_syscall); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_ptr_locked); 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); 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); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index faee3c807d39..5dfecc295340 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -65,6 +65,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_is_cpu_allowed, TP_PROTO(int cpu, bool *allowed), TP_ARGS(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 4c367580e628..7a3856ba6018 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1024,6 +1024,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_FLAG_TIMER)) { if (!idle_cpu(cpu))