[PATCH V2 00/37] perf intel-pt: Power events and PTWRITE

From: Adrian Hunter
Date: Fri May 26 2017 - 04:34:00 EST


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


Changes in V2:

Reorder patches and add stable tags to fixes.


Adrian Hunter (37):
perf intel-pt: Move decoder error setting into one condition
perf intel-pt: Improve sample timestamp
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: Clear FUP flag on error
perf intel-pt: Add missing __fallthrough
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: Add decoder support for ptwrite and power event packets
perf intel-pt: Add reserved byte to CBR packet payload
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

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