* [PATCH v2] Documentation: coresight: Update the generic device names
@ 2019-06-10 18:02 Suzuki K Poulose
2019-06-11 15:57 ` Mathieu Poirier
0 siblings, 1 reply; 3+ messages in thread
From: Suzuki K Poulose @ 2019-06-10 18:02 UTC (permalink / raw)
To: linux-arm-kernel
Cc: mathieu.poirier, linux-kernel, leo.yan, Suzuki K Poulose,
Jonathan Corbet
Update the documentation to reflect the new naming scheme with
latest changes.
Reported-by: Leo Yan <leo.yan@linaro.org>
Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
---
Changes since v1
- Add a section about the Device Naming scheme and add refer to
it in the examples.
---
Documentation/trace/coresight.txt | 82 ++++++++++++++++++++++++++++++++-------
1 file changed, 67 insertions(+), 15 deletions(-)
diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
index efbc832..b027d61 100644
--- a/Documentation/trace/coresight.txt
+++ b/Documentation/trace/coresight.txt
@@ -188,6 +188,49 @@ specific to that component only. "Implementation defined" customisations are
expected to be accessed and controlled using those entries.
+Device Naming scheme
+------------------------
+The devices that appear on the "coresight" bus were named the same as their
+parent devices, i.e, the real devices that appears on AMBA bus or the platform bus.
+Thus the names were based on the Linux Open Firmware layer naming convention,
+which follows the base physical address of the device followed by the device
+type. e.g:
+
+root:~# 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
+
+However, with the introduction of ACPI support, the names of the real
+devices are a bit cryptic and non-obvious. Thus, a new naming scheme was
+introduced to use more generic names based on the type of the device. The
+following rules apply:
+
+ 1) Devices that are bound to CPUs, are named based on the CPU logical
+ number.
+
+ e.g, ETM bound to CPU0 is named "etm0"
+
+ 2) All other devices follow a pattern, "<device_type_prefix>N", where :
+
+ <device_type_prefix> - A prefix specific to the type of the device
+ N - a sequential number assigned based on the order
+ of probing.
+
+ e.g, tmc_etf0, tmc_etr0, funnel0, funnel1
+
+Thus, with the new scheme the devices could appear as :
+
+root:~# ls /sys/bus/coresight/devices/
+ etm0 etm1 etm2 etm3 etm4 etm5 funnel0
+ funnel1 funnel2 replicator0 stm0 tmc_etf0 tmc_etr0 tpiu0
+
+Some of the examples below might refer to old naming scheme and some
+to the newer scheme, to give a confirmation that what you see on your
+system is not unexpected. One must use the "names" as they appear on
+the system under specified locations.
+
How to use the tracer modules
-----------------------------
@@ -326,16 +369,25 @@ amount of processor cores), the "cs_etm" PMU will be listed only once.
A Coresight PMU works the same way as any other PMU, 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:
+work with needs to be specified as an event option.
+On newer kernels the available sinks are listed in sysFS under:
+($SYSFS)/bus/event_source/devices/cs_etm/sinks/
- 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@localhost:/sys/bus/event_source/devices/cs_etm/sinks# ls
+ tmc_etf0 tmc_etr0 tpiu0
- root@linaro-nano:~# perf record -e cs_etm/@20070000.etr/u --per-thread program
+On older kernels, this may need to be found from the list of coresight devices,
+available under ($SYSFS)/bus/coresight/devices/:
+
+ root:~# ls /sys/bus/coresight/devices/
+ etm0 etm1 etm2 etm3 etm4 etm5 funnel0
+ funnel1 funnel2 replicator0 stm0 tmc_etf0 tmc_etr0 tpiu0
+
+ root@linaro-nano:~# perf record -e cs_etm/@tmc_etr0/u --per-thread program
+
+As mentioned above in section "Device Naming scheme", the names of the devices could
+look different from what is used in the example above. One must use the device names
+as it appears under the sysFS.
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 sink
@@ -352,7 +404,7 @@ perf can be used to record and analyze trace of programs.
Execution can be recorded using 'perf record' with the cs_etm event,
specifying the name of the sink to record to, e.g:
- perf record -e cs_etm/@20070000.etr/u --per-thread
+ perf record -e cs_etm/@tmc_etr0/u --per-thread
The 'perf report' and 'perf script' commands can be used to analyze execution,
synthesizing instruction and branch events from the instruction trace.
@@ -381,7 +433,7 @@ sort example is from the AutoFDO tutorial (https://gcc.gnu.org/wiki/AutoFDO/Tuto
Bubble sorting array of 30000 elements
5910 ms
- $ perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 ./sort
+ $ perf record -e cs_etm/@tmc_etr0/u --per-thread taskset -c 2 ./sort
Bubble sorting array of 30000 elements
12543 ms
[ perf record: Woken up 35 times to write data ]
@@ -405,7 +457,7 @@ 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
+root@genericarmv8:~# ls /sys/bus/coresight/devices/stm0
enable_source hwevent_select port_enable subsystem uevent
hwevent_enable mgmt port_select traceid
root@genericarmv8:~#
@@ -413,14 +465,14 @@ 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
+root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/tmc_etf0/enable_sink
+root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/stm0/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:~# ls -l /dev/stm0
+crw------- 1 root root 10, 61 Jan 3 18:11 /dev/stm0
root@genericarmv8:~#
Details on how to use the generic STM API can be found here [2].
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] Documentation: coresight: Update the generic device names
2019-06-10 18:02 [PATCH v2] Documentation: coresight: Update the generic device names Suzuki K Poulose
@ 2019-06-11 15:57 ` Mathieu Poirier
2019-06-14 20:43 ` Jonathan Corbet
0 siblings, 1 reply; 3+ messages in thread
From: Mathieu Poirier @ 2019-06-11 15:57 UTC (permalink / raw)
To: Suzuki K Poulose
Cc: linux-arm-kernel, Linux Kernel Mailing List, Leo Yan, Jonathan Corbet
On Mon, 10 Jun 2019 at 12:02, Suzuki K Poulose <suzuki.poulose@arm.com> wrote:
>
> Update the documentation to reflect the new naming scheme with
> latest changes.
>
> Reported-by: Leo Yan <leo.yan@linaro.org>
> Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
> Cc: Jonathan Corbet <corbet@lwn.net>
> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
> ---
> Changes since v1
> - Add a section about the Device Naming scheme and add refer to
> it in the examples.
> ---
> Documentation/trace/coresight.txt | 82 ++++++++++++++++++++++++++++++++-------
> 1 file changed, 67 insertions(+), 15 deletions(-)
>
> diff --git a/Documentation/trace/coresight.txt b/Documentation/trace/coresight.txt
> index efbc832..b027d61 100644
> --- a/Documentation/trace/coresight.txt
> +++ b/Documentation/trace/coresight.txt
> @@ -188,6 +188,49 @@ specific to that component only. "Implementation defined" customisations are
> expected to be accessed and controlled using those entries.
>
>
> +Device Naming scheme
> +------------------------
> +The devices that appear on the "coresight" bus were named the same as their
> +parent devices, i.e, the real devices that appears on AMBA bus or the platform bus.
> +Thus the names were based on the Linux Open Firmware layer naming convention,
> +which follows the base physical address of the device followed by the device
> +type. e.g:
> +
> +root:~# 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
> +
> +However, with the introduction of ACPI support, the names of the real
> +devices are a bit cryptic and non-obvious. Thus, a new naming scheme was
> +introduced to use more generic names based on the type of the device. The
> +following rules apply:
> +
> + 1) Devices that are bound to CPUs, are named based on the CPU logical
> + number.
> +
> + e.g, ETM bound to CPU0 is named "etm0"
> +
> + 2) All other devices follow a pattern, "<device_type_prefix>N", where :
> +
> + <device_type_prefix> - A prefix specific to the type of the device
> + N - a sequential number assigned based on the order
> + of probing.
> +
> + e.g, tmc_etf0, tmc_etr0, funnel0, funnel1
> +
> +Thus, with the new scheme the devices could appear as :
> +
> +root:~# ls /sys/bus/coresight/devices/
> + etm0 etm1 etm2 etm3 etm4 etm5 funnel0
> + funnel1 funnel2 replicator0 stm0 tmc_etf0 tmc_etr0 tpiu0
This looks goo do me. Jonathan, if you prefer to handle this via your tree:
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Otherwise I'll pick it up.
Thanks,
Mathieu
> +
> +Some of the examples below might refer to old naming scheme and some
> +to the newer scheme, to give a confirmation that what you see on your
> +system is not unexpected. One must use the "names" as they appear on
> +the system under specified locations.
> +
> How to use the tracer modules
> -----------------------------
>
> @@ -326,16 +369,25 @@ amount of processor cores), the "cs_etm" PMU will be listed only once.
> A Coresight PMU works the same way as any other PMU, 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:
> +work with needs to be specified as an event option.
> +On newer kernels the available sinks are listed in sysFS under:
> +($SYSFS)/bus/event_source/devices/cs_etm/sinks/
>
> - 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@localhost:/sys/bus/event_source/devices/cs_etm/sinks# ls
> + tmc_etf0 tmc_etr0 tpiu0
>
> - root@linaro-nano:~# perf record -e cs_etm/@20070000.etr/u --per-thread program
> +On older kernels, this may need to be found from the list of coresight devices,
> +available under ($SYSFS)/bus/coresight/devices/:
> +
> + root:~# ls /sys/bus/coresight/devices/
> + etm0 etm1 etm2 etm3 etm4 etm5 funnel0
> + funnel1 funnel2 replicator0 stm0 tmc_etf0 tmc_etr0 tpiu0
> +
> + root@linaro-nano:~# perf record -e cs_etm/@tmc_etr0/u --per-thread program
> +
> +As mentioned above in section "Device Naming scheme", the names of the devices could
> +look different from what is used in the example above. One must use the device names
> +as it appears under the sysFS.
>
> 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 sink
> @@ -352,7 +404,7 @@ perf can be used to record and analyze trace of programs.
> Execution can be recorded using 'perf record' with the cs_etm event,
> specifying the name of the sink to record to, e.g:
>
> - perf record -e cs_etm/@20070000.etr/u --per-thread
> + perf record -e cs_etm/@tmc_etr0/u --per-thread
>
> The 'perf report' and 'perf script' commands can be used to analyze execution,
> synthesizing instruction and branch events from the instruction trace.
> @@ -381,7 +433,7 @@ sort example is from the AutoFDO tutorial (https://gcc.gnu.org/wiki/AutoFDO/Tuto
> Bubble sorting array of 30000 elements
> 5910 ms
>
> - $ perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 ./sort
> + $ perf record -e cs_etm/@tmc_etr0/u --per-thread taskset -c 2 ./sort
> Bubble sorting array of 30000 elements
> 12543 ms
> [ perf record: Woken up 35 times to write data ]
> @@ -405,7 +457,7 @@ 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
> +root@genericarmv8:~# ls /sys/bus/coresight/devices/stm0
> enable_source hwevent_select port_enable subsystem uevent
> hwevent_enable mgmt port_select traceid
> root@genericarmv8:~#
> @@ -413,14 +465,14 @@ 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
> +root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/tmc_etf0/enable_sink
> +root@genericarmv8:~# echo 1 > /sys/bus/coresight/devices/stm0/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:~# ls -l /dev/stm0
> +crw------- 1 root root 10, 61 Jan 3 18:11 /dev/stm0
> root@genericarmv8:~#
>
> Details on how to use the generic STM API can be found here [2].
> --
> 2.7.4
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] Documentation: coresight: Update the generic device names
2019-06-11 15:57 ` Mathieu Poirier
@ 2019-06-14 20:43 ` Jonathan Corbet
0 siblings, 0 replies; 3+ messages in thread
From: Jonathan Corbet @ 2019-06-14 20:43 UTC (permalink / raw)
To: Mathieu Poirier
Cc: Suzuki K Poulose, linux-arm-kernel, Linux Kernel Mailing List, Leo Yan
On Tue, 11 Jun 2019 09:57:57 -0600
Mathieu Poirier <mathieu.poirier@linaro.org> wrote:
> This looks goo do me. Jonathan, if you prefer to handle this via your tree:
>
> Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
>
> Otherwise I'll pick it up.
I've applied it, thanks.
jon
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-06-14 20:43 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-10 18:02 [PATCH v2] Documentation: coresight: Update the generic device names Suzuki K Poulose
2019-06-11 15:57 ` Mathieu Poirier
2019-06-14 20:43 ` Jonathan Corbet
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).