All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: [for-next][PATCH 11/20] tracing: Move ftrace_trace_stack() out of trace.c and into trace.h
Date: Sun, 08 Feb 2026 21:20:37 -0500	[thread overview]
Message-ID: <20260209022053.852007796@kernel.org> (raw)
In-Reply-To: 20260209022026.627895421@kernel.org

From: Steven Rostedt <rostedt@goodmis.org>

The file trace.c has become a catchall for most things tracing. Start
making it smaller by breaking out various aspects into their own files.

Make ftrace_trace_stack() into a static inline that tests if stack tracing
is enabled and if so to call __ftrace_trace_stack() to do the stack trace.
This keeps the test inlined in the fast paths and only does the function
call if stack tracing is enabled.

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>
Link: https://patch.msgid.link/20260208032449.974218132@kernel.org
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
 kernel/trace/trace.c | 45 ++++----------------------------------------
 kernel/trace/trace.h | 31 ++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 41 deletions(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 55cd0c774886..a515b5241391 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -1032,32 +1032,6 @@ static inline void trace_access_lock_init(void)
 
 #endif
 
-#ifdef CONFIG_STACKTRACE
-static void __ftrace_trace_stack(struct trace_array *tr,
-				 struct trace_buffer *buffer,
-				 unsigned int trace_ctx,
-				 int skip, struct pt_regs *regs);
-static inline void ftrace_trace_stack(struct trace_array *tr,
-				      struct trace_buffer *buffer,
-				      unsigned int trace_ctx,
-				      int skip, struct pt_regs *regs);
-
-#else
-static inline void __ftrace_trace_stack(struct trace_array *tr,
-					struct trace_buffer *buffer,
-					unsigned int trace_ctx,
-					int skip, struct pt_regs *regs)
-{
-}
-static inline void ftrace_trace_stack(struct trace_array *tr,
-				      struct trace_buffer *buffer,
-				      unsigned long trace_ctx,
-				      int skip, struct pt_regs *regs)
-{
-}
-
-#endif
-
 void tracer_tracing_on(struct trace_array *tr)
 {
 	if (tr->array_buffer.buffer)
@@ -2964,10 +2938,10 @@ struct ftrace_stacks {
 static DEFINE_PER_CPU(struct ftrace_stacks, ftrace_stacks);
 static DEFINE_PER_CPU(int, ftrace_stack_reserve);
 
-static void __ftrace_trace_stack(struct trace_array *tr,
-				 struct trace_buffer *buffer,
-				 unsigned int trace_ctx,
-				 int skip, struct pt_regs *regs)
+void __ftrace_trace_stack(struct trace_array *tr,
+			  struct trace_buffer *buffer,
+			  unsigned int trace_ctx,
+			  int skip, struct pt_regs *regs)
 {
 	struct ring_buffer_event *event;
 	unsigned int size, nr_entries;
@@ -3050,17 +3024,6 @@ static void __ftrace_trace_stack(struct trace_array *tr,
 	trace_clear_recursion(bit);
 }
 
-static inline void ftrace_trace_stack(struct trace_array *tr,
-				      struct trace_buffer *buffer,
-				      unsigned int trace_ctx,
-				      int skip, struct pt_regs *regs)
-{
-	if (!(tr->trace_flags & TRACE_ITER(STACKTRACE)))
-		return;
-
-	__ftrace_trace_stack(tr, buffer, trace_ctx, skip, regs);
-}
-
 void __trace_stack(struct trace_array *tr, unsigned int trace_ctx,
 		   int skip)
 {
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index c2beabe96952..605ee23f3262 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -2279,6 +2279,37 @@ static inline void sanitize_event_name(char *name)
 			*name = '_';
 }
 
+#ifdef CONFIG_STACKTRACE
+void __ftrace_trace_stack(struct trace_array *tr,
+			  struct trace_buffer *buffer,
+			  unsigned int trace_ctx,
+			  int skip, struct pt_regs *regs);
+
+static __always_inline void ftrace_trace_stack(struct trace_array *tr,
+					       struct trace_buffer *buffer,
+					       unsigned int trace_ctx,
+					       int skip, struct pt_regs *regs)
+{
+	if (!(tr->trace_flags & TRACE_ITER(STACKTRACE)))
+		return;
+
+	__ftrace_trace_stack(tr, buffer, trace_ctx, skip, regs);
+}
+#else
+static inline void __ftrace_trace_stack(struct trace_array *tr,
+					struct trace_buffer *buffer,
+					unsigned int trace_ctx,
+					int skip, struct pt_regs *regs)
+{
+}
+static inline void ftrace_trace_stack(struct trace_array *tr,
+				      struct trace_buffer *buffer,
+				      unsigned long trace_ctx,
+				      int skip, struct pt_regs *regs)
+{
+}
+#endif
+
 /*
  * This is a generic way to read and write a u64 value from a file in tracefs.
  *
-- 
2.51.0



  parent reply	other threads:[~2026-02-09  2:20 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-09  2:20 [for-next][PATCH 00/20] tracing: Updates for v6.20 Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 01/20] tracing: Add kerneldoc to trace_event_buffer_reserve() Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 02/20] tracing: Rename `eval_map_wq` and allow other parts of tracing use it Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 03/20] blktrace: Make init_blk_tracer() asynchronous Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 04/20] tracing/kprobes: Skip setup_boot_kprobe_events() when no cmdline event Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 05/20] tracing: Have all triggers expect a file parameter Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 06/20] tracing: Move tracing_set_filter_buffering() into trace_events_hist.c Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 07/20] tracing: Clean up use of trace_create_maxlat_file() Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 08/20] tracing: Make tracing_disabled global for tracing system Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 09/20] tracing: Make tracing_selftest_running global to the tracing subsystem Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 10/20] tracing: Move __trace_buffer_{un}lock_*() functions to trace.h Steven Rostedt
2026-02-09  2:20 ` Steven Rostedt [this message]
2026-02-09  2:20 ` [for-next][PATCH 12/20] tracing: Make printk_trace global for tracing system Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 13/20] tracing: Make tracing_update_buffers() take NULL for global_trace Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 14/20] tracing: Have trace_printk functions use flags instead of using global_trace Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 15/20] tracing: Use system_state in trace_printk_init_buffers() Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 16/20] tracing: Move trace_printk functions out of trace.c and into trace_printk.c Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 17/20] tracing: Move pid filtering into trace_pid.c Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 18/20] tracing: Rename trace_array field max_buffer to snapshot_buffer Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 19/20] tracing: Add tracer_uses_snapshot() helper to remove #ifdefs Steven Rostedt
2026-02-09  2:20 ` [for-next][PATCH 20/20] tracing: Better separate SNAPSHOT and MAX_TRACE options Steven Rostedt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260209022053.852007796@kernel.org \
    --to=rostedt@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhiramat@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.