[PATCH v5 04/12] lib: sbi: Delegate PMU counter overflow interrupt to S mode
Anup Patel
anup at brainfault.org
Thu Nov 11 04:44:14 PST 2021
On Tue, Nov 9, 2021 at 12:23 AM Atish Patra <atish.patra at wdc.com> wrote:
>
> OpenSBI doesn't handle PMU counters for now.
>
> Delegate the overflow counter to S-mode always.
>
> Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
> Reviewed-by: Anup Patel <anup.patel at wdc.com>
> Signed-off-by: Atish Patra <atish.patra at wdc.com>
Applied this patch to the riscv/opensbi repo.
Thanks,
Anup
> ---
> include/sbi/riscv_encoding.h | 2 ++
> lib/sbi/sbi_hart.c | 3 +++
> 2 files changed, 5 insertions(+)
>
> diff --git a/include/sbi/riscv_encoding.h b/include/sbi/riscv_encoding.h
> index 14caa95d66de..ca6343537eba 100644
> --- a/include/sbi/riscv_encoding.h
> +++ b/include/sbi/riscv_encoding.h
> @@ -86,6 +86,7 @@
> #define IRQ_VS_EXT 10
> #define IRQ_M_EXT 11
> #define IRQ_S_GEXT 12
> +#define IRQ_PMU_OVF 13
>
> #define MIP_SSIP (_UL(1) << IRQ_S_SOFT)
> #define MIP_VSSIP (_UL(1) << IRQ_VS_SOFT)
> @@ -97,6 +98,7 @@
> #define MIP_VSEIP (_UL(1) << IRQ_VS_EXT)
> #define MIP_MEIP (_UL(1) << IRQ_M_EXT)
> #define MIP_SGEIP (_UL(1) << IRQ_S_GEXT)
> +#define MIP_LCOFIP (_UL(1) << IRQ_PMU_OVF)
>
> #define SIP_SSIP MIP_SSIP
> #define SIP_STIP MIP_STIP
> diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c
> index 1d73cd73b166..fccd19b7eb31 100644
> --- a/lib/sbi/sbi_hart.c
> +++ b/lib/sbi/sbi_hart.c
> @@ -115,6 +115,9 @@ static int delegate_traps(struct sbi_scratch *scratch)
>
> /* Send M-mode interrupts and most exceptions to S-mode */
> interrupts = MIP_SSIP | MIP_STIP | MIP_SEIP;
> + if (sbi_hart_has_feature(scratch, SBI_HART_HAS_SSCOFPMF))
> + interrupts |= MIP_LCOFIP;
> +
> exceptions = (1U << CAUSE_MISALIGNED_FETCH) | (1U << CAUSE_BREAKPOINT) |
> (1U << CAUSE_USER_ECALL);
> if (sbi_platform_has_mfaults_delegation(plat))
> --
> 2.31.1
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi
More information about the opensbi
mailing list