€•ÊkŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ-/translations/zh_CN/admin-guide/perf/hisi-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/zh_TW/admin-guide/perf/hisi-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/it_IT/admin-guide/perf/hisi-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ja_JP/admin-guide/perf/hisi-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ko_KR/admin-guide/perf/hisi-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/pt_BR/admin-guide/perf/hisi-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/sp_SP/admin-guide/perf/hisi-pmu”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ6HiSilicon SoC uncore Performance Monitoring Unit (PMU)”h]”hŒ6HiSilicon SoC uncore Performance Monitoring Unit (PMU)”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒG/var/lib/git/docbuild/linux/Documentation/admin-guide/perf/hisi-pmu.rst”h´KubhŒ paragraph”“”)�”}”(hŒäThe HiSilicon SoC chip includes various independent system device PMUs such as L3 cache (L3C), Hydra Home Agent (HHA) and DDRC. These PMUs are independent and have hardware logic to gather statistics and performance information.”h]”hŒäThe HiSilicon SoC chip includes various independent system device PMUs such as L3 cache (L3C), Hydra Home Agent (HHA) and DDRC. These PMUs are independent and have hardware logic to gather statistics and performance information.”…”�”}”(hhÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)�”}”(hXThe HiSilicon SoC encapsulates multiple CPU and IO dies. Each CPU cluster (CCL) is made up of 4 cpu cores sharing one L3 cache; each CPU die is called Super CPU cluster (SCCL) and is made up of 6 CCLs. Each SCCL has two HHAs (0 - 1) and four DDRCs (0 - 3), respectively.”h]”hXThe HiSilicon SoC encapsulates multiple CPU and IO dies. Each CPU cluster (CCL) is made up of 4 cpu cores sharing one L3 cache; each CPU die is called Super CPU cluster (SCCL) and is made up of 6 CCLs. Each SCCL has two HHAs (0 - 1) and four DDRCs (0 - 3), respectively.”…”�”}”(hhÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hh·h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒHiSilicon SoC uncore PMU driver”h]”hŒHiSilicon SoC uncore PMU driver”…”�”}”(hhìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhéh²hh³hÊh´KubhÌ)�”}”(hŒöEach device PMU has separate registers for event counting, control and interrupt, and the PMU driver shall register perf PMU drivers like L3C, HHA and DDRC etc. The available events and configuration options shall be described in the sysfs, see::”h]”hŒõEach device PMU has separate registers for event counting, control and interrupt, and the PMU driver shall register perf PMU drivers like L3C, HHA and DDRC etc. The available events and configuration options shall be described in the sysfs, see:”…”�”}”(hhúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khhéh²hubhŒ literal_block”“”)�”}”(hŒB/sys/bus/event_source/devices/hisi_sccl{X}_”h]”hŒB/sys/bus/event_source/devices/hisi_sccl{X}_”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jh³hÊh´Khhéh²hubhÌ)�”}”(hŒCThe "perf list" command shall list the available events from sysfs.”h]”hŒGThe “perf listâ€� command shall list the available events from sysfs.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khhéh²hubhÌ)�”}”(hŒèEach L3C, HHA and DDRC is registered as a separate PMU with perf. The PMU name will appear in event listing as hisi_sccl_module. where "sccl-id" is the identifier of the SCCL and "index-id" is the index of module.”h]”hŒðEach L3C, HHA and DDRC is registered as a separate PMU with perf. The PMU name will appear in event listing as hisi_sccl_module. where “sccl-idâ€� is the identifier of the SCCL and “index-idâ€� is the index of module.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khhéh²hubhÌ)�”}”(hŒXe.g. hisi_sccl3_l3c0/rd_hit_cpipe is READ_HIT_CPIPE event of L3C index #0 in SCCL ID #3.”h]”hŒXe.g. hisi_sccl3_l3c0/rd_hit_cpipe is READ_HIT_CPIPE event of L3C index #0 in SCCL ID #3.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hhéh²hubhÌ)�”}”(hŒXe.g. hisi_sccl1_hha0/rx_operations is RX_OPERATIONS event of HHA index #0 in SCCL ID #1.”h]”hŒXe.g. hisi_sccl1_hha0/rx_operations is RX_OPERATIONS event of HHA index #0 in SCCL ID #1.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K#hhéh²hubhÌ)�”}”(hX}The driver also provides a "cpumask" sysfs attribute, which shows the CPU core ID used to count the uncore PMU event. An "associated_cpus" sysfs attribute is also provided to show the CPUs associated with this PMU. The "cpumask" indicates the CPUs to open the events, usually as a hint for userspaces tools like perf. It only contains one associated CPU from the "associated_cpus".”h]”hX�The driver also provides a “cpumaskâ€� sysfs attribute, which shows the CPU core ID used to count the uncore PMU event. An “associated_cpusâ€� sysfs attribute is also provided to show the CPUs associated with this PMU. The “cpumaskâ€� indicates the CPUs to open the events, usually as a hint for userspaces tools like perf. It only contains one associated CPU from the “associated_cpusâ€�.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K&hhéh²hubhÌ)�”}”(hŒExample usage of perf::”h]”hŒExample usage of perf:”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K,hhéh²hubj )�”}”(hXî$# perf list hisi_sccl3_l3c0/rd_hit_cpipe/ [kernel PMU event] ------------------------------------------ hisi_sccl3_l3c0/wr_hit_cpipe/ [kernel PMU event] ------------------------------------------ hisi_sccl1_l3c0/rd_hit_cpipe/ [kernel PMU event] ------------------------------------------ hisi_sccl1_l3c0/wr_hit_cpipe/ [kernel PMU event] ------------------------------------------ $# perf stat -a -e hisi_sccl3_l3c0/rd_hit_cpipe/ sleep 5 $# perf stat -a -e hisi_sccl3_l3c0/config=0x02/ sleep 5”h]”hXî$# perf list hisi_sccl3_l3c0/rd_hit_cpipe/ [kernel PMU event] ------------------------------------------ hisi_sccl3_l3c0/wr_hit_cpipe/ [kernel PMU event] ------------------------------------------ hisi_sccl1_l3c0/rd_hit_cpipe/ [kernel PMU event] ------------------------------------------ hisi_sccl1_l3c0/wr_hit_cpipe/ [kernel PMU event] ------------------------------------------ $# perf stat -a -e hisi_sccl3_l3c0/rd_hit_cpipe/ sleep 5 $# perf stat -a -e hisi_sccl3_l3c0/config=0x02/ sleep 5”…”�”}”hjnsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jh³hÊh´K.hhéh²hubhÌ)�”}”(hŒ‹For HiSilicon uncore PMU v2 whose identifier is 0x30, the topology is the same as PMU v1, but some new functions are added to the hardware.”h]”hŒ‹For HiSilicon uncore PMU v2 whose identifier is 0x30, the topology is the same as PMU v1, but some new functions are added to the hardware.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K;hhéh²hubhÌ)�”}”(hŒd1. L3C PMU supports filtering by core/thread within the cluster which can be specified as a bitmap::”h]”hŒc1. L3C PMU supports filtering by core/thread within the cluster which can be specified as a bitmap:”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K>hhéh²hubj )�”}”(hŒC$# perf stat -a -e hisi_sccl3_l3c0/config=0x02,tt_core=0x3/ sleep 5”h]”hŒC$# perf stat -a -e hisi_sccl3_l3c0/config=0x02,tt_core=0x3/ sleep 5”…”�”}”hj˜sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jh³hÊh´KAhhéh²hubhÌ)�”}”(hŒMThis will only count the operations from core/thread 0 and 1 in this cluster.”h]”hŒMThis will only count the operations from core/thread 0 and 1 in this cluster.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KChhéh²hubhÌ)�”}”(hŒËUser should not use tt_core_deprecated to specify the core/thread filtering. This option is provided for backward compatiblility and only support 8bit which may not cover all the core/thread sharing L3C.”h]”hŒËUser should not use tt_core_deprecated to specify the core/thread filtering. This option is provided for backward compatiblility and only support 8bit which may not cover all the core/thread sharing L3C.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KEhhéh²hubhÌ)�”}”(hXo2. Tracetag allow the user to chose to count only read, write or atomic operations via the tt_req parameeter in perf. The default value counts all operations. tt_req is 3bits, 3'b100 represents read operations, 3'b101 represents write operations, 3'b110 represents atomic store operations and 3'b111 represents atomic non-store operations, other values are reserved::”h]”hXv2. Tracetag allow the user to chose to count only read, write or atomic operations via the tt_req parameeter in perf. The default value counts all operations. tt_req is 3bits, 3’b100 represents read operations, 3’b101 represents write operations, 3’b110 represents atomic store operations and 3’b111 represents atomic non-store operations, other values are reserved:”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KIhhéh²hubj )�”}”(hŒB$# perf stat -a -e hisi_sccl3_l3c0/config=0x02,tt_req=0x4/ sleep 5”h]”hŒB$# perf stat -a -e hisi_sccl3_l3c0/config=0x02,tt_req=0x4/ sleep 5”…”�”}”hjÐsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jh³hÊh´KOhhéh²hubhÌ)�”}”(hŒ9This will only count the read operations in this cluster.”h]”hŒ9This will only count the read operations in this cluster.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KQhhéh²hubhÌ)�”}”(hŒq3. Datasrc allows the user to check where the data comes from. It is 5 bits. Some important codes are as follows:”h]”hŒq3. Datasrc allows the user to check where the data comes from. It is 5 bits. Some important codes are as follows:”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KShhéh²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ%5'b00001: comes from L3C in this die;”h]”hÌ)�”}”(hjh]”hŒ'5’b00001: comes from L3C in this die;”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KVhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjüh²hh³hÊh´Nubj)�”}”(hŒ*5'b01000: comes from L3C in the cross-die;”h]”hÌ)�”}”(hjh]”hŒ,5’b01000: comes from L3C in the cross-die;”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KWhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjüh²hh³hÊh´Nubj)�”}”(hŒ45'b01001: comes from L3C which is in another socket;”h]”hÌ)�”}”(hj1h]”hŒ65’b01001: comes from L3C which is in another socket;”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KXhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjüh²hh³hÊh´Nubj)�”}”(hŒ#5'b01110: comes from the local DDR;”h]”hÌ)�”}”(hjHh]”hŒ%5’b01110: comes from the local DDR;”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KYhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjüh²hh³hÊh´Nubj)�”}”(hŒ'5'b01111: comes from the cross-die DDR;”h]”hÌ)�”}”(hj_h]”hŒ)5’b01111: comes from the cross-die DDR;”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KZhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjüh²hh³hÊh´Nubj)�”}”(hŒ'5'b10000: comes from cross-socket DDR; ”h]”hÌ)�”}”(hŒ&5'b10000: comes from cross-socket DDR;”h]”hŒ(5’b10000: comes from cross-socket DDR;”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K[hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjüh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1júh³hÊh´KVhhéh²hubhÌ)�”}”(hŒ¶etc, it is mainly helpful to find that the data source is nearest from the CPU cores. If datasrc_cfg is used in the multi-chips, the datasrc_skt shall be configured in perf command::”h]”hŒµetc, it is mainly helpful to find that the data source is nearest from the CPU cores. If datasrc_cfg is used in the multi-chips, the datasrc_skt shall be configured in perf command:”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K]hhéh²hubj )�”}”(hŒu$# perf stat -a -e hisi_sccl3_l3c0/config=0xb9,datasrc_cfg=0xE/, hisi_sccl3_l3c0/config=0xb9,datasrc_cfg=0xF/ sleep 5”h]”hŒu$# perf stat -a -e hisi_sccl3_l3c0/config=0xb9,datasrc_cfg=0xE/, hisi_sccl3_l3c0/config=0xb9,datasrc_cfg=0xF/ sleep 5”…”�”}”hj¢sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jh³hÊh´Kahhéh²hubhÌ)�”}”(hX`4. Some HiSilicon SoCs encapsulate multiple CPU and IO dies. Each CPU die contains several Compute Clusters (CCLs). The I/O dies are called Super I/O clusters (SICL) containing multiple I/O clusters (ICLs). Each CCL/ICL in the SoC has a unique ID. Each ID is 11bits, include a 6-bit SCCL-ID and 5-bit CCL/ICL-ID. For I/O die, the ICL-ID is followed by:”h]”hX`4. Some HiSilicon SoCs encapsulate multiple CPU and IO dies. Each CPU die contains several Compute Clusters (CCLs). The I/O dies are called Super I/O clusters (SICL) containing multiple I/O clusters (ICLs). Each CCL/ICL in the SoC has a unique ID. Each ID is 11bits, include a 6-bit SCCL-ID and 5-bit CCL/ICL-ID. For I/O die, the ICL-ID is followed by:”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kdhhéh²hubjû)�”}”(hhh]”(j)�”}”(hŒ5'b00000: I/O_MGMT_ICL;”h]”hÌ)�”}”(hjÃh]”hŒ5’b00000: I/O_MGMT_ICL;”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KjhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj¾h²hh³hÊh´Nubj)�”}”(hŒ5'b00001: Network_ICL;”h]”hÌ)�”}”(hjÚh]”hŒ5’b00001: Network_ICL;”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KkhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj¾h²hh³hÊh´Nubj)�”}”(hŒ5'b00011: HAC_ICL;”h]”hÌ)�”}”(hjñh]”hŒ5’b00011: HAC_ICL;”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Klhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj¾h²hh³hÊh´Nubj)�”}”(hŒ5'b10000: PCIe_ICL; ”h]”hÌ)�”}”(hŒ5'b10000: PCIe_ICL;”h]”hŒ5’b10000: PCIe_ICL;”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kmhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj¾h²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j’j“uh1júh³hÊh´Kjhhéh²hubhÌ)�”}”(hŒŒ5. uring_channel: UC PMU events 0x47~0x59 supports filtering by tx request uring channel. It is 2 bits. Some important codes are as follows:”h]”hŒŒ5. uring_channel: UC PMU events 0x47~0x59 supports filtering by tx request uring channel. It is 2 bits. Some important codes are as follows:”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kohhéh²hubjû)�”}”(hhh]”(j)�”}”(hŒC2'b11: count the events which sent to the uring_ext (MATA) channel;”h]”hÌ)�”}”(hj7h]”hŒE2’b11: count the events which sent to the uring_ext (MATA) channel;”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Krhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj2h²hh³hÊh´Nubj)�”}”(hŒ2'b01: is the same as 2'b11;”h]”hÌ)�”}”(hjNh]”hŒ 2’b01: is the same as 2’b11;”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KshjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj2h²hh³hÊh´Nubj)�”}”(hŒC2'b10: count the events which sent to the uring (non-MATA) channel;”h]”hÌ)�”}”(hjeh]”hŒE2’b10: count the events which sent to the uring (non-MATA) channel;”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kthjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj2h²hh³hÊh´Nubj)�”}”(hŒX2'b00: default value, count the events which sent to both uring and uring_ext channels; ”h]”hÌ)�”}”(hŒW2'b00: default value, count the events which sent to both uring and uring_ext channels;”h]”hŒY2’b00: default value, count the events which sent to both uring and uring_ext channels;”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kuhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj2h²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j’j“uh1júh³hÊh´Krhhéh²hubhÌ)�”}”(hŒ’6. ch: NoC PMU supports filtering the event counts of certain transaction channel with this option. The current supported channels are as follows:”h]”hŒ’6. ch: NoC PMU supports filtering the event counts of certain transaction channel with this option. The current supported channels are as follows:”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kxhhéh²hubjû)�”}”(hhh]”(j)�”}”(hŒ3'b010: Request channel”h]”hÌ)�”}”(hj«h]”hŒ3’b010: Request channel”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K{hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj¦h²hh³hÊh´Nubj)�”}”(hŒ3'b100: Snoop channel”h]”hÌ)�”}”(hjÂh]”hŒ3’b100: Snoop channel”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K|hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj¦h²hh³hÊh´Nubj)�”}”(hŒ3'b110: Response channel”h]”hÌ)�”}”(hjÙh]”hŒ3’b110: Response channel”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K}hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj¦h²hh³hÊh´Nubj)�”}”(hŒ3'b111: Data channel ”h]”hÌ)�”}”(hŒ3'b111: Data channel”h]”hŒ3’b111: Data channel”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K~hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj¦h²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j’j“uh1júh³hÊh´K{hhéh²hubhÌ)�”}”(hŒ™7. tt_en: NoC PMU supports counting only transactions that have tracetag set if this option is set. See the 2nd list for more information about tracetag.”h]”hŒ™7. tt_en: NoC PMU supports counting only transactions that have tracetag set if this option is set. See the 2nd list for more information about tracetag.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K€hhéh²hubhÌ)�”}”(hXLFor HiSilicon uncore PMU v3 whose identifier is 0x40, some uncore PMUs are further divided into parts for finer granularity of tracing, each part has its own dedicated PMU, and all such PMUs together cover the monitoring job of events on particular uncore device. Such PMUs are described in sysfs with name format slightly changed::”h]”hXKFor HiSilicon uncore PMU v3 whose identifier is 0x40, some uncore PMUs are further divided into parts for finer granularity of tracing, each part has its own dedicated PMU, and all such PMUs together cover the monitoring job of events on particular uncore device. Such PMUs are described in sysfs with name format slightly changed:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kƒhhéh²hubj )�”}”(hŒN/sys/bus/event_source/devices/hisi_sccl{X}_”h]”hŒN/sys/bus/event_source/devices/hisi_sccl{X}_”…”�”}”hj(sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jh³hÊh´K‰hhéh²hubhÌ)�”}”(hŒGZ is the sub-id, indicating different PMUs for part of hardware device.”h]”hŒGZ is the sub-id, indicating different PMUs for part of hardware device.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K‹hhéh²hubhÌ)�”}”(hXUsage of most PMUs with different sub-ids are identical. Specially, L3C PMU provides ``ext`` option to allow exploration of even finer granual statistics of L3C PMU. L3C PMU driver uses that as hint of termination when delivering perf command to hardware:”h]”(hŒUUsage of most PMUs with different sub-ids are identical. Specially, L3C PMU provides ”…”�”}”(hjDh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``ext``”h]”hŒext”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLhjDubhŒ¤ option to allow exploration of even finer granual statistics of L3C PMU. L3C PMU driver uses that as hint of termination when delivering perf command to hardware:”…”�”}”(hjDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K�hhéh²hubjû)�”}”(hhh]”(j)�”}”(hŒ/ext=0: Default, could be used with event names.”h]”hÌ)�”}”(hjkh]”hŒ/ext=0: Default, could be used with event names.”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K’hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjfh²hh³hÊh´Nubj)�”}”(hŒOext=1 and ext=2: Must be used with event codes, event names are not supported. ”h]”hÌ)�”}”(hŒNext=1 and ext=2: Must be used with event codes, event names are not supported.”h]”hŒNext=1 and ext=2: Must be used with event codes, event names are not supported.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K“hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjfh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j’j“uh1júh³hÊh´K’hhéh²hubhÌ)�”}”(hŒ%An example of perf command could be::”h]”hŒ$An example of perf command could be:”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K•hhéh²hubj )�”}”(hŒ6$# perf stat -a -e hisi_sccl0_l3c1_0/rd_spipe/ sleep 5”h]”hŒ6$# perf stat -a -e hisi_sccl0_l3c1_0/rd_spipe/ sleep 5”…”�”}”hj¬sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jh³hÊh´K—hhéh²hubhÌ)�”}”(hŒor::”h]”hŒor:”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K™hhéh²hubj )�”}”(hŒ=$# perf stat -a -e hisi_sccl0_l3c1_0/event=0x1,ext=1/ sleep 5”h]”hŒ=$# perf stat -a -e hisi_sccl0_l3c1_0/event=0x1,ext=1/ sleep 5”…”�”}”hjÈsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jh³hÊh´K›hhéh²hubhÌ)�”}”(hŒUAs above, ``hisi_sccl0_l3c1_0`` locates PMU of Super CPU CLuster 0, L3 cache 1 pipe0.”h]”(hŒ As above, ”…”�”}”(hjÖh²hh³Nh´NubjM)�”}”(hŒ``hisi_sccl0_l3c1_0``”h]”hŒhisi_sccl0_l3c1_0”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLhjÖubhŒ6 locates PMU of Super CPU CLuster 0, L3 cache 1 pipe0.”…”�”}”(hjÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K�hhéh²hubhÌ)�”}”(hŒ¤First command locates the first part of L3C since ``ext=0`` is implied by default. Second command issues the counting on another part of L3C with the event ``0x1``.”h]”(hŒ2First command locates the first part of L3C since ”…”�”}”(hjöh²hh³Nh´NubjM)�”}”(hŒ ``ext=0``”h]”hŒext=0”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLhjöubhŒa is implied by default. Second command issues the counting on another part of L3C with the event ”…”�”}”(hjöh²hh³Nh´NubjM)�”}”(hŒ``0x1``”h]”hŒ0x1”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jLhjöubhŒ.”…”�”}”(hjöh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hhéh²hubhÌ)�”}”(hX$Users could configure IDs to count data come from specific CCL/ICL, by setting srcid_cmd & srcid_msk, and data desitined for specific CCL/ICL by setting tgtid_cmd & tgtid_msk. A set bit in srcid_msk/tgtid_msk means the PMU will not check the bit when matching against the srcid_cmd/tgtid_cmd.”h]”hX$Users could configure IDs to count data come from specific CCL/ICL, by setting srcid_cmd & srcid_msk, and data desitined for specific CCL/ICL by setting tgtid_cmd & tgtid_msk. A set bit in srcid_msk/tgtid_msk means the PMU will not check the bit when matching against the srcid_cmd/tgtid_cmd.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K¤hhéh²hubhÌ)�”}”(hŒÆIf all of these options are disabled, it can works by the default value that doesn't distinguish the filter condition and ID information and will return the total counter values in the PMU counters.”h]”hŒÈIf all of these options are disabled, it can works by the default value that doesn’t distinguish the filter condition and ID information and will return the total counter values in the PMU counters.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K©hhéh²hubhÌ)�”}”(hŒ‘The current driver does not support sampling. So "perf record" is unsupported. Also attach to a task is unsupported as the events are all uncore.”h]”hŒ•The current driver does not support sampling. So “perf recordâ€� is unsupported. Also attach to a task is unsupported as the events are all uncore.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K­hhéh²hubhÌ)�”}”(hŒ‰Note: Please contact the maintainer for a complete list of events supported for the PMU devices in the SoC and its information if needed.”h]”hŒ‰Note: Please contact the maintainer for a complete list of events supported for the PMU devices in the SoC and its information if needed.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K°hhéh²hubeh}”(h]”Œhisilicon-soc-uncore-pmu-driver”ah ]”h"]”Œhisilicon soc uncore pmu driver”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubeh}”(h]”Œ4hisilicon-soc-uncore-performance-monitoring-unit-pmu”ah ]”h"]”Œ6hisilicon soc uncore performance monitoring unit (pmu)”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j“Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jmjjjejbuŒ nametypes”}”(jm‰je‰uh}”(jjh·jbhéuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.