PM: cpufreq: powernv/tracing: Move powernv_throttle trace event
authorSteven Rostedt <rostedt@goodmis.org>
Thu, 12 Jun 2025 14:53:11 +0000 (10:53 -0400)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Mon, 21 Jul 2025 20:40:56 +0000 (16:40 -0400)
As the trace event powernv_throttle is only used by the powernv code, move
it to a separate include file and have that code directly enable it.

Trace events can take up around 5K of memory when they are defined
regardless if they are used or not. It wastes memory to have them defined
in configurations where the tracepoint is not used.

Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/20250612145407.906308844@goodmis.org
Fixes: 0306e481d479a ("cpufreq: powernv/tracing: Add powernv_throttle tracepoint")
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
drivers/cpufreq/Makefile
drivers/cpufreq/powernv-cpufreq.c
drivers/cpufreq/powernv-trace.h [new file with mode: 0644]
include/trace/events/power.h
kernel/trace/power-traces.c

index d38526b8e06337a95ea1dfc74a888e8ba7683202..681d687b5a18e9d954a545b976dc1c43feb987d4 100644 (file)
@@ -21,6 +21,7 @@ obj-$(CONFIG_CPUFREQ_VIRT)            += virtual-cpufreq.o
 
 # Traces
 CFLAGS_amd-pstate-trace.o               := -I$(src)
+CFLAGS_powernv-cpufreq.o                := -I$(src)
 amd_pstate-y                           := amd-pstate.o amd-pstate-trace.o
 
 ##################################################################################
index a8943e2a93be6aa37cb0551f18628b202812d613..7d9a5f656de89d4a615d3c931e673d84468e7ed4 100644 (file)
@@ -21,7 +21,6 @@
 #include <linux/string_choices.h>
 #include <linux/cpu.h>
 #include <linux/hashtable.h>
-#include <trace/events/power.h>
 
 #include <asm/cputhreads.h>
 #include <asm/firmware.h>
@@ -30,6 +29,9 @@
 #include <asm/opal.h>
 #include <linux/timer.h>
 
+#define CREATE_TRACE_POINTS
+#include "powernv-trace.h"
+
 #define POWERNV_MAX_PSTATES_ORDER  8
 #define POWERNV_MAX_PSTATES    (1UL << (POWERNV_MAX_PSTATES_ORDER))
 #define PMSR_PSAFE_ENABLE      (1UL << 30)
diff --git a/drivers/cpufreq/powernv-trace.h b/drivers/cpufreq/powernv-trace.h
new file mode 100644 (file)
index 0000000..8cadb7c
--- /dev/null
@@ -0,0 +1,44 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#if !defined(_POWERNV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _POWERNV_TRACE_H
+
+#include <linux/cpufreq.h>
+#include <linux/tracepoint.h>
+#include <linux/trace_events.h>
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM power
+
+TRACE_EVENT(powernv_throttle,
+
+       TP_PROTO(int chip_id, const char *reason, int pmax),
+
+       TP_ARGS(chip_id, reason, pmax),
+
+       TP_STRUCT__entry(
+               __field(int, chip_id)
+               __string(reason, reason)
+               __field(int, pmax)
+       ),
+
+       TP_fast_assign(
+               __entry->chip_id = chip_id;
+               __assign_str(reason);
+               __entry->pmax = pmax;
+       ),
+
+       TP_printk("Chip %d Pmax %d %s", __entry->chip_id,
+                 __entry->pmax, __get_str(reason))
+);
+
+#endif /* _POWERNV_TRACE_H */
+
+/* This part must be outside protection */
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH .
+
+#undef TRACE_INCLUDE_FILE
+#define TRACE_INCLUDE_FILE powernv-trace
+
+#include <trace/define_trace.h>
index 6c631eec23e32b0f68085e6457612025be2d553a..913181cebfe9abd8128573388de58f2f08be22cf 100644 (file)
@@ -99,28 +99,6 @@ DEFINE_EVENT(psci_domain_idle, psci_domain_idle_exit,
        TP_ARGS(cpu_id, state, s2idle)
 );
 
-TRACE_EVENT(powernv_throttle,
-
-       TP_PROTO(int chip_id, const char *reason, int pmax),
-
-       TP_ARGS(chip_id, reason, pmax),
-
-       TP_STRUCT__entry(
-               __field(int, chip_id)
-               __string(reason, reason)
-               __field(int, pmax)
-       ),
-
-       TP_fast_assign(
-               __entry->chip_id = chip_id;
-               __assign_str(reason);
-               __entry->pmax = pmax;
-       ),
-
-       TP_printk("Chip %d Pmax %d %s", __entry->chip_id,
-                 __entry->pmax, __get_str(reason))
-);
-
 TRACE_EVENT(pstate_sample,
 
        TP_PROTO(u32 core_busy,
index 21bb161c231698aff56c96d5d5908da1ef3af97d..f2fe33573e544a73adb458ffed53e93079e4f0cb 100644 (file)
@@ -17,5 +17,4 @@
 EXPORT_TRACEPOINT_SYMBOL_GPL(suspend_resume);
 EXPORT_TRACEPOINT_SYMBOL_GPL(cpu_idle);
 EXPORT_TRACEPOINT_SYMBOL_GPL(cpu_frequency);
-EXPORT_TRACEPOINT_SYMBOL_GPL(powernv_throttle);