[PATCH] coresight: perf: Output trace id only once
Suzuki K Poulose
suzuki.poulose at arm.com
Tue Jan 24 02:43:31 PST 2023
On 20/01/2023 15:43, James Clark wrote:
>
>
> On 20/01/2023 10:34, Suzuki K Poulose wrote:
>> With the dynamic traceid allocation scheme in, we output the
>> AUX_OUTPUT_HWID packet every time event->start() is called.
>> This could cause too many such records in the perf.data,
>> while only one per CPU throughout the life time of
>> the event is required. Make sure we only output it once.
>>
>> Before this patch:
>> $ perf report -D | grep OUTPUT_HW_ID
>> ...
>> AUX_OUTPUT_HW_ID events: 55 (18.3%)
>>
>> After this patch:
>>
>> $ perf report -D | grep OUTPUT_HW_ID
>> ...
>> AUX_OUTPUT_HW_ID events: 5 ( 1.9%)
>>
>> Cc: Mike Leach <mike.leach at linaro.org>
>> Cc: James Clark <james.clark at arm.com>
>> Cc: Leo Yan <leo.yan at linaro.org>
>> Signed-off-by: Suzuki K Poulose <suzuki.poulose at arm.com>
>> ---
>> drivers/hwtracing/coresight/coresight-etm-perf.c | 16 ++++++++++++----
>> drivers/hwtracing/coresight/coresight-etm-perf.h | 2 ++
>> 2 files changed, 14 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c
>> index 12fff661456e..a48c97da8165 100644
>> --- a/drivers/hwtracing/coresight/coresight-etm-perf.c
>> +++ b/drivers/hwtracing/coresight/coresight-etm-perf.c
>> @@ -495,10 +495,18 @@ static void etm_event_start(struct perf_event *event, int flags)
>> if (source_ops(csdev)->enable(csdev, event, CS_MODE_PERF))
>> goto fail_disable_path;
>>
>> - /* output cpu / trace ID in perf record */
>> - hw_id = FIELD_PREP(CS_AUX_HW_ID_VERSION_MASK, CS_AUX_HW_ID_CURR_VERSION);
>> - hw_id |= FIELD_PREP(CS_AUX_HW_ID_TRACE_ID_MASK, coresight_trace_id_read_cpu_id(cpu));
>> - perf_report_aux_output_id(event, hw_id);
>> + /*
>> + * output cpu / trace ID in perf record, once for the lifetime
>> + * of the event.
>> + */
>> + if (!cpumask_test_cpu(cpu, &event_data->aux_hwid_done)) {
>> + cpumask_set_cpu(cpu, &event_data->aux_hwid_done);
>
> I had a look for somewhere that's only called once after the aux buffer
> is available to avoid the new tracking bit, but didn't find anywhere
> obvious. We can always move it later anyway.
>
> Reviewed-by: James Clark <james.clark at arm.com>
>
Thanks, pushed to next
https://git.kernel.org/coresight/c/a646ca099b18
Suzuki
More information about the linux-arm-kernel
mailing list