linux/drivers/perf
Samuel Holland 16d3b1af09
perf: RISC-V: Check standard event availability
The RISC-V SBI PMU specification defines several standard hardware and
cache events. Currently, all of these events are exposed to userspace,
even when not actually implemented. They appear in the `perf list`
output, and commands like `perf stat` try to use them.

This is more than just a cosmetic issue, because the PMU driver's .add
function fails for these events, which causes pmu_groups_sched_in() to
prematurely stop scheduling in other (possibly valid) hardware events.

Add logic to check which events are supported by the hardware (i.e. can
be mapped to some counter), so only usable events are reported to
userspace. Since the kernel does not know the mapping between events and
possible counters, this check must happen during boot, when no counters
are in use. Make the check asynchronous to minimize impact on boot time.

Fixes: e999143459 ("RISC-V: Add perf platform driver based on SBI PMU extension")

Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
Reviewed-by: Atish Patra <atishp@rivosinc.com>
Tested-by: Atish Patra <atishp@rivosinc.com>
Signed-off-by: Atish Patra <atishp@rivosinc.com>
Link: https://lore.kernel.org/r/20240628-misc_perf_fixes-v4-3-e01cfddcf035@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-07-03 12:56:22 -07:00
..
amlogic perf/amlogic: Assign parents for event_source devices 2024-04-19 15:59:29 +01:00
arm_cspmu Driver core changes for 6.10-rc1 2024-05-22 12:13:40 -07:00
hisilicon Driver core changes for 6.10-rc1 2024-05-22 12:13:40 -07:00
alibaba_uncore_drw_pmu.c Driver core changes for 6.10-rc1 2024-05-22 12:13:40 -07: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 perf/arm-dmc620: Fix lockdep assert in ->event_init() 2024-05-17 16:48:05 +01:00
arm_dsu_pmu.c Driver core changes for 6.10-rc1 2024-05-22 12:13:40 -07: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 perf/arm_pmu: Assign parents for event_source devices 2024-04-19 15:59:30 +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/arm-smmuv3: Assign parents for event_source device 2024-04-19 15:59:31 +01:00
arm_spe_pmu.c perf/arm-spe: Assign parents for event_source device 2024-04-19 15:59:31 +01:00
arm-cci.c Driver core changes for 6.10-rc1 2024-05-22 12:13:40 -07:00
arm-ccn.c Driver core changes for 6.10-rc1 2024-05-22 12:13:40 -07:00
arm-cmn.c perf/arm-cmn: Set PMU device parent 2024-04-10 16:48:17 +01:00
cxl_pmu.c Driver core changes for 6.10-rc1 2024-05-22 12:13:40 -07:00
dwc_pcie_pmu.c perf/dwc_pcie: Avoid placing cpumask on the stack 2024-04-09 16:47:15 +01:00
fsl_imx8_ddr_perf.c perf/imx_ddr: Assign parents for event_source devices 2024-04-19 15:59:30 +01:00
fsl_imx9_ddr_perf.c perf: fsl_imx9_ddr: Convert to platform remove callback returning void 2024-02-09 15:59:30 +00:00
Kconfig RISC-V Patches for the 6.9 Merge Window 2024-03-22 10:41:13 -07:00
Makefile perf: starfive: Add StarLink PMU support 2024-03-04 14:19:48 +00:00
marvell_cn10k_ddr_pmu.c perf: marvell_cn10k_ddr: Convert to platform remove callback returning void 2024-02-09 15:59:30 +00:00
marvell_cn10k_tad_pmu.c perf: marvell_cn10k_tad: Convert to platform remove callback returning void 2024-02-09 15:59:30 +00:00
qcom_l2_pmu.c perf/qcom: Assign parents for event_source devices 2024-04-19 15:59:30 +01:00
qcom_l3_pmu.c Driver core changes for 6.10-rc1 2024-05-22 12:13:40 -07:00
riscv_pmu_legacy.c perf/riscv: Assign parents for event_source devices 2024-04-19 15:59:29 +01:00
riscv_pmu_sbi.c perf: RISC-V: Check standard event availability 2024-07-03 12:56:22 -07:00
riscv_pmu.c drivers/perf: riscv: Do not update the event data if uptodate 2024-07-03 12:56:15 -07:00
starfive_starlink_pmu.c perf: starfive: Add StarLink PMU support 2024-03-04 14:19:48 +00:00
thunderx2_pmu.c perf/thunderx2: Assign parents for event_source devices 2024-04-19 15:59:29 +01:00
xgene_pmu.c Driver core changes for 6.10-rc1 2024-05-22 12:13:40 -07:00