From: Atish Patra Date: Mon, 8 Nov 2021 18:52:59 +0000 (-0800) Subject: lib: sbi: Delegate PMU counter overflow interrupt to S mode X-Git-Tag: v1.3~418 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9134c3643e420b1917cf98940552ef16467f7a34;p=platform%2Fkernel%2Fopensbi-spacemit.git lib: sbi: Delegate PMU counter overflow interrupt to S mode OpenSBI doesn't handle PMU counters for now. Delegate the overflow counter to S-mode always. Reviewed-by: Bin Meng Reviewed-by: Anup Patel Signed-off-by: Atish Patra --- diff --git a/include/sbi/riscv_encoding.h b/include/sbi/riscv_encoding.h index 14caa95..ca63435 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 7f31bb7..8a98d4d 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))