From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DD20B184 for ; Mon, 20 Jan 2025 00:29:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737332944; cv=none; b=n1h4l/SgjhgrYTiNIznCWfUx6wE/ogcIMA7xscEdmNbEzxSAxnOzsaJiLBAq7oNoyXTh4UzjZEWqvjfZaUNzPs49QIwxHCUjQZjg+tvZPiWFoFbfCC4QSivmQ/U1RPYU+QRy0qPVgol62EWMaIdUNl5Yqn2WdU4jgQw+/c9H7GM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737332944; c=relaxed/simple; bh=O2nIVJhOiGw/X9xfGwFzFRS8qiGGZdEwW2oIxrJQb6g=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type; b=KY0d9mNt6HQoxAwAI3yd5VeFuYHNBr89U551qoJqUh6fzrF8AjUo4+EySuzJL97Xw4aFTkwyq1U1yY2vSo1x9svR/N4Z1MdaQUacJivcfUXIT/0/PbzyIEMEq3dTwFNPJGDpHwEeWSfyiNwsxFKyEztgVntzjBzwtNs+n4lYycs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id A3263C4CED6; Mon, 20 Jan 2025 00:29:03 +0000 (UTC) Date: Sun, 19 Jan 2025 19:29:02 -0500 From: Steven Rostedt To: Linus Torvalds Cc: LKML , Masami Hiramatsu , Mathieu Desnoyers , Alice Ryhl Subject: [GIT PULL] tracing: Updates for v6.14 Message-ID: <20250119192902.576eda90@gandalf.local.home> X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Linus, tracing updates for v6.14: - Cleanup with guard() and free() helpers There were several places in the code that had a lot of "goto out" in the error paths to either unlock a lock or free some memory that was allocated. But this is error prone. Convert the code over to use the guard() and free() helpers that let the compiler unlock locks or free memory when the function exits. - Update the Rust tracepoint code to use the C code too There was some duplication of the tracepoint code for Rust that did the same logic as the C code. Add a helper that makes it possible for both algorithms to use the same logic in one place. - Add poll to trace event hist files It is useful to know when an event is triggered, or even with some filtering. Since hist files of events get updated when active and the event is triggered, allow applications to poll the hist file and wake up when an event is triggered. This will let the application know that the event it is waiting for happened. - Add :mod: command to enable events for current or future modules The function tracer already has a way to enable functions to be traced in modules by writing ":mod:" into set_ftrace_filter. That will enable either all the functions for the module if it is loaded, or if it is not, it will cache that command, and when the module is loaded that matches , its functions will be enabled. This also allows init functions to be traced. But currently events do not have that feature. Add the command where if ':mod:' is written into set_event, then either all the modules events are enabled if it is loaded, or cache it so that the module's events are enabled when it is loaded. This also works from the kernel command line, where "trace_event=:mod:", when the module is loaded at boot up, its events will be enabled then. Please pull the latest trace-v6.14 tree, which can be found at: git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git trace-v6.14 Tag SHA1: 5a6f4c61533ca7dd9479a01b3bb06b929ff99131 Head SHA1: 542079b4b12e89f82c8a689b6e9b119ab7d52018 Alice Ryhl (1): tracepoint: Reduce duplication of __DO_TRACE_CALL Masami Hiramatsu (Google) (3): tracing/hist: Add poll(POLLIN) support on hist file tracing/hist: Support POLLPRI event for poll on histogram selftests/tracing: Add hist poll() support test Steven Rostedt (18): tracing: Switch trace.c code over to use guard() tracing: Return -EINVAL if a boot tracer tries to enable the mmiotracer at boot tracing: Have event_enable_write() just return error on error tracing: Simplify event_enable_func() goto out_free logic tracing: Simplify event_enable_func() goto_reg logic tracing: Switch trace_events.c code over to use guard() tracing: Switch trace_events_hist.c code over to use guard() tracing: Switch trace_events_trigger.c code over to use guard() tracing: Switch trace_events_filter.c code over to use guard() tracing: Switch trace_events_synth.c code over to use guard() tracing: Switch trace_osnoise.c code over to use guard() and __free() tracing: Switch trace_stack.c code over to use guard() tracing: Switch trace_stat.c code over to use guard() tracing/string: Create and use __free(argv_free) in trace_dynevent.c tracing: Fix using ret variable in tracing_set_tracer() tracing: Add :mod: command to enabled module events tracing: Cache ":mod:" events for modules not loaded yet selftests/ftrace: Add test that tests event :mod: commands ---- Documentation/admin-guide/kernel-parameters.txt | 8 + Documentation/trace/events.rst | 24 ++ include/linux/string.h | 3 + include/linux/trace_events.h | 14 + include/linux/tracepoint.h | 20 +- kernel/trace/ftrace.c | 17 - kernel/trace/trace.c | 297 ++++++------- kernel/trace/trace.h | 12 + kernel/trace/trace_dynevent.c | 23 +- kernel/trace/trace_events.c | 465 ++++++++++++++++----- kernel/trace/trace_events_filter.c | 23 +- kernel/trace/trace_events_hist.c | 119 +++++- kernel/trace/trace_events_synth.c | 17 +- kernel/trace/trace_events_trigger.c | 67 +-- kernel/trace/trace_osnoise.c | 40 +- kernel/trace/trace_stack.c | 6 +- kernel/trace/trace_stat.c | 26 +- tools/testing/selftests/ftrace/Makefile | 2 + tools/testing/selftests/ftrace/poll.c | 74 ++++ .../selftests/ftrace/test.d/event/event-mod.tc | 191 +++++++++ .../ftrace/test.d/trigger/trigger-hist-poll.tc | 74 ++++ 21 files changed, 1047 insertions(+), 475 deletions(-) create mode 100644 tools/testing/selftests/ftrace/poll.c create mode 100644 tools/testing/selftests/ftrace/test.d/event/event-mod.tc create mode 100644 tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-poll.tc ---------------------------