perf: riscv: Fix selecting counters in legacy mode
authorShifrin Dmitry <dmitry.shifrin@syntacore.com>
Mon, 29 Jul 2024 12:58:58 +0000 (15:58 +0300)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 1 Aug 2024 14:15:13 +0000 (07:15 -0700)
commit941a8e9b7a86763ac52d5bf6ccc9986d37fde628
tree1068f19c1d75089108de235bb749f74a60884fb4
parent57e5c814e91577a464484cc4b1a56ff86371a713
perf: riscv: Fix selecting counters in legacy mode

It is required to check event type before checking event config.
Events with the different types can have the same config.
This check is missed for legacy mode code

For such perf usage:
    sysctl -w kernel.perf_user_access=2
    perf stat -e cycles,L1-dcache-loads --
driver will try to force both events to CYCLE counter.

This commit implements event type check before forcing
events on the special counters.

Signed-off-by: Shifrin Dmitry <dmitry.shifrin@syntacore.com>
Reviewed-by: Atish Patra <atishp@rivosinc.com>
Fixes: cc4c07c89aad ("drivers: perf: Implement perf event mmap support in the SBI backend")
Link: https://lore.kernel.org/r/20240729125858.630653-1-dmitry.shifrin@syntacore.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
drivers/perf/riscv_pmu_sbi.c