git: da4e1e319c6c - main - Add the Arm CoreLink CMN-600 Coherent Mesh Network Controller PMU driver man page.

From: Toomas Soome <tsoome_at_FreeBSD.org>
Date: Sun, 10 Jul 2022 09:27:44 UTC
The branch main has been updated by tsoome:

URL: https://cgit.FreeBSD.org/src/commit/?id=da4e1e319c6cdaa1c6b3b44d8523e660a5e77e10

commit da4e1e319c6cdaa1c6b3b44d8523e660a5e77e10
Author:     Aleksandr Rybalko <ray@freebsd.org>
AuthorDate: 2022-02-16 00:36:57 +0000
Commit:     Toomas Soome <tsoome@FreeBSD.org>
CommitDate: 2022-07-10 09:26:55 +0000

    Add the Arm CoreLink CMN-600 Coherent Mesh Network Controller PMU driver man page.
    
    Add the Arm CoreLink CMN-600 Coherent Mesh Network Controller PMU driver man page.
    
    Reviewed by:    pauamma_gundo.com
    Sponsored By: ARM
    Differential Revision: https://reviews.freebsd.org/D32335
---
 lib/libpmc/Makefile      |   1 +
 lib/libpmc/pmc.cmn-600.3 | 597 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 598 insertions(+)

diff --git a/lib/libpmc/Makefile b/lib/libpmc/Makefile
index 8d884366eed7..a4e1cf8da0f0 100644
--- a/lib/libpmc/Makefile
+++ b/lib/libpmc/Makefile
@@ -69,6 +69,7 @@ MAN+=	pmc.soft.3
 # 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
index 000000000000..55a0b5fba88b
--- /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 .