From 0975fd934e9e34adabeca8205a672ff6346581bb Mon Sep 17 00:00:00 2001 From: Xuewen Yan Date: Tue, 14 Dec 2021 13:48:31 +0800 Subject: [PATCH] ANDROID: Add vendor hook for the sugov_get_util android_vh_sugov_get_util: To get vendor-specific cpu util. Bug: 210789284 Test: build pass Signed-off-by: Xuewen Yan Change-Id: Id755c88a15064593280f3e568e1eaabdca9f4dd7 --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/sched.h | 4 ++++ kernel/sched/cpufreq_schedutil.c | 5 +++++ 3 files changed, 10 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 3714a17963d9..d4a9b0dfe846 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -189,6 +189,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ftrace_dump_buffer); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_allow_domain_state); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_map_util_freq); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_update_next_freq); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sugov_get_util); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_report_bug); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_em_cpu_energy); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_up); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index ac58cf3b312e..a9884beaf2e8 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -241,6 +241,10 @@ DECLARE_HOOK(android_vh_update_next_freq, unsigned int *new_next_freq, s64 delta_ns), TP_ARGS(policy, old_next_freq, new_next_freq, delta_ns)); +DECLARE_HOOK(android_vh_sugov_get_util, + TP_PROTO(unsigned int cpu, unsigned long *ret), + TP_ARGS(cpu, ret)); + struct em_perf_domain; DECLARE_HOOK(android_vh_em_cpu_energy, TP_PROTO(struct em_perf_domain *pd, diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c index fe914ba41832..2ee872716c5f 100644 --- a/kernel/sched/cpufreq_schedutil.c +++ b/kernel/sched/cpufreq_schedutil.c @@ -294,6 +294,11 @@ static unsigned long sugov_get_util(struct sugov_cpu *sg_cpu) struct rq *rq = cpu_rq(sg_cpu->cpu); unsigned long util = cpu_util_cfs(rq); unsigned long max = arch_scale_cpu_capacity(sg_cpu->cpu); + unsigned long ret = 0; + + trace_android_vh_sugov_get_util(sg_cpu->cpu, &ret); + if (ret) + return ret; sg_cpu->max = max; sg_cpu->bw_dl = cpu_bw_dl(rq);