diff options
author | Palmer Dabbelt <palmer@rivosinc.com> | 2023-11-09 06:44:13 -0800 |
---|---|---|
committer | Palmer Dabbelt <palmer@rivosinc.com> | 2023-11-09 06:44:13 -0800 |
commit | 68444b93ed6c622f77745ea25f8db05cd0afb1b6 (patch) | |
tree | 743ca5f9cd96e52db5c29f6e81141232ca435b5f /drivers/perf/riscv_pmu_sbi.c | |
parent | c6e316ac05532febb0c966fa9b55f5258ed037be (diff) | |
parent | 61e3d993c8bd3e80f8f1363ed5e04f88ab531b72 (diff) | |
download | lwn-68444b93ed6c622f77745ea25f8db05cd0afb1b6.tar.gz lwn-68444b93ed6c622f77745ea25f8db05cd0afb1b6.zip |
Merge patch "drivers: perf: Do not broadcast to other cpus when starting a counter"
This is really just a single patch, but since the offending fix hasn't
yet made it to my for-next I'm merging it here.
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Diffstat (limited to 'drivers/perf/riscv_pmu_sbi.c')
-rw-r--r-- | drivers/perf/riscv_pmu_sbi.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/perf/riscv_pmu_sbi.c b/drivers/perf/riscv_pmu_sbi.c index 0b5053152ee6..cd8a2b9efd78 100644 --- a/drivers/perf/riscv_pmu_sbi.c +++ b/drivers/perf/riscv_pmu_sbi.c @@ -510,16 +510,18 @@ static void pmu_sbi_set_scounteren(void *arg) { struct perf_event *event = (struct perf_event *)arg; - csr_write(CSR_SCOUNTEREN, - csr_read(CSR_SCOUNTEREN) | (1 << pmu_sbi_csr_index(event))); + if (event->hw.idx != -1) + csr_write(CSR_SCOUNTEREN, + csr_read(CSR_SCOUNTEREN) | (1 << pmu_sbi_csr_index(event))); } static void pmu_sbi_reset_scounteren(void *arg) { struct perf_event *event = (struct perf_event *)arg; - csr_write(CSR_SCOUNTEREN, - csr_read(CSR_SCOUNTEREN) & ~(1 << pmu_sbi_csr_index(event))); + if (event->hw.idx != -1) + csr_write(CSR_SCOUNTEREN, + csr_read(CSR_SCOUNTEREN) & ~(1 << pmu_sbi_csr_index(event))); } static void pmu_sbi_ctr_start(struct perf_event *event, u64 ival) |