diff options
author | Inochi Amaoto <inochiama@outlook.com> | 2023-08-15 17:40:33 +0800 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2023-09-10 11:05:01 +0530 |
commit | 901d3d7bff5a511b5f320aad8a0d65e79c95d09c (patch) | |
tree | e07df10caf85902080a7a7d208a197a18ac33009 /lib | |
parent | c9a296d0edc9cb64638c026949ef091d7d9e01e9 (diff) | |
download | opensbi-901d3d7bff5a511b5f320aad8a0d65e79c95d09c.zip opensbi-901d3d7bff5a511b5f320aad8a0d65e79c95d09c.tar.gz opensbi-901d3d7bff5a511b5f320aad8a0d65e79c95d09c.tar.bz2 |
lib: sbi_pmu: keep overflow interrupt of stopped hpm counter disabled
After the hardware hpm counter is stopped, it should not raise any new
interrupt as it is already stopped. So add the hw_counter_disable_irq
callback to allow the custom pmu device to control this behavior.
Signed-off-by: Inochi Amaoto <inochiama@outlook.com>
Reviewed-by: Guo Ren <guoren@kernel.org>
Reviewed-by: Anup Patel <anup@brainfault.org>
Tested-by: Samuel Holland <samuel@sholland.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sbi/sbi_pmu.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/sbi/sbi_pmu.c b/lib/sbi/sbi_pmu.c index c52e8a2..9694aae 100644 --- a/lib/sbi/sbi_pmu.c +++ b/lib/sbi/sbi_pmu.c @@ -482,6 +482,9 @@ static int pmu_ctr_stop_hw(uint32_t cidx) if (!__test_bit(cidx, &mctr_inhbt)) { __set_bit(cidx, &mctr_inhbt); csr_write(CSR_MCOUNTINHIBIT, mctr_inhbt); + if (pmu_dev && pmu_dev->hw_counter_disable_irq) { + pmu_dev->hw_counter_disable_irq(cidx); + } return 0; } else return SBI_EALREADY_STOPPED; |