Skip to content

Commit f71cd93

Browse files
mikel-armbbgregkh
authored andcommitted
Documentation: coresight: Add documentation for CoreSight config
Adds documentation for the CoreSight System configuration manager. Link: https://lore.kernel.org/r/[email protected] [Fixed coresight-config.rst documentation link] Cc: Jonathan Corbet <[email protected]> Cc: [email protected] Signed-off-by: Mike Leach <[email protected]> Signed-off-by: Mathieu Poirier <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent a13d5a2 commit f71cd93

File tree

2 files changed

+259
-0
lines changed

2 files changed

+259
-0
lines changed
Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
1+
.. SPDX-License-Identifier: GPL-2.0
2+
3+
======================================
4+
CoreSight System Configuration Manager
5+
======================================
6+
7+
:Author: Mike Leach <[email protected]>
8+
:Date: October 2020
9+
10+
Introduction
11+
============
12+
13+
The CoreSight System Configuration manager is an API that allows the
14+
programming of the CoreSight system with pre-defined configurations that
15+
can then be easily enabled from sysfs or perf.
16+
17+
Many CoreSight components can be programmed in complex ways - especially ETMs.
18+
In addition, components can interact across the CoreSight system, often via
19+
the cross trigger components such as CTI and CTM. These system settings can
20+
be defined and enabled as named configurations.
21+
22+
23+
Basic Concepts
24+
==============
25+
26+
This section introduces the basic concepts of a CoreSight system configuration.
27+
28+
29+
Features
30+
--------
31+
32+
A feature is a named set of programming for a CoreSight device. The programming
33+
is device dependent, and can be defined in terms of absolute register values,
34+
resource usage and parameter values.
35+
36+
The feature is defined using a descriptor. This descriptor is used to load onto
37+
a matching device, either when the feature is loaded into the system, or when the
38+
CoreSight device is registered with the configuration manager.
39+
40+
The load process involves interpreting the descriptor into a set of register
41+
accesses in the driver - the resource usage and parameter descriptions
42+
translated into appropriate register accesses. This interpretation makes it easy
43+
and efficient for the feature to be programmed onto the device when required.
44+
45+
The feature will not be active on the device until the feature is enabled, and
46+
the device itself is enabled. When the device is enabled then enabled features
47+
will be programmed into the device hardware.
48+
49+
A feature is enabled as part of a configuration being enabled on the system.
50+
51+
52+
Parameter Value
53+
~~~~~~~~~~~~~~~
54+
55+
A parameter value is a named value that may be set by the user prior to the
56+
feature being enabled that can adjust the behaviour of the operation programmed
57+
by the feature.
58+
59+
For example, this could be a count value in a programmed operation that repeats
60+
at a given rate. When the feature is enabled then the current value of the
61+
parameter is used in programming the device.
62+
63+
The feature descriptor defines a default value for a parameter, which is used
64+
if the user does not supply a new value.
65+
66+
Users can update parameter values using the configfs API for the CoreSight
67+
system - which is described below.
68+
69+
The current value of the parameter is loaded into the device when the feature
70+
is enabled on that device.
71+
72+
73+
Configurations
74+
--------------
75+
76+
A configuration defines a set of features that are to be used in a trace
77+
session where the configuration is selected. For any trace session only one
78+
configuration may be selected.
79+
80+
The features defined may be on any type of device that is registered
81+
to support system configuration. A configuration may select features to be
82+
enabled on a class of devices - i.e. any ETMv4, or specific devices, e.g. a
83+
specific CTI on the system.
84+
85+
As with the feature, a descriptor is used to define the configuration.
86+
This will define the features that must be enabled as part of the configuration
87+
as well as any preset values that can be used to override default parameter
88+
values.
89+
90+
91+
Preset Values
92+
~~~~~~~~~~~~~
93+
94+
Preset values are easily selectable sets of parameter values for the features
95+
that the configuration uses. The number of values in a single preset set, equals
96+
the sum of parameter values in the features used by the configuration.
97+
98+
e.g. a configuration consists of 3 features, one has 2 parameters, one has
99+
a single parameter, and another has no parameters. A single preset set will
100+
therefore have 3 values.
101+
102+
Presets are optionally defined by the configuration, up to 15 can be defined.
103+
If no preset is selected, then the parameter values defined in the feature
104+
are used as normal.
105+
106+
107+
Operation
108+
~~~~~~~~~
109+
110+
The following steps take place in the operation of a configuration.
111+
112+
1) In this example, the configuration is 'autofdo', which has an
113+
associated feature 'strobing' that works on ETMv4 CoreSight Devices.
114+
115+
2) The configuration is enabled. For example 'perf' may select the
116+
configuration as part of its command line::
117+
118+
perf record -e cs_etm/autofdo/ myapp
119+
120+
which will enable the 'autofdo' configuration.
121+
122+
3) perf starts tracing on the system. As each ETMv4 that perf uses for
123+
trace is enabled, the configuration manager will check if the ETMv4
124+
has a feature that relates to the currently active configuration.
125+
In this case 'strobing' is enabled & programmed into the ETMv4.
126+
127+
4) When the ETMv4 is disabled, any registers marked as needing to be
128+
saved will be read back.
129+
130+
5) At the end of the perf session, the configuration will be disabled.
131+
132+
133+
Viewing Configurations and Features
134+
===================================
135+
136+
The set of configurations and features that are currently loaded into the
137+
system can be viewed using the configfs API.
138+
139+
Mount configfs as normal and the 'cs-syscfg' subsystem will appear::
140+
141+
$ ls /config
142+
cs-syscfg stp-policy
143+
144+
This has two sub-directories::
145+
146+
$ cd cs-syscfg/
147+
$ ls
148+
configurations features
149+
150+
The system has the configuration 'autofdo' built in. It may be examined as
151+
follows::
152+
153+
$ cd configurations/
154+
$ ls
155+
autofdo
156+
$ cd autofdo/
157+
$ ls
158+
description preset1 preset3 preset5 preset7 preset9
159+
feature_refs preset2 preset4 preset6 preset8
160+
$ cat description
161+
Setup ETMs with strobing for autofdo
162+
$ cat feature_refs
163+
strobing
164+
165+
Each preset declared has a preset<n> subdirectory declared. The values for
166+
the preset can be examined::
167+
168+
$ cat preset1/values
169+
strobing.window = 0x1388 strobing.period = 0x2
170+
$ cat preset2/values
171+
strobing.window = 0x1388 strobing.period = 0x4
172+
173+
The features referenced by the configuration can be examined in the features
174+
directory::
175+
176+
$ cd ../../features/strobing/
177+
$ ls
178+
description matches nr_params params
179+
$ cat description
180+
Generate periodic trace capture windows.
181+
parameter 'window': a number of CPU cycles (W)
182+
parameter 'period': trace enabled for W cycles every period x W cycles
183+
$ cat matches
184+
SRC_ETMV4
185+
$ cat nr_params
186+
2
187+
188+
Move to the params directory to examine and adjust parameters::
189+
190+
cd params
191+
$ ls
192+
period window
193+
$ cd period
194+
$ ls
195+
value
196+
$ cat value
197+
0x2710
198+
# echo 15000 > value
199+
# cat value
200+
0x3a98
201+
202+
Parameters adjusted in this way are reflected in all device instances that have
203+
loaded the feature.
204+
205+
206+
Using Configurations in perf
207+
============================
208+
209+
The configurations loaded into the CoreSight configuration management are
210+
also declared in the perf 'cs_etm' event infrastructure so that they can
211+
be selected when running trace under perf::
212+
213+
$ ls /sys/devices/cs_etm
214+
configurations format perf_event_mux_interval_ms sinks type
215+
events nr_addr_filters power
216+
217+
Key directories here are 'configurations' - which lists the loaded
218+
configurations, and 'events' - a generic perf directory which allows
219+
selection on the perf command line.::
220+
221+
$ ls configurations/
222+
autofdo
223+
$ cat configurations/autofdo
224+
0xa7c3dddd
225+
226+
As with the sinks entries, this provides a hash of the configuration name.
227+
The entry in the 'events' directory uses perfs built in syntax generator
228+
to substitute the syntax for the name when evaluating the command::
229+
230+
$ ls events/
231+
autofdo
232+
$ cat events/autofdo
233+
configid=0xa7c3dddd
234+
235+
The 'autofdo' configuration may be selected on the perf command line::
236+
237+
$ perf record -e cs_etm/autofdo/u --per-thread <application>
238+
239+
A preset to override the current parameter values can also be selected::
240+
241+
$ perf record -e cs_etm/autofdo,preset=1/u --per-thread <application>
242+
243+
When configurations are selected in this way, then the trace sink used is
244+
automatically selected.

Documentation/trace/coresight/coresight.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,19 @@ channels on the CTM (Cross Trigger Matrix).
620620
A separate documentation file is provided to explain the use of these devices.
621621
(Documentation/trace/coresight/coresight-ect.rst) [#fourth]_.
622622

623+
CoreSight System Configuration
624+
------------------------------
625+
626+
CoreSight components can be complex devices with many programming options.
627+
Furthermore, components can be programmed to interact with each other across the
628+
complete system.
629+
630+
A CoreSight System Configuration manager is provided to allow these complex programming
631+
configurations to be selected and used easily from perf and sysfs.
632+
633+
See the separate document for further information.
634+
(Documentation/trace/coresight/coresight-config.rst) [#fifth]_.
635+
623636

624637
.. [#first] Documentation/ABI/testing/sysfs-bus-coresight-devices-stm
625638
@@ -628,3 +641,5 @@ A separate documentation file is provided to explain the use of these devices.
628641
.. [#third] https://github.com/Linaro/perf-opencsd
629642
630643
.. [#fourth] Documentation/trace/coresight/coresight-ect.rst
644+
645+
.. [#fifth] Documentation/trace/coresight/coresight-config.rst

0 commit comments

Comments
 (0)