diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 10c84198c550..f1c536a29ef2 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -87,6 +87,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_resume_epoch_val); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_table_limits); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_newidle_balance); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_nohz_balancer_kick); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_rebalance_domains); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_queue); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_migrate_queued_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_energy_efficient_cpu); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index beb0bbd07519..b5f2633e08bd 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -93,6 +93,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_sched_nohz_balancer_kick, TP_PROTO(struct rq *rq, unsigned int *flags, int *done), TP_ARGS(rq, flags, done), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_sched_rebalance_domains, + TP_PROTO(struct rq *rq, int *continue_balancing), + TP_ARGS(rq, continue_balancing), 1); + DECLARE_RESTRICTED_HOOK(android_rvh_find_busiest_queue, TP_PROTO(int dst_cpu, struct sched_group *group, struct cpumask *env_cpus, struct rq **busiest, diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 8ecdf50451d6..ebd00235d5b5 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -10330,6 +10330,10 @@ static void rebalance_domains(struct rq *rq, enum cpu_idle_type idle) int need_serialize, need_decay = 0; u64 max_cost = 0; + trace_android_rvh_sched_rebalance_domains(rq, &continue_balancing); + if (!continue_balancing) + return; + rcu_read_lock(); for_each_domain(cpu, sd) { /*