159809fe8SMauro Carvalho Chehab==========================
259809fe8SMauro Carvalho ChehabARM Cache Coherent Network
359809fe8SMauro Carvalho Chehab==========================
459809fe8SMauro Carvalho Chehab
559809fe8SMauro Carvalho ChehabCCN-504 is a ring-bus interconnect consisting of 11 crosspoints
659809fe8SMauro Carvalho Chehab(XPs), with each crosspoint supporting up to two device ports,
759809fe8SMauro Carvalho Chehabso nodes (devices) 0 and 1 are connected to crosspoint 0,
859809fe8SMauro Carvalho Chehabnodes 2 and 3 to crosspoint 1 etc.
959809fe8SMauro Carvalho Chehab
1059809fe8SMauro Carvalho ChehabPMU (perf) driver
1159809fe8SMauro Carvalho Chehab-----------------
1259809fe8SMauro Carvalho Chehab
1359809fe8SMauro Carvalho ChehabThe CCN driver registers a perf PMU driver, which provides
1459809fe8SMauro Carvalho Chehabdescription of available events and configuration options
1559809fe8SMauro Carvalho Chehabin sysfs, see /sys/bus/event_source/devices/ccn*.
1659809fe8SMauro Carvalho Chehab
1759809fe8SMauro Carvalho ChehabThe "format" directory describes format of the config, config1
1859809fe8SMauro Carvalho Chehaband config2 fields of the perf_event_attr structure. The "events"
1959809fe8SMauro Carvalho Chehabdirectory provides configuration templates for all documented
2059809fe8SMauro Carvalho Chehabevents, that can be used with perf tool. For example "xp_valid_flit"
2159809fe8SMauro Carvalho Chehabis an equivalent of "type=0x8,event=0x4". Other parameters must be
2259809fe8SMauro Carvalho Chehabexplicitly specified.
2359809fe8SMauro Carvalho Chehab
2459809fe8SMauro Carvalho ChehabFor events originating from device, "node" defines its index.
2559809fe8SMauro Carvalho Chehab
2659809fe8SMauro Carvalho ChehabCrosspoint PMU events require "xp" (index), "bus" (bus number)
2759809fe8SMauro Carvalho Chehaband "vc" (virtual channel ID).
2859809fe8SMauro Carvalho Chehab
2959809fe8SMauro Carvalho ChehabCrosspoint watchpoint-based events (special "event" value 0xfe)
30251c99bbSRandy Dunlaprequire "xp" and "vc" as above plus "port" (device port index),
3159809fe8SMauro Carvalho Chehab"dir" (transmit/receive direction), comparator values ("cmp_l"
3259809fe8SMauro Carvalho Chehaband "cmp_h") and "mask", being index of the comparator mask.
3359809fe8SMauro Carvalho Chehab
3459809fe8SMauro Carvalho ChehabMasks are defined separately from the event description
3559809fe8SMauro Carvalho Chehab(due to limited number of the config values) in the "cmp_mask"
3659809fe8SMauro Carvalho Chehabdirectory, with first 8 configurable by user and additional
3759809fe8SMauro Carvalho Chehab4 hardcoded for the most frequent use cases.
3859809fe8SMauro Carvalho Chehab
3959809fe8SMauro Carvalho ChehabCycle counter is described by a "type" value 0xff and does
4059809fe8SMauro Carvalho Chehabnot require any other settings.
4159809fe8SMauro Carvalho Chehab
4259809fe8SMauro Carvalho ChehabThe driver also provides a "cpumask" sysfs attribute, which contains
4359809fe8SMauro Carvalho Chehaba single CPU ID, of the processor which will be used to handle all
4459809fe8SMauro Carvalho Chehabthe CCN PMU events. It is recommended that the user space tools
4559809fe8SMauro Carvalho Chehabrequest the events on this processor (if not, the perf_event->cpu value
4659809fe8SMauro Carvalho Chehabwill be overwritten anyway). In case of this processor being offlined,
4759809fe8SMauro Carvalho Chehabthe events are migrated to another one and the attribute is updated.
4859809fe8SMauro Carvalho Chehab
4959809fe8SMauro Carvalho ChehabExample of perf tool use::
5059809fe8SMauro Carvalho Chehab
5159809fe8SMauro Carvalho Chehab  / # perf list | grep ccn
5259809fe8SMauro Carvalho Chehab    ccn/cycles/                                        [Kernel PMU event]
5359809fe8SMauro Carvalho Chehab  <...>
5459809fe8SMauro Carvalho Chehab    ccn/xp_valid_flit,xp=?,port=?,vc=?,dir=?/          [Kernel PMU event]
5559809fe8SMauro Carvalho Chehab  <...>
5659809fe8SMauro Carvalho Chehab
5759809fe8SMauro Carvalho Chehab  / # perf stat -a -e ccn/cycles/,ccn/xp_valid_flit,xp=1,port=0,vc=1,dir=1/ \
5859809fe8SMauro Carvalho Chehab                                                                         sleep 1
5959809fe8SMauro Carvalho Chehab
6059809fe8SMauro Carvalho ChehabThe driver does not support sampling, therefore "perf record" will
6159809fe8SMauro Carvalho Chehabnot work. Per-task (without "-a") perf sessions are not supported.
62