File tree Expand file tree Collapse file tree 1 file changed +23
-1
lines changed Expand file tree Collapse file tree 1 file changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -290,6 +290,25 @@ static int cs_etm__metadata_set_trace_id(u8 trace_chan_id, u64 *cpu_metadata)
290
290
(typeof(_mask))(((_reg) & (_mask)) >> __bf_shf(_mask)); \
291
291
})
292
292
293
+ /*
294
+ * Get a metadata for a specific cpu from an array.
295
+ *
296
+ */
297
+ static u64 * get_cpu_data (struct cs_etm_auxtrace * etm , int cpu )
298
+ {
299
+ int i ;
300
+ u64 * metadata = NULL ;
301
+
302
+ for (i = 0 ; i < etm -> num_cpu ; i ++ ) {
303
+ if (etm -> metadata [i ][CS_ETM_CPU ] == (u64 )cpu ) {
304
+ metadata = etm -> metadata [i ];
305
+ break ;
306
+ }
307
+ }
308
+
309
+ return metadata ;
310
+ }
311
+
293
312
/*
294
313
* Handle the PERF_RECORD_AUX_OUTPUT_HW_ID event.
295
314
*
@@ -359,8 +378,11 @@ static int cs_etm__process_aux_output_hw_id(struct perf_session *session,
359
378
return 0 ;
360
379
}
361
380
381
+ cpu_data = get_cpu_data (etm , cpu );
382
+ if (cpu_data == NULL )
383
+ return err ;
384
+
362
385
/* not one we've seen before - lets map it */
363
- cpu_data = etm -> metadata [cpu ];
364
386
err = cs_etm__map_trace_id (trace_chan_id , cpu_data );
365
387
if (err )
366
388
return err ;
You can’t perform that action at this time.
0 commit comments