Need to examine sequence of branches examined by user-space code (code coverage, optimization, etc.).
New tracing isn't sampled (so no missing data). Some modes provide sequence of branches; some actually also provide timing information.
However, even though the trace isn't sampled, it produces so much data that it is difficult to capture substantial amounts of data.
ETM timing information: cycle count or global system timer (constant across all cores)
Linux is working on this.
ARM decoder will be BSD licensed; ARM driver will be Apache licensed
Intel code for Linux is probably
GPL-licensed
ETM is global, so more difficult; PT can be per-process
ETM can capture certain events as part of the branch records
PT is discoverable via CPUID. To use ETM, it requires the kernel to know more, which requires the vendors to supply the information