I'm trying to generate a simple memory trace with the Data Linear Address Profiling of the new Haswell processor generation but when I try to reach a high precision it runs into an endless loop of counting its own routine as it appears.
The Hardwarecounter is set to count on the event MEM_UOPS_RETIRED.ALL_LOADS
- UMask = 0x82
- EventSelect = 0xD0
Then optimally the PEBS events are enabled to collect address details and store them in my buffer. Therefore I would program the PEBS.CounterReset to 0xFFFFFFFFFFFE, which leads to the described endless loop. But when I set the PEBS.CounterReset to 0xFFFFFFFFFFE0 it works but only counts on every 32nd event occurance which doesn't provide the accuracy I'm trying to achieve.
- 0xFFFFFFFFFFFE (endless pebs loop)
- 0xFFFFFFFFFFE0 (works as expected)
Is this the right approach to generate a simple memory trace of a running process? Is this a bug for the specific event? Are there any workarrounds?