diff --git a/lib/libpmc/Makefile b/lib/libpmc/Makefile --- a/lib/libpmc/Makefile +++ b/lib/libpmc/Makefile @@ -69,6 +69,7 @@ # PMC-dependent manual pages MAN+= pmc.atom.3 MAN+= pmc.atomsilvermont.3 +MAN+= pmc.cmn-600.3 MAN+= pmc.core.3 MAN+= pmc.core2.3 MAN+= pmc.corei7.3 diff --git a/lib/libpmc/pmc.cmn-600.3 b/lib/libpmc/pmc.cmn-600.3 new file mode 100644 --- /dev/null +++ b/lib/libpmc/pmc.cmn-600.3 @@ -0,0 +1,597 @@ +.\" Copyright (c) 2021 ARM Ltd. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd December 19, 2021 +.Dt PMC.CMN-600 3 +.Os +.Sh NAME +.Nm pmc.cmn-600 +.Nd Library for accessing the Arm CoreLink CMN-600 Coherent Mesh Network +Controller performance counter events +.Sh LIBRARY +.Lb libpmc +.Sh SYNOPSIS +.In pmc.h +.Sh DESCRIPTION +CMN-600 PMU counters may be configured to count any one of a defined set of +hardware events. +Unlike other performance counters, counters for the CMN-600 require the +node ID to set up. +.Pp +Node ID information currently can be obtained one of two ways. +Using bootverbose, for example set sysctl debug.bootverbose=1 and then load the +.Xr hwpmc 4 +KLD module. +The cmn600 module will be loaded automatically as a dependency: +.Dl $ sysctl debug.bootverbose=1 +.Dl $ kldload hwpmc +Another way is to use sysctl to trigger +dump of nodes tree to system console: +.Dl $ sysctl dev.cmn600.0.dump_nodes=1 +.Pp +Some BIOS versions of dual-socket machines have no NUMA domain information in +ACPI. +In such cases, to get more accurate events statistics, set the kernel +environment variable hint.cmn600.{unit}.domain={value}. +Where {unit} is a cmn600 device unit number and {value} is the NUMA domain of +the CPU package containing that CMN-600 controller. +Example: +.Dl $ kenv hint.cmn600.0.domain=0 +.Dl $ kenv hint.cmn600.1.domain=1 +.Dl $ kldunload hwpmc cmn600 +.Dl $ kldload hwpmc +.Pp +Arm CoreLink CMN-600 Coherent Mesh Network Controller performance counters are +documented in +.Rs +.%B "Arm CoreLink CMN-600 Coherent Mesh Network Technical Reference Manual" +.%T "Revision: r3p2" +.%D 2020 +.%Q "ARM Limited" +.Re +.Ss PMC Capabilities +CMN-600 PMU counters support the following capabilities: +.Bl -column "PMC_CAP_INTERRUPT" "Support" +.It Sy Capability Ta Em Support +.It PMC_CAP_CASCADE Ta \&No +.It PMC_CAP_EDGE Ta \&No +.It PMC_CAP_INTERRUPT Ta Yes +.It PMC_CAP_INVERT Ta \&No +.It PMC_CAP_READ Ta Yes +.It PMC_CAP_PRECISE Ta \&No +.It PMC_CAP_SYSTEM Ta Yes +.It PMC_CAP_TAGGING Ta \&No +.It PMC_CAP_THRESHOLD Ta Yes +.It PMC_CAP_USER Ta \&No +.It PMC_CAP_WRITE Ta Yes +.El +.Ss Event Qualifiers +Event specifiers for these PMCs support the following common +qualifiers: +.Bl -tag -width indent +.It Li nodeid= Ns Ar nodeid +Request counting for specific event at node +.Ar nodeid . +.It Li occupancy= Ns Ar value +Filtering by occupancy type. +.It Li xpport= Ns Ar port +Count only events matched by +.Ar port . +(East, West, North, South, devport0, devport1 or numeric 0 to 5) +.It Li xpchannel= Ns Ar channel +Filter events by XP node channel. +(REQ, RSP, SNP, DAT or 0, 1, 2, 3) +.El +.Ss Class Name Prefix +These PMCs are named using a class name prefix of +.Dq Li CMN600_PMU_ . +.Ss Event Specifiers +The following list of PMC events are available: +.Ss DVM node events +.Bl -tag -width indent +.It Sy dn_rxreq_dvmop +Number of DVMOP requests received. +This includes all the sub-types include TLB invalidate, Branch predictor +invalidate, instruction cache (physical and virtual) invalidate. +.It Sy dn_rxreq_dvmsync +Number of DVM Sync requests received. +.It Sy dn_rxreq_dvmop_vmid_filtered +Number of incoming DVMOP requests that are subject to VMID based filtering. +This is a measure of the effectiveness of VMID based filtering and potential +reduction in DVM snoops. +.It Sy dn_rxreq_retried +Number of incoming requests that are retried. +This is a measure of the retry rate. +.It Sy dn_rxreq_trk_occupancy +Counts the tracker occupancy in DN. "occupancy": All, dvmop, dvmsync +.It Sy dn_rxreq_tlbi_dvmop +Number of DVMOP TLB invalidate requests received. +.It Sy dn_rxreq_bpi_dvmop +Number of DVMOP Branch predictor invalidate requests received. +.It Sy dn_rxreq_pici_dvmop +Number of DVMOP physical instruction cache invalidate requests received. +.It Sy dn_rxreq_vivi_dvmop +Number of DVMOP virtual instruction cache invalidate requests received. +.It Sy dn_rxreq_dvmop_other_filtered +Number of DVM op requests to RNDs, BPI or PICI/VICI, that were filtered +.It Sy dn_rxreq_snp_sent +Number of SNPs sent to RNs +.It Sy dn_rxreq_snp_stalled +Number of SNPs stalled to RNs due to lack of Crds +.It Sy dn_rxreq_trk_full +DVM tracker full counter +.El +.Ss HN-F node events +.Bl -tag -width indent +.It Sy hnf_cache_miss +Counts total cache misses in first lookup result (high priority) +.It Sy hnf_slc_sf_cache_access +Counts number of cache accesses in first access (high priority) +.It Sy hnf_cache_fill +Counts total allocations in HN SLC (all cache line allocations to SLC) +.It Sy hnf_pocq_retry +Counts number of retried requests +.It Sy hnf_pocq_reqs_recvd +Counts number of requests received by HN +.It Sy hnf_sf_hit +Counts number of SF hits +.It Sy hnf_sf_evictions +Counts number of SF eviction cache invalidations initiated +.It Sy hnf_dir_snoops_sent +Counts number of directed snoops sent (not including SF back invalidation) +.It Sy hnf_brd_snoops_sent +Counts number of multicast snoops sent (not including SF back invalidation) +.It Sy hnf_slc_eviction +Counts number of SLC evictions (dirty only) +.It Sy hnf_slc_fill_invalid_way +Counts number of SLC fills to an invalid way +.It Sy hnf_mc_retries +Counts number of retried transactions by the MC +.It Sy hnf_mc_reqs +Counts number of requests sent to MC +.It Sy hnf_qos_hh_retry +Counts number of times a HighHigh priority request is protocol-retried at the +HN-F +.It Sy hnf_qos_pocq +Counts the POCQ occupancy in HN-F. +Support argument "occupancy". Accept: All, Read, Write, Atomic, Stash. +Default: All. +.It Sy hnf_pocq_addrhaz +Counts number of POCQ address hazards upon allocation +.It Sy hnf_pocq_atomic_addrhaz +Counts number of POCQ address hazards upon allocation for atomic operations +.It Sy hnf_ld_st_swp_adq_full +Counts number of times ADQ is full for Ld/St/SWP type atomic operations while +POCQ has pending operations +.It Sy hnf_cmp_adq_full +Counts number of times ADQ is full for CMP type atomic operations while POCQ +has pending operations +.It Sy hnf_txdat_stall +Counts number of times HN-F has a pending TXDAT flit but no credits to upload +.It Sy hnf_txrsp_stall +Counts number of times HN-F has a pending TXRSP flit but no credits to upload +.It Sy hnf_seq_full +Counts number of times requests are replayed in SLC pipe due to SEQ being full +.It Sy hnf_seq_hit +Counts number of times a request in SLC hit a pending SF eviction in SEQ +.It Sy hnf_snp_sent +Counts number of snoops sent including directed, multicast, and SF back +invalidation +.It Sy hnf_sfbi_dir_snp_sent +Counts number of times directed snoops were sent due to SF back invalidation +.It Sy hnf_sfbi_brd_snp_sent +Counts number of times multicast snoops were sent due to SF back invalidation +.It Sy hnf_snp_sent_untrk +Counts number of times snooped were sent due to untracked RNF's +.It Sy hnf_intv_dirty +Counts number of times SF back invalidation resulted in dirty line intervention +from the RN +.It Sy hnf_stash_snp_sent +Counts number of times stash snoops were sent +.It Sy hnf_stash_data_pull +Counts number of times stash snoops resulted in data pull from the RN +.It Sy hnf_snp_fwded +Counts number of times data forward snoops were sent +.El +.Ss HN-I node events +.Bl -tag -width indent +.It Sy hni_rrt_rd_occ_cnt_ovfl +RRT read occupancy count overflow +.It Sy hni_rrt_wr_occ_cnt_ovfl +RRT write occupancy count overflow +.It Sy hni_rdt_rd_occ_cnt_ovfl +RDT read occupancy count overflow +.It Sy hni_rdt_wr_occ_cnt_ovfl +RDT write occupancy count overflow +.It Sy hni_wdb_occ_cnt_ovfl +WDB occupancy count overflow +.It Sy hni_rrt_rd_alloc +RRT read allocation +.It Sy hni_rrt_wr_alloc +RRT write allocation +.It Sy hni_rdt_rd_alloc +RDT read allocation +.It Sy hni_rdt_wr_alloc +RDT write allocation +.It Sy hni_wdb_alloc +WDB allocation +.It Sy hni_txrsp_retryack +RETRYACK TXRSP flit sent +.It Sy hni_arvalid_no_arready +ARVALID set without ARREADY event +.It Sy hni_arready_no_arvalid +ARREADY set without ARVALID event +.It Sy hni_awvalid_no_awready +AWVALID set without AWREADY event +.It Sy hni_awready_no_awvalid +AWREADY set without AWVALID event +.It Sy hni_wvalid_no_wready +WVALID set without WREADY event +.It Sy hni_txdat_stall +TXDAT stall (TXDAT valid but no link credit available) +.It Sy hni_nonpcie_serialization +Non-PCIe serialization event +.It Sy hni_pcie_serialization +PCIe serialization event +.El +.Ss XP node events +.Bl -tag -width indent +.It Sy xp_txflit_valid +Number of flits transmitted on a specified port and CHI channel. +This is a measure of the flit transfer bandwidth from an XP. +Note: On device ports, this event also includes link flit transfers. +.It Sy xp_txflit_stall +Number of cycles when a flit is stalled at an XP waiting for link credits at a +specified port and CHI channel. +This is a measure of the flit traffic congestion on the mesh and at the flit +download ports. +.It Sy xp_partial_dat_flit +Number of times when a partial DAT flit is uploaded onto the mesh from a +RN-F_CHIA port. +Partial DAT flit transmission occurs when XP is not able to combine two 128b +DAT flits and send them over the 256b DAT channel. +This can happen under 2 circumstances: +1. Only one 128b DAT flit is received within a transmission time window. +2. Two 128b DAT flits are received but they are not two halves of a + single 256b word. +.El +.Ss SBSX node events +.Bl -tag -width indent +.It Sy sbsx_rd_req +Read request +.It Sy sbsx_wr_req +Write request +.It Sy sbsx_cmo_req +CMO request +.It Sy sbsx_txrsp_retryack +RETRYACK TXRSP flit sent +.It Sy sbsx_txdat_flitv +TXDAT flit seen +.It Sy sbsx_txrsp_flitv +TXRSP flit seen +.It Sy sbsx_rd_req_trkr_occ_cnt_ovfl +Read request tracker occupancy count overflow +.It Sy sbsx_wr_req_trkr_occ_cnt_ovfl +Write request tracker occupancy count overflow +.It Sy sbsx_cmo_req_trkr_occ_cnt_ovfl +CMO request tracker occupancy count overflow +.It Sy sbsx_wdb_occ_cnt_ovfl +WDB occupancy count overflow +.It Sy sbsx_rd_axi_trkr_occ_cnt_ovfl +Read AXI pending tracker occupancy count overflow +.It Sy sbsx_cmo_axi_trkr_occ_cnt_ovfl +CMO AXI pending tracker occupancy count overflow +.It Sy sbsx_arvalid_no_arready +ARVALID set without ARREADY +.It Sy sbsx_awvalid_no_awready +AWVALID set without AWREADY +.It Sy sbsx_wvalid_no_wready +WVALID set without WREADY +.It Sy sbsx_txdat_stall +TXDAT stall (TXDAT valid but no link credit available) +.It Sy sbsx_txrsp_stall +TXRSP stall (TXRSP valid but no link credit available) +.El +.Ss RN-D node events +.Bl -tag -width indent +.It Sy rnd_s0_rdata_beats +Number of RData beats, RVALID and RREADY, dispatched on port 0. +This is a measure of the read bandwidth, including CMO responses. +.It Sy rnd_s1_rdata_beats +Number of RData beats, RVALID and RREADY, dispatched on port 1. +This is a measure of the read bandwidth, including CMO responses. +.It Sy rnd_s2_rdata_beats +Number of RData beats, RVALID and RREADY, dispatched on port 2. +This is a measure of the read bandwidth, including CMO responses. +.It Sy rnd_rxdat_flits +Number of RXDAT flits received. +This is a measure of the true read data bandwidth, excluding CMOs. +.It Sy rnd_txdat_flits +Number of TXDAT flits dispatched. +This is a measure of the write bandwidth. +.It Sy rnd_txreq_flits_total +Number of TXREQ flits dispatched. +This is a measure of the total request +bandwidth. +.It Sy rnd_txreq_flits_retried +Number of retried TXREQ flits dispatched. +This is a measure of the retry rate. +.It Sy rnd_rrt_occ_ovfl +All entries in the read request tracker are occupied. +This is a measure of oversubscription in the read request tracker. +.It Sy rnd_wrt_occ_ovfl +All entries in the write request tracker are occupied. +This is a measure of oversubscription in the write request tracker. +.It Sy rnd_txreq_flits_replayed +Number of replayed TXREQ flits. +This is the measure of replay rate. +.It Sy rnd_wrcancel_sent +Number of write data cancels sent. +This is the measure of write cancel rate. +.It Sy rnd_s0_wdata_beats +Number of WData beats, WVALID and WREADY, dispatched on port 0. +This is a measure of write bandwidth on AXI port 0. +.It Sy rnd_s1_wdata_beats +Number of WData beats, WVALID and WREADY, dispatched on port 1. +This is a measure of write bandwidth on AXI port 1. +.It Sy rnd_s2_wdata_beats +Number of WData beats, WVALID and WREADY, dispatched on port 2. +This is a measure of write bandwidth on AXI port 2. +.It Sy rnd_rrt_alloc +Number of allocations in the read request tracker. +This is a measure of read transaction count. +.It Sy rnd_wrt_alloc +Number of allocations in the write request tracker. +This is a measure of write transaction count. +.It Sy rnd_rdb_unord +Number of cycles for which Read Data Buffer state machine is in Unordered Mode. +.It Sy rnd_rdb_replay +Number of cycles for which Read Data Buffer state machine is in Replay mode +.It Sy rnd_rdb_hybrid +Number of cycles for which Read Data Buffer state machine is in hybrid mode. +Hybrid mode is where there is mix of ordered/unordered traffic. +.It Sy rnd_rdb_ord +Number of cycles for which Read Data Buffer state machine is in ordered Mode. +.El +.Ss RN-I node events +.Bl -tag -width indent +.It Sy rni_s0_rdata_beats +Number of RData beats, RVALID and RREADY, dispatched on port 0. +This is a measure of the read bandwidth, including CMO responses. +.It Sy rni_s1_rdata_beats +Number of RData beats, RVALID and RREADY, dispatched on port 1. +This is a measure of the read bandwidth, including CMO responses. +.It Sy rni_s2_rdata_beats +Number of RData beats, RVALID and RREADY, dispatched on port 2. +This is a measure of the read bandwidth, including CMO responses. +.It Sy rni_rxdat_flits +Number of RXDAT flits received. +This is a measure of the true read data bandwidth, excluding CMOs. +.It Sy rni_txdat_flits +Number of TXDAT flits dispatched. +This is a measure of the write bandwidth. +.It Sy rni_txreq_flits_total +Number of TXREQ flits dispatched. +This is a measure of the total request bandwidth. +.It Sy rni_txreq_flits_retried +Number of retried TXREQ flits dispatched. +This is a measure of the retry rate. +.It Sy rni_rrt_occ_ovfl +All entries in the read request tracker are occupied. +This is a measure of oversubscription in the read request tracker. +.It Sy rni_wrt_occ_ovfl +All entries in the write request tracker are occupied. +This is a measure of oversubscription in the write request tracker. +.It Sy rni_txreq_flits_replayed +Number of replayed TXREQ flits. +This is the measure of replay rate. +.It Sy rni_wrcancel_sent +Number of write data cancels sent. +This is the measure of write cancel rate +.It Sy rni_s0_wdata_beats +Number of WData beats, WVALID and WREADY, dispatched on port 0. +This is a measure of write bandwidth on AXI port 0. +.It Sy rni_s1_wdata_beats +Number of WData beats, WVALID and WREADY, dispatched on port 1. +This is a measure of write bandwidth on AXI port 1. +.It Sy rni_s2_wdata_beats +Number of WData beats, WVALID and WREADY, dispatched on port 2. +This is a measure of write bandwidth on AXI port 2. +.It Sy rni_rrt_alloc +Number of allocations in the read request tracker. +This is a measure of read transaction count. +.It Sy rni_wrt_alloc +Number of allocations in the write request tracker. +This is a measure of write transaction count +.It Sy rni_rdb_unord +Number of cycles for which Read Data Buffer state machine is in Unordered Mode. +.It Sy rni_rdb_replay +Number of cycles for which Read Data Buffer state machine is in Replay mode +.It Sy rni_rdb_hybrid +Number of cycles for which Read Data Buffer state machine is in hybrid mode. +Hybrid mode is where there is mix of ordered/unordered traffic. +.It Sy rni_rdb_ord +Number of cycles for which Read Data Buffer state machine is in ordered Mode. +.El +.Ss CXHA node events +.Pq Note: CXHA events descriptions are guessed +.Bl -tag -width indent +.It Sy cxha_rddatbyp +Number of Read DAT Bypass +.It Sy cxha_chirsp_up_stall +Number of CHI RSP up Stall +.It Sy cxha_chidat_up_stall +Number of CHI DAT up Stall +.It Sy cxha_snppcrd_lnk0_stall +Number of Snoop Pcrd Stall on Link 0 +.It Sy cxha_snppcrd_lnk1_stall +Number of Snoop Pcrd Stall on Link 1 +.It Sy cxha_snppcrd_lnk2_stall +Number of Snoop Pcrd Stall on Link 2 +.It Sy cxha_reqtrk_occ +Request Tracker Occupancy +.It Sy cxha_rdb_occ +Read Data Buffer Occupancy +.It Sy cxha_rdbbyp_occ +Read Data Buffer Bypass Occupancy +.It Sy cxha_wdb_occ +Write Data Buffer Occupancy +.It Sy cxha_snptrk_occ +Snoop Tracker Occupancy +.It Sy cxha_sdb_occ +SDB Occupancy +.It Sy cxha_snphaz_occ +Snoop Hazard Occupancy +.El +.Ss CXRA node events +.Bl -tag -width indent +.It Sy cxra_req_trk_occ +Request tracker occupancy +.It Sy cxra_snp_trk_occ +Snoop tracker occupancy +.It Sy cxra_rd_dat_buf_occ +Read data buffer occupancy +.It Sy cxra_wr_dat_buf_occ +Write data buffer occupancy +.It Sy cxra_snp_sink_buf_occ +Snoop sink buffer occupancy +.It Sy cxra_snp_bcasts +Snoop broadcasts +.It Sy cxra_req_chains +Number of request chains formed larger than one +.It Sy cxra_req_chain_avg_len +Average size of request chains, only for chain sizes larger than one +.It Sy cxra_chi_rsp_upload_stalls +Local RA upload stalls to CHI because of contention with HA +.It Sy cxra_chi_dat_upload_stalls +Local RA upload stalls to CHI because of contention with HA +.It Sy cxra_dat_pcrd_stalls_lnk0 +Memory Data Request available, but no DAT Pcrd to send over CCIX per LinkEnd 0 +.It Sy cxra_dat_pcrd_stalls_lnk1 +Memory Data Request available, but no DAT Pcrd to send over CCIX per LinkEnd 1 +.It Sy cxra_dat_pcrd_stalls_lnk2 +Memory Data Request available, but no DAT Pcrd to send over CCIX per LinkEnd 2 +.It Sy cxra_req_pcrd_stalls_lnk0 +Memory Data Request available but no Req Pcrd to send over CCIX per LinkEnd 0 +.It Sy cxra_req_pcrd_stalls_lnk1 +Memory Data Request available but no Req Pcrd to send over CCIX per LinkEnd 1 +.It Sy cxra_req_pcrd_stalls_lnk2 +Memory Data Request available but no Req Pcrd to send over CCIX per LinkEnd 2 +.It Sy cxra_ext_rsp_stall +CHI external RSP stall +.It Sy cxra_ext_dat_stall +CHI external DAT stall +.El +.Ss CXLA node events +.Bl -tag -width indent +.It Sy cxla_rx_tlp_link0 +RX TLP for Link 0 +.It Sy cxla_rx_tlp_link1 +RX TLP for Link 1 +.It Sy cxla_rx_tlp_link2 +RX TLP for Link 2 +.It Sy cxla_tx_tlp_link0 +TX TLP for Link 0 +.It Sy cxla_tx_tlp_link1 +TX TLP for Link 1 +.It Sy cxla_tx_tlp_link2 +TX TLP for Link 2 +.It Sy cxla_rx_cxs_link0 +RX CXS for Link 0 +.It Sy cxla_rx_cxs_link1 +RX CXS for Link 1 +.It Sy cxla_rx_cxs_link2 +RX CXS for Link 2 +.It Sy cxla_tx_cxs_link0 +TX CXS for Link 0 +.It Sy cxla_tx_cxs_link1 +TX CXS for Link 1 +.It Sy cxla_tx_cxs_link2 +TX CXS for Link 2 +.It Sy cxla_avg_rx_tlp_sz_dws +Average RX TLP size in DWs +.It Sy cxla_avg_tx_tlp_sz_dws +Average TX TLP size in DWs +.It Sy cxla_avg_rx_tlp_sz_ccix_msg +Average RX TLP size in CCIX messages +.It Sy cxla_avg_tx_tlp_sz_ccix_msg +Average TX TLP size in CCIX messages +.It Sy cxla_avg_sz_rx_cxs_dw_beat +Average size of RX CXS in DWs within a beat +.It Sy cxla_avg_sz_tx_cxs_dw_beat +Average size of TX CXS in DWs within a beat +.It Sy cxla_tx_cxs_link_credit_backpressure +TX CXS link credit backpressure +.It Sy cxla_rx_tlp_buffer_full +RX TLP buffer full and backpressured +.It Sy cxla_tx_tlp_buffer_full +TX TLP buffer full and backpressured +.It Sy cxla_avg_latency_process_rx_tlp +Average latency to process an RX TLP +.It Sy cxla_avg_latency_form_tx_tlp +Average latency to form a TX TLP +.El +.Sh SEE ALSO +.Xr pmc 3 , +.Xr pmc.atom 3 , +.Xr pmc.core 3 , +.Xr pmc.core2 3 , +.Xr pmc.corei7 3 , +.Xr pmc.corei7uc 3 , +.Xr pmc.iaf 3 , +.Xr pmc.iaf 3 , +.Xr pmc.k7 3 , +.Xr pmc.k8 3 , +.Xr pmc.p4 3 , +.Xr pmc.p5 3 , +.Xr pmc.p6 3 , +.Xr pmc.soft 3 , +.Xr pmc.tsc 3 , +.Xr pmc.westmere 3 , +.Xr pmc.westmereuc 3 , +.Xr pmc_cpuinfo 3 , +.Xr pmclog 3 , +.Xr hwpmc 4 +.Sh HISTORY +The +.Nm pmc +library first appeared in +.Fx 6.0 . +.br +The +.Nm pmc.cmn-600 +driver was added in +.Fx 14.0 . +.Sh AUTHORS +.An -nosplit +The +.Lb libpmc +library was written by +.An Joseph Koshy Aq Mt jkoshy@FreeBSD.org , +.An Oleksandr Rybalko Aq Mt ray@FreeBSD.org . +.br +The CMN-600 PMU driver was sponsored by ARM Ltd. +This manual page was written by +.An Oleksandr Rybalko Aq Mt ray@FreeBSD.org .