All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] coresight: Refresh documenation
@ 2018-04-16 19:35 ` Mathieu Poirier
  0 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel, corbet; +Cc: linux-doc, linux-kernel, Ben.Gainey

Now that the perf tools CoreSight support is upstream this set adds
documentation to go with it and move things around so that topics 
are located together. 

Mathieu Poirier (3):
  coresight: Remove obsolete reference to "owner" in CoreSight
    descriptor
  coresight: Add section for integration with the perf tools
  coresight: Grouping all perf tools oriented section together

 Documentation/trace/coresight.txt | 101 ++++++++++++++++++++++++++++----------
 1 file changed, 74 insertions(+), 27 deletions(-)

-- 
2.7.4

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

* [PATCH 0/3] coresight: Refresh documenation
@ 2018-04-16 19:35 ` Mathieu Poirier
  0 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel, corbet; +Cc: linux-doc, linux-kernel, Ben.Gainey

Now that the perf tools CoreSight support is upstream this set adds
documentation to go with it and move things around so that topics 
are located together. 

Mathieu Poirier (3):
  coresight: Remove obsolete reference to "owner" in CoreSight
    descriptor
  coresight: Add section for integration with the perf tools
  coresight: Grouping all perf tools oriented section together

 Documentation/trace/coresight.txt | 101 ++++++++++++++++++++++++++++----------
 1 file changed, 74 insertions(+), 27 deletions(-)

-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 0/3] coresight: Refresh documenation
@ 2018-04-16 19:35 ` Mathieu Poirier
  0 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel

Now that the perf tools CoreSight support is upstream this set adds
documentation to go with it and move things around so that topics 
are located together. 

Mathieu Poirier (3):
  coresight: Remove obsolete reference to "owner" in CoreSight
    descriptor
  coresight: Add section for integration with the perf tools
  coresight: Grouping all perf tools oriented section together

 Documentation/trace/coresight.txt | 101 ++++++++++++++++++++++++++++----------
 1 file changed, 74 insertions(+), 27 deletions(-)

-- 
2.7.4

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

* [PATCH 1/3] coresight: Remove obsolete reference to "owner" in CoreSight descriptor
  2018-04-16 19:35 ` Mathieu Poirier
  (?)
@ 2018-04-16 19:35   ` Mathieu Poirier
  -1 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel, corbet; +Cc: linux-doc, linux-kernel, Ben.Gainey

Field "owner" of struct coresight_desc has been removed a while back but
the documentation was not updated to reflect the changes.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 Documentation/trace/coresight.txt | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
index 6f0120c3a4f1..710c75b6c73f 100644
--- a/Documentation/trace/coresight.txt
+++ b/Documentation/trace/coresight.txt
@@ -187,9 +187,6 @@ that can be performed on them (see "struct coresight_ops").  The
 specific to that component only.  "Implementation defined" customisations are
 expected to be accessed and controlled using those entries.
 
-Last but not least, "struct module *owner" is expected to be set to reflect
-the information carried in "THIS_MODULE".
-
 How to use the tracer modules
 -----------------------------
 
-- 
2.7.4

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

* [PATCH 1/3] coresight: Remove obsolete reference to "owner" in CoreSight descriptor
@ 2018-04-16 19:35   ` Mathieu Poirier
  0 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel, corbet; +Cc: linux-doc, linux-kernel, Ben.Gainey

Field "owner" of struct coresight_desc has been removed a while back but
the documentation was not updated to reflect the changes.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 Documentation/trace/coresight.txt | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
index 6f0120c3a4f1..710c75b6c73f 100644
--- a/Documentation/trace/coresight.txt
+++ b/Documentation/trace/coresight.txt
@@ -187,9 +187,6 @@ that can be performed on them (see "struct coresight_ops").  The
 specific to that component only.  "Implementation defined" customisations are
 expected to be accessed and controlled using those entries.
 
-Last but not least, "struct module *owner" is expected to be set to reflect
-the information carried in "THIS_MODULE".
-
 How to use the tracer modules
 -----------------------------
 
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 1/3] coresight: Remove obsolete reference to "owner" in CoreSight descriptor
@ 2018-04-16 19:35   ` Mathieu Poirier
  0 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel

Field "owner" of struct coresight_desc has been removed a while back but
the documentation was not updated to reflect the changes.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 Documentation/trace/coresight.txt | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
index 6f0120c3a4f1..710c75b6c73f 100644
--- a/Documentation/trace/coresight.txt
+++ b/Documentation/trace/coresight.txt
@@ -187,9 +187,6 @@ that can be performed on them (see "struct coresight_ops").  The
 specific to that component only.  "Implementation defined" customisations are
 expected to be accessed and controlled using those entries.
 
-Last but not least, "struct module *owner" is expected to be set to reflect
-the information carried in "THIS_MODULE".
-
 How to use the tracer modules
 -----------------------------
 
-- 
2.7.4

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

* [PATCH 2/3] coresight: Add section for integration with the perf tools
  2018-04-16 19:35 ` Mathieu Poirier
  (?)
@ 2018-04-16 19:35   ` Mathieu Poirier
  -1 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel, corbet; +Cc: linux-doc, linux-kernel, Ben.Gainey

Adding a section that document how to use the Coresight framework and
drivers from the perf tools.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 Documentation/trace/coresight.txt | 50 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
index 710c75b6c73f..8caae8050a60 100644
--- a/Documentation/trace/coresight.txt
+++ b/Documentation/trace/coresight.txt
@@ -187,9 +187,18 @@ that can be performed on them (see "struct coresight_ops").  The
 specific to that component only.  "Implementation defined" customisations are
 expected to be accessed and controlled using those entries.
 
+
 How to use the tracer modules
 -----------------------------
 
+There is two ways to use the Coresight framework: 1) using the perf cmd line
+tools and 2) interacting directly with the Coresight devices using the sysFS
+interface.  Preference is given to the former as using the sysFS interface
+requires a deep understanding of the Coresight HW.  The following sections
+provide details on using both methods.
+
+1) Using the sysFS interface:
+
 Before trace collection can start, a coresight sink needs to be identify.
 There is no limit on the amount of sinks (nor sources) that can be enabled at
 any given moment.  As a generic operation, all device pertaining to the sink
@@ -295,6 +304,47 @@ Instruction     13570831        0x8026B584      E28DD00C        false   ADD
 Instruction     0       0x8026B588      E8BD8000        true    LDM      sp!,{pc}
 Timestamp                                       Timestamp: 17107041535
 
+2) Using perf framework:
+
+Coresight tracers are represented using the Perf framework's Performance
+Monitoring Unit (PMU) abstraction.  As such the perf framework takes charge of
+controlling when tracing gets enabled based on when the process of interest is
+scheduled.  When configured in a system, Coresight PMUs will be listed when
+queried by the perf command line tool:
+
+	linaro@linaro-nano:~$ ./perf list pmu
+
+		List of pre-defined events (to be used in -e):
+
+		cs_etm//                                    [Kernel PMU event]
+
+	linaro@linaro-nano:~$
+
+Regardless of the number of tracers available in a system (usually equal to the
+amount of processor core), the "cs_etm" PMU will be listed only once.
+
+A Coresight PMU works the same way as any other PMUs, i.e the name of the PMU is
+listed along with configuration options within forward slashes '/'.  Since a
+Coresight system will typically have more than one sink, the name of the sink to
+work with needs to be specified as an event option.  Names for sink to choose
+from are listed in sysFS under ($SYSFS)/bus/coresight/devices:
+
+	root@linaro-nano:~# ls /sys/bus/coresight/devices/
+		20010000.etf   20040000.funnel  20100000.stm  22040000.etm
+		22140000.etm  230c0000.funnel  23240000.etm 20030000.tpiu
+		20070000.etr     20120000.replicator  220c0000.funnel
+		23040000.etm  23140000.etm     23340000.etm
+
+	root@linaro-nano:~# perf record -e cs_etm/@20070000.etr/u --per-thread program
+
+The syntax within the forward slashes '/' is important.  The '@' character
+tells the parser that a sink is about to be specified and that this is the IP
+to use for the trace session.
+
+More information on the above and other example on how to use Coresight with
+the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
+repository [3].
+
 How to use the STM module
 -------------------------
 
-- 
2.7.4

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

* [PATCH 2/3] coresight: Add section for integration with the perf tools
@ 2018-04-16 19:35   ` Mathieu Poirier
  0 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel, corbet; +Cc: linux-doc, linux-kernel, Ben.Gainey

Adding a section that document how to use the Coresight framework and
drivers from the perf tools.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 Documentation/trace/coresight.txt | 50 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
index 710c75b6c73f..8caae8050a60 100644
--- a/Documentation/trace/coresight.txt
+++ b/Documentation/trace/coresight.txt
@@ -187,9 +187,18 @@ that can be performed on them (see "struct coresight_ops").  The
 specific to that component only.  "Implementation defined" customisations are
 expected to be accessed and controlled using those entries.
 
+
 How to use the tracer modules
 -----------------------------
 
+There is two ways to use the Coresight framework: 1) using the perf cmd line
+tools and 2) interacting directly with the Coresight devices using the sysFS
+interface.  Preference is given to the former as using the sysFS interface
+requires a deep understanding of the Coresight HW.  The following sections
+provide details on using both methods.
+
+1) Using the sysFS interface:
+
 Before trace collection can start, a coresight sink needs to be identify.
 There is no limit on the amount of sinks (nor sources) that can be enabled at
 any given moment.  As a generic operation, all device pertaining to the sink
@@ -295,6 +304,47 @@ Instruction     13570831        0x8026B584      E28DD00C        false   ADD
 Instruction     0       0x8026B588      E8BD8000        true    LDM      sp!,{pc}
 Timestamp                                       Timestamp: 17107041535
 
+2) Using perf framework:
+
+Coresight tracers are represented using the Perf framework's Performance
+Monitoring Unit (PMU) abstraction.  As such the perf framework takes charge of
+controlling when tracing gets enabled based on when the process of interest is
+scheduled.  When configured in a system, Coresight PMUs will be listed when
+queried by the perf command line tool:
+
+	linaro@linaro-nano:~$ ./perf list pmu
+
+		List of pre-defined events (to be used in -e):
+
+		cs_etm//                                    [Kernel PMU event]
+
+	linaro@linaro-nano:~$
+
+Regardless of the number of tracers available in a system (usually equal to the
+amount of processor core), the "cs_etm" PMU will be listed only once.
+
+A Coresight PMU works the same way as any other PMUs, i.e the name of the PMU is
+listed along with configuration options within forward slashes '/'.  Since a
+Coresight system will typically have more than one sink, the name of the sink to
+work with needs to be specified as an event option.  Names for sink to choose
+from are listed in sysFS under ($SYSFS)/bus/coresight/devices:
+
+	root@linaro-nano:~# ls /sys/bus/coresight/devices/
+		20010000.etf   20040000.funnel  20100000.stm  22040000.etm
+		22140000.etm  230c0000.funnel  23240000.etm 20030000.tpiu
+		20070000.etr     20120000.replicator  220c0000.funnel
+		23040000.etm  23140000.etm     23340000.etm
+
+	root@linaro-nano:~# perf record -e cs_etm/@20070000.etr/u --per-thread program
+
+The syntax within the forward slashes '/' is important.  The '@' character
+tells the parser that a sink is about to be specified and that this is the IP
+to use for the trace session.
+
+More information on the above and other example on how to use Coresight with
+the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
+repository [3].
+
 How to use the STM module
 -------------------------
 
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 2/3] coresight: Add section for integration with the perf tools
@ 2018-04-16 19:35   ` Mathieu Poirier
  0 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel

Adding a section that document how to use the Coresight framework and
drivers from the perf tools.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 Documentation/trace/coresight.txt | 50 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
index 710c75b6c73f..8caae8050a60 100644
--- a/Documentation/trace/coresight.txt
+++ b/Documentation/trace/coresight.txt
@@ -187,9 +187,18 @@ that can be performed on them (see "struct coresight_ops").  The
 specific to that component only.  "Implementation defined" customisations are
 expected to be accessed and controlled using those entries.
 
+
 How to use the tracer modules
 -----------------------------
 
+There is two ways to use the Coresight framework: 1) using the perf cmd line
+tools and 2) interacting directly with the Coresight devices using the sysFS
+interface.  Preference is given to the former as using the sysFS interface
+requires a deep understanding of the Coresight HW.  The following sections
+provide details on using both methods.
+
+1) Using the sysFS interface:
+
 Before trace collection can start, a coresight sink needs to be identify.
 There is no limit on the amount of sinks (nor sources) that can be enabled at
 any given moment.  As a generic operation, all device pertaining to the sink
@@ -295,6 +304,47 @@ Instruction     13570831        0x8026B584      E28DD00C        false   ADD
 Instruction     0       0x8026B588      E8BD8000        true    LDM      sp!,{pc}
 Timestamp                                       Timestamp: 17107041535
 
+2) Using perf framework:
+
+Coresight tracers are represented using the Perf framework's Performance
+Monitoring Unit (PMU) abstraction.  As such the perf framework takes charge of
+controlling when tracing gets enabled based on when the process of interest is
+scheduled.  When configured in a system, Coresight PMUs will be listed when
+queried by the perf command line tool:
+
+	linaro at linaro-nano:~$ ./perf list pmu
+
+		List of pre-defined events (to be used in -e):
+
+		cs_etm//                                    [Kernel PMU event]
+
+	linaro at linaro-nano:~$
+
+Regardless of the number of tracers available in a system (usually equal to the
+amount of processor core), the "cs_etm" PMU will be listed only once.
+
+A Coresight PMU works the same way as any other PMUs, i.e the name of the PMU is
+listed along with configuration options within forward slashes '/'.  Since a
+Coresight system will typically have more than one sink, the name of the sink to
+work with needs to be specified as an event option.  Names for sink to choose
+from are listed in sysFS under ($SYSFS)/bus/coresight/devices:
+
+	root at linaro-nano:~# ls /sys/bus/coresight/devices/
+		20010000.etf   20040000.funnel  20100000.stm  22040000.etm
+		22140000.etm  230c0000.funnel  23240000.etm 20030000.tpiu
+		20070000.etr     20120000.replicator  220c0000.funnel
+		23040000.etm  23140000.etm     23340000.etm
+
+	root at linaro-nano:~# perf record -e cs_etm/@20070000.etr/u --per-thread program
+
+The syntax within the forward slashes '/' is important.  The '@' character
+tells the parser that a sink is about to be specified and that this is the IP
+to use for the trace session.
+
+More information on the above and other example on how to use Coresight with
+the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
+repository [3].
+
 How to use the STM module
 -------------------------
 
-- 
2.7.4

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

* [PATCH 3/3] coresight: Grouping all perf tools oriented section together
  2018-04-16 19:35 ` Mathieu Poirier
  (?)
@ 2018-04-16 19:35   ` Mathieu Poirier
  -1 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel, corbet; +Cc: linux-doc, linux-kernel, Ben.Gainey

This patch groups together section pertaining to the perf tools.  That way
everything is at the same place rather than spread out.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 Documentation/trace/coresight.txt | 72 +++++++++++++++++++--------------------
 1 file changed, 36 insertions(+), 36 deletions(-)

diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
index 8caae8050a60..32c5b159e8fc 100644
--- a/Documentation/trace/coresight.txt
+++ b/Documentation/trace/coresight.txt
@@ -345,42 +345,7 @@ More information on the above and other example on how to use Coresight with
 the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
 repository [3].
 
-How to use the STM module
--------------------------
-
-Using the System Trace Macrocell module is the same as the tracers - the only
-difference is that clients are driving the trace capture rather
-than the program flow through the code.
-
-As with any other CoreSight component, specifics about the STM tracer can be
-found in sysfs with more information on each entry being found in [1]:
-
-root@genericarmv8:~# ls /sys/bus/coresight/devices/20100000.stm
-enable_source   hwevent_select  port_enable     subsystem       uevent
-hwevent_enable  mgmt            port_select     traceid
-root@genericarmv8:~#
-
-Like any other source a sink needs to be identified and the STM enabled before
-being used:
-
-root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20010000.etf/enable_sink
-root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20100000.stm/enable_source
-
-From there user space applications can request and use channels using the devfs
-interface provided for that purpose by the generic STM API:
-
-root@genericarmv8:~# ls -l /dev/20100000.stm
-crw-------    1 root     root       10,  61 Jan  3 18:11 /dev/20100000.stm
-root@genericarmv8:~#
-
-Details on how to use the generic STM API can be found here [2].
-
-[1]. Documentation/ABI/testing/sysfs-bus-coresight-devices-stm
-[2]. Documentation/trace/stm.txt
-
-
-Using perf tools
-----------------
+2.1) AutoFDO analysis using the perf tools:
 
 perf can be used to record and analyze trace of programs.
 
@@ -428,3 +393,38 @@ sort example is from the AutoFDO tutorial (https://gcc.gnu.org/wiki/AutoFDO/Tuto
 	$ taskset -c 2 ./sort_autofdo
 	Bubble sorting array of 30000 elements
 	5806 ms
+
+
+How to use the STM module
+-------------------------
+
+Using the System Trace Macrocell module is the same as the tracers - the only
+difference is that clients are driving the trace capture rather
+than the program flow through the code.
+
+As with any other CoreSight component, specifics about the STM tracer can be
+found in sysfs with more information on each entry being found in [1]:
+
+root@genericarmv8:~# ls /sys/bus/coresight/devices/20100000.stm
+enable_source   hwevent_select  port_enable     subsystem       uevent
+hwevent_enable  mgmt            port_select     traceid
+root@genericarmv8:~#
+
+Like any other source a sink needs to be identified and the STM enabled before
+being used:
+
+root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20010000.etf/enable_sink
+root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20100000.stm/enable_source
+
+From there user space applications can request and use channels using the devfs
+interface provided for that purpose by the generic STM API:
+
+root@genericarmv8:~# ls -l /dev/20100000.stm
+crw-------    1 root     root       10,  61 Jan  3 18:11 /dev/20100000.stm
+root@genericarmv8:~#
+
+Details on how to use the generic STM API can be found here [2].
+
+[1]. Documentation/ABI/testing/sysfs-bus-coresight-devices-stm
+[2]. Documentation/trace/stm.txt
+[3]. https://github.com/Linaro/perf-opencsd
-- 
2.7.4

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

* [PATCH 3/3] coresight: Grouping all perf tools oriented section together
@ 2018-04-16 19:35   ` Mathieu Poirier
  0 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel, corbet; +Cc: linux-doc, linux-kernel, Ben.Gainey

This patch groups together section pertaining to the perf tools.  That way
everything is at the same place rather than spread out.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 Documentation/trace/coresight.txt | 72 +++++++++++++++++++--------------------
 1 file changed, 36 insertions(+), 36 deletions(-)

diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
index 8caae8050a60..32c5b159e8fc 100644
--- a/Documentation/trace/coresight.txt
+++ b/Documentation/trace/coresight.txt
@@ -345,42 +345,7 @@ More information on the above and other example on how to use Coresight with
 the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
 repository [3].
 
-How to use the STM module
--------------------------
-
-Using the System Trace Macrocell module is the same as the tracers - the only
-difference is that clients are driving the trace capture rather
-than the program flow through the code.
-
-As with any other CoreSight component, specifics about the STM tracer can be
-found in sysfs with more information on each entry being found in [1]:
-
-root@genericarmv8:~# ls /sys/bus/coresight/devices/20100000.stm
-enable_source   hwevent_select  port_enable     subsystem       uevent
-hwevent_enable  mgmt            port_select     traceid
-root@genericarmv8:~#
-
-Like any other source a sink needs to be identified and the STM enabled before
-being used:
-
-root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20010000.etf/enable_sink
-root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20100000.stm/enable_source
-
-From there user space applications can request and use channels using the devfs
-interface provided for that purpose by the generic STM API:
-
-root@genericarmv8:~# ls -l /dev/20100000.stm
-crw-------    1 root     root       10,  61 Jan  3 18:11 /dev/20100000.stm
-root@genericarmv8:~#
-
-Details on how to use the generic STM API can be found here [2].
-
-[1]. Documentation/ABI/testing/sysfs-bus-coresight-devices-stm
-[2]. Documentation/trace/stm.txt
-
-
-Using perf tools
-----------------
+2.1) AutoFDO analysis using the perf tools:
 
 perf can be used to record and analyze trace of programs.
 
@@ -428,3 +393,38 @@ sort example is from the AutoFDO tutorial (https://gcc.gnu.org/wiki/AutoFDO/Tuto
 	$ taskset -c 2 ./sort_autofdo
 	Bubble sorting array of 30000 elements
 	5806 ms
+
+
+How to use the STM module
+-------------------------
+
+Using the System Trace Macrocell module is the same as the tracers - the only
+difference is that clients are driving the trace capture rather
+than the program flow through the code.
+
+As with any other CoreSight component, specifics about the STM tracer can be
+found in sysfs with more information on each entry being found in [1]:
+
+root@genericarmv8:~# ls /sys/bus/coresight/devices/20100000.stm
+enable_source   hwevent_select  port_enable     subsystem       uevent
+hwevent_enable  mgmt            port_select     traceid
+root@genericarmv8:~#
+
+Like any other source a sink needs to be identified and the STM enabled before
+being used:
+
+root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20010000.etf/enable_sink
+root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20100000.stm/enable_source
+
+From there user space applications can request and use channels using the devfs
+interface provided for that purpose by the generic STM API:
+
+root@genericarmv8:~# ls -l /dev/20100000.stm
+crw-------    1 root     root       10,  61 Jan  3 18:11 /dev/20100000.stm
+root@genericarmv8:~#
+
+Details on how to use the generic STM API can be found here [2].
+
+[1]. Documentation/ABI/testing/sysfs-bus-coresight-devices-stm
+[2]. Documentation/trace/stm.txt
+[3]. https://github.com/Linaro/perf-opencsd
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 3/3] coresight: Grouping all perf tools oriented section together
@ 2018-04-16 19:35   ` Mathieu Poirier
  0 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-16 19:35 UTC (permalink / raw)
  To: linux-arm-kernel

This patch groups together section pertaining to the perf tools.  That way
everything is at the same place rather than spread out.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 Documentation/trace/coresight.txt | 72 +++++++++++++++++++--------------------
 1 file changed, 36 insertions(+), 36 deletions(-)

diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
index 8caae8050a60..32c5b159e8fc 100644
--- a/Documentation/trace/coresight.txt
+++ b/Documentation/trace/coresight.txt
@@ -345,42 +345,7 @@ More information on the above and other example on how to use Coresight with
 the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
 repository [3].
 
-How to use the STM module
--------------------------
-
-Using the System Trace Macrocell module is the same as the tracers - the only
-difference is that clients are driving the trace capture rather
-than the program flow through the code.
-
-As with any other CoreSight component, specifics about the STM tracer can be
-found in sysfs with more information on each entry being found in [1]:
-
-root at genericarmv8:~# ls /sys/bus/coresight/devices/20100000.stm
-enable_source   hwevent_select  port_enable     subsystem       uevent
-hwevent_enable  mgmt            port_select     traceid
-root at genericarmv8:~#
-
-Like any other source a sink needs to be identified and the STM enabled before
-being used:
-
-root at genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20010000.etf/enable_sink
-root at genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20100000.stm/enable_source
-
-From there user space applications can request and use channels using the devfs
-interface provided for that purpose by the generic STM API:
-
-root at genericarmv8:~# ls -l /dev/20100000.stm
-crw-------    1 root     root       10,  61 Jan  3 18:11 /dev/20100000.stm
-root at genericarmv8:~#
-
-Details on how to use the generic STM API can be found here [2].
-
-[1]. Documentation/ABI/testing/sysfs-bus-coresight-devices-stm
-[2]. Documentation/trace/stm.txt
-
-
-Using perf tools
-----------------
+2.1) AutoFDO analysis using the perf tools:
 
 perf can be used to record and analyze trace of programs.
 
@@ -428,3 +393,38 @@ sort example is from the AutoFDO tutorial (https://gcc.gnu.org/wiki/AutoFDO/Tuto
 	$ taskset -c 2 ./sort_autofdo
 	Bubble sorting array of 30000 elements
 	5806 ms
+
+
+How to use the STM module
+-------------------------
+
+Using the System Trace Macrocell module is the same as the tracers - the only
+difference is that clients are driving the trace capture rather
+than the program flow through the code.
+
+As with any other CoreSight component, specifics about the STM tracer can be
+found in sysfs with more information on each entry being found in [1]:
+
+root at genericarmv8:~# ls /sys/bus/coresight/devices/20100000.stm
+enable_source   hwevent_select  port_enable     subsystem       uevent
+hwevent_enable  mgmt            port_select     traceid
+root at genericarmv8:~#
+
+Like any other source a sink needs to be identified and the STM enabled before
+being used:
+
+root at genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20010000.etf/enable_sink
+root at genericarmv8:~# echo 1 > /sys/bus/coresight/devices/20100000.stm/enable_source
+
+From there user space applications can request and use channels using the devfs
+interface provided for that purpose by the generic STM API:
+
+root at genericarmv8:~# ls -l /dev/20100000.stm
+crw-------    1 root     root       10,  61 Jan  3 18:11 /dev/20100000.stm
+root at genericarmv8:~#
+
+Details on how to use the generic STM API can be found here [2].
+
+[1]. Documentation/ABI/testing/sysfs-bus-coresight-devices-stm
+[2]. Documentation/trace/stm.txt
+[3]. https://github.com/Linaro/perf-opencsd
-- 
2.7.4

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

* Re: [PATCH 2/3] coresight: Add section for integration with the perf tools
  2018-04-16 19:35   ` Mathieu Poirier
  (?)
@ 2018-04-16 19:48     ` Randy Dunlap
  -1 siblings, 0 replies; 18+ messages in thread
From: Randy Dunlap @ 2018-04-16 19:48 UTC (permalink / raw)
  To: Mathieu Poirier, linux-arm-kernel, corbet
  Cc: linux-doc, linux-kernel, Ben.Gainey

On 04/16/2018 12:35 PM, Mathieu Poirier wrote:
> Adding a section that document how to use the Coresight framework and
> drivers from the perf tools.
> 
> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> ---
>  Documentation/trace/coresight.txt | 50 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
> 
> diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
> index 710c75b6c73f..8caae8050a60 100644
> --- a/Documentation/trace/coresight.txt
> +++ b/Documentation/trace/coresight.txt
> @@ -187,9 +187,18 @@ that can be performed on them (see "struct coresight_ops").  The
>  specific to that component only.  "Implementation defined" customisations are
>  expected to be accessed and controlled using those entries.
>  
> +
>  How to use the tracer modules
>  -----------------------------
>  
> +There is two ways to use the Coresight framework: 1) using the perf cmd line

   There are two ways

> +tools and 2) interacting directly with the Coresight devices using the sysFS
> +interface.  Preference is given to the former as using the sysFS interface
> +requires a deep understanding of the Coresight HW.  The following sections
> +provide details on using both methods.
> +
> +1) Using the sysFS interface:
> +
>  Before trace collection can start, a coresight sink needs to be identify.

                                                                   identified.

>  There is no limit on the amount of sinks (nor sources) that can be enabled at
>  any given moment.  As a generic operation, all device pertaining to the sink
> @@ -295,6 +304,47 @@ Instruction     13570831        0x8026B584      E28DD00C        false   ADD
>  Instruction     0       0x8026B588      E8BD8000        true    LDM      sp!,{pc}
>  Timestamp                                       Timestamp: 17107041535
>  
> +2) Using perf framework:
> +
> +Coresight tracers are represented using the Perf framework's Performance
> +Monitoring Unit (PMU) abstraction.  As such the perf framework takes charge of
> +controlling when tracing gets enabled based on when the process of interest is
> +scheduled.  When configured in a system, Coresight PMUs will be listed when
> +queried by the perf command line tool:
> +
> +	linaro@linaro-nano:~$ ./perf list pmu
> +
> +		List of pre-defined events (to be used in -e):
> +
> +		cs_etm//                                    [Kernel PMU event]
> +
> +	linaro@linaro-nano:~$
> +
> +Regardless of the number of tracers available in a system (usually equal to the
> +amount of processor core), the "cs_etm" PMU will be listed only once.

?                      cores),

> +
> +A Coresight PMU works the same way as any other PMUs, i.e the name of the PMU is

                                         any other PMU, i.e.

> +listed along with configuration options within forward slashes '/'.  Since a
> +Coresight system will typically have more than one sink, the name of the sink to
> +work with needs to be specified as an event option.  Names for sink to choose
> +from are listed in sysFS under ($SYSFS)/bus/coresight/devices:
> +
> +	root@linaro-nano:~# ls /sys/bus/coresight/devices/
> +		20010000.etf   20040000.funnel  20100000.stm  22040000.etm
> +		22140000.etm  230c0000.funnel  23240000.etm 20030000.tpiu
> +		20070000.etr     20120000.replicator  220c0000.funnel
> +		23040000.etm  23140000.etm     23340000.etm
> +
> +	root@linaro-nano:~# perf record -e cs_etm/@20070000.etr/u --per-thread program
> +
> +The syntax within the forward slashes '/' is important.  The '@' character
> +tells the parser that a sink is about to be specified and that this is the IP

Can we get away from using "IP" and call it a device or (hardware) module or
something more descriptive?

> +to use for the trace session.
> +
> +More information on the above and other example on how to use Coresight with
> +the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
> +repository [3].


-- 
~Randy

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

* Re: [PATCH 2/3] coresight: Add section for integration with the perf tools
@ 2018-04-16 19:48     ` Randy Dunlap
  0 siblings, 0 replies; 18+ messages in thread
From: Randy Dunlap @ 2018-04-16 19:48 UTC (permalink / raw)
  To: Mathieu Poirier, linux-arm-kernel, corbet
  Cc: linux-doc, linux-kernel, Ben.Gainey

On 04/16/2018 12:35 PM, Mathieu Poirier wrote:
> Adding a section that document how to use the Coresight framework and
> drivers from the perf tools.
> 
> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> ---
>  Documentation/trace/coresight.txt | 50 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
> 
> diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
> index 710c75b6c73f..8caae8050a60 100644
> --- a/Documentation/trace/coresight.txt
> +++ b/Documentation/trace/coresight.txt
> @@ -187,9 +187,18 @@ that can be performed on them (see "struct coresight_ops").  The
>  specific to that component only.  "Implementation defined" customisations are
>  expected to be accessed and controlled using those entries.
>  
> +
>  How to use the tracer modules
>  -----------------------------
>  
> +There is two ways to use the Coresight framework: 1) using the perf cmd line

   There are two ways

> +tools and 2) interacting directly with the Coresight devices using the sysFS
> +interface.  Preference is given to the former as using the sysFS interface
> +requires a deep understanding of the Coresight HW.  The following sections
> +provide details on using both methods.
> +
> +1) Using the sysFS interface:
> +
>  Before trace collection can start, a coresight sink needs to be identify.

                                                                   identified.

>  There is no limit on the amount of sinks (nor sources) that can be enabled at
>  any given moment.  As a generic operation, all device pertaining to the sink
> @@ -295,6 +304,47 @@ Instruction     13570831        0x8026B584      E28DD00C        false   ADD
>  Instruction     0       0x8026B588      E8BD8000        true    LDM      sp!,{pc}
>  Timestamp                                       Timestamp: 17107041535
>  
> +2) Using perf framework:
> +
> +Coresight tracers are represented using the Perf framework's Performance
> +Monitoring Unit (PMU) abstraction.  As such the perf framework takes charge of
> +controlling when tracing gets enabled based on when the process of interest is
> +scheduled.  When configured in a system, Coresight PMUs will be listed when
> +queried by the perf command line tool:
> +
> +	linaro@linaro-nano:~$ ./perf list pmu
> +
> +		List of pre-defined events (to be used in -e):
> +
> +		cs_etm//                                    [Kernel PMU event]
> +
> +	linaro@linaro-nano:~$
> +
> +Regardless of the number of tracers available in a system (usually equal to the
> +amount of processor core), the "cs_etm" PMU will be listed only once.

?                      cores),

> +
> +A Coresight PMU works the same way as any other PMUs, i.e the name of the PMU is

                                         any other PMU, i.e.

> +listed along with configuration options within forward slashes '/'.  Since a
> +Coresight system will typically have more than one sink, the name of the sink to
> +work with needs to be specified as an event option.  Names for sink to choose
> +from are listed in sysFS under ($SYSFS)/bus/coresight/devices:
> +
> +	root@linaro-nano:~# ls /sys/bus/coresight/devices/
> +		20010000.etf   20040000.funnel  20100000.stm  22040000.etm
> +		22140000.etm  230c0000.funnel  23240000.etm 20030000.tpiu
> +		20070000.etr     20120000.replicator  220c0000.funnel
> +		23040000.etm  23140000.etm     23340000.etm
> +
> +	root@linaro-nano:~# perf record -e cs_etm/@20070000.etr/u --per-thread program
> +
> +The syntax within the forward slashes '/' is important.  The '@' character
> +tells the parser that a sink is about to be specified and that this is the IP

Can we get away from using "IP" and call it a device or (hardware) module or
something more descriptive?

> +to use for the trace session.
> +
> +More information on the above and other example on how to use Coresight with
> +the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
> +repository [3].


-- 
~Randy
--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 2/3] coresight: Add section for integration with the perf tools
@ 2018-04-16 19:48     ` Randy Dunlap
  0 siblings, 0 replies; 18+ messages in thread
From: Randy Dunlap @ 2018-04-16 19:48 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/16/2018 12:35 PM, Mathieu Poirier wrote:
> Adding a section that document how to use the Coresight framework and
> drivers from the perf tools.
> 
> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> ---
>  Documentation/trace/coresight.txt | 50 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
> 
> diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
> index 710c75b6c73f..8caae8050a60 100644
> --- a/Documentation/trace/coresight.txt
> +++ b/Documentation/trace/coresight.txt
> @@ -187,9 +187,18 @@ that can be performed on them (see "struct coresight_ops").  The
>  specific to that component only.  "Implementation defined" customisations are
>  expected to be accessed and controlled using those entries.
>  
> +
>  How to use the tracer modules
>  -----------------------------
>  
> +There is two ways to use the Coresight framework: 1) using the perf cmd line

   There are two ways

> +tools and 2) interacting directly with the Coresight devices using the sysFS
> +interface.  Preference is given to the former as using the sysFS interface
> +requires a deep understanding of the Coresight HW.  The following sections
> +provide details on using both methods.
> +
> +1) Using the sysFS interface:
> +
>  Before trace collection can start, a coresight sink needs to be identify.

                                                                   identified.

>  There is no limit on the amount of sinks (nor sources) that can be enabled at
>  any given moment.  As a generic operation, all device pertaining to the sink
> @@ -295,6 +304,47 @@ Instruction     13570831        0x8026B584      E28DD00C        false   ADD
>  Instruction     0       0x8026B588      E8BD8000        true    LDM      sp!,{pc}
>  Timestamp                                       Timestamp: 17107041535
>  
> +2) Using perf framework:
> +
> +Coresight tracers are represented using the Perf framework's Performance
> +Monitoring Unit (PMU) abstraction.  As such the perf framework takes charge of
> +controlling when tracing gets enabled based on when the process of interest is
> +scheduled.  When configured in a system, Coresight PMUs will be listed when
> +queried by the perf command line tool:
> +
> +	linaro at linaro-nano:~$ ./perf list pmu
> +
> +		List of pre-defined events (to be used in -e):
> +
> +		cs_etm//                                    [Kernel PMU event]
> +
> +	linaro at linaro-nano:~$
> +
> +Regardless of the number of tracers available in a system (usually equal to the
> +amount of processor core), the "cs_etm" PMU will be listed only once.

?                      cores),

> +
> +A Coresight PMU works the same way as any other PMUs, i.e the name of the PMU is

                                         any other PMU, i.e.

> +listed along with configuration options within forward slashes '/'.  Since a
> +Coresight system will typically have more than one sink, the name of the sink to
> +work with needs to be specified as an event option.  Names for sink to choose
> +from are listed in sysFS under ($SYSFS)/bus/coresight/devices:
> +
> +	root at linaro-nano:~# ls /sys/bus/coresight/devices/
> +		20010000.etf   20040000.funnel  20100000.stm  22040000.etm
> +		22140000.etm  230c0000.funnel  23240000.etm 20030000.tpiu
> +		20070000.etr     20120000.replicator  220c0000.funnel
> +		23040000.etm  23140000.etm     23340000.etm
> +
> +	root at linaro-nano:~# perf record -e cs_etm/@20070000.etr/u --per-thread program
> +
> +The syntax within the forward slashes '/' is important.  The '@' character
> +tells the parser that a sink is about to be specified and that this is the IP

Can we get away from using "IP" and call it a device or (hardware) module or
something more descriptive?

> +to use for the trace session.
> +
> +More information on the above and other example on how to use Coresight with
> +the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
> +repository [3].


-- 
~Randy

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

* Re: [PATCH 2/3] coresight: Add section for integration with the perf tools
  2018-04-16 19:48     ` Randy Dunlap
  (?)
@ 2018-04-17 15:46       ` Mathieu Poirier
  -1 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-17 15:46 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: linux-arm-kernel, Jon Corbet, open list:DOCUMENTATION,
	linux-kernel, Ben Gainey

On 16 April 2018 at 13:48, Randy Dunlap <rdunlap@infradead.org> wrote:
> On 04/16/2018 12:35 PM, Mathieu Poirier wrote:
>> Adding a section that document how to use the Coresight framework and
>> drivers from the perf tools.
>>
>> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
>> ---
>>  Documentation/trace/coresight.txt | 50 +++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 50 insertions(+)
>>
>> diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
>> index 710c75b6c73f..8caae8050a60 100644
>> --- a/Documentation/trace/coresight.txt
>> +++ b/Documentation/trace/coresight.txt
>> @@ -187,9 +187,18 @@ that can be performed on them (see "struct coresight_ops").  The
>>  specific to that component only.  "Implementation defined" customisations are
>>  expected to be accessed and controlled using those entries.
>>
>> +
>>  How to use the tracer modules
>>  -----------------------------
>>
>> +There is two ways to use the Coresight framework: 1) using the perf cmd line
>
>    There are two ways
>
>> +tools and 2) interacting directly with the Coresight devices using the sysFS
>> +interface.  Preference is given to the former as using the sysFS interface
>> +requires a deep understanding of the Coresight HW.  The following sections
>> +provide details on using both methods.
>> +
>> +1) Using the sysFS interface:
>> +
>>  Before trace collection can start, a coresight sink needs to be identify.
>
>                                                                    identified.
>
>>  There is no limit on the amount of sinks (nor sources) that can be enabled at
>>  any given moment.  As a generic operation, all device pertaining to the sink
>> @@ -295,6 +304,47 @@ Instruction     13570831        0x8026B584      E28DD00C        false   ADD
>>  Instruction     0       0x8026B588      E8BD8000        true    LDM      sp!,{pc}
>>  Timestamp                                       Timestamp: 17107041535
>>
>> +2) Using perf framework:
>> +
>> +Coresight tracers are represented using the Perf framework's Performance
>> +Monitoring Unit (PMU) abstraction.  As such the perf framework takes charge of
>> +controlling when tracing gets enabled based on when the process of interest is
>> +scheduled.  When configured in a system, Coresight PMUs will be listed when
>> +queried by the perf command line tool:
>> +
>> +     linaro@linaro-nano:~$ ./perf list pmu
>> +
>> +             List of pre-defined events (to be used in -e):
>> +
>> +             cs_etm//                                    [Kernel PMU event]
>> +
>> +     linaro@linaro-nano:~$
>> +
>> +Regardless of the number of tracers available in a system (usually equal to the
>> +amount of processor core), the "cs_etm" PMU will be listed only once.
>
> ?                      cores),
>
>> +
>> +A Coresight PMU works the same way as any other PMUs, i.e the name of the PMU is
>
>                                          any other PMU, i.e.
>
>> +listed along with configuration options within forward slashes '/'.  Since a
>> +Coresight system will typically have more than one sink, the name of the sink to
>> +work with needs to be specified as an event option.  Names for sink to choose
>> +from are listed in sysFS under ($SYSFS)/bus/coresight/devices:
>> +
>> +     root@linaro-nano:~# ls /sys/bus/coresight/devices/
>> +             20010000.etf   20040000.funnel  20100000.stm  22040000.etm
>> +             22140000.etm  230c0000.funnel  23240000.etm 20030000.tpiu
>> +             20070000.etr     20120000.replicator  220c0000.funnel
>> +             23040000.etm  23140000.etm     23340000.etm
>> +
>> +     root@linaro-nano:~# perf record -e cs_etm/@20070000.etr/u --per-thread program
>> +
>> +The syntax within the forward slashes '/' is important.  The '@' character
>> +tells the parser that a sink is about to be specified and that this is the IP
>
> Can we get away from using "IP" and call it a device or (hardware) module or
> something more descriptive?

Sure thing.

Thanks for taking the time to read the patch and providing comments.

Mathieu

>
>> +to use for the trace session.
>> +
>> +More information on the above and other example on how to use Coresight with
>> +the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
>> +repository [3].
>
>
> --
> ~Randy

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

* Re: [PATCH 2/3] coresight: Add section for integration with the perf tools
@ 2018-04-17 15:46       ` Mathieu Poirier
  0 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-17 15:46 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: linux-arm-kernel, Jon Corbet, open list:DOCUMENTATION,
	linux-kernel, Ben Gainey

On 16 April 2018 at 13:48, Randy Dunlap <rdunlap@infradead.org> wrote:
> On 04/16/2018 12:35 PM, Mathieu Poirier wrote:
>> Adding a section that document how to use the Coresight framework and
>> drivers from the perf tools.
>>
>> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
>> ---
>>  Documentation/trace/coresight.txt | 50 +++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 50 insertions(+)
>>
>> diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
>> index 710c75b6c73f..8caae8050a60 100644
>> --- a/Documentation/trace/coresight.txt
>> +++ b/Documentation/trace/coresight.txt
>> @@ -187,9 +187,18 @@ that can be performed on them (see "struct coresight_ops").  The
>>  specific to that component only.  "Implementation defined" customisations are
>>  expected to be accessed and controlled using those entries.
>>
>> +
>>  How to use the tracer modules
>>  -----------------------------
>>
>> +There is two ways to use the Coresight framework: 1) using the perf cmd line
>
>    There are two ways
>
>> +tools and 2) interacting directly with the Coresight devices using the sysFS
>> +interface.  Preference is given to the former as using the sysFS interface
>> +requires a deep understanding of the Coresight HW.  The following sections
>> +provide details on using both methods.
>> +
>> +1) Using the sysFS interface:
>> +
>>  Before trace collection can start, a coresight sink needs to be identify.
>
>                                                                    identified.
>
>>  There is no limit on the amount of sinks (nor sources) that can be enabled at
>>  any given moment.  As a generic operation, all device pertaining to the sink
>> @@ -295,6 +304,47 @@ Instruction     13570831        0x8026B584      E28DD00C        false   ADD
>>  Instruction     0       0x8026B588      E8BD8000        true    LDM      sp!,{pc}
>>  Timestamp                                       Timestamp: 17107041535
>>
>> +2) Using perf framework:
>> +
>> +Coresight tracers are represented using the Perf framework's Performance
>> +Monitoring Unit (PMU) abstraction.  As such the perf framework takes charge of
>> +controlling when tracing gets enabled based on when the process of interest is
>> +scheduled.  When configured in a system, Coresight PMUs will be listed when
>> +queried by the perf command line tool:
>> +
>> +     linaro@linaro-nano:~$ ./perf list pmu
>> +
>> +             List of pre-defined events (to be used in -e):
>> +
>> +             cs_etm//                                    [Kernel PMU event]
>> +
>> +     linaro@linaro-nano:~$
>> +
>> +Regardless of the number of tracers available in a system (usually equal to the
>> +amount of processor core), the "cs_etm" PMU will be listed only once.
>
> ?                      cores),
>
>> +
>> +A Coresight PMU works the same way as any other PMUs, i.e the name of the PMU is
>
>                                          any other PMU, i.e.
>
>> +listed along with configuration options within forward slashes '/'.  Since a
>> +Coresight system will typically have more than one sink, the name of the sink to
>> +work with needs to be specified as an event option.  Names for sink to choose
>> +from are listed in sysFS under ($SYSFS)/bus/coresight/devices:
>> +
>> +     root@linaro-nano:~# ls /sys/bus/coresight/devices/
>> +             20010000.etf   20040000.funnel  20100000.stm  22040000.etm
>> +             22140000.etm  230c0000.funnel  23240000.etm 20030000.tpiu
>> +             20070000.etr     20120000.replicator  220c0000.funnel
>> +             23040000.etm  23140000.etm     23340000.etm
>> +
>> +     root@linaro-nano:~# perf record -e cs_etm/@20070000.etr/u --per-thread program
>> +
>> +The syntax within the forward slashes '/' is important.  The '@' character
>> +tells the parser that a sink is about to be specified and that this is the IP
>
> Can we get away from using "IP" and call it a device or (hardware) module or
> something more descriptive?

Sure thing.

Thanks for taking the time to read the patch and providing comments.

Mathieu

>
>> +to use for the trace session.
>> +
>> +More information on the above and other example on how to use Coresight with
>> +the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
>> +repository [3].
>
>
> --
> ~Randy
--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 2/3] coresight: Add section for integration with the perf tools
@ 2018-04-17 15:46       ` Mathieu Poirier
  0 siblings, 0 replies; 18+ messages in thread
From: Mathieu Poirier @ 2018-04-17 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

On 16 April 2018 at 13:48, Randy Dunlap <rdunlap@infradead.org> wrote:
> On 04/16/2018 12:35 PM, Mathieu Poirier wrote:
>> Adding a section that document how to use the Coresight framework and
>> drivers from the perf tools.
>>
>> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
>> ---
>>  Documentation/trace/coresight.txt | 50 +++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 50 insertions(+)
>>
>> diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
>> index 710c75b6c73f..8caae8050a60 100644
>> --- a/Documentation/trace/coresight.txt
>> +++ b/Documentation/trace/coresight.txt
>> @@ -187,9 +187,18 @@ that can be performed on them (see "struct coresight_ops").  The
>>  specific to that component only.  "Implementation defined" customisations are
>>  expected to be accessed and controlled using those entries.
>>
>> +
>>  How to use the tracer modules
>>  -----------------------------
>>
>> +There is two ways to use the Coresight framework: 1) using the perf cmd line
>
>    There are two ways
>
>> +tools and 2) interacting directly with the Coresight devices using the sysFS
>> +interface.  Preference is given to the former as using the sysFS interface
>> +requires a deep understanding of the Coresight HW.  The following sections
>> +provide details on using both methods.
>> +
>> +1) Using the sysFS interface:
>> +
>>  Before trace collection can start, a coresight sink needs to be identify.
>
>                                                                    identified.
>
>>  There is no limit on the amount of sinks (nor sources) that can be enabled at
>>  any given moment.  As a generic operation, all device pertaining to the sink
>> @@ -295,6 +304,47 @@ Instruction     13570831        0x8026B584      E28DD00C        false   ADD
>>  Instruction     0       0x8026B588      E8BD8000        true    LDM      sp!,{pc}
>>  Timestamp                                       Timestamp: 17107041535
>>
>> +2) Using perf framework:
>> +
>> +Coresight tracers are represented using the Perf framework's Performance
>> +Monitoring Unit (PMU) abstraction.  As such the perf framework takes charge of
>> +controlling when tracing gets enabled based on when the process of interest is
>> +scheduled.  When configured in a system, Coresight PMUs will be listed when
>> +queried by the perf command line tool:
>> +
>> +     linaro at linaro-nano:~$ ./perf list pmu
>> +
>> +             List of pre-defined events (to be used in -e):
>> +
>> +             cs_etm//                                    [Kernel PMU event]
>> +
>> +     linaro at linaro-nano:~$
>> +
>> +Regardless of the number of tracers available in a system (usually equal to the
>> +amount of processor core), the "cs_etm" PMU will be listed only once.
>
> ?                      cores),
>
>> +
>> +A Coresight PMU works the same way as any other PMUs, i.e the name of the PMU is
>
>                                          any other PMU, i.e.
>
>> +listed along with configuration options within forward slashes '/'.  Since a
>> +Coresight system will typically have more than one sink, the name of the sink to
>> +work with needs to be specified as an event option.  Names for sink to choose
>> +from are listed in sysFS under ($SYSFS)/bus/coresight/devices:
>> +
>> +     root at linaro-nano:~# ls /sys/bus/coresight/devices/
>> +             20010000.etf   20040000.funnel  20100000.stm  22040000.etm
>> +             22140000.etm  230c0000.funnel  23240000.etm 20030000.tpiu
>> +             20070000.etr     20120000.replicator  220c0000.funnel
>> +             23040000.etm  23140000.etm     23340000.etm
>> +
>> +     root at linaro-nano:~# perf record -e cs_etm/@20070000.etr/u --per-thread program
>> +
>> +The syntax within the forward slashes '/' is important.  The '@' character
>> +tells the parser that a sink is about to be specified and that this is the IP
>
> Can we get away from using "IP" and call it a device or (hardware) module or
> something more descriptive?

Sure thing.

Thanks for taking the time to read the patch and providing comments.

Mathieu

>
>> +to use for the trace session.
>> +
>> +More information on the above and other example on how to use Coresight with
>> +the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
>> +repository [3].
>
>
> --
> ~Randy

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

end of thread, other threads:[~2018-04-17 15:46 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-16 19:35 [PATCH 0/3] coresight: Refresh documenation Mathieu Poirier
2018-04-16 19:35 ` Mathieu Poirier
2018-04-16 19:35 ` Mathieu Poirier
2018-04-16 19:35 ` [PATCH 1/3] coresight: Remove obsolete reference to "owner" in CoreSight descriptor Mathieu Poirier
2018-04-16 19:35   ` Mathieu Poirier
2018-04-16 19:35   ` Mathieu Poirier
2018-04-16 19:35 ` [PATCH 2/3] coresight: Add section for integration with the perf tools Mathieu Poirier
2018-04-16 19:35   ` Mathieu Poirier
2018-04-16 19:35   ` Mathieu Poirier
2018-04-16 19:48   ` Randy Dunlap
2018-04-16 19:48     ` Randy Dunlap
2018-04-16 19:48     ` Randy Dunlap
2018-04-17 15:46     ` Mathieu Poirier
2018-04-17 15:46       ` Mathieu Poirier
2018-04-17 15:46       ` Mathieu Poirier
2018-04-16 19:35 ` [PATCH 3/3] coresight: Grouping all perf tools oriented section together Mathieu Poirier
2018-04-16 19:35   ` Mathieu Poirier
2018-04-16 19:35   ` Mathieu Poirier

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.