Hi Here are some patches to support Intel PT Power events and PTWRITE. Power events report changes to C-state but I have also added support for the existing CBR (core-to-bus ratio) packet and included that when outputting power events. The PTWRITE packet is associated with the new ptwrite instruction, which is essentially just a way to stuff a 32 or 64 bit value into the PT trace. More details can be found in the patches that add documentation and in the Intel SDM.
As far as I know, there isn't any hardware released that supports the new packets, however the CBR packet is not new and will now be visible by default. There are also some miscellaneous improvements to Intel PT. There are 3 patches that introduce a new way to define synthesized events that carry arbitrary raw_data. I sent an RFC about that earlier. The 3 patches are: perf script: Add 'synth' event type for synthesized events perf script: Add 'synth' field for synthesized event payloads perf script: Add synthesized Intel PT power and ptwrite events Adrian Hunter (37): perf intel-pt: Allow decoding with branch tracing disabled perf intel-pt: Add default config for pass-through branch enable perf intel-pt: Add documentation for new config terms perf intel-pt: Fix missing stack clear perf intel-pt: Ensure IP is zero when state is INTEL_PT_STATE_NO_IP perf intel-pt: Fix last_ip usage perf intel-pt: Ensure never to set 'last_ip' when packet 'count' is zero perf intel-pt: Use FUP always when scanning for an IP perf intel-pt: Add missing __fallthrough perf intel-pt: Clear FUP flag on error perf intel-pt: Add decoder support for ptwrite and power event packets perf intel-pt: Add reserved byte to CBR packet payload perf intel-pt: Move decoder error setting into one condition perf intel-pt: Add decoder support for CBR events perf intel-pt: Remove redundant initial_skip checks perf intel-pt: Fix transactions_sample_type perf tools: Fix message because cpu list option is -C not -c perf script: Fix message because field list option is -F not -f perf script: Add 'synth' event type for synthesized events perf script: Add 'synth' field for synthesized event payloads tools include: Add byte-swapping macros to kernel.h perf auxtrace: Add itrace option to output ptwrite events perf auxtrace: Add itrace option to output power events perf script: Add synthesized Intel PT power and ptwrite events perf intel-pt: Factor out common code synthesizing event samples perf intel-pt: Remove unused instructions_sample_period perf intel-pt: Join needlessly wrapped lines perf intel-pt: Tidy Intel PT evsel lookup into separate function perf intel-pt: Tidy messages into called function intel_pt_synth_event() perf intel-pt: Factor out intel_pt_set_event_name() perf intel-pt: Move code in intel_pt_synth_events() to simplify attr setting perf intel-pt: Synthesize new power and ptwrite events perf intel-pt: Add example script for power events and PTWRITE perf intel-pt: Update documentation to include new ptwrite and power events perf intel-pt: Do not use TSC packets for calculating CPU cycles to TSC perf auxtrace: Add CPU filter support perf intel-pt: Improve sample timestamp tools/include/linux/kernel.h | 35 +- tools/perf/Documentation/intel-pt.txt | 78 ++- tools/perf/Documentation/itrace.txt | 8 +- tools/perf/Documentation/perf-script.txt | 6 +- tools/perf/arch/x86/util/intel-pt.c | 5 + tools/perf/builtin-report.c | 1 + tools/perf/builtin-script.c | 207 ++++++- .../perf/scripts/python/bin/intel-pt-events-record | 13 + .../perf/scripts/python/bin/intel-pt-events-report | 3 + tools/perf/scripts/python/intel-pt-events.py | 128 ++++ tools/perf/util/auxtrace.c | 18 + tools/perf/util/auxtrace.h | 6 + tools/perf/util/event.h | 93 +++ .../perf/util/intel-pt-decoder/intel-pt-decoder.c | 304 +++++++++- .../perf/util/intel-pt-decoder/intel-pt-decoder.h | 13 + .../util/intel-pt-decoder/intel-pt-pkt-decoder.c | 110 +++- .../util/intel-pt-decoder/intel-pt-pkt-decoder.h | 7 + tools/perf/util/intel-pt.c | 642 +++++++++++++++------ tools/perf/util/session.c | 2 +- 19 files changed, 1435 insertions(+), 244 deletions(-) create mode 100644 tools/perf/scripts/python/bin/intel-pt-events-record create mode 100644 tools/perf/scripts/python/bin/intel-pt-events-report create mode 100644 tools/perf/scripts/python/intel-pt-events.py Regards Adrian