From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dl1-f73.google.com (mail-dl1-f73.google.com [74.125.82.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E0BFE3806BA for ; Mon, 9 Feb 2026 17:40:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.73 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770658844; cv=none; b=Z7epqtV2qIZZ2OeIN51E71hCNHq2AcolYgKIprOZy3/mfagZd1WHbaNXHciadTnvec57vwlOyIbQWR98D5E3wMbjTzEfDc0jZbztEhSVrfLEBES/DnTqwsWbxG//5LjtOTEFvtBd69awD0BFiTCu67V66SozLdnkp7yZ79Iubho= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770658844; c=relaxed/simple; bh=HStb8CzEiG6KF3csF4FgP3dJvCn5lmnwKQ5LTpkjVt8=; h=Date:Mime-Version:Message-ID:Subject:From:To:Content-Type; b=bGLsHojSYJNwDde3Xc+G//85uZzi2CJLBD3HCEy4g1TdlE0zwDBytpImjsB3uCME+RcZ74iHKMwRzY3L2ZqlyYx4ZpbuXqPO5yyfHJ0x/Ttkk5hSVv97RyBbhzrgurg4JR6OpIh3YLt9dr2zvfmnGLqKlASuBJ3aedcLLEkW3eM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=yvkkLhRp; arc=none smtp.client-ip=74.125.82.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="yvkkLhRp" Received: by mail-dl1-f73.google.com with SMTP id a92af1059eb24-1270e3704d6so16717251c88.0 for ; Mon, 09 Feb 2026 09:40:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1770658843; x=1771263643; darn=vger.kernel.org; h=to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=px+jbGk9mufZ7xR9xTlfIbqAwV0BmMqXnKds79vYQKg=; b=yvkkLhRp2PG/bQm3phG98olfrz0Ptp4X2s+Suk+jpAsFyDRJqWNpB7t3ByzclCjwVK o1Ma7mFtw13xtPgKVPQTVwo8vZZobuNlKUw+fLnL1FNc+EaY9WXG6lQyZ0ZbH35PUUBQ t54ogIXQb8L7l4jhqQL7Q5FmT+yfs2bPIPfTMYy62FMhtJOoxYK8kjWOjUOKvi37F0FE 9dZCzpSgxJGh/R8fDV+Y46GwS1+dnQ6nB36JF+O89Or7tg2JEDijm6t05Im/myLYgfQE 2Pe5vvy6eHJRbSpZfHk49eTepBNja+r5SozqXBqKIDJ/myZ93zME845k/Lwe10Uye99k Hk5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770658843; x=1771263643; h=to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=px+jbGk9mufZ7xR9xTlfIbqAwV0BmMqXnKds79vYQKg=; b=GY/O2WjY19UPWCVetrXASWtmfxyJlZxrCH0wt6rJjqYfH3CfW7I0Rjgs09HLhjhRhQ JAtvhM4VXC7W9BUY5wzuG1tOprpJi6XvpxLPbeQ5RalgfZfh9KOYrJEcXIF3DPawxFMe GDMegLj91wDOdkk2bwT1/7QuQFu/TnCqzn7oyC9EwOqYa3fS/3HcNfbXZ9E/aPzwURpc VdjvmYrqYMhLG/NxvfLzcz0FMFW7n9rCRzt2SL6Bl7plf/uJSCz76aHrkoeao8DBkWlw 8BWFQ5luPvh8C+q2pfik5bWLD4RqTCKjzMVAYinqx2zm1IvZKTlNKTnnQXtuEOhcrVkQ /5/A== X-Forwarded-Encrypted: i=1; AJvYcCXh77tnhQpIjTE0BsY8XEnuLH4igYGQaJLbs1qEt9gKTDpHvm+tn/JYn9rMshFPJ0nGezUfInvxrPu/wOma2n3Y@vger.kernel.org X-Gm-Message-State: AOJu0YwG1B+FH4jd7nJoEz1fBsdsYr2lb2f1PUZAg7O/ORueYSbKtzcR ThCMiaKZIHIOMBth2UG26EZCMHFidZi3g56+xg0zxmX+cWjtng0FvIRFVhCVe9WK9DXwvnzhFxz 7RNnKg+s/Fg== X-Received: from dlbcq22.prod.google.com ([2002:a05:7022:2496:b0:119:49ca:6bae]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:523:b0:11e:70d8:5dbb with SMTP id a92af1059eb24-1270411bf9emr4864310c88.7.1770658842917; Mon, 09 Feb 2026 09:40:42 -0800 (PST) Date: Mon, 9 Feb 2026 09:40:07 -0800 Precedence: bulk X-Mailing-List: linux-perf-users@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.53.0.239.g8d8fc8a987-goog Message-ID: <20260209174032.4142096-1-irogers@google.com> Subject: [PATCH v1 00/25] perf tool: Add evsel to perf_sample From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Leo Yan , Tianyou Li , Athira Rajeev , Derek Foreman , Thomas Falcon , Howard Chu , Dmitry Vyukov , Andi Kleen , tanze , Hrishikesh Suresh , Quan Zhou , Andrew Jones , Anup Patel , Dapeng Mi , "Dr. David Alan Gilbert" , "=?UTF-8?q?Krzysztof=20=C5=81opatowski?=" , Chun-Tse Shao , Ravi Bangoria , Swapnil Sapkal , Chen Ni , Blake Jones , Yujie Liu , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" 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. I've started the series by adding documentation to struct perf_sample. Next I fixed missing perf_sample__init/exit largely from the recent perf inject callchain rewriting work. The 3rd patch adds the evsel to struct perf_sample and ensures it is correctly initialized. The next 22 patches avoid passing the evsel along with sample for different parts of the perf tool, along with some minor tweaks like constification and not determining the evsel if it is present in the sample. Ian Rogers (25): perf sample: Document struct perf_sample perf sample: Make sure perf_sample__init/exit are used perf sample: Add evsel to struct perf_sample perf tool: Remove evsel from tool APIs that pass the sample perf kvm: Don't pass evsel with sample perf evsel: Refactor evsel__intval to perf_sample__intval perf trace: Don't pass evsel with sample perf callchain: Don't pass evsel and sample perf lock: Only pass sample to handlers perf lock: Constify trace_lock_handler variables 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 with sample perf evsel: Don't pass evsel with sample tools/perf/builtin-annotate.c | 28 ++- tools/perf/builtin-c2c.c | 6 +- tools/perf/builtin-diff.c | 5 +- tools/perf/builtin-inject.c | 81 ++++---- tools/perf/builtin-kmem.c | 58 +++--- tools/perf/builtin-kvm.c | 22 +-- tools/perf/builtin-kwork.c | 104 ++++------ tools/perf/builtin-lock.c | 117 +++++------ tools/perf/builtin-mem.c | 1 - tools/perf/builtin-record.c | 3 +- tools/perf/builtin-report.c | 38 ++-- tools/perf/builtin-sched.c | 183 ++++++++---------- tools/perf/builtin-script.c | 26 ++- tools/perf/builtin-timechart.c | 76 +++----- tools/perf/builtin-top.c | 19 +- tools/perf/builtin-trace.c | 103 +++++----- tools/perf/tests/hists_cumulate.c | 3 +- tools/perf/tests/hists_filter.c | 2 +- tools/perf/tests/hists_output.c | 3 +- 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/build-id.c | 3 +- tools/perf/util/build-id.h | 7 +- tools/perf/util/callchain.c | 8 +- tools/perf/util/callchain.h | 5 +- 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 | 60 +++--- tools/perf/util/evsel.h | 12 +- tools/perf/util/hist.c | 26 +-- tools/perf/util/hist.h | 3 +- tools/perf/util/intel-pt.c | 12 +- 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 | 9 +- tools/perf/util/machine.c | 14 +- tools/perf/util/machine.h | 3 - tools/perf/util/s390-sample-raw.c | 15 +- tools/perf/util/sample.c | 8 +- tools/perf/util/sample.h | 93 ++++++++- .../util/scripting-engines/trace-event-perl.c | 23 +-- .../scripting-engines/trace-event-python.c | 47 ++--- tools/perf/util/session.c | 74 ++++--- tools/perf/util/synthetic-events.c | 9 +- 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 - 62 files changed, 769 insertions(+), 823 deletions(-) -- 2.53.0.239.g8d8fc8a987-goog