BUG in "perf: Suppress AUX/OVERWRITE records"?
From: Ben Gainey
Date: Mon Mar 25 2019 - 09:20:13 EST
Hi all
Regarding commit 1627314fb54a33ebd23bd08f2e215eaed0f44712 "perf:
Suppress AUX/OVERWRITE records", I have found that I no longer receive
PERF_RECORD_AUX on context switch when collecting data from the arm_spe
PMU driver. This is because, on context switch, the arm_spe driver
calls perf_aux_output_end with `handle->aux_flags == 0`, failing the
test added in this commit.
This is a problem as it means when capturing data for multiple threads
(using perf_event_open) where AUX data is written to a per-cpu buffer,
I can no longer accurately attribute SPE AUX data to an individual
thread.
If I read the intent of the commit as to remove OVERWRITE AUX records,
then it seems the added if condition is incorrect and should probably
be formulated as:
if ((handle->aux_flags & ~(u64)PERF_AUX_FLAG_OVERWRITE) || !handle-
>aux_flags)
Is this correct (and would you like a patch?), or is my use of
PERF_RECORD_AUX incorrect in this case?
Thanks
Ben
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.