blob: 15cdb7bc57c3672fa92acfabdbf2de72834d4207 [file] [log] [blame]
Pawel Molla33b0da2014-07-22 18:32:59 +01001ARM Cache Coherent Network
2==========================
3
4CCN-504 is a ring-bus interconnect consisting of 11 crosspoints
5(XPs), with each crosspoint supporting up to two device ports,
6so nodes (devices) 0 and 1 are connected to crosspoint 0,
7nodes 2 and 3 to crosspoint 1 etc.
8
9PMU (perf) driver
10-----------------
11
12The CCN driver registers a perf PMU driver, which provides
13description of available events and configuration options
14in sysfs, see /sys/bus/event_source/devices/ccn*.
15
16The "format" directory describes format of the config, config1
17and config2 fields of the perf_event_attr structure. The "events"
18directory provides configuration templates for all documented
19events, that can be used with perf tool. For example "xp_valid_flit"
20is an equivalent of "type=0x8,event=0x4". Other parameters must be
Pawel Moll90d11e22016-08-11 11:56:28 +010021explicitly specified.
Pawel Molla33b0da2014-07-22 18:32:59 +010022
Pawel Moll90d11e22016-08-11 11:56:28 +010023For events originating from device, "node" defines its index.
24
25Crosspoint PMU events require "xp" (index), "bus" (bus number)
26and "vc" (virtual channel ID).
27
28Crosspoint watchpoint-based events (special "event" value 0xfe)
29require "xp" and "vc" as as above plus "port" (device port index),
30"dir" (transmit/receive direction), comparator values ("cmp_l"
31and "cmp_h") and "mask", being index of the comparator mask.
Pawel Molla33b0da2014-07-22 18:32:59 +010032Masks are defined separately from the event description
33(due to limited number of the config values) in the "cmp_mask"
34directory, with first 8 configurable by user and additional
354 hardcoded for the most frequent use cases.
36
37Cycle counter is described by a "type" value 0xff and does
38not require any other settings.
39
Pawel Mollffa41522015-04-16 12:14:35 +010040The driver also provides a "cpumask" sysfs attribute, which contains
41a single CPU ID, of the processor which will be used to handle all
42the CCN PMU events. It is recommended that the user space tools
43request the events on this processor (if not, the perf_event->cpu value
44will be overwritten anyway). In case of this processor being offlined,
45the events are migrated to another one and the attribute is updated.
46
Pawel Molla33b0da2014-07-22 18:32:59 +010047Example of perf tool use:
48
49/ # perf list | grep ccn
50 ccn/cycles/ [Kernel PMU event]
51<...>
Pawel Moll8f06c512015-04-02 14:01:06 +010052 ccn/xp_valid_flit,xp=?,port=?,vc=?,dir=?/ [Kernel PMU event]
Pawel Molla33b0da2014-07-22 18:32:59 +010053<...>
54
Pawel Mollffa41522015-04-16 12:14:35 +010055/ # perf stat -a -e ccn/cycles/,ccn/xp_valid_flit,xp=1,port=0,vc=1,dir=1/ \
Pawel Molla33b0da2014-07-22 18:32:59 +010056 sleep 1
57
58The driver does not support sampling, therefore "perf record" will
Pawel Mollffa41522015-04-16 12:14:35 +010059not work. Per-task (without "-a") perf sessions are not supported.