diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 7b8cd82fed19..1b9114a95802 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -24,6 +24,7 @@ #include #include #include +#include /* * Export tracepoints that act as a bare tracehook (ie: have no trace event @@ -73,3 +74,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_set_affinity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_v3_affinity_init); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_suspend_epoch_val); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_resume_epoch_val); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_max_freq); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_freq_table_limits); diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 92612bbdf4b1..65e0d286d5f3 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -30,6 +30,7 @@ #include #include #include +#include static LIST_HEAD(cpufreq_policy_list); @@ -690,8 +691,15 @@ static ssize_t show_##file_name \ return sprintf(buf, "%u\n", policy->object); \ } +static ssize_t show_cpuinfo_max_freq(struct cpufreq_policy *policy, char *buf) +{ + unsigned int max_freq = policy->cpuinfo.max_freq; + + trace_android_vh_show_max_freq(policy, &max_freq); + return sprintf(buf, "%u\n", max_freq); +} + show_one(cpuinfo_min_freq, cpuinfo.min_freq); -show_one(cpuinfo_max_freq, cpuinfo.max_freq); show_one(cpuinfo_transition_latency, cpuinfo.transition_latency); show_one(scaling_min_freq, min); show_one(scaling_max_freq, max); diff --git a/drivers/cpufreq/freq_table.c b/drivers/cpufreq/freq_table.c index f839dc9852c0..1128ba219aba 100644 --- a/drivers/cpufreq/freq_table.c +++ b/drivers/cpufreq/freq_table.c @@ -9,6 +9,7 @@ #include #include +#include /********************************************************************* * FREQUENCY TABLE HELPERS * @@ -51,6 +52,7 @@ int cpufreq_frequency_table_cpuinfo(struct cpufreq_policy *policy, max_freq = freq; } + trace_android_vh_freq_table_limits(policy, min_freq, max_freq); policy->min = policy->cpuinfo.min_freq = min_freq; policy->max = policy->cpuinfo.max_freq = max_freq; diff --git a/include/trace/hooks/cpufreq.h b/include/trace/hooks/cpufreq.h new file mode 100644 index 000000000000..79e6ddf31cb8 --- /dev/null +++ b/include/trace/hooks/cpufreq.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM cpufreq + +#define TRACE_INCLUDE_PATH trace/hooks + +#if !defined(_TRACE_HOOK_CPUFREQ_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_HOOK_CPUFREQ_H + +#include +#include + +#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_ANDROID_VENDOR_HOOKS) + +DECLARE_HOOK(android_vh_show_max_freq, + TP_PROTO(struct cpufreq_policy *policy, unsigned int *max_freq), + TP_ARGS(policy, max_freq)); + +DECLARE_HOOK(android_vh_freq_table_limits, + TP_PROTO(struct cpufreq_policy *policy, unsigned int min_freq, + unsigned int max_freq), + TP_ARGS(policy, min_freq, max_freq)); +#else + +#define trace_android_vh_show_max_freq(policy, max_freq) +#define trace_android_vh_freq_table_limits(policy, min_freq, max_freq) + +#endif + +#endif /* _TRACE_HOOK_CPUFREQ_H */ +/* This part must be outside protection */ +#include