Skip to content

Commit

Permalink
tracing: Add traceoff_after_boot option
Browse files Browse the repository at this point in the history
Sometimes tracing is used to debug issues during the boot process. Since
the trace buffer has a limited amount of storage, it may be prudent to
disable tracing after the boot is finished, otherwise the critical
information may be overwritten.  With this option, the main tracing buffer
will be turned off at the end of the boot process.

Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Borislav Petkov <bp@alien8.de>
Link: https://lore.kernel.org/20250208103017.48a7ec83@batman.local.home
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
  • Loading branch information
Steven Rostedt committed Feb 25, 2025
1 parent d082ecb commit 937fbf1
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
9 changes: 9 additions & 0 deletions Documentation/admin-guide/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7279,6 +7279,15 @@
See also "Event triggers" in Documentation/trace/events.rst


traceoff_after_boot
[FTRACE] Sometimes tracing is used to debug issues
during the boot process. Since the trace buffer has a
limited amount of storage, it may be prudent to
disable tracing after the boot is finished, otherwise
the critical information may be overwritten. With this
option, the main tracing buffer will be turned off at
the end of the boot process.

traceoff_on_warning
[FTRACE] enable this option to disable tracing when a
warning is hit. This turns off "tracing_on". Tracing can
Expand Down
11 changes: 11 additions & 0 deletions kernel/trace/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ void __init disable_tracing_selftest(const char *reason)
static struct trace_iterator *tracepoint_print_iter;
int tracepoint_printk;
static bool tracepoint_printk_stop_on_boot __initdata;
static bool traceoff_after_boot __initdata;
static DEFINE_STATIC_KEY_FALSE(tracepoint_printk_key);

/* For tracers that don't implement custom flags */
Expand Down Expand Up @@ -330,6 +331,13 @@ static int __init set_tracepoint_printk_stop(char *str)
}
__setup("tp_printk_stop_on_boot", set_tracepoint_printk_stop);

static int __init set_traceoff_after_boot(char *str)
{
traceoff_after_boot = true;
return 1;
}
__setup("traceoff_after_boot", set_traceoff_after_boot);

unsigned long long ns2usecs(u64 nsec)
{
nsec += 500;
Expand Down Expand Up @@ -10704,6 +10712,9 @@ __init static int late_trace_init(void)
tracepoint_printk = 0;
}

if (traceoff_after_boot)
tracing_off();

tracing_set_default_clock();
clear_boot_tracer();
return 0;
Expand Down

0 comments on commit 937fbf1

Please sign in to comment.