1ARM 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 21explicitly specified. For events originating from device, "node" 22defines 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 25require comparator values ("cmp_l" and "cmp_h") and "mask", being 26index of the comparator mask. 27 28Masks are defined separately from the event description 29(due to limited number of the config values) in the "cmp_mask" 30directory, with first 8 configurable by user and additional 314 hardcoded for the most frequent use cases. 32 33Cycle counter is described by a "type" value 0xff and does 34not require any other settings. 35 36Example of perf tool use: 37 38/ # perf list | grep ccn 39 ccn/cycles/ [Kernel PMU event] 40<...> 41 ccn/xp_valid_flit/ [Kernel PMU event] 42<...> 43 44/ # perf stat -C 0 -e ccn/cycles/,ccn/xp_valid_flit,xp=1,port=0,vc=1,dir=1/ \ 45 sleep 1 46 47The driver does not support sampling, therefore "perf record" will 48not work. Also notice that only single cpu is being selected 49("-C 0") - this is because perf framework does not support 50"non-CPU related" counters (yet?) so system-wide session ("-a") 51would try (and in most cases fail) to set up the same event 52per each CPU. 53