diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 42f60a377b7e..87025ea52616 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -310,3 +310,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_clear_reserved_fmt_fields); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_fill_ext_fmtdesc); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_clear_mask_adjust); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_scmi_timeout_sync); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_new_ilb); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 6a97a7907f03..afac1522e0c6 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -366,6 +366,10 @@ DECLARE_HOOK(android_vh_set_task_comm, TP_PROTO(struct task_struct *p), TP_ARGS(p)); +DECLARE_RESTRICTED_HOOK(android_rvh_find_new_ilb, + TP_PROTO(struct cpumask *nohz_idle_cpus_mask, int *ilb), + TP_ARGS(nohz_idle_cpus_mask, ilb), 1); + /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_SCHED_H */ diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 5d3e98e04bdb..6d004a085089 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -10260,7 +10260,11 @@ static inline int on_null_domain(struct rq *rq) static inline int find_new_ilb(void) { - int ilb; + int ilb = -1; + + trace_android_rvh_find_new_ilb(nohz.idle_cpus_mask, &ilb); + if (ilb >= 0) + return ilb; for_each_cpu_and(ilb, nohz.idle_cpus_mask, housekeeping_cpumask(HK_FLAG_MISC)) {