Thread (26 messages) flat view 26 messages, 1 author, 2d ago
WARM2d

[PATCH 14/25] coresight: perf: Look up the trace path in etm_event_pause()

From: Leo Yan <leo.yan@arm.com>
Date: 2026-09-15 15:49:55
Also in: linux-doc, linux-perf-users, lkml
Subsystem: arm/coresight framework and drivers, hardware tracing facilities, the rest · Maintainers: Suzuki K Poulose, Alexander Shishkin, Linus Torvalds

Have etm_event_pause() retrieve the active path from the event context
instead of passing the path from etm_event_stop(). Move the stop path
lookup after the pause dispatch so each operation resolves its own path.

This prepares etm_event_stop() to coordinate hardware access before
looking up the active context.

Assisted-by: Codex:gpt-6
Signed-off-by: Leo Yan <leo.yan@arm.com>
---
 drivers/hwtracing/coresight/coresight-etm-perf.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c
index f66c99b26e1862ab04105704276c901b21728207..8f803914e9abfb18e080ff68371ad8b32042f180 100644
--- a/drivers/hwtracing/coresight/coresight-etm-perf.c
+++ b/drivers/hwtracing/coresight/coresight-etm-perf.c
@@ -694,10 +694,10 @@ static void etm_event_update_buffer(struct perf_event *event,
 	perf_aux_output_end(handle, 0);
 }
 
-static void etm_event_pause(struct coresight_path *path,
-			    struct perf_event *event,
+static void etm_event_pause(struct perf_event *event,
 			    struct etm_ctxt *ctxt)
 {
+	struct coresight_path *path = etm_event_get_ctxt_path(ctxt);
 	struct perf_output_handle *handle = &ctxt->handle;
 	struct coresight_device *source, *sink;
 	struct etm_event_data *event_data;
@@ -735,7 +735,7 @@ static void etm_event_stop(struct perf_event *event, int mode)
 	struct coresight_device *source, *sink;
 	struct etm_ctxt *ctxt = this_cpu_ptr(&etm_ctxt);
 	struct perf_output_handle *handle = &ctxt->handle;
-	struct coresight_path *path = etm_event_get_ctxt_path(ctxt);
+	struct coresight_path *path;
 	struct hw_perf_event *hwc = &event->hw;
 	struct etm_event_data *event_data;
 
@@ -744,7 +744,9 @@ static void etm_event_stop(struct perf_event *event, int mode)
 		return;
 
 	if (mode & PERF_EF_PAUSE)
-		return etm_event_pause(path, event, ctxt);
+		return etm_event_pause(event, ctxt);
+
+	path = etm_event_get_ctxt_path(ctxt);
 
 	/*
 	 * With no path enabled, there is no hardware to stop or trace data
-- 
2.34.1

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help