linux/drivers/perf
Shuai Xue af9597adc2 drivers/perf: add DesignWare PCIe PMU driver
This commit adds the PCIe Performance Monitoring Unit (PMU) driver support
for T-Head Yitian SoC chip. Yitian is based on the Synopsys PCI Express
Core controller IP which provides statistics feature. The PMU is a PCIe
configuration space register block provided by each PCIe Root Port in a
Vendor-Specific Extended Capability named RAS D.E.S (Debug, Error
injection, and Statistics).

To facilitate collection of statistics the controller provides the
following two features for each Root Port:

- one 64-bit counter for Time Based Analysis (RX/TX data throughput and
  time spent in each low-power LTSSM state) and
- one 32-bit counter for Event Counting (error and non-error events for
  a specified lane)

Note: There is no interrupt for counter overflow.

This driver adds PMU devices for each PCIe Root Port. And the PMU device is
named based the BDF of Root Port. For example,

    30:03.0 PCI bridge: Device 1ded:8000 (rev 01)

the PMU device name for this Root Port is dwc_rootport_3018.

Example usage of counting PCIe RX TLP data payload (Units of bytes)::

    $# perf stat -a -e dwc_rootport_3018/Rx_PCIe_TLP_Data_Payload/

average RX bandwidth can be calculated like this:

    PCIe TX Bandwidth = Rx_PCIe_TLP_Data_Payload / Measure_Time_Window

Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Yicong Yang <yangyicong@hisilicon.com>
Reviewed-and-tested-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
Link: https://lore.kernel.org/r/20231208025652.87192-5-xueshuai@linux.alibaba.com
[will: Fix sparse error due to use of uninitialised 'vsec' symbol in
 dwc_pcie_match_des_cap()]
Signed-off-by: Will Deacon <will@kernel.org>
2023-12-13 15:35:28 +00:00
..
amlogic perf/amlogic: add missing MODULE_DEVICE_TABLE 2023-10-17 12:36:12 +01:00
arm_cspmu arm64 fixes: 2023-11-10 12:22:14 -08:00
hisilicon drivers/perf: hisi: Fix some event id for HiSilicon UC pmu 2023-12-05 12:35:41 +00:00
alibaba_uncore_drw_pmu.c driver/perf: Add identifier sysfs file for Yitian 710 DDR 2023-07-27 12:57:04 +01:00
apple_m1_cpu_pmu.c arm: pmu: Move error message and -EOPNOTSUPP to individual PMUs 2023-12-12 09:46:22 +00:00
arm_dmc620_pmu.c Revert "perf/arm_dmc620: Remove duplicate format attribute #defines" 2023-12-13 09:47:52 +00:00
arm_dsu_pmu.c drivers/perf: arm_dsu_pmu: Remove kerneldoc-style comment syntax 2023-12-12 09:26:38 +00:00
arm_pmu_acpi.c arm_pmu: acpi: Add a representative platform device for TRBE 2023-08-18 18:07:10 +01:00
arm_pmu_platform.c drivers/perf: Explicitly include correct DT includes 2023-07-27 13:02:23 +01:00
arm_pmu.c arm: pmu: Move error message and -EOPNOTSUPP to individual PMUs 2023-12-12 09:46:22 +00:00
arm_pmuv3.c arm64: perf: Add support for event counting threshold 2023-12-12 09:46:22 +00:00
arm_smmuv3_pmu.c perf/smmuv3: Add MODULE_ALIAS for module auto loading 2023-08-15 12:53:04 +01:00
arm_spe_pmu.c arm: pmu: Share user ABI format mechanism with SPE 2023-12-12 09:46:22 +00:00
arm-cci.c drivers/perf: Explicitly include correct DT includes 2023-07-27 13:02:23 +01:00
arm-ccn.c drivers/perf:Directly use ida_alloc()/free() 2022-06-23 15:44:45 +01:00
arm-cmn.c perf/arm-cmn: Fix HN-F class_occup_id events 2023-12-05 12:17:02 +00:00
cxl_pmu.c perf: CXL: fix mismatched number of counters mask 2023-09-05 15:51:18 +01:00
dwc_pcie_pmu.c drivers/perf: add DesignWare PCIe PMU driver 2023-12-13 15:35:28 +00:00
fsl_imx8_ddr_perf.c perf: fsl_imx8_ddr: Add driver support for i.MX8DXL DDR Perf 2023-12-05 14:12:08 +00:00
fsl_imx9_ddr_perf.c drivers/perf: Remove usage of the deprecated ida_simple_xx() API 2023-12-12 09:20:38 +00:00
Kconfig drivers/perf: add DesignWare PCIe PMU driver 2023-12-13 15:35:28 +00:00
Makefile drivers/perf: add DesignWare PCIe PMU driver 2023-12-13 15:35:28 +00:00
marvell_cn10k_ddr_pmu.c drivers/perf: Explicitly include correct DT includes 2023-07-27 13:02:23 +01:00
marvell_cn10k_tad_pmu.c drivers/perf: Explicitly include correct DT includes 2023-07-27 13:02:23 +01:00
qcom_l2_pmu.c perf: qcom_l2_pmu: Make l2_cache_pmu_probe_cluster() more robust 2023-06-05 15:01:27 +01:00
qcom_l3_pmu.c perf: qcom: use acpi_device_uid() for fetching _UID 2023-10-20 19:21:14 +02:00
riscv_pmu_legacy.c drivers: perf: Implement perf event mmap support in the legacy backend 2023-08-16 07:28:19 -07:00
riscv_pmu_sbi.c riscv: Rearrange hwcap.h and cpufeature.h 2023-11-09 10:15:51 -08:00
riscv_pmu.c drivers: perf: Fix panic in riscv SBI mmap support 2023-10-12 11:46:35 -07:00
thunderx2_pmu.c perf: Replace acpi_bus_get_device() 2022-02-08 15:14:53 +00:00
xgene_pmu.c drivers/perf: xgene: Use device_get_match_data() 2023-10-17 12:43:13 +01:00