The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Ian Rogers <irogers@google.com>
To: irogers@google.com, acme@kernel.org
Cc: adrian.hunter@intel.com, ajones@ventanamicro.com,
	ak@linux.intel.com,  alex@ghiti.fr,
	alexander.shishkin@linux.intel.com, anup@brainfault.org,
	 aou@eecs.berkeley.edu, atrajeev@linux.ibm.com,
	blakejones@google.com,  ctshao@google.com,
	dapeng1.mi@linux.intel.com, derek.foreman@collabora.com,
	 dvyukov@google.com, howardchu95@gmail.com,
	hrishikesh123s@gmail.com,  james.clark@linaro.org,
	jolsa@kernel.org, krzysztof.m.lopatowski@gmail.com,
	 leo.yan@arm.com, linux-kernel@vger.kernel.org,
	 linux-perf-users@vger.kernel.org, linux@treblig.org,
	mingo@redhat.com,  namhyung@kernel.org, nichen@iscas.ac.cn,
	palmer@dabbelt.com,  peterz@infradead.org, pjw@kernel.org,
	ravi.bangoria@amd.com,  swapnil.sapkal@amd.com, tanze@kylinos.cn,
	thomas.falcon@intel.com,  tianyou.li@intel.com,
	yujie.liu@intel.com, zhouquan@iscas.ac.cn
Subject: [PATCH v13 00/32] perf tool: Add evsel to perf_sample
Date: Tue, 12 May 2026 15:29:29 -0700	[thread overview]
Message-ID: <20260512223001.2952848-1-irogers@google.com> (raw)
In-Reply-To: <20260413041143.1736055-1-irogers@google.com>

Nearly all perf code ends up passing an evsel with the perf_sample,
which is problematic if you want to rewrite the evsel such as with
off-CPU processing - all uses of the evsel need fixing up. Previously
I'd mailed this patch as an RFC with everything combined:
https://lore.kernel.org/lkml/20260126071822.447368-1-irogers@google.com/
and there was a request to break it up.

v13: Rebase removing patches merged by Namhyung. Namhyung proposed
     changes that are in this series, but we became diverged. Address
     some minor Sashiko issues.

v12: Add missing byteswap for tracepoint rawptr for dynamic
     offsets. Avoid some unsigned <0 compiler warnings.
https://lore.kernel.org/linux-perf-users/20260413041143.1736055-1-irogers@google.com/

v11: Separate any remaining error path or other fixes out of
     refactoring the evsel into sample. Incorporate Sashiko
     feedback. Improve bounds checking for tracepoint data in
     samples. Incorporate changes from Namhyung.
https://lore.kernel.org/lkml/20260413012227.1089445-1-irogers@google.com/

v10: Changes to some of the bounds checks as prompted by Sashiko.
https://lore.kernel.org/linux-perf-users/20260412020833.641177-1-irogers@google.com/

v9: Clean up some error path nits caught by Sashiko and simple bound
    checks Sashiko recommended.
https://lore.kernel.org/linux-perf-users/20260411191710.524998-1-irogers@google.com/

v8: Fix address sanitizer issues with kwork and move patches, along
    with bound check additions, to end of series.
https://lore.kernel.org/linux-perf-users/20260411065718.372240-1-irogers@google.com/

v7: Separate out kwork work->name to a strdup into its own patch, now patch 4.
https://lore.kernel.org/linux-perf-users/20260408072601.210837-1-irogers@google.com/

v6: Address more Sashiko feedback.
https://lore.kernel.org/lkml/20260404034325.3172592-1-irogers@google.com/

v5: Address feedback from Sashiko and Namhyung.
https://lore.kernel.org/lkml/20260403204017.2919994-1-irogers@google.com/

v4: Fix more sashiko issues: bounds checks, memory safety, making
    refactors better, inconsistent evsels, mmap2 buildid injection
    choice of evsel, mismatched function arguments.
https://sashiko.dev/#/patchset/20260320080835.724836-1-irogers%40google.com
https://lore.kernel.org/lkml/20260320192627.368357-1-irogers@google.com/

v3: Fix various sashiko review comments particularly about unintended
    behavior changes.
https://lore.kernel.org/lkml/20260320080835.724836-1-irogers@google.com/

v2: Add review feedback on the first 2 patches from Namhyung, fix a
    missed evsel assignment running event2evsel in builtin-inject.
https://lore.kernel.org/lkml/20260319232334.287517-1-irogers@google.com/

v1: https://lore.kernel.org/lkml/20260209174032.4142096-1-irogers@google.com/

Ian Rogers (32):
  perf tool: Remove evsel from tool APIs that pass the sample
  perf kvm: Don't pass evsel with sample
  perf evsel: Refactor evsel tracepoint sample accessors perf_sample
  perf trace: Don't pass evsel with sample
  perf callchain: Don't pass evsel and sample
  perf lock: Only pass sample to handlers
  perf hist: Remove evsel parameter from inc samples functions
  perf db-export: Remove evsel from struct export_sample
  perf hist: Remove evsel from struct hist_entry_iter
  perf report: Directly use sample->evsel to avoid computing from
    sample->id
  perf annotate: Don't pass evsel to add_sample
  perf inject: Don't pass evsel with sample
  perf kmem: Don't pass evsel with sample
  perf kwork: Don't pass evsel with sample
  perf sched: Don't pass evsel with sample
  perf timechart: Don't pass evsel with sample
  perf trace: Don't pass evsel with sample
  perf evlist: Try to avoid computing evsel from sample
  perf script: Don't pass evsel with sample
  perf s390-sample-raw: Don't pass evsel or its PMU with sample
  perf evsel: Don't pass evsel with sample
  perf lock: Constify trace_lock_handler variables
  perf lock: Avoid segv if event is missing a callchain
  perf timechart: Fix memory leaks
  perf kmem: Fix memory leaks on error path and when skipping
  perf synthetic-events: Bound check when synthesizing mmap2 and
    build_id events
  perf kmem: Add bounds checks to tracepoint read values
  perf sched: Bounds check CPU in sched switch events
  perf timechart: Bounds check CPU
  perf evsel: Add bounds checking to trace point raw data accessors
  perf kwork: Fix address sanitizer issues
  perf kwork: Fix memory management of kwork_work

 tools/perf/builtin-annotate.c                 |  28 +-
 tools/perf/builtin-c2c.c                      |   6 +-
 tools/perf/builtin-diff.c                     |   5 +-
 tools/perf/builtin-inject.c                   |  75 +++---
 tools/perf/builtin-kmem.c                     |  95 ++++---
 tools/perf/builtin-kvm.c                      |  22 +-
 tools/perf/builtin-kwork.c                    | 253 +++++++++++-------
 tools/perf/builtin-lock.c                     | 128 +++++----
 tools/perf/builtin-mem.c                      |   1 -
 tools/perf/builtin-record.c                   |   3 +-
 tools/perf/builtin-report.c                   |  38 ++-
 tools/perf/builtin-sched.c                    | 198 +++++++-------
 tools/perf/builtin-script.c                   |  22 +-
 tools/perf/builtin-timechart.c                | 170 +++++++-----
 tools/perf/builtin-top.c                      |  19 +-
 tools/perf/builtin-trace.c                    | 121 +++++----
 tools/perf/tests/hists_cumulate.c             |   1 -
 tools/perf/tests/hists_filter.c               |   1 -
 tools/perf/tests/hists_output.c               |   1 -
 tools/perf/tests/mmap-basic.c                 |   4 +-
 tools/perf/tests/openat-syscall-tp-fields.c   |   2 +-
 tools/perf/tests/switch-tracking.c            |   9 +-
 tools/perf/util/annotate.c                    |  19 +-
 tools/perf/util/annotate.h                    |   6 +-
 tools/perf/util/bpf_kwork.c                   |  14 +-
 tools/perf/util/build-id.c                    |   3 +-
 tools/perf/util/build-id.h                    |   7 +-
 tools/perf/util/callchain.c                   |   8 +-
 tools/perf/util/callchain.h                   |   6 +-
 tools/perf/util/data-convert-bt.c             |   2 +-
 tools/perf/util/data-convert-json.c           |   5 +-
 tools/perf/util/db-export.c                   |  13 +-
 tools/perf/util/db-export.h                   |   3 +-
 tools/perf/util/evsel.c                       | 137 +++++++---
 tools/perf/util/evsel.h                       |  12 +-
 tools/perf/util/hist.c                        |  26 +-
 tools/perf/util/hist.h                        |   3 +-
 tools/perf/util/intel-pt.c                    |   2 +-
 tools/perf/util/intel-tpebs.c                 |   3 +-
 tools/perf/util/jitdump.c                     |   2 +-
 .../perf/util/kvm-stat-arch/kvm-stat-arm64.c  |  19 +-
 .../util/kvm-stat-arch/kvm-stat-loongarch.c   |  17 +-
 .../util/kvm-stat-arch/kvm-stat-powerpc.c     |  17 +-
 .../perf/util/kvm-stat-arch/kvm-stat-riscv.c  |  17 +-
 tools/perf/util/kvm-stat-arch/kvm-stat-s390.c |  20 +-
 tools/perf/util/kvm-stat-arch/kvm-stat-x86.c  |  70 ++---
 tools/perf/util/kvm-stat.c                    |  19 +-
 tools/perf/util/kvm-stat.h                    |  18 +-
 tools/perf/util/kwork.h                       |  11 +-
 tools/perf/util/machine.c                     |  14 +-
 tools/perf/util/machine.h                     |   3 -
 tools/perf/util/s390-sample-raw.c             |  31 ++-
 .../util/scripting-engines/trace-event-perl.c |  23 +-
 .../scripting-engines/trace-event-python.c    |  47 ++--
 tools/perf/util/session.c                     |  38 +--
 tools/perf/util/synthetic-events.c            |  49 ++--
 tools/perf/util/synthetic-events.h            |   2 -
 tools/perf/util/tool.c                        |   4 +-
 tools/perf/util/tool.h                        |   4 +-
 tools/perf/util/trace-event-scripting.c       |   5 +-
 tools/perf/util/trace-event.h                 |   3 -
 61 files changed, 991 insertions(+), 913 deletions(-)

-- 
2.54.0.563.g4f69b47b94-goog


       reply	other threads:[~2026-05-12 22:30 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260413041143.1736055-1-irogers@google.com>
2026-05-12 22:29 ` Ian Rogers [this message]
2026-05-12 22:29   ` [PATCH v13 01/32] perf tool: Remove evsel from tool APIs that pass the sample Ian Rogers
2026-05-12 22:29   ` [PATCH v13 02/32] perf kvm: Don't pass evsel with sample Ian Rogers
2026-05-12 22:29   ` [PATCH v13 03/32] perf evsel: Refactor evsel tracepoint sample accessors perf_sample Ian Rogers
2026-05-12 22:29   ` [PATCH v13 04/32] perf trace: Don't pass evsel with sample Ian Rogers
2026-05-12 22:29   ` [PATCH v13 05/32] perf callchain: Don't pass evsel and sample Ian Rogers
2026-05-12 22:29   ` [PATCH v13 06/32] perf lock: Only pass sample to handlers Ian Rogers
2026-05-12 22:29   ` [PATCH v13 07/32] perf hist: Remove evsel parameter from inc samples functions Ian Rogers
2026-05-12 22:29   ` [PATCH v13 08/32] perf db-export: Remove evsel from struct export_sample Ian Rogers
2026-05-12 22:29   ` [PATCH v13 09/32] perf hist: Remove evsel from struct hist_entry_iter Ian Rogers
2026-05-12 22:29   ` [PATCH v13 10/32] perf report: Directly use sample->evsel to avoid computing from sample->id Ian Rogers
2026-05-12 22:29   ` [PATCH v13 11/32] perf annotate: Don't pass evsel to add_sample Ian Rogers
2026-05-12 22:29   ` [PATCH v13 12/32] perf inject: Don't pass evsel with sample Ian Rogers
2026-05-12 22:29   ` [PATCH v13 13/32] perf kmem: " Ian Rogers
2026-05-12 22:29   ` [PATCH v13 14/32] perf kwork: " Ian Rogers
2026-05-12 22:29   ` [PATCH v13 15/32] perf sched: " Ian Rogers
2026-05-12 22:29   ` [PATCH v13 16/32] perf timechart: " Ian Rogers
2026-05-12 22:29   ` [PATCH v13 17/32] perf trace: " Ian Rogers
2026-05-12 22:29   ` [PATCH v13 18/32] perf evlist: Try to avoid computing evsel from sample Ian Rogers
2026-05-12 22:29   ` [PATCH v13 19/32] perf script: Don't pass evsel with sample Ian Rogers
2026-05-12 22:29   ` [PATCH v13 20/32] perf s390-sample-raw: Don't pass evsel or its PMU " Ian Rogers
2026-05-12 22:29   ` [PATCH v13 21/32] perf evsel: Don't pass evsel " Ian Rogers
2026-05-12 22:29   ` [PATCH v13 22/32] perf lock: Constify trace_lock_handler variables Ian Rogers
2026-05-12 22:29   ` [PATCH v13 23/32] perf lock: Avoid segv if event is missing a callchain Ian Rogers
2026-05-12 22:29   ` [PATCH v13 24/32] perf timechart: Fix memory leaks Ian Rogers
2026-05-12 22:29   ` [PATCH v13 25/32] perf kmem: Fix memory leaks on error path and when skipping Ian Rogers
2026-05-12 22:29   ` [PATCH v13 26/32] perf synthetic-events: Bound check when synthesizing mmap2 and build_id events Ian Rogers
2026-05-12 22:29   ` [PATCH v13 27/32] perf kmem: Add bounds checks to tracepoint read values Ian Rogers
2026-05-12 22:29   ` [PATCH v13 28/32] perf sched: Bounds check CPU in sched switch events Ian Rogers
2026-05-12 22:29   ` [PATCH v13 29/32] perf timechart: Bounds check CPU Ian Rogers
2026-05-12 22:29   ` [PATCH v13 30/32] perf evsel: Add bounds checking to trace point raw data accessors Ian Rogers
2026-05-12 22:30   ` [PATCH v13 31/32] perf kwork: Fix address sanitizer issues Ian Rogers
2026-05-12 22:30   ` [PATCH v13 32/32] perf kwork: Fix memory management of kwork_work Ian Rogers

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=20260512223001.2952848-1-irogers@google.com \
    --to=irogers@google.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ajones@ventanamicro.com \
    --cc=ak@linux.intel.com \
    --cc=alex@ghiti.fr \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=anup@brainfault.org \
    --cc=aou@eecs.berkeley.edu \
    --cc=atrajeev@linux.ibm.com \
    --cc=blakejones@google.com \
    --cc=ctshao@google.com \
    --cc=dapeng1.mi@linux.intel.com \
    --cc=derek.foreman@collabora.com \
    --cc=dvyukov@google.com \
    --cc=howardchu95@gmail.com \
    --cc=hrishikesh123s@gmail.com \
    --cc=james.clark@linaro.org \
    --cc=jolsa@kernel.org \
    --cc=krzysztof.m.lopatowski@gmail.com \
    --cc=leo.yan@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=linux@treblig.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=nichen@iscas.ac.cn \
    --cc=palmer@dabbelt.com \
    --cc=peterz@infradead.org \
    --cc=pjw@kernel.org \
    --cc=ravi.bangoria@amd.com \
    --cc=swapnil.sapkal@amd.com \
    --cc=tanze@kylinos.cn \
    --cc=thomas.falcon@intel.com \
    --cc=tianyou.li@intel.com \
    --cc=yujie.liu@intel.com \
    --cc=zhouquan@iscas.ac.cn \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox