All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	James Clark <james.clark@linaro.org>,
	Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Clark Williams <williams@redhat.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	Aaron Tomlin <atomlin@atomlin.com>
Subject: Re: [PATCHES v3 0/2] perf tools: Add cached probe type detection for evsel
Date: Wed, 17 Jun 2026 15:48:15 -0700	[thread overview]
Message-ID: <ajMkLzJpXzyeqQh4@google.com> (raw)
In-Reply-To: <20260616182546.8892-1-acme@kernel.org>

On Tue, Jun 16, 2026 at 03:25:44PM -0300, Arnaldo Carvalho de Melo wrote:
> Hi,
> 
> Checking whether an evsel is a kprobe or uprobe currently requires
> walking the PMU list via evsel__find_pmu() on every call.  This is
> wasteful when the same evsel is checked repeatedly in hot paths like
> trace__fprintf_tp_fields().
> 
> Patch 1 adds evsel__is_kprobe(), evsel__is_uprobe(), and
> evsel__is_probe() helpers that resolve the probe type on first call
> and cache the result in a 3-bit field that fits in existing struct
> padding.
> 
> Detection covers both PMU-based probes (kprobe/uprobe PMU, detected
> by PMU name) and ftrace-based dynamic probes (kprobes/uprobes/fprobes
> created via tracefs, which report as PMU "tracepoint").  Ftrace probes
> are detected by the __probe_ip field that the kernel adds to all
> dynamic probe formats — this is authoritative regardless of the
> group/system name the user chose.
> 
> Patch 2 is the first user: it guards the __probe_ip field name
> comparison in perf trace with evsel__is_probe(), so the strcmp is
> skipped entirely for the common case of non-probe tracepoint events.
> 
> Patch 3 adds inline stubs for evsel__field() and evsel__common_field()
> when libtraceevent is absent.  These were previously declared
> unconditionally but defined only inside #ifdef HAVE_LIBTRACEEVENT,
> which was harmless until patch 1 added a call from always-compiled
> code in evsel.c.
> 
> Build-tested with gcc and clang.
> 
> Changes in v3:
>   - Add patch 3: no-libtraceevent stubs for evsel__field() and
>     evsel__common_field().  Without this, NO_LIBTRACEEVENT=1 builds
>     fail to link because evsel__resolve_probe_type() calls
>     evsel__field() unconditionally (sashiko-bot).
> 
> Changes in v2 (patch 1 only):
>   - Detect ftrace-based dynamic probes (kprobes/uprobes/fprobes created
>     via tracefs) that report PMU "tracepoint" instead of "kprobe"/
>     "uprobe".  Check for the __probe_ip field presence in the tracepoint
>     format.  Without this, evsel__is_probe() returned false for ftrace
>     probes, breaking __probe_ip suppression in perf trace for probes
>     created via 'perf probe' (sashiko-bot).
>   - Widen probe_type bitfield from 2 to 3 bits for PROBE__FTRACE.
> 
> Arnaldo Carvalho de Melo (3):
>   perf evsel: Add lazy-initialized probe type detection helpers
>   perf trace: Guard __probe_ip suppression with evsel__is_probe()
>   perf evsel: Add no-libtraceevent stubs for evsel__field() and evsel__common_field()

It seems you squashed patch 3 into 1. :)

Thanks,
Namhyung

> 
>  tools/perf/builtin-trace.c |  2 +-
>  tools/perf/util/evsel.c    | 53 ++++++++++++++++++++++++++++++++++++++++++++++
>  tools/perf/util/evsel.h    | 19 +++++++++++++++++
>  3 files changed, 73 insertions(+), 1 deletion(-)
> 
> Cc: Aaron Tomlin <atomlin@atomlin.com>
> Cc: Ian Rogers <irogers@google.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> 
> Developed with AI assistance (Claude/sashiko), tagged in commits.

  parent reply	other threads:[~2026-06-17 22:48 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-16 18:25 [PATCHES v3 0/2] perf tools: Add cached probe type detection for evsel Arnaldo Carvalho de Melo
2026-06-16 18:25 ` [PATCH 1/2] perf evsel: Add lazy-initialized probe type detection helpers Arnaldo Carvalho de Melo
2026-06-16 18:40   ` sashiko-bot
2026-06-16 18:47     ` Arnaldo Carvalho de Melo
2026-06-16 18:25 ` [PATCH 2/2] perf trace: Guard __probe_ip suppression with evsel__is_probe() Arnaldo Carvalho de Melo
2026-06-17 22:48 ` Namhyung Kim [this message]
2026-06-17 22:59   ` [PATCHES v3 0/2] perf tools: Add cached probe type detection for evsel Arnaldo Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ajMkLzJpXzyeqQh4@google.com \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=atomlin@atomlin.com \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=williams@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.