From 58aade7204e15868576800c7949869fc50587a76 Mon Sep 17 00:00:00 2001 From: Vamsi Krishna Lanka Date: Thu, 21 Oct 2021 14:30:17 -0700 Subject: [PATCH] ANDROID: arch_topology: Add android_rvh_update_thermal_stats Add trace hook so that vendor modules can track thermal changes across the system. This feature is necessary to implement Qualcomm's load tracking scheme, WALT. WALT was originally submitted upstream, but due to complexities it was decided that a better path forward would to be improve on existing PELT. Link to upstream submission of WALT can be found below. Bug: 203763121 Link: https://lore.kernel.org/lkml/1477638642-17428-2-git-send-email-markivx@codeaurora.org/ Change-Id: I5c54b313d3c92c0514f18b07797dd20c9c6f5161 Signed-off-by: Shaleen Agrawal Signed-off-by: Vamsi Krishna Lanka Signed-off-by: Sai Harshini Nimmala --- drivers/base/arch_topology.c | 5 ++++- include/trace/hooks/sched.h | 4 ++++ kernel/sched/vendor_hooks.c | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c index 5071a45a600a..1ef327b402a9 100644 --- a/drivers/base/arch_topology.c +++ b/drivers/base/arch_topology.c @@ -205,8 +205,11 @@ void topology_update_thermal_pressure(const struct cpumask *cpus, trace_thermal_pressure_update(cpu, th_pressure); - for_each_cpu(cpu, cpus) + for_each_cpu(cpu, cpus) { WRITE_ONCE(per_cpu(thermal_pressure, cpu), th_pressure); + trace_android_rvh_update_thermal_stats(cpu); + } + } EXPORT_SYMBOL_GPL(topology_update_thermal_pressure); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index e88a567709ca..c6fa88f03013 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -308,6 +308,10 @@ DECLARE_HOOK(android_vh_update_topology_flags_workfn, TP_PROTO(void *unused), TP_ARGS(unused)); +DECLARE_RESTRICTED_HOOK(android_rvh_update_thermal_stats, + TP_PROTO(int cpu), + TP_ARGS(cpu), 1); + /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_SCHED_H */ diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index 8de3c5830041..9fc169565287 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -80,3 +80,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_ttwu_cond); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_schedule_bug); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sched_exec); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_update_topology_flags_workfn); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_thermal_stats);