Hi Leo,
Just remind, as Mike has mentioned that if the timestamp is zero, it means the hardware setting for timestamp is not enabled properly. So for system wide or per CPU mode tracing, it's better to double check what's the reason the timestamp is not enabled properly.
The bug is confirmed by HW verification.
IIUC, this patch breaks the existed rational in the code. Let's think about there have 4 CPUs, every CPU has its own AUX trace buffer, and when decode the trace data, it will use 4 queues to track the packets and every queue has its timestamp.
CPU0: cs_etm_queue -> ... -> packet_queue->timestamp CPU1: cs_etm_queue -> ... -> packet_queue->timestamp CPU2: cs_etm_queue -> ... -> packet_queue->timestamp CPU3: cs_etm_queue -> ... -> packet_queue->timestamp
The issue is if all CPUs' timestamp are zero, it's impossible to find a way to synthesize samples in the right time order.
Is it really impossible or it just can lead to incorrect decoding? I verified the profiles generated with zero timestamps and this patch on Trogdor (8 CPU cores) and I don't see any significant difference in the quality of the AutoFDO profiles.
If mixed packets don't cause errors in reconstructing the branches but instead mess up with their timeline then it probably won't matter for AutoFDO which just collects statistics of the branches. What do you think?
[...]
Thanks, Leo
Thanks, Denis