From f09589401ce24c5c9786a6938b52e0bfe0c7648b 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 0b71af57e459..fab0e3d6d0de 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -84,6 +84,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 a383eec0ebf7..9f3ad757b444 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -89,6 +89,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 17bf4caa1fcb..0dfe1435896b 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -10417,6 +10417,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) { /*