diff options
author | Heiko Stuebner <heiko@sntech.de> | 2022-10-04 19:42:23 +0300 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2022-10-13 07:22:01 +0300 |
commit | e54cb3298bfcaa2ac56fe51d0f39c901d5397166 (patch) | |
tree | 2ca3a04a00a34c7cf39d073de068657117d70b20 /lib/sbi/sbi_pmu.c | |
parent | 3f3d401d2dfbed232d77012ba9289b62e98ad519 (diff) | |
download | opensbi-e54cb3298bfcaa2ac56fe51d0f39c901d5397166.tar.xz |
lib: sbi_pmu: move pmu irq information into pmu itself
Don't spread checking for pmu extensions through the code
but instead introduce a sbi-pmu function that other code can
call to get the correct information about the existence of the
pmu interrupt.
Add a sbi_pmu_device override function to allow overridung this
bit as well if needed.
Reviewed-by: Atish Patra <atishp@rivosinc.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Reviewed-by: Guo Ren <guoren@kernel.org>
Reviewed-by: Anup Patel <anup@brainfault.org>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Diffstat (limited to 'lib/sbi/sbi_pmu.c')
-rw-r--r-- | lib/sbi/sbi_pmu.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/sbi/sbi_pmu.c b/lib/sbi/sbi_pmu.c index 214d5e8..91d9ccc 100644 --- a/lib/sbi/sbi_pmu.c +++ b/lib/sbi/sbi_pmu.c @@ -344,6 +344,18 @@ skip_inhibit_update: return 0; } +int sbi_pmu_irq_bit(void) +{ + struct sbi_scratch *scratch = sbi_scratch_thishart_ptr(); + + if (sbi_hart_has_extension(scratch, SBI_HART_EXT_SSCOFPMF)) + return MIP_LCOFIP; + if (pmu_dev && pmu_dev->hw_counter_irq_bit) + return pmu_dev->hw_counter_irq_bit(); + + return 0; +} + static int pmu_ctr_start_fw(uint32_t cidx, uint32_t event_code, uint64_t ival, bool ival_update) { |