summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/cpuidle/governors/menu.c4
-rw-r--r--include/trace/events/idle.h29
2 files changed, 33 insertions, 0 deletions
diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
index cbbb73b37a6d..1657658c5e22 100644
--- a/drivers/cpuidle/governors/menu.c
+++ b/drivers/cpuidle/governors/menu.c
@@ -21,6 +21,9 @@
#include <linux/math64.h>
#include <linux/module.h>
+#define CREATE_TRACE_POINTS
+#include <trace/events/idle.h>
+
#define BUCKETS 12
#define INTERVALS 8
#define RESOLUTION 1024
@@ -297,6 +300,7 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
data->predicted_us = div_round64(data->expected_us * data->correction_factor[data->bucket],
RESOLUTION * DECAY);
+ trace_idle_entry(data->predicted_us);
get_typical_interval(data);
/*
diff --git a/include/trace/events/idle.h b/include/trace/events/idle.h
new file mode 100644
index 000000000000..e5381d207bf9
--- /dev/null
+++ b/include/trace/events/idle.h
@@ -0,0 +1,29 @@
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM idle
+
+#if !defined(_TRACE_IDLE_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_IDLE_H
+
+#include <linux/tracepoint.h>
+
+TRACE_EVENT(idle_entry,
+
+ TP_PROTO(u64 predicted_residency),
+
+ TP_ARGS(predicted_residency),
+
+ TP_STRUCT__entry(
+ __field( u64, predicted_residency)
+ ),
+
+ TP_fast_assign(
+ __entry->predicted_residency = predicted_residency;
+ ),
+
+ TP_printk("predicted_residency=%lld", __entry->predicted_residency)
+);
+
+#endif /* _TRACE_IDLE_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>