From b8ea476fb4cb33062eded56d93ecaa49e32040cb 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 Bug: 265387484 Bug: 329341111 Bug: 377187885 Signed-off-by: Rick Yiu Change-Id: I064b501017e32d4f22f8128bed8bf3a1508ab15b (cherry picked from commit 2f108e2ec6e89609cbae32c5d13d6ad9f2e858cb) Signed-off-by: Will McVicker (cherry picked from commit 147a9b3d9eab750d90678af8a70ce80a69f6d510) Signed-off-by: Han Lin (cherry picked from commit cbcd3a6460e3b14b200b268b79e90155229d472c) --- include/trace/hooks/sched.h | 4 ++++ kernel/sched/fair.c | 5 +++++ kernel/sched/vendor_hooks.c | 1 + 3 files changed, 10 insertions(+) diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index aef267114508..179bdf6a695a 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -329,6 +329,10 @@ DECLARE_HOOK(android_vh_dup_task_struct, TP_PROTO(struct task_struct *tsk, struct task_struct *orig), TP_ARGS(tsk, orig)); +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); + /* 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 4fabdddc6d91..2c4b87c9ddae 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -8454,6 +8454,11 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, int sy struct sched_domain *sd; struct perf_domain *pd; struct energy_env eenv; + 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; sync_entity_load_avg(&p->se); diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index a3b50d8657be..abc2c93604a2 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -86,3 +86,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_wake_flags); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_new_ilb); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_util_cfs_boost); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_dup_task_struct); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_energy_efficient_cpu);