Skip to content

Commit

Permalink
cpufreq: trace frequency limits change
Browse files Browse the repository at this point in the history
systrace used for tracing for Android systems has carried a patch for
many years in the Android tree that traces when the cpufreq limits
change.  With the help of this information, systrace can know when the
policy limits change and can visually display the data. Lets add
upstream support for the same.

Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Ruchi Kandoi authored and Rafael J. Wysocki committed Jul 26, 2018
1 parent 6e92636 commit 601b218
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 0 deletions.
1 change: 1 addition & 0 deletions Documentation/trace/events-power.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ cpufreq.

cpu_idle "state=%lu cpu_id=%lu"
cpu_frequency "state=%lu cpu_id=%lu"
cpu_frequency_limits "min=%lu max=%lu cpu_id=%lu"

A suspend event is used to indicate the system going in and out of the
suspend mode:
Expand Down
1 change: 1 addition & 0 deletions drivers/cpufreq/cpufreq.c
Original file line number Diff line number Diff line change
Expand Up @@ -2236,6 +2236,7 @@ static int cpufreq_set_policy(struct cpufreq_policy *policy,

policy->min = new_policy->min;
policy->max = new_policy->max;
trace_cpu_frequency_limits(policy);

policy->cached_target_freq = UINT_MAX;

Expand Down
25 changes: 25 additions & 0 deletions include/trace/events/power.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#if !defined(_TRACE_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_POWER_H

#include <linux/cpufreq.h>
#include <linux/ktime.h>
#include <linux/pm_qos.h>
#include <linux/tracepoint.h>
Expand Down Expand Up @@ -148,6 +149,30 @@ DEFINE_EVENT(cpu, cpu_frequency,
TP_ARGS(frequency, cpu_id)
);

TRACE_EVENT(cpu_frequency_limits,

TP_PROTO(struct cpufreq_policy *policy),

TP_ARGS(policy),

TP_STRUCT__entry(
__field(u32, min_freq)
__field(u32, max_freq)
__field(u32, cpu_id)
),

TP_fast_assign(
__entry->min_freq = policy->min;
__entry->max_freq = policy->max;
__entry->cpu_id = policy->cpu;
),

TP_printk("min=%lu max=%lu cpu_id=%lu",
(unsigned long)__entry->min_freq,
(unsigned long)__entry->max_freq,
(unsigned long)__entry->cpu_id)
);

TRACE_EVENT(device_pm_callback_start,

TP_PROTO(struct device *dev, const char *pm_ops, int event),
Expand Down

0 comments on commit 601b218

Please sign in to comment.