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

hisi-pcie-pmu.rst (3888B)


      1================================================
      2HiSilicon PCIe Performance Monitoring Unit (PMU)
      3================================================
      4
      5On Hip09, HiSilicon PCIe Performance Monitoring Unit (PMU) could monitor
      6bandwidth, latency, bus utilization and buffer occupancy data of PCIe.
      7
      8Each PCIe Core has a PMU to monitor multi Root Ports of this PCIe Core and
      9all Endpoints downstream these Root Ports.
     10
     11
     12HiSilicon PCIe PMU driver
     13=========================
     14
     15The PCIe PMU driver registers a perf PMU with the name of its sicl-id and PCIe
     16Core id.::
     17
     18  /sys/bus/event_source/hisi_pcie<sicl>_<core>
     19
     20PMU driver provides description of available events and filter options in sysfs,
     21see /sys/bus/event_source/devices/hisi_pcie<sicl>_<core>.
     22
     23The "format" directory describes all formats of the config (events) and config1
     24(filter options) fields of the perf_event_attr structure. The "events" directory
     25describes all documented events shown in perf list.
     26
     27The "identifier" sysfs file allows users to identify the version of the
     28PMU hardware device.
     29
     30The "bus" sysfs file allows users to get the bus number of Root Ports
     31monitored by PMU.
     32
     33Example usage of perf::
     34
     35  $# perf list
     36  hisi_pcie0_0/rx_mwr_latency/ [kernel PMU event]
     37  hisi_pcie0_0/rx_mwr_cnt/ [kernel PMU event]
     38  ------------------------------------------
     39
     40  $# perf stat -e hisi_pcie0_0/rx_mwr_latency/
     41  $# perf stat -e hisi_pcie0_0/rx_mwr_cnt/
     42  $# perf stat -g -e hisi_pcie0_0/rx_mwr_latency/ -e hisi_pcie0_0/rx_mwr_cnt/
     43
     44The current driver does not support sampling. So "perf record" is unsupported.
     45Also attach to a task is unsupported for PCIe PMU.
     46
     47Filter options
     48--------------
     49
     501. Target filter
     51PMU could only monitor the performance of traffic downstream target Root Ports
     52or downstream target Endpoint. PCIe PMU driver support "port" and "bdf"
     53interfaces for users, and these two interfaces aren't supported at the same
     54time.
     55
     56-port
     57"port" filter can be used in all PCIe PMU events, target Root Port can be
     58selected by configuring the 16-bits-bitmap "port". Multi ports can be selected
     59for AP-layer-events, and only one port can be selected for TL/DL-layer-events.
     60
     61For example, if target Root Port is 0000:00:00.0 (x8 lanes), bit0 of bitmap
     62should be set, port=0x1; if target Root Port is 0000:00:04.0 (x4 lanes),
     63bit8 is set, port=0x100; if these two Root Ports are both monitored, port=0x101.
     64
     65Example usage of perf::
     66
     67  $# perf stat -e hisi_pcie0_0/rx_mwr_latency,port=0x1/ sleep 5
     68
     69-bdf
     70
     71"bdf" filter can only be used in bandwidth events, target Endpoint is selected
     72by configuring BDF to "bdf". Counter only counts the bandwidth of message
     73requested by target Endpoint.
     74
     75For example, "bdf=0x3900" means BDF of target Endpoint is 0000:39:00.0.
     76
     77Example usage of perf::
     78
     79  $# perf stat -e hisi_pcie0_0/rx_mrd_flux,bdf=0x3900/ sleep 5
     80
     812. Trigger filter
     82Event statistics start when the first time TLP length is greater/smaller
     83than trigger condition. You can set the trigger condition by writing "trig_len",
     84and set the trigger mode by writing "trig_mode". This filter can only be used
     85in bandwidth events.
     86
     87For example, "trig_len=4" means trigger condition is 2^4 DW, "trig_mode=0"
     88means statistics start when TLP length > trigger condition, "trig_mode=1"
     89means start when TLP length < condition.
     90
     91Example usage of perf::
     92
     93  $# perf stat -e hisi_pcie0_0/rx_mrd_flux,trig_len=0x4,trig_mode=1/ sleep 5
     94
     953. Threshold filter
     96Counter counts when TLP length within the specified range. You can set the
     97threshold by writing "thr_len", and set the threshold mode by writing
     98"thr_mode". This filter can only be used in bandwidth events.
     99
    100For example, "thr_len=4" means threshold is 2^4 DW, "thr_mode=0" means
    101counter counts when TLP length >= threshold, and "thr_mode=1" means counts
    102when TLP length < threshold.
    103
    104Example usage of perf::
    105
    106  $# perf stat -e hisi_pcie0_0/rx_mrd_flux,thr_len=0x4,thr_mode=1/ sleep 5