@@ -15,10 +15,10 @@ HiSilicon PCIe PMU driver
1515The PCIe PMU driver registers a perf PMU with the name of its sicl-id and PCIe
1616Core id.::
1717
18- /sys/bus/event_source/hisi_pcie<sicl>_ <core>
18+ /sys/bus/event_source/hisi_pcie<sicl>_core <core>
1919
2020PMU driver provides description of available events and filter options in sysfs,
21- see /sys/bus/event_source/devices/hisi_pcie<sicl>_ <core>.
21+ see /sys/bus/event_source/devices/hisi_pcie<sicl>_core <core>.
2222
2323The "format" directory describes all formats of the config (events) and config1
2424(filter options) fields of the perf_event_attr structure. The "events" directory
@@ -33,13 +33,13 @@ monitored by PMU.
3333Example usage of perf::
3434
3535 $# perf list
36- hisi_pcie0_0 /rx_mwr_latency/ [kernel PMU event]
37- hisi_pcie0_0 /rx_mwr_cnt/ [kernel PMU event]
36+ hisi_pcie0_core0 /rx_mwr_latency/ [kernel PMU event]
37+ hisi_pcie0_core0 /rx_mwr_cnt/ [kernel PMU event]
3838 ------------------------------------------
3939
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/
40+ $# perf stat -e hisi_pcie0_core0 /rx_mwr_latency/
41+ $# perf stat -e hisi_pcie0_core0 /rx_mwr_cnt/
42+ $# perf stat -g -e hisi_pcie0_core0 /rx_mwr_latency/ -e hisi_pcie0_core0 /rx_mwr_cnt/
4343
4444The current driver does not support sampling. So "perf record" is unsupported.
4545Also attach to a task is unsupported for PCIe PMU.
@@ -48,59 +48,83 @@ Filter options
4848--------------
4949
50501. Target filter
51- PMU could only monitor the performance of traffic downstream target Root Ports
52- or downstream target Endpoint. PCIe PMU driver support "port" and "bdf"
53- interfaces for users, and these two interfaces aren't supported at the same
54- time.
5551
56- -port
57- "port" filter can be used in all PCIe PMU events, target Root Port can be
58- selected by configuring the 16-bits-bitmap "port". Multi ports can be selected
59- for AP-layer-events, and only one port can be selected for TL/DL-layer-events .
52+ PMU could only monitor the performance of traffic downstream target Root
53+ Ports or downstream target Endpoint. PCIe PMU driver support "port" and
54+ "bdf" interfaces for users, and these two interfaces aren't supported at the
55+ same time .
6056
61- For example, if target Root Port is 0000:00:00.0 (x8 lanes), bit0 of bitmap
62- should be set, port=0x1; if target Root Port is 0000:00:04.0 (x4 lanes),
63- bit8 is set, port=0x100; if these two Root Ports are both monitored, port=0x101.
57+ - port
6458
65- Example usage of perf::
59+ "port" filter can be used in all PCIe PMU events, target Root Port can be
60+ selected by configuring the 16-bits-bitmap "port". Multi ports can be
61+ selected for AP-layer-events, and only one port can be selected for
62+ TL/DL-layer-events.
6663
67- $# perf stat -e hisi_pcie0_0/rx_mwr_latency,port=0x1/ sleep 5
64+ For example, if target Root Port is 0000:00:00.0 (x8 lanes), bit0 of
65+ bitmap should be set, port=0x1; if target Root Port is 0000:00:04.0 (x4
66+ lanes), bit8 is set, port=0x100; if these two Root Ports are both
67+ monitored, port=0x101.
6868
69- -bdf
69+ Example usage of perf::
7070
71- "bdf" filter can only be used in bandwidth events, target Endpoint is selected
72- by configuring BDF to "bdf". Counter only counts the bandwidth of message
73- requested by target Endpoint.
71+ $# perf stat -e hisi_pcie0_core0/rx_mwr_latency,port=0x1/ sleep 5
7472
75- For example, "bdf=0x3900" means BDF of target Endpoint is 0000:39:00.0.
73+ - bdf
7674
77- Example usage of perf::
75+ "bdf" filter can only be used in bandwidth events, target Endpoint is
76+ selected by configuring BDF to "bdf". Counter only counts the bandwidth of
77+ message requested by target Endpoint.
78+
79+ For example, "bdf=0x3900" means BDF of target Endpoint is 0000:39:00.0.
80+
81+ Example usage of perf::
7882
79- $# perf stat -e hisi_pcie0_0 /rx_mrd_flux,bdf=0x3900/ sleep 5
83+ $# perf stat -e hisi_pcie0_core0 /rx_mrd_flux,bdf=0x3900/ sleep 5
8084
81852. Trigger filter
82- Event statistics start when the first time TLP length is greater/smaller
83- than trigger condition. You can set the trigger condition by writing "trig_len",
84- and set the trigger mode by writing "trig_mode". This filter can only be used
85- in bandwidth events.
8686
87- For example, "trig_len=4" means trigger condition is 2^4 DW, "trig_mode=0"
88- means statistics start when TLP length > trigger condition, "trig_mode=1"
89- means start when TLP length < condition.
87+ Event statistics start when the first time TLP length is greater/smaller
88+ than trigger condition. You can set the trigger condition by writing
89+ "trig_len", and set the trigger mode by writing "trig_mode". This filter can
90+ only be used in bandwidth events.
9091
91- Example usage of perf::
92+ For example, "trig_len=4" means trigger condition is 2^4 DW, "trig_mode=0"
93+ means statistics start when TLP length > trigger condition, "trig_mode=1"
94+ means start when TLP length < condition.
95+
96+ Example usage of perf::
9297
93- $# perf stat -e hisi_pcie0_0 /rx_mrd_flux,trig_len=0x4,trig_mode=1/ sleep 5
98+ $# perf stat -e hisi_pcie0_core0 /rx_mrd_flux,trig_len=0x4,trig_mode=1/ sleep 5
9499
951003. Threshold filter
96- Counter counts when TLP length within the specified range. You can set the
97- threshold by writing "thr_len", and set the threshold mode by writing
98- "thr_mode". This filter can only be used in bandwidth events.
99101
100- For example, "thr_len=4" means threshold is 2^4 DW, "thr_mode=0" means
101- counter counts when TLP length >= threshold , and "thr_mode=1" means counts
102- when TLP length < threshold .
102+ Counter counts when TLP length within the specified range. You can set the
103+ threshold by writing "thr_len" , and set the threshold mode by writing
104+ "thr_mode". This filter can only be used in bandwidth events .
103105
104- Example usage of perf::
106+ For example, "thr_len=4" means threshold is 2^4 DW, "thr_mode=0" means
107+ counter counts when TLP length >= threshold, and "thr_mode=1" means counts
108+ when TLP length < threshold.
109+
110+ Example usage of perf::
111+
112+ $# perf stat -e hisi_pcie0_core0/rx_mrd_flux,thr_len=0x4,thr_mode=1/ sleep 5
113+
114+ 4. TLP Length filter
115+
116+ When counting bandwidth, the data can be composed of certain parts of TLP
117+ packets. You can specify it through "len_mode":
118+
119+ - 2'b00: Reserved (Do not use this since the behaviour is undefined)
120+ - 2'b01: Bandwidth of TLP payloads
121+ - 2'b10: Bandwidth of TLP headers
122+ - 2'b11: Bandwidth of both TLP payloads and headers
123+
124+ For example, "len_mode=2" means only counting the bandwidth of TLP headers
125+ and "len_mode=3" means the final bandwidth data is composed of both TLP
126+ headers and payloads. Default value if not specified is 2'b11.
127+
128+ Example usage of perf::
105129
106- $# perf stat -e hisi_pcie0_0 /rx_mrd_flux,thr_len=0x4,thr_mode=1 / sleep 5
130+ $# perf stat -e hisi_pcie0_core0 /rx_mrd_flux,len_mode=0x1 / sleep 5
0 commit comments