[PATCH V6 00/26] Coresight integration with perf

Mathieu Poirier mathieu.poirier at linaro.org
Tue Dec 8 12:24:01 PST 2015


On 3 December 2015 at 14:04, Mathieu Poirier <mathieu.poirier at linaro.org> wrote:
> This patchset aims to integrate configuration and control of
> the Coresight tracers with the perf sub-system.
>
> The goal is to use PMUs to represent tracers and the auxiliary
> buffer enhancement to collect processor traces.  As such a lot
> of work is done to move the current Coresight sysFS oriented
> configuration and control commands to perf's AUX API.
>
> For the time being the work concentrates on ETMv3 and ETB1.0
> sink buffer.  Work on ETMv4 and other type of sink buffers
> will follow once a foundation has been established.
>
> Best regards,
> Mathieu
>
> Changes since V5:
> * Addressed Arnaldo's comment about using a struct perf_evlist rather
>   than a struct perf_session.
> * Addressed kbuild test robot's anomaly report [1].
> * Moved perf_aux_output_{begin|end} to etm_event_{start|stop} in
>   accordance with [2].
>
> [1]. https://lkml.org/lkml/2015/11/30/46
> [2]. http://thread.gmane.org/gmane.linux.kernel/2099328/focus=2099343
>
> Changes since V4:
> * Reworked the way event configuration information is kept, fixing
>   a few corner cases when doing per CPU tracing.
> * Rebased on 4.4-rc1.
> * Added 'Cc' to specific perf related patches in the hope of suscitating
>   interest from reviewers, i.e perf maintainers.
>
> Changes since V3:
> * Rebased to GKH's char-misc-next tree (e2d8680741ed).
>
> Changes since V2:
> * Rebased to v4.3.
> * Used the -M option to "git format-patch".
> * Decoupled tracers and path - both are now completely independent.
> * Moved path enablement/release to Perf's add/del functions.
> * Moved PM runtime operations to the coresight core rather than
>   individual drivers.
> * Enhanced mutual exclusion scheme between perf and sysFS.
> * Removed architecture specific define in perf cmd line tool.
> * Got rid of unused fields in structure 'cs_buffers'.
> * Enhanced changelog for patch 16/26.
>
> Changes since V1:
>  * Fixed typos in typographical error in documentation.
>  * Moved to a multi session support scheme.
>  * Split static and dynamic tracer configuration.
>  * Fixed configuration for user and kernel space tracing.
>  * Using WARN_ON_ONCE() rather than WARN_ON().
>  * Implemented strategy to prevent tracers from being used simultaneously.
>  * Changed sink_ops::unset_buffer() to sink_ops::reset_buffer().
>  * Moves ETM's sysFS interface from driver core to dedicated file.
>  * Removed spinlock in "etm_cpu_id()".
>  * Aggregated PMU driver pieces in a single patch.
>  * Added user space changes and rebased everything to v4.3-rc5.
>
> Mathieu Poirier (26):
>   coresight: etm3x: moving etm_readl/writel to header file
>   coresight: etm3x: moving sysFS entries to dedicated file
>   coresight: etm3x: unlocking tracers in default arch init
>   coresight: etm3x: splitting struct etm_drvdata
>   coresight: etm3x: implementing 'cpu_id()' API
>   coresight: associating path with session rather than tracer
>   coresight: moving PM runtime operations to core framework
>   coresight: etm3x: adding operation mode for etm_enable()
>   coresight: add API to get sink from path
>   coresight: etm3x: set progbit to stop trace collection
>   coresight: etm3x: changing default trace configuration
>   coresight: etm3x: consolidating initial config
>   coresight: etm3x: implementing user/kernel mode tracing
>   coresight: etm3x: adding perf_get/set_config() API
>   coresight: etm3x: implementing perf_enable/disable() API
>   coresight: etb10: moving to local atomic operations
>   coresight: adding operation mode for sink->enable()
>   coresight: etb10: implementing AUX space API
>   coresight: updating documentation to reflect integration with perf
>   perf: changing pmu::setup_aux() parameter to include event
>   coresight: etm-perf: new PMU driver for ETM tracers
>   coresight: introducing a global trace ID function
>   perf tools: making function set_max_cpu_num() non static
>   perf tools: adding perf_evlist to *info_priv_size()
>   perf tools: making coresight PMU listable
>   perf tools: adding coresight etm PMU record capabilities
>
>  Documentation/trace/coresight.txt                  |  138 +-
>  MAINTAINERS                                        |    4 +
>  arch/x86/kernel/cpu/perf_event_intel_bts.c         |    4 +-
>  arch/x86/kernel/cpu/perf_event_intel_pt.c          |    5 +-
>  drivers/hwtracing/coresight/Kconfig                |    1 +
>  drivers/hwtracing/coresight/Makefile               |    4 +-
>  drivers/hwtracing/coresight/coresight-etb10.c      |  277 +++-
>  drivers/hwtracing/coresight/coresight-etm-perf.c   |  447 +++++
>  drivers/hwtracing/coresight/coresight-etm-perf.h   |   32 +
>  drivers/hwtracing/coresight/coresight-etm.h        |  143 +-
>  .../hwtracing/coresight/coresight-etm3x-sysfs.c    | 1442 ++++++++++++++++
>  drivers/hwtracing/coresight/coresight-etm3x.c      | 1754 +++++---------------
>  drivers/hwtracing/coresight/coresight-etm4x.c      |    8 +-
>  drivers/hwtracing/coresight/coresight-funnel.c     |    2 -
>  drivers/hwtracing/coresight/coresight-priv.h       |   15 +
>  .../coresight/coresight-replicator-qcom.c          |    4 -
>  drivers/hwtracing/coresight/coresight-replicator.c |    2 -
>  drivers/hwtracing/coresight/coresight-tmc.c        |    7 +-
>  drivers/hwtracing/coresight/coresight-tpiu.c       |    4 +-
>  drivers/hwtracing/coresight/coresight.c            |  330 ++--
>  include/linux/coresight-pmu.h                      |   39 +
>  include/linux/coresight.h                          |   40 +-
>  include/linux/perf_event.h                         |    2 +-
>  kernel/events/ring_buffer.c                        |    2 +-
>  tools/perf/arch/arm/util/Build                     |    2 +
>  tools/perf/arch/arm/util/auxtrace.c                |   48 +
>  tools/perf/arch/arm/util/cs_etm.c                  |  466 ++++++
>  tools/perf/arch/arm/util/cs_etm.h                  |   44 +
>  tools/perf/arch/arm/util/pmu.c                     |   34 +
>  tools/perf/arch/x86/util/intel-bts.c               |    4 +-
>  tools/perf/arch/x86/util/intel-pt.c                |    4 +-
>  tools/perf/config/Makefile                         |   17 +-
>  tools/perf/util/auxtrace.c                         |    8 +-
>  tools/perf/util/auxtrace.h                         |    7 +-
>  tools/perf/util/cpumap.c                           |    2 +-
>  tools/perf/util/cpumap.h                           |    1 +
>  36 files changed, 3753 insertions(+), 1590 deletions(-)
>  create mode 100644 drivers/hwtracing/coresight/coresight-etm-perf.c
>  create mode 100644 drivers/hwtracing/coresight/coresight-etm-perf.h
>  create mode 100644 drivers/hwtracing/coresight/coresight-etm3x-sysfs.c
>  create mode 100644 include/linux/coresight-pmu.h
>  create mode 100644 tools/perf/arch/arm/util/auxtrace.c
>  create mode 100644 tools/perf/arch/arm/util/cs_etm.c
>  create mode 100644 tools/perf/arch/arm/util/cs_etm.h
>  create mode 100644 tools/perf/arch/arm/util/pmu.c
>
> --
> 2.1.4
>

Arnaldo, Peter and Ingo,

I would like to queue this work for 4.5 but need your help with
reviewing patches 20 [1], 23 [2], 24 [3], 25 [4] and 26 [5].

A "reviewed-by" would be greatly appreciated.

Many thanks,
Mathieu

[1]. https://lkml.org/lkml/2015/12/3/682
[2]. https://lkml.org/lkml/2015/12/3/688
[3]. https://lkml.org/lkml/2015/12/3/683
[4]. https://lkml.org/lkml/2015/12/3/686
[5]. https://lkml.org/lkml/2015/12/3/684



More information about the linux-arm-kernel mailing list