From ca6883251afd540913ce991adfcb571be8d8b12b Mon Sep 17 00:00:00 2001 From: Park Bumgyu Date: Fri, 8 Jan 2021 10:25:21 +0900 Subject: [PATCH] ANDROID: sched: add rvh for rebalance domains Vendor scheduler may not want to rebalance between domains in some case. New vendor hook is added for vendor to decide whether rebalance domains. Bug: 176952463 Change-Id: Ie2edbd4b11679786096dd0170496904ae180583c Signed-off-by: Park Bumgyu --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/sched.h | 4 ++++ kernel/sched/fair.c | 4 ++++ 3 files changed, 9 insertions(+) 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) { /*