On Thu, Mar 12, 2026 at 11:13 AM Steven Rostedt <[email protected]> wrote: > > On Thu, 12 Mar 2026 11:04:56 -0400 > "Vineeth Pillai (Google)" <[email protected]> wrote: > > > Add trace_invoke_##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_invoke_##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. > > > > Suggested-by: Steven Rostedt <[email protected]> > > Suggested-by: Peter Zijlstra <[email protected]> > > Signed-off-by: Vineeth Pillai (Google) <[email protected]> > > Assisted-by: Claude:claude-sonnet-4-6 > > I'm guessing Claude helped with the other patches. Did it really help with > this one? >
Claude wrote and build tested the whole series based on my guidance and prompt :-). I verified the series before sending it out, but claude did the initial work. Thanks, Vineeth
