summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukasz Luba2019-02-18 19:21:08 +0100
committerMyungJoo Ham2019-04-16 02:29:18 +0200
commit1be0730f1dcd2971db4d2fe5497a20f438b837a7 (patch)
treeef19a9f0a43966da893b592060fa82da1deb6cb5
parentPM / devfreq: rk3399_dmc: Pass ODT and auto power down parameters to TF-A. (diff)
downloadkernel-qcow2-linux-1be0730f1dcd2971db4d2fe5497a20f438b837a7.tar.gz
kernel-qcow2-linux-1be0730f1dcd2971db4d2fe5497a20f438b837a7.tar.xz
kernel-qcow2-linux-1be0730f1dcd2971db4d2fe5497a20f438b837a7.zip
trace: events: add devfreq trace event file
The patch adds a new file for with trace events for devfreq framework. They are used for performance analysis of the framework. It also contains updates in MAINTAINERS file adding new entry for devfreq maintainers. Signed-off-by: Lukasz Luba <l.luba@partner.samsung.com> Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
-rw-r--r--MAINTAINERS1
-rw-r--r--include/trace/events/devfreq.h40
2 files changed, 41 insertions, 0 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 3671fdea5010..27ed10966c81 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4552,6 +4552,7 @@ S: Maintained
F: drivers/devfreq/
F: include/linux/devfreq.h
F: Documentation/devicetree/bindings/devfreq/
+F: include/trace/events/devfreq.h
DEVICE FREQUENCY EVENT (DEVFREQ-EVENT)
M: Chanwoo Choi <cw00.choi@samsung.com>
diff --git a/include/trace/events/devfreq.h b/include/trace/events/devfreq.h
new file mode 100644
index 000000000000..cf5b8772175d
--- /dev/null
+++ b/include/trace/events/devfreq.h
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM devfreq
+
+#if !defined(_TRACE_DEVFREQ_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_DEVFREQ_H
+
+#include <linux/devfreq.h>
+#include <linux/tracepoint.h>
+
+TRACE_EVENT(devfreq_monitor,
+ TP_PROTO(struct devfreq *devfreq),
+
+ TP_ARGS(devfreq),
+
+ TP_STRUCT__entry(
+ __field(unsigned long, freq)
+ __field(unsigned long, busy_time)
+ __field(unsigned long, total_time)
+ __field(unsigned int, polling_ms)
+ __string(dev_name, dev_name(&devfreq->dev))
+ ),
+
+ TP_fast_assign(
+ __entry->freq = devfreq->previous_freq;
+ __entry->busy_time = devfreq->last_status.busy_time;
+ __entry->total_time = devfreq->last_status.total_time;
+ __entry->polling_ms = devfreq->profile->polling_ms;
+ __assign_str(dev_name, dev_name(&devfreq->dev));
+ ),
+
+ TP_printk("dev_name=%s freq=%lu polling_ms=%u load=%lu",
+ __get_str(dev_name), __entry->freq, __entry->polling_ms,
+ __entry->total_time == 0 ? 0 :
+ (100 * __entry->busy_time) / __entry->total_time)
+);
+#endif /* _TRACE_DEVFREQ_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>