From ec3c9a1702386494c404a861467eb9cf9b10e9b5 Mon Sep 17 00:00:00 2001 From: Chungkai Mei Date: Tue, 14 Nov 2023 09:45:28 +0000 Subject: [PATCH] ANDROID: sched: Add vendor hook for util_fits_cpu vendor may have the need to implement their own util_fits_cpu function Bug: 261704404 Change-Id: I0318f6cadd5c45a37f1acafdded479b25e520e6b Signed-off-by: Chungkai Mei --- include/trace/hooks/sched.h | 5 +++++ kernel/sched/fair.c | 7 ++++++- kernel/sched/vendor_hooks.c | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 462552ec537e..29396d044885 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -198,6 +198,11 @@ DECLARE_RESTRICTED_HOOK(android_rvh_update_misfit_status, TP_PROTO(struct task_struct *p, struct rq *rq, bool *need_update), TP_ARGS(p, rq, need_update), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_util_fits_cpu, + TP_PROTO(unsigned long util, unsigned long uclamp_min, unsigned long uclamp_max, + int cpu, bool *fits, bool *done), + TP_ARGS(util, uclamp_min, uclamp_max, cpu, fits, done), 1); + DECLARE_RESTRICTED_HOOK(android_rvh_sched_fork_init, TP_PROTO(struct task_struct *p), TP_ARGS(p), 1); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 63141c469f51..3e20caeda5e6 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -4459,7 +4459,12 @@ static inline int util_fits_cpu(unsigned long util, { unsigned long capacity_orig, capacity_orig_thermal; unsigned long capacity = capacity_of(cpu); - bool fits, uclamp_max_fits; + bool fits, uclamp_max_fits, done = false; + + trace_android_rvh_util_fits_cpu(util, uclamp_min, uclamp_max, cpu, &fits, &done); + + if (done) + return fits; /* * Check if the real util fits without any uclamp boost/cap applied. diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index a4c6f277c0f6..af7b4c5ba399 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -69,6 +69,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_cpu_dying); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_account_irq); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_place_entity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_build_perf_domains); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_util_fits_cpu); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_cpu_capacity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_misfit_status); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_rto_next_cpu);