cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

xgene-pmu.rst (2355B)


      1================================================
      2APM X-Gene SoC Performance Monitoring Unit (PMU)
      3================================================
      4
      5X-Gene SoC PMU consists of various independent system device PMUs such as
      6L3 cache(s), I/O bridge(s), memory controller bridge(s) and memory
      7controller(s). These PMU devices are loosely architected to follow the
      8same model as the PMU for ARM cores. The PMUs share the same top level
      9interrupt and status CSR region.
     10
     11PMU (perf) driver
     12-----------------
     13
     14The xgene-pmu driver registers several perf PMU drivers. Each of the perf
     15driver provides description of its available events and configuration options
     16in sysfs, see /sys/devices/<l3cX/iobX/mcbX/mcX>/.
     17
     18The "format" directory describes format of the config (event ID),
     19config1 (agent ID) fields of the perf_event_attr structure. The "events"
     20directory provides configuration templates for all supported event types that
     21can be used with perf tool. For example, "l3c0/bank-fifo-full/" is an
     22equivalent of "l3c0/config=0x0b/".
     23
     24Most of the SoC PMU has a specific list of agent ID used for monitoring
     25performance of a specific datapath. For example, agents of a L3 cache can be
     26a specific CPU or an I/O bridge. Each PMU has a set of 2 registers capable of
     27masking the agents from which the request come from. If the bit with
     28the bit number corresponding to the agent is set, the event is counted only if
     29it is caused by a request from that agent. Each agent ID bit is inversely mapped
     30to a corresponding bit in "config1" field. By default, the event will be
     31counted for all agent requests (config1 = 0x0). For all the supported agents of
     32each PMU, please refer to APM X-Gene User Manual.
     33
     34Each perf driver also provides a "cpumask" sysfs attribute, which contains a
     35single CPU ID of the processor which will be used to handle all the PMU events.
     36
     37Example for perf tool use::
     38
     39 / # perf list | grep -e l3c -e iob -e mcb -e mc
     40   l3c0/ackq-full/                                    [Kernel PMU event]
     41 <...>
     42   mcb1/mcb-csw-stall/                                [Kernel PMU event]
     43
     44 / # perf stat -a -e l3c0/read-miss/,mcb1/csw-write-request/ sleep 1
     45
     46 / # perf stat -a -e l3c0/read-miss,config1=0xfffffffffffffffe/ sleep 1
     47
     48The driver does not support sampling, therefore "perf record" will
     49not work. Per-task (without "-a") perf sessions are not supported.