From 0d97bca80a8f680f1fbf4b2a441c6ac581b8956a Mon Sep 17 00:00:00 2001 From: Chungkai Mei Date: Thu, 2 Nov 2023 05:31:05 +0000 Subject: [PATCH] ANDROID: sched: Add vendor hook for update_load_sum vendor may have the need to modify update_load_sum function Bug: 181105055 Change-Id: I35964977a4b8917c62773d48a37340f880774e38 Signed-off-by: Chungkai Mei (cherry picked from commit 984523c368423410bf53ca4c68402897d160c5dd) --- include/trace/hooks/sched.h | 5 +++++ kernel/sched/pelt.c | 4 ++++ 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 29396d044885..b0b039453951 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -419,6 +419,11 @@ DECLARE_RESTRICTED_HOOK(android_rvh_update_load_avg, TP_PROTO(u64 now, struct cfs_rq *cfs_rq, struct sched_entity *se), TP_ARGS(now, cfs_rq, se), 1); + +DECLARE_RESTRICTED_HOOK(android_rvh_update_load_sum, + TP_PROTO(struct sched_avg *sa, u64 *delta, unsigned int *sched_pelt_lshift), + TP_ARGS(sa, delta, sched_pelt_lshift), 1); + DECLARE_RESTRICTED_HOOK(android_rvh_remove_entity_load_avg, TP_PROTO(struct cfs_rq *cfs_rq, struct sched_entity *se), TP_ARGS(cfs_rq, se), 1); diff --git a/kernel/sched/pelt.c b/kernel/sched/pelt.c index c1c84f5a3c03..648de1ffe7cd 100644 --- a/kernel/sched/pelt.c +++ b/kernel/sched/pelt.c @@ -24,6 +24,8 @@ * Author: Vincent Guittot */ +#include + /* * Approximate: * val * y^n, where y^32 ~= 0.5 (~1 scheduling period) @@ -202,6 +204,8 @@ ___update_load_sum(u64 now, struct sched_avg *sa, sa->last_update_time += delta << 10; + trace_android_rvh_update_load_sum(sa, &delta, &sched_pelt_lshift); + /* * running is a subset of runnable (weight) so running can't be set if * runnable is clear. But there are some corner cases where the current diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index af7b4c5ba399..5a195b3e9602 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -105,6 +105,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_sugov_sched_attr); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_iowait); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_attach_entity_load_avg); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_detach_entity_load_avg); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_load_sum); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_load_avg); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_remove_entity_load_avg); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_blocked_fair);