On 15/09/2026 16:49, Leo Yan wrote:
A PMU NMI can throttle a group during an AUX pause or resume, stopping its CoreSight event before the callback finishes. The callback can then restart tracing or reopen an AUX output handle after teardown.
Use per-CPU atomic STOP and AUX bits to serialize these callbacks. Reject AUX operations while a stop is pending and defer stops until an active AUX operation finishes. Complete deferred stops through etm_event_stop() and set PERF_HES_STOPPED only after disabling the source and path.
Assisted-by: Codex:gpt-6 Signed-off-by: Leo Yan leo.yan@arm.com
drivers/hwtracing/coresight/coresight-etm-perf.c | 104 ++++++++++++++++++----- 1 file changed, 84 insertions(+), 20 deletions(-)
diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c index 8f803914e9abfb18e080ff68371ad8b32042f180..8020a4d8af18bb669441824cfdb687f4fa299eb4 100644 --- a/drivers/hwtracing/coresight/coresight-etm-perf.c +++ b/drivers/hwtracing/coresight/coresight-etm-perf.c @@ -4,6 +4,7 @@
- Author: Mathieu Poirier mathieu.poirier@linaro.org
*/ +#include <linux/atomic.h> #include <linux/bitfield.h> #include <linux/coresight.h> #include <linux/coresight-pmu.h> @@ -26,6 +27,9 @@ #include "coresight-syscfg.h" #include "coresight-trace-id.h" +#define ETM_PERF_ACT_STOP BIT(0) +#define ETM_PERF_ACT_AUX BIT(1)
No comments other than naming. But would PAUSE_RESUME be better than AUX, or at least add a comment? It's a bit ambiguous what AUX means, and etm_event_aux_begin() is very close to perf_aux_output_begin(). Or maybe ACTION?
Reviewed-by: James Clark james.clark@linaro.org