Merge remote-tracking branches 'regulator/fix/88pm800', 'regulator/fix/max8973',...
[linux-drm-fsl-dcu.git] / Documentation / arm / CCN.txt
1 ARM Cache Coherent Network
2 ==========================
3
4 CCN-504 is a ring-bus interconnect consisting of 11 crosspoints
5 (XPs), with each crosspoint supporting up to two device ports,
6 so nodes (devices) 0 and 1 are connected to crosspoint 0,
7 nodes 2 and 3 to crosspoint 1 etc.
8
9 PMU (perf) driver
10 -----------------
11
12 The CCN driver registers a perf PMU driver, which provides
13 description of available events and configuration options
14 in sysfs, see /sys/bus/event_source/devices/ccn*.
15
16 The "format" directory describes format of the config, config1
17 and config2 fields of the perf_event_attr structure. The "events"
18 directory provides configuration templates for all documented
19 events, that can be used with perf tool. For example "xp_valid_flit"
20 is an equivalent of "type=0x8,event=0x4". Other parameters must be
21 explicitly specified. For events originating from device, "node"
22 defines its index. All crosspoint events require "xp" (index),
23 "port" (device port number) and "vc" (virtual channel ID) and
24 "dir" (direction). Watchpoints (special "event" value 0xfe) also
25 require comparator values ("cmp_l" and "cmp_h") and "mask", being
26 index of the comparator mask.
27
28 Masks are defined separately from the event description
29 (due to limited number of the config values) in the "cmp_mask"
30 directory, with first 8 configurable by user and additional
31 4 hardcoded for the most frequent use cases.
32
33 Cycle counter is described by a "type" value 0xff and does
34 not require any other settings.
35
36 The driver also provides a "cpumask" sysfs attribute, which contains
37 a single CPU ID, of the processor which will be used to handle all
38 the CCN PMU events. It is recommended that the user space tools
39 request the events on this processor (if not, the perf_event->cpu value
40 will be overwritten anyway). In case of this processor being offlined,
41 the events are migrated to another one and the attribute is updated.
42
43 Example of perf tool use:
44
45 / # perf list | grep ccn
46   ccn/cycles/                                        [Kernel PMU event]
47 <...>
48   ccn/xp_valid_flit,xp=?,port=?,vc=?,dir=?/          [Kernel PMU event]
49 <...>
50
51 / # perf stat -a -e ccn/cycles/,ccn/xp_valid_flit,xp=1,port=0,vc=1,dir=1/ \
52                                                                        sleep 1
53
54 The driver does not support sampling, therefore "perf record" will
55 not work. Per-task (without "-a") perf sessions are not supported.