From nobody Thu Apr 2 22:05:29 2026 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 E529F3FD15F for ; Thu, 26 Mar 2026 14:26:30 +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=1774535191; cv=none; b=hba8wYspFyADHKMLm6TMX8ciOvCz7ddN7wdF4JfawHT3/S7+UaJaVwWyc67Dog7WEXcxhsoBJHQSQfb0zStaLcrmnNp1AY5SiCWuyhpVTiEuZZw+t/qxaZu2mmpnunvquFkOxhQ8WwdUqmldGgJl72pkThWMBPA6ZWMF9okpLnQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774535191; c=relaxed/simple; bh=ZuX51W2Lsk9HrZx4hd75KNLceSH/hg0E/KRi2LT43dI=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=m/4fKkW2C+h9CJ16IZEZcor5R/aqhUcVU2u9787jBkEkcCzv+TLiVSZRvjGPY2LUb40MAaVJiVdgwnWCKTOzmHxNTPLUrMzpWqEoSJKE4EjhgcASOnA3ysE7E7AwwdhxkjTUGiuCb2KZeI1P0Njx4S1RTQdUMIfQG6UqAZgA/tM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uoNlxjDC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="uoNlxjDC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7A2A5C19423; Thu, 26 Mar 2026 14:26:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1774535190; bh=ZuX51W2Lsk9HrZx4hd75KNLceSH/hg0E/KRi2LT43dI=; h=Date:From:To:Cc:Subject:References:From; b=uoNlxjDCvVRx+rhwCzNXCzx7yCgJFzFAZQ2PZ3Lo7+7irpmNIBeR0N6DeajIWQh4O EKF4YyNnFCpA/YOwTm5UVGHklKhwZbEh1CFHI6cPv6bHsIfYR1ikowDgz6bKUgavw7 gJ9BtBYIsjttkQvWO6Z3q3EOLcLXoc1JM8DX78z3ovIGsQVEciXDc+KSoNbway0PN2 hsTwAoUbgWWmtyteGgRx8j6sgLcZV1pMjWRZg7PmvFLfrMr4fNaIKyGscPodztuCG+ r/BAKRCTiCjphmDq3suqKFMFHTTWiGcwPUWeQ5y5iqNngeCuopIWQGDnPVgOHsf7ij UTr/zgSKhsWGw== Received: from rostedt by gandalf with local (Exim 4.99.1) (envelope-from ) id 1w5lg5-0000000DuCv-0wuX; Thu, 26 Mar 2026 10:27:17 -0400 Message-ID: <20260326142717.093894148@kernel.org> User-Agent: quilt/0.69 Date: Thu, 26 Mar 2026 10:27:03 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Dmitry Ilvokhin , Ingo Molnar , Jens Axboe , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Marcelo Ricardo Leitner , Xin Long , Jon Maloy , Aaron Conole , Eelco Chaudron , Ilya Maximets , Jiri Pirko , Oded Gabbay , Koby Elbaz , "Rafael J. Wysocki" , Viresh Kumar , "Gautham R. Shenoy" , Huang Rui , Mario Limonciello , Len Brown , Srinivas Pandruvada , MyungJoo Ham , Kyungmin Park , Chanwoo Choi , =?UTF-8?q?Christian=20K=C3=B6nig?= , Sumit Semwal , Eddie James , Andrew Jeffery , Joel Stanley , David Airlie , Simona Vetter , Alex Deucher , Danilo Krummrich , Matthew Brost , Philipp Stanner , Harry Wentland , Leo Li , Jiri Kosina , Benjamin Tissoires , Wolfram Sang , Mark Brown , Michael Hennerich , =?UTF-8?q?Nuno=20S=C3=A1?= , "James E.J. Bottomley" , "Martin K. Petersen" , Chris Mason , David Sterba , Thomas Gleixner , SeongJae Park , Borislav Petkov , Dave Hansen , Peter Zijlstra , "Vineeth Pillai (Google)" Subject: [for-next][PATCH 07/13] tracepoint: Add trace_call__##name() API References: <20260326142656.794462952@kernel.org> 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="utf-8" Content-Transfer-Encoding: quoted-printable From: "Vineeth Pillai (Google)" Add trace_call__##name() as a companion to trace_##name(). When a caller already guards a tracepoint with an explicit enabled check: if (trace_foo_enabled() && cond) trace_foo(args); trace_foo() internally repeats the static_branch_unlikely() test, which the compiler cannot fold since static branches are patched binary instructions. This results in two static-branch evaluations for every guarded call site. trace_call__##name() calls __do_trace_##name() directly, skipping the redundant static-branch re-check. This avoids leaking the internal __do_trace_##name() symbol into call sites while still eliminating the double evaluation: if (trace_foo_enabled() && cond) trace_invoke_foo(args); /* calls __do_trace_foo() directly */ Three locations are updated: - __DECLARE_TRACE: invoke form omits static_branch_unlikely, retains the LOCKDEP RCU-watching assertion. - __DECLARE_TRACE_SYSCALL: same, plus retains might_fault(). - !TRACEPOINTS_ENABLED stub: empty no-op so callers compile cleanly when tracepoints are compiled out. Cc: Dmitry Ilvokhin Cc: Mathieu Desnoyers Cc: Ingo Molnar Cc: Jens Axboe Cc: "David S. Miller" Cc: Eric Dumazet Cc: Jakub Kicinski Cc: Paolo Abeni Cc: Alexei Starovoitov Cc: Daniel Borkmann Cc: Marcelo Ricardo Leitner Cc: Xin Long Cc: Jon Maloy Cc: Aaron Conole Cc: Eelco Chaudron Cc: Ilya Maximets Cc: Jiri Pirko Cc: Oded Gabbay Cc: Koby Elbaz Cc: "Rafael J. Wysocki" Cc: Viresh Kumar Cc: "Gautham R. Shenoy" Cc: Huang Rui Cc: Mario Limonciello Cc: Len Brown Cc: Srinivas Pandruvada Cc: MyungJoo Ham Cc: Kyungmin Park Cc: Chanwoo Choi Cc: Christian K=C3=B6nig Cc: Sumit Semwal Cc: Eddie James Cc: Andrew Jeffery Cc: Joel Stanley Cc: David Airlie Cc: Simona Vetter Cc: Alex Deucher Cc: Danilo Krummrich Cc: Matthew Brost Cc: Philipp Stanner Cc: Harry Wentland Cc: Leo Li Cc: Jiri Kosina Cc: Benjamin Tissoires Cc: Wolfram Sang Cc: Mark Brown Cc: Michael Hennerich Cc: Nuno S=C3=A1 Cc: "James E.J. Bottomley" Cc: "Martin K. Petersen" Cc: Chris Mason Cc: David Sterba Cc: Thomas Gleixner Cc: Andrew Morton Cc: SeongJae Park Cc: Borislav Petkov Cc: Dave Hansen Link: https://patch.msgid.link/20260323160052.17528-2-vineeth@bitbyteword.o= rg Suggested-by: Steven Rostedt Suggested-by: Peter Zijlstra Acked-by: Masami Hiramatsu (Google) Signed-off-by: Vineeth Pillai (Google) Assisted-by: Claude:claude-sonnet-4-6 Signed-off-by: Steven Rostedt (Google) --- include/linux/tracepoint.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h index 22ca1c8b54f3..ed969705341f 100644 --- a/include/linux/tracepoint.h +++ b/include/linux/tracepoint.h @@ -294,6 +294,10 @@ static inline struct tracepoint *tracepoint_ptr_deref(= tracepoint_ptr_t *p) WARN_ONCE(!rcu_is_watching(), \ "RCU not watching for tracepoint"); \ } \ + } \ + static inline void trace_call__##name(proto) \ + { \ + __do_trace_##name(args); \ } =20 #define __DECLARE_TRACE_SYSCALL(name, proto, args, data_proto) \ @@ -313,6 +317,11 @@ static inline struct tracepoint *tracepoint_ptr_deref(= tracepoint_ptr_t *p) WARN_ONCE(!rcu_is_watching(), \ "RCU not watching for tracepoint"); \ } \ + } \ + static inline void trace_call__##name(proto) \ + { \ + might_fault(); \ + __do_trace_##name(args); \ } =20 /* @@ -398,6 +407,8 @@ static inline struct tracepoint *tracepoint_ptr_deref(t= racepoint_ptr_t *p) #define __DECLARE_TRACE_COMMON(name, proto, args, data_proto) \ static inline void trace_##name(proto) \ { } \ + static inline void trace_call__##name(proto) \ + { } \ static inline int \ register_trace_##name(void (*probe)(data_proto), \ void *data) \ --=20 2.51.0