@@ -136,13 +136,13 @@ static const struct attribute_group *etm_pmu_attr_groups[] = {
136136 NULL ,
137137};
138138
139- static inline struct list_head * *
139+ static inline struct coresight_path * *
140140etm_event_cpu_path_ptr (struct etm_event_data * data , int cpu )
141141{
142142 return per_cpu_ptr (data -> path , cpu );
143143}
144144
145- static inline struct list_head *
145+ static inline struct coresight_path *
146146etm_event_cpu_path (struct etm_event_data * data , int cpu )
147147{
148148 return * etm_event_cpu_path_ptr (data , cpu );
@@ -197,6 +197,7 @@ static void free_sink_buffer(struct etm_event_data *event_data)
197197 int cpu ;
198198 cpumask_t * mask = & event_data -> mask ;
199199 struct coresight_device * sink ;
200+ struct coresight_path * path ;
200201
201202 if (!event_data -> snk_config )
202203 return ;
@@ -205,7 +206,8 @@ static void free_sink_buffer(struct etm_event_data *event_data)
205206 return ;
206207
207208 cpu = cpumask_first (mask );
208- sink = coresight_get_sink (etm_event_cpu_path (event_data , cpu ));
209+ path = etm_event_cpu_path (event_data , cpu );
210+ sink = coresight_get_sink (& path -> path_list );
209211 sink_ops (sink )-> free_buffer (event_data -> snk_config );
210212}
211213
@@ -226,11 +228,11 @@ static void free_event_data(struct work_struct *work)
226228 cscfg_deactivate_config (event_data -> cfg_hash );
227229
228230 for_each_cpu (cpu , mask ) {
229- struct list_head * * ppath ;
231+ struct coresight_path * * ppath ;
230232
231233 ppath = etm_event_cpu_path_ptr (event_data , cpu );
232234 if (!(IS_ERR_OR_NULL (* ppath ))) {
233- struct coresight_device * sink = coresight_get_sink (* ppath );
235+ struct coresight_device * sink = coresight_get_sink (& (( * ppath ) -> path_list ) );
234236
235237 /*
236238 * Mark perf event as done for trace id allocator, but don't call
@@ -276,7 +278,7 @@ static void *alloc_event_data(int cpu)
276278 * unused memory when dealing with single CPU trace scenarios is small
277279 * compared to the cost of searching through an optimized array.
278280 */
279- event_data -> path = alloc_percpu (struct list_head * );
281+ event_data -> path = alloc_percpu (struct coresight_path * );
280282
281283 if (!event_data -> path ) {
282284 kfree (event_data );
@@ -352,7 +354,7 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,
352354 * CPUs, we can handle it and fail the session.
353355 */
354356 for_each_cpu (cpu , mask ) {
355- struct list_head * path ;
357+ struct coresight_path * path ;
356358 struct coresight_device * csdev ;
357359
358360 csdev = per_cpu (csdev_src , cpu );
@@ -458,7 +460,7 @@ static void etm_event_start(struct perf_event *event, int flags)
458460 struct etm_ctxt * ctxt = this_cpu_ptr (& etm_ctxt );
459461 struct perf_output_handle * handle = & ctxt -> handle ;
460462 struct coresight_device * sink , * csdev = per_cpu (csdev_src , cpu );
461- struct list_head * path ;
463+ struct coresight_path * path ;
462464 u64 hw_id ;
463465 u8 trace_id ;
464466
@@ -494,12 +496,12 @@ static void etm_event_start(struct perf_event *event, int flags)
494496
495497 path = etm_event_cpu_path (event_data , cpu );
496498 /* We need a sink, no need to continue without one */
497- sink = coresight_get_sink (path );
499+ sink = coresight_get_sink (& path -> path_list );
498500 if (WARN_ON_ONCE (!sink ))
499501 goto fail_end_stop ;
500502
501503 /* Nothing will happen without a path */
502- if (coresight_enable_path (path , CS_MODE_PERF , handle ))
504+ if (coresight_enable_path (& path -> path_list , CS_MODE_PERF , handle ))
503505 goto fail_end_stop ;
504506
505507 /* Finally enable the tracer */
@@ -534,7 +536,7 @@ static void etm_event_start(struct perf_event *event, int flags)
534536 return ;
535537
536538fail_disable_path :
537- coresight_disable_path (path );
539+ coresight_disable_path (& path -> path_list );
538540fail_end_stop :
539541 /*
540542 * Check if the handle is still associated with the event,
@@ -558,7 +560,7 @@ static void etm_event_stop(struct perf_event *event, int mode)
558560 struct etm_ctxt * ctxt = this_cpu_ptr (& etm_ctxt );
559561 struct perf_output_handle * handle = & ctxt -> handle ;
560562 struct etm_event_data * event_data ;
561- struct list_head * path ;
563+ struct coresight_path * path ;
562564
563565 /*
564566 * If we still have access to the event_data via handle,
@@ -599,7 +601,7 @@ static void etm_event_stop(struct perf_event *event, int mode)
599601 if (!path )
600602 return ;
601603
602- sink = coresight_get_sink (path );
604+ sink = coresight_get_sink (& path -> path_list );
603605 if (!sink )
604606 return ;
605607
@@ -643,7 +645,7 @@ static void etm_event_stop(struct perf_event *event, int mode)
643645 }
644646
645647 /* Disabling the path make its elements available to other sessions */
646- coresight_disable_path (path );
648+ coresight_disable_path (& path -> path_list );
647649}
648650
649651static int etm_event_add (struct perf_event * event , int mode )
0 commit comments