linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 0/7] perf, intel: Add support for PEBS output to Intel PT
@ 2019-07-04 16:00 Alexander Shishkin
  2019-07-04 16:00 ` [PATCH v1 1/7] perf: Allow normal events to be sources of AUX data Alexander Shishkin
                   ` (7 more replies)
  0 siblings, 8 replies; 12+ messages in thread
From: Alexander Shishkin @ 2019-07-04 16:00 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Arnaldo Carvalho de Melo, Ingo Molnar, linux-kernel, kan.liang,
	Alexander Shishkin

Hi Peter,

Second attempt at the PEBS-via-PT feature. The previous one is here [1].
This one depends on the legitimacy including exclusive events (PT, in this
case) in groups, as I posted earlier [2]. Although, it will work without
that patch, because this kind of grouping wasn't really disallowed.

The first problem with the previous patchset was bad handling of
conflicting PEBS events (PEBS->PT and PEBS->DS). This version fails to
schedule the first conflicting event, thus allowing conflicting events
to be rotated. This is done in an x86 perf patch 2/7.

The second problem was lack of guarantees that the PT event is scheduled
together with the PEBS->PT event and that it's the correct PT event. This
is addressed via grouping. The requirement is that the PEBS event is added
to a group where there is a PT event, then a link between them in created.
If that group later is broken down, the PEBS event will fail to schedule.
This is done in perf core patch 1/7.

The rest of the series (2/7..7/7) are the remaining tooling patches needed
to enable this are included.

The PEBS feature: output to Intel PT stream instead of the DS area. It's
theoretically useful in virtualized environments, where DS area can't be
used. It's also good for those who are interested in instruction trace for
context of the PEBS events. As PEBS goes, it can provide LBR context with
all the branch-related information that PT doesn't provide at the moment.

PEBS records are packetized in the PT stream, so instead of extracting
them in the PMI, we leave it to the perf tool, because real time PT
decoding is not practical.

[1] https://marc.info/?l=linux-kernel&m=155679423430002
[2] https://marc.info/?l=linux-kernel&m=156197929026646

Adrian Hunter (5):
  perf tools: Add aux_source attribute flag
  perf tools: Add itrace option 'o' to synthesize aux-source events
  perf intel-pt: Process options for PEBS event synthesis
  perf tools: Add aux-source config term
  perf intel-pt: Add brief documentation for PEBS via Intel PT

Alexander Shishkin (2):
  perf: Allow normal events to be sources of AUX data
  perf/x86/intel: Support PEBS output to PT

 arch/x86/events/core.c                   | 45 ++++++++++++
 arch/x86/events/intel/core.c             | 20 ++++++
 arch/x86/events/intel/ds.c               | 61 +++++++++++++++-
 arch/x86/events/perf_event.h             | 11 +++
 arch/x86/include/asm/msr-index.h         |  4 ++
 include/linux/perf_event.h               | 14 ++++
 include/uapi/linux/perf_event.h          |  3 +-
 kernel/events/core.c                     | 92 ++++++++++++++++++++++++
 tools/include/uapi/linux/perf_event.h    |  3 +-
 tools/perf/Documentation/intel-pt.txt    | 15 ++++
 tools/perf/Documentation/itrace.txt      |  2 +
 tools/perf/Documentation/perf-record.txt |  2 +
 tools/perf/arch/x86/util/intel-pt.c      | 23 ++++++
 tools/perf/util/auxtrace.c               |  4 ++
 tools/perf/util/auxtrace.h               |  3 +
 tools/perf/util/evsel.c                  |  4 ++
 tools/perf/util/evsel.h                  |  2 +
 tools/perf/util/intel-pt.c               | 18 +++++
 tools/perf/util/parse-events.c           |  8 +++
 tools/perf/util/parse-events.h           |  1 +
 tools/perf/util/parse-events.l           |  1 +
 21 files changed, 333 insertions(+), 3 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2019-07-31 14:02 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-04 16:00 [PATCH v1 0/7] perf, intel: Add support for PEBS output to Intel PT Alexander Shishkin
2019-07-04 16:00 ` [PATCH v1 1/7] perf: Allow normal events to be sources of AUX data Alexander Shishkin
2019-07-29 11:31   ` Peter Zijlstra
2019-07-04 16:00 ` [PATCH v1 2/7] perf/x86/intel: Support PEBS output to PT Alexander Shishkin
2019-07-29 13:37   ` Peter Zijlstra
2019-07-31 14:02     ` Alexander Shishkin
2019-07-04 16:00 ` [PATCH v1 3/7] perf tools: Add aux_source attribute flag Alexander Shishkin
2019-07-04 16:00 ` [PATCH v1 4/7] perf tools: Add itrace option 'o' to synthesize aux-source events Alexander Shishkin
2019-07-04 16:00 ` [PATCH v1 5/7] perf intel-pt: Process options for PEBS event synthesis Alexander Shishkin
2019-07-04 16:00 ` [PATCH v1 6/7] perf tools: Add aux-source config term Alexander Shishkin
2019-07-04 16:00 ` [PATCH v1 7/7] perf intel-pt: Add brief documentation for PEBS via Intel PT Alexander Shishkin
2019-07-29  8:10 ` [PATCH v1 0/7] perf, intel: Add support for PEBS output to " Alexander Shishkin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).