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 08/20] tracing: Make tracing_disabled global for tracing system
Date: Sun, 08 Feb 2026 21:20:34 -0500 [thread overview]
Message-ID: <20260209022053.368331001@kernel.org> (raw)
In-Reply-To: 20260209022026.627895421@kernel.org
From: Steven Rostedt <rostedt@goodmis.org>
The tracing_disabled variable is set to one on boot up to prevent some
parts of tracing to access the tracing infrastructure before it is set up.
It also can be set after boot if an anomaly is discovered.
It is currently a static variable in trace.c and can be accessed via a
function call trace_is_disabled(). There's really no reason to use a
function call as the tracing subsystem should be able to access it
directly.
By making the variable accessed directly, code can be moved out of trace.c
without adding overhead of a function call to see if tracing is disabled
or not.
Make tracing_disabled global and remove the tracing_is_disabled() helper
function. Also add some "unlikely()"s around tracing_disabled where it's
checked in hot paths.
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.483690153@kernel.org
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
kernel/trace/trace.c | 13 ++++---------
kernel/trace/trace.h | 3 ++-
kernel/trace/trace_events.c | 2 +-
kernel/trace/trace_kprobe.c | 2 +-
4 files changed, 8 insertions(+), 12 deletions(-)
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index d02c4004c718..1ff40c88e75c 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -114,7 +114,7 @@ DEFINE_PER_CPU(bool, trace_taskinfo_save);
* of the tracer is successful. But that is the only place that sets
* this back to zero.
*/
-static int tracing_disabled = 1;
+int tracing_disabled = 1;
cpumask_var_t __read_mostly tracing_buffer_mask;
@@ -3423,7 +3423,7 @@ int __trace_array_vprintk(struct trace_buffer *buffer,
unsigned int trace_ctx;
char *tbuffer;
- if (tracing_disabled)
+ if (unlikely(tracing_disabled))
return 0;
/* Don't pollute graph traces with trace_vprintk internals */
@@ -4765,11 +4765,6 @@ int tracing_open_generic(struct inode *inode, struct file *filp)
return 0;
}
-bool tracing_is_disabled(void)
-{
- return (tracing_disabled) ? true: false;
-}
-
/*
* Open and update trace_array ref count.
* Must have the current trace_array passed to it.
@@ -7609,7 +7604,7 @@ tracing_mark_write(struct file *filp, const char __user *ubuf,
unsigned long ip;
char *buf;
- if (tracing_disabled)
+ if (unlikely(tracing_disabled))
return -EINVAL;
if (!(tr->trace_flags & TRACE_ITER(MARKERS)))
@@ -7689,7 +7684,7 @@ tracing_mark_raw_write(struct file *filp, const char __user *ubuf,
ssize_t written = -ENODEV;
char *buf;
- if (tracing_disabled)
+ if (unlikely(tracing_disabled))
return -EINVAL;
if (!(tr->trace_flags & TRACE_ITER(MARKERS)))
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 31fb137e1c66..433705bef480 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -657,6 +657,8 @@ trace_buffer_iter(struct trace_iterator *iter, int cpu)
return iter->buffer_iter ? iter->buffer_iter[cpu] : NULL;
}
+extern int tracing_disabled;
+
int tracer_init(struct tracer *t, struct trace_array *tr);
int tracing_is_enabled(void);
void tracing_reset_online_cpus(struct array_buffer *buf);
@@ -668,7 +670,6 @@ int tracing_release_generic_tr(struct inode *inode, struct file *file);
int tracing_open_file_tr(struct inode *inode, struct file *filp);
int tracing_release_file_tr(struct inode *inode, struct file *filp);
int tracing_single_release_file_tr(struct inode *inode, struct file *filp);
-bool tracing_is_disabled(void);
bool tracer_tracing_is_on(struct trace_array *tr);
void tracer_tracing_on(struct trace_array *tr);
void tracer_tracing_off(struct trace_array *tr);
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index af6d1fe5cab7..61fe01dce7a6 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -2268,7 +2268,7 @@ static int subsystem_open(struct inode *inode, struct file *filp)
struct event_subsystem *system = NULL;
int ret;
- if (tracing_is_disabled())
+ if (unlikely(tracing_disabled))
return -ENODEV;
/* Make sure the system still exists */
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 89d2740f7bb5..061658518605 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -2083,7 +2083,7 @@ static __init int kprobe_trace_self_tests_init(void)
struct trace_kprobe *tk;
struct trace_event_file *file;
- if (tracing_is_disabled())
+ if (unlikely(tracing_disabled))
return -ENODEV;
if (tracing_selftest_disabled)
--
2.51.0
next prev 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 ` Steven Rostedt [this message]
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 ` [for-next][PATCH 11/20] tracing: Move ftrace_trace_stack() out of trace.c and into trace.h Steven Rostedt
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.368331001@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox