summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/cpufreq/cpufreq.c2
-rw-r--r--include/trace/events/power.h29
2 files changed, 31 insertions, 0 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 96adadf59e9e..3acc42805e21 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1449,8 +1449,10 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
pr_debug("target for CPU %u: %u kHz, relation %u\n", policy->cpu,
target_freq, relation);
+ trace_cpu_scale(policy->cpu, policy->cur, POWER_CPU_SCALE_START);
if (cpu_online(policy->cpu) && cpufreq_driver->target)
retval = cpufreq_driver->target(policy, target_freq, relation);
+ trace_cpu_scale(policy->cpu, target_freq, POWER_CPU_SCALE_DONE);
return retval;
}
diff --git a/include/trace/events/power.h b/include/trace/events/power.h
index be2325339768..63031aa5b6dd 100644
--- a/include/trace/events/power.h
+++ b/include/trace/events/power.h
@@ -47,6 +47,11 @@ enum {
POWER_CPU_DOWN_DONE,
};
+enum {
+ POWER_CPU_SCALE_START,
+ POWER_CPU_SCALE_DONE,
+};
+
#endif
TRACE_EVENT(cpu_hotplug,
@@ -70,6 +75,30 @@ TRACE_EVENT(cpu_hotplug,
(unsigned long)__entry->state)
);
+TRACE_EVENT(cpu_scale,
+
+ TP_PROTO(unsigned int cpu_id, unsigned int freq, int state),
+
+ TP_ARGS(cpu_id, freq, state),
+
+ TP_STRUCT__entry(
+ __field(u64, cpu_id)
+ __field(u32, freq)
+ __field(u32, state)
+ ),
+
+ TP_fast_assign(
+ __entry->cpu_id = cpu_id;
+ __entry->freq = freq;
+ __entry->state = state;
+ ),
+
+ TP_printk("cpu_id=%lu, freq=%lu, state=%lu",
+ (unsigned long)__entry->cpu_id,
+ (unsigned long)__entry->freq,
+ (unsigned long)__entry->state)
+);
+
DEFINE_EVENT(cpu, cpu_frequency,
TP_PROTO(unsigned int frequency, unsigned int cpu_id),