[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250731101717.6c340b66@gandalf.local.home>
Date: Thu, 31 Jul 2025 10:17:17 -0400
From: Steven Rostedt <rostedt@...dmis.org>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: LKML <linux-kernel@...r.kernel.org>, Masami Hiramatsu
<mhiramat@...nel.org>, Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
Andrew Morton <akpm@...ux-foundation.org>, Mark Rutland
<mark.rutland@....com>, Arnd Bergmann <arnd@...db.de>, Nam Cao
<namcao@...utronix.de>, Ricardo Neri
<ricardo.neri-calderon@...ux.intel.com>, Yury Norov <yury.norov@...il.com>
Subject: [GIT PULL] tracing: Updates for v6.17
Linus,
tracing changes for 6.17
- Deprecate auto-mounting tracefs to /sys/kernel/debug/tracing
When tracefs was first introduced back in 2014, the directory
/sys/kernel/tracing was added and is the designated location to mount
tracefs. To keep backward compatibility, tracefs was auto-mounted in
/sys/kernel/debug/tracing as well.
All distros now mount tracefs on /sys/kernel/tracing. Having it seen in two
different locations has lead to various issues and inconsistencies.
The VFS folks have to also maintain debugfs_create_automount() for this
single user.
It's been over 10 years. Tooling and scripts should start replacing the
debugfs location with the tracefs one. The reason tracefs was created in the
first place was to allow access to the tracing facilities without the need
to configure debugfs into the kernel. Using tracefs should now be more
robust.
A new config is created: CONFIG_TRACEFS_AUTOMOUNT_DEPRECATED
which is default y, so that the kernel is still built with the automount.
This config allows those that want to remove the automount from debugfs to
do so.
When tracefs is accessed from /sys/kernel/debug/tracing, the following
printk is triggerd:
pr_warn("NOTICE: Automounting of tracing to debugfs is deprecated and will be removed in 2030\n");
This gives users another 5 years to fix their scripts.
- Use queue_rcu_work() instead of call_rcu() for freeing event filters
The number of filters to be free can be many depending on the number of
events within an event system. Freeing them from softirq context can
potentially cause undesired latency. Use the RCU workqueue to free them
instead.
- Remove pointless memory barriers in latency code
Memory barriers were added to some of the latency code a long time ago with
the idea of "making them visible", but that's not what memory barriers are
for. They are to synchronize access between different variables. There was
no synchronization here making them pointless.
- Remove "__attribute__()" from the type field of event format
When LLVM is used to compile the kernel with CONFIG_DEBUG_INFO_BTF=y and
PAHOLE_HAS_BTF_TAG=y, some of the format fields get expanded with the
following:
field:const char * filename; offset:24; size:8; signed:0;
Turns into:
field:const char __attribute__((btf_type_tag("user"))) * filename; offset:24; size:8; signed:0;
This confuses parsers. Add code to strip these tags from the strings.
- Add eprobe config option CONFIG_EPROBE_EVENTS
Eprobes were added back in 5.15 but were only enabled when another probe was
enabled (kprobe, fprobe, uprobe, etc). The eprobes had no config option
of their own. Add one as they should be a separate entity.
It's default y to keep with the old kernels but still has dependencies on
TRACING and HAVE_REGS_AND_STACK_ACCESS_API.
- Add eprobe documentation
When eprobes were added back in 5.15 no documentation was added to describe
them. This needs to be rectified.
- Replace open coded cpumask_next_wrap() in move_to_next_cpu()
- Have preemptirq_delay_run() use off-stack CPU mask
- Remove obsolete comment about pelt_cfs event
DECLARE_TRACE() appends "_tp" to trace events now, but the comment above
pelt_cfs still mentioned appending it manually.
- Remove EVENT_FILE_FL_SOFT_MODE flag
The SOFT_MODE flag was required when the soft enabling and disabling of
trace events was first introduced. But there was a bug with this approach
as it only worked for a single instance. When multiple users required soft
disabling and disabling the code was changed to have a ref count. The
SOFT_MODE flag is now set iff the ref count is non zero. This is redundant
and just reading the ref count is good enough.
- Fix typo in comment
Please pull the latest trace-v6.17 tree, which can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
trace-v6.17
Tag SHA1: 24e6f06fdcad116feaabae15bcff715b2ba16386
Head SHA1: 623526ba8984cafdffa0eba7ee424f2e40c8a219
Arnd Bergmann (1):
kernel: trace: preemptirq_delay_test: use offstack cpu mask
Masami Hiramatsu (Google) (1):
tracing: Remove "__attribute__()" from the type field of event format
Nam Cao (1):
tracing: Remove pointless memory barriers
Ricardo Neri (1):
tracing/sched: Remove obsolete comment on suffixes
Steven Rostedt (6):
tracing: Use queue_rcu_work() to free filters
tracing: Remove EVENT_FILE_FL_SOFT_MODE flag
tracing: Fix comment in trace_module_remove_events()
tracing: Deprecate auto-mounting tracefs in debugfs
tracing: Have eprobes have their own config option
Documentation: tracing: Add documentation about eprobes
Yury Norov (1):
tracing: Replace opencoded cpumask_next_wrap() in move_to_next_cpu()
----
.../ABI/obsolete/automount-tracefs-debugfs | 20 ++
Documentation/trace/eprobetrace.rst | 269 +++++++++++++++++++++
Documentation/trace/index.rst | 1 +
include/linux/trace_events.h | 3 -
include/trace/events/sched.h | 2 -
kernel/trace/Kconfig | 27 +++
kernel/trace/Makefile | 2 +-
kernel/trace/preemptirq_delay_test.c | 13 +-
kernel/trace/rv/rv.c | 6 -
kernel/trace/trace.c | 49 ++--
kernel/trace/trace.h | 4 +-
kernel/trace/trace_events.c | 154 +++++++++---
kernel/trace/trace_events_filter.c | 28 ++-
kernel/trace/trace_hwlat.c | 5 +-
14 files changed, 498 insertions(+), 85 deletions(-)
create mode 100644 Documentation/ABI/obsolete/automount-tracefs-debugfs
create mode 100644 Documentation/trace/eprobetrace.rst
---------------------------
Powered by blists - more mailing lists