diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index c94e0484cb39..3b0816d22931 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -325,6 +325,10 @@ DECLARE_HOOK(android_vh_set_wake_flags, TP_PROTO(int *wake_flags, unsigned int *mode), TP_ARGS(wake_flags, mode)); +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 e60a414c31cf..e560b86ad9a2 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -10887,9 +10887,13 @@ static inline int on_null_domain(struct rq *rq) static inline int find_new_ilb(void) { - int ilb; + int ilb = -1; const struct cpumask *hk_mask; + trace_android_rvh_find_new_ilb(nohz.idle_cpus_mask, &ilb); + if (ilb >= 0) + return ilb; + hk_mask = housekeeping_cpumask(HK_TYPE_MISC); for_each_cpu_and(ilb, nohz.idle_cpus_mask, hk_mask) { diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index 26dc388f983d..1a4b48951044 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -84,3 +84,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_update_topology_flags_workfn); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_thermal_stats); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_wake_up_sync); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_wake_flags); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_new_ilb);