mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 14:41:39 +00:00
af9597adc2
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>
30 lines
1.3 KiB
Makefile
30 lines
1.3 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
obj-$(CONFIG_ARM_CCI_PMU) += arm-cci.o
|
|
obj-$(CONFIG_ARM_CCN) += arm-ccn.o
|
|
obj-$(CONFIG_ARM_CMN) += arm-cmn.o
|
|
obj-$(CONFIG_ARM_DSU_PMU) += arm_dsu_pmu.o
|
|
obj-$(CONFIG_ARM_PMU) += arm_pmu.o arm_pmu_platform.o
|
|
obj-$(CONFIG_ARM_PMU_ACPI) += arm_pmu_acpi.o
|
|
obj-$(CONFIG_ARM_PMUV3) += arm_pmuv3.o
|
|
obj-$(CONFIG_ARM_SMMU_V3_PMU) += arm_smmuv3_pmu.o
|
|
obj-$(CONFIG_FSL_IMX8_DDR_PMU) += fsl_imx8_ddr_perf.o
|
|
obj-$(CONFIG_FSL_IMX9_DDR_PMU) += fsl_imx9_ddr_perf.o
|
|
obj-$(CONFIG_HISI_PMU) += hisilicon/
|
|
obj-$(CONFIG_QCOM_L2_PMU) += qcom_l2_pmu.o
|
|
obj-$(CONFIG_QCOM_L3_PMU) += qcom_l3_pmu.o
|
|
obj-$(CONFIG_RISCV_PMU) += riscv_pmu.o
|
|
obj-$(CONFIG_RISCV_PMU_LEGACY) += riscv_pmu_legacy.o
|
|
obj-$(CONFIG_RISCV_PMU_SBI) += riscv_pmu_sbi.o
|
|
obj-$(CONFIG_THUNDERX2_PMU) += thunderx2_pmu.o
|
|
obj-$(CONFIG_XGENE_PMU) += xgene_pmu.o
|
|
obj-$(CONFIG_ARM_SPE_PMU) += arm_spe_pmu.o
|
|
obj-$(CONFIG_ARM_DMC620_PMU) += arm_dmc620_pmu.o
|
|
obj-$(CONFIG_MARVELL_CN10K_TAD_PMU) += marvell_cn10k_tad_pmu.o
|
|
obj-$(CONFIG_MARVELL_CN10K_DDR_PMU) += marvell_cn10k_ddr_pmu.o
|
|
obj-$(CONFIG_APPLE_M1_CPU_PMU) += apple_m1_cpu_pmu.o
|
|
obj-$(CONFIG_ALIBABA_UNCORE_DRW_PMU) += alibaba_uncore_drw_pmu.o
|
|
obj-$(CONFIG_DWC_PCIE_PMU) += dwc_pcie_pmu.o
|
|
obj-$(CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU) += arm_cspmu/
|
|
obj-$(CONFIG_MESON_DDR_PMU) += amlogic/
|
|
obj-$(CONFIG_CXL_PMU) += cxl_pmu.o
|