[PATCH v3 0/7] coresight: Pulse an ETM external output for a PMU event

From: Amir Ayupov

Date: Sun Oct 25 2026 - 02:42:39 EST


Add an ETMv4 configuration, pmu_pulse, that drives trace unit external
output 1 on every traced cycle, so a PMU event counting it (TRCEXTOUT1)
can end a fixed-length ETM window, for example with aux-action=pause.
The feature only loads on an ETE whose PMU counts its external outputs.

Patch 1 is Leo's fix for TRCIDR0.NUMEVENT decoding, which patch 6 relies
on for the number of external outputs.

Changes in v3:
- Rebase onto coresight next, which moves the capability fields into
drvdata->caps (Leo).
- Carry Leo's "coresight: etm4x: Fix event count decoding" (Leo).
- Add Leo's Reviewed-by to "Fail to enable a configuration not loaded on
the device".
- Define CS_CFG_MATCH_CLASS_MASK and CS_CFG_MATCH_CAP_MASK with
GENMASK_U32() and split the match check into early returns (Leo). The
class check stays an intersection, as ETMv4 devices register with
SRC_ALL | SRC_ETM4 while the built-in features only set SRC_ETM4.
- Remove the unused CS_CFG_MATCH_INST_ANY in a separate patch (Leo).
- Replace the per-output CS_CFG_MATCH_CAP_PMU_EXTOUT(n) bits with a single
CS_CFG_MATCH_CAP_TRCEXTOUT, set on ETE only (Leo, James).
- Check the PMU events through a new pmuv3_event_implemented() helper
instead of open-coding PMCEID0_EL0 in etm4x (James).
- Use PMU-agnostic event names in the documentation example (Daniel).
- Add Daniel's Reviewed-by to "Add pmu_pulse/extout_pulse".
- Link to v2: https://lore.kernel.org/r/20261012230527.750567-1-aaupov@xxxxxx

Amir Ayupov (6):
coresight: syscfg: Fail to enable a configuration not loaded on the device
coresight: syscfg: Match feature capabilities separately from device class
coresight: syscfg: Remove unused CS_CFG_MATCH_INST_ANY
perf: arm_pmuv3: Add pmuv3_event_implemented()
coresight: etm4x: Report whether the PMU counts the external outputs
coresight: Add pmu_pulse/extout_pulse

Leo Yan (1):
coresight: etm4x: Fix event count decoding

.../trace/coresight/coresight-config.rst | 5 ++
.../trace/coresight/coresight-perf.rst | 15 ++++
drivers/hwtracing/coresight/Makefile | 1 +
.../coresight/coresight-cfg-pmu-pulse.c | 55 ++++++++++++
.../coresight/coresight-cfg-preload.c | 2 +
.../coresight/coresight-cfg-preload.h | 2 +
.../hwtracing/coresight/coresight-config.h | 11 ++-
.../hwtracing/coresight/coresight-etm4x-cfg.c | 6 +-
.../coresight/coresight-etm4x-core.c | 39 +++++++-
.../coresight/coresight-etm4x-sysfs.c | 29 +++---
drivers/hwtracing/coresight/coresight-etm4x.h | 3 +
.../coresight/coresight-syscfg-configfs.c | 3 +
.../hwtracing/coresight/coresight-syscfg.c | 90 +++++++++++--------
include/linux/perf/arm_pmu.h | 1 -
include/linux/perf/arm_pmuv3.h | 22 +++++
15 files changed, 229 insertions(+), 55 deletions(-)
create mode 100644 drivers/hwtracing/coresight/coresight-cfg-pmu-pulse.c


base-commit: 343cfcbb3ecfdb80aa576a428cfa3b65ad783842
--
2.52.0