mbox series

[v5,0/5] Update CoreSight infrastructure to select a default sink.

Message ID 20200616164006.15309-1-mike.leach@linaro.org (mailing list archive)
Headers show
Series Update CoreSight infrastructure to select a default sink. | expand

Message

Mike Leach June 16, 2020, 4:40 p.m. UTC
This patchset provides an infrastructure to allow for the automatic
selection of a sink during CoreSight tracing operations.

Currently starting tracing using perf requires a sink selection on the
command line:-

sudo ./perf record -e cs_etm/@tmc_etr0/ --per-thread uname -a

After this set (and the follow-up perf change set) the infrastructure will
be able to select a default sink:-

sudo ./perf record -e cs_etm// --per-thread uname -a

This matches with the default operation provided with perf and intelpt.

Where no sink is specified at the start of a trace session, the CoreSight
system will walk the connection graph from the source ETM, to find a
suitable sink using the first encountered highest priority device.

The CoreSight infrastructure is updated to define sink sub_types to
differentiate between sinks with built in buffers (ETB / ETF) - BUFFER
type, and those that use system memory (ETR) - SYSMEM - types.

SYSMEM types are considered higher priority.

When two sinks are found of equal priority, then the closest sink to the
source in terms of connection nodes is chosen.

The automatic sink selection will also operate if an ETM is enabled using
sysfs commands, and no sink is currently enabled. A last_sink attribute is
added to trace sources that is set to the value of the sink used when a
source is enabled via sysfs. This is set in both default and user enabled
sink scenarios.

Applies to Linux 5.8-rc1

Tested on Dragonboard DB410c.

Changes since v4:
1) Added reviewed-by etc that were missing from previous sets.
2) Added last_sink attribute to source devices.
3) Added documentation patch to update docs for default sinks.
4) Moved comment fix patch into separate misc fixes set.

Mike Leach (5):
  coresight: Add default sink selection to CoreSight base.
  coresight: tmc: Update sink types for default selection.
  coresight: etm: perf: Add default sink selection to etm perf.
  coresight: sysfs: Allow select default sink on source enable.
  documentation: coresight: Update CoreSight document for default sink.

 Documentation/trace/coresight/coresight.rst   |  48 ++--
 .../hwtracing/coresight/coresight-etm-perf.c  |  17 +-
 drivers/hwtracing/coresight/coresight-priv.h  |   2 +
 drivers/hwtracing/coresight/coresight-tmc.c   |   3 +-
 drivers/hwtracing/coresight/coresight.c       | 205 +++++++++++++++++-
 include/linux/coresight.h                     |   6 +
 6 files changed, 261 insertions(+), 20 deletions(-)