From 147a9b3d9eab750d90678af8a70ce80a69f6d510 Mon Sep 17 00:00:00 2001 From: Rick Yiu Date: Thu, 15 Oct 2020 20:41:52 +0800 Subject: [PATCH] ANDROID: sched: Add vendor hooks for find_energy_efficient_cpu Add hooks for vendor specific find_energy_efficient_cpu logic. Bug: 170507310 Signed-off-by: Rick Yiu Change-Id: I064b501017e32d4f22f8128bed8bf3a1508ab15b (cherry picked from commit 2f108e2ec6e89609cbae32c5d13d6ad9f2e858cb) Signed-off-by: Will McVicker --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/sched.h | 5 +++++ kernel/sched/fair.c | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 5e06b83ce317..fe86a814b1b7 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -80,3 +80,4 @@ 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_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 458fd5006414..b914f53f216f 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -101,6 +101,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_migrate_queued_task, struct task_struct *p, int new_cpu, int *detached), TP_ARGS(rq, rf, p, new_cpu, detached), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_find_energy_efficient_cpu, + TP_PROTO(struct task_struct *p, int prev_cpu, int sync, int *new_cpu), + TP_ARGS(p, prev_cpu, sync, new_cpu), 1); #else #define trace_android_rvh_select_task_rq_fair(p, prev_cpu, sd_flag, wake_flags, new_cpu) #define trace_android_rvh_select_task_rq_rt(p, prev_cpu, sd_flag, wake_flags, new_cpu) @@ -122,6 +126,7 @@ DECLARE_RESTRICTED_HOOK(android_rvh_migrate_queued_task, #define trace_android_rvh_sched_nohz_balancer_kick(rq, flags, done) #define trace_android_rvh_find_busiest_queue(dst_cpu, group, env_cpus, busiest, done) #define trace_android_rvh_migrate_queued_task(rq, rf, p, new_cpu, detached) +#define trace_android_rvh_find_energy_efficient_cpu(p, prev_cpu, sync, new_cpu) #endif #endif /* _TRACE_HOOK_SCHED_H */ /* This part must be outside protection */ diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 422579da23fb..78a2892bc4fc 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6592,6 +6592,11 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, int sy struct cpuidle_state *idle; struct sched_domain *sd; struct perf_domain *pd; + int new_cpu = INT_MAX; + + trace_android_rvh_find_energy_efficient_cpu(p, prev_cpu, sync, &new_cpu); + if (new_cpu != INT_MAX) + return new_cpu; rcu_read_lock(); pd = rcu_dereference(rd->pd);