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

James Clark james.clark at linaro.org
Mon Oct 19 05:46:33 PDT 2026



On 15/09/2026 16:49, Leo Yan wrote:
> 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 at 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
> 

Reviewed-by: James Clark <james.clark at linaro.org>





More information about the linux-arm-kernel mailing list