Re: [PATCH 00/14] perf cs-etm: Per-thread mode fixes and snapshot wrap support

From: Arnaldo Carvalho de Melo

Date: Sun Sep 13 2026 - 21:20:39 EST


On Tue, Aug 11, 2026 at 04:30:03PM +0100, James Clark wrote:
> Fix a few issues with per-thread mode:
> - With TRBE, thread migrations hit a queue without a decoder assert
> - On nVHE, everything looks like guest trace instead of host
> - Tracing multiple threads didn't really work

This series applies cleanly to perf-tools-next but has no Reviewed-by
nor was processed by Sashiko.

Can somebody from the ARM camp take a look at it, please?

Thanks,

- Arnaldo

> After adding a tests for those, it turns out there were some snapshot
> bugs not picked up by the other snapshot tests. That showed that the
> different snapshot searches for Intel BTS and Arm SPE were inconsistent
> and I think all tracers can benefit from using the same pointer fixup
> logic, so that gets refactored into the common auxtrace.c. Then SPE can
> just share the Intel BTS search as it was obviously copied from it
> originally. IntelPT keeps the more advanced duplicate data search, but
> in the future that could probably be made the common one and all tracers
> would benefit from using it (except maybe BTS if it always has a very
> small buffer, but I doubt the overhead of the duplicate search would be
> an issue). For now this is more of a refactor rather than behavioral
> change so don't do that yet.
>
> Signed-off-by: James Clark <james.clark@xxxxxxxxxx>
> ---
> James Clark (14):
> perf cs-etm: Fix nVHE per-thread decoding
> perf cs-etm: Warn for invalid timestamp option
> perf cs-etm: Turn on context packet timestamps in per-thread mode
> perf cs-etm: Use per-CPU queues for per-thread mode
> perf cs-etm: Increase default timestamp generation period
> perf auxtrace: Turn Intel BTS snapshot search into a generic one
> perf arm-spe: Use generic snapshot search
> perf auxtrace: intel-pt: Use new snapshot_has_wrapped callback
> perf cs-etm: Queue partial AUX records
> perf cs-etm: Don't print missing buffers in snapshot mode
> perf auxtrace: cs-etm: Capture wrapped snapshots
> perf test: Allow infinite named_thread loops
> perf test: Add test for per-thread mode
> perf cs-etm: Test multiple per-thread threads
>
> Documentation/userspace-api/perf_ring_buffer.rst | 6 +-
> tools/perf/Documentation/perf-test.txt | 2 +-
> tools/perf/arch/arm/util/cs-etm.c | 30 ++++-
> tools/perf/arch/arm64/util/arm-spe.c | 147 +--------------------
> tools/perf/arch/x86/util/intel-bts.c | 115 +---------------
> tools/perf/arch/x86/util/intel-pt.c | 58 +++-----
> .../perf/tests/shell/coresight/per-thread-multi.sh | 78 +++++++++++
> tools/perf/tests/shell/coresight/per-thread.sh | 48 +++++++
> .../perf/tests/shell/coresight/raw_dump_stress.sh | 5 -
> tools/perf/tests/workloads/named_threads.c | 7 +-
> tools/perf/util/auxtrace.c | 136 +++++++++++++++++--
> tools/perf/util/auxtrace.h | 20 ++-
> tools/perf/util/cs-etm.c | 98 ++++++++++----
> 13 files changed, 382 insertions(+), 368 deletions(-)
> ---
> base-commit: bf10e6ee2ac3034c9068e03eed418fd16961984e
> change-id: 20260605-james-cs-unformatted-per-thread-fix-50e723aa7f0e
>
> Best regards,
> --
> James Clark <james.clark@xxxxxxxxxx>