diff options
author | Clément Léger <cleger@rivosinc.com> | 2024-10-18 10:40:05 +0200 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2024-10-25 23:58:39 +0530 |
commit | b0a7e4b85301a59f717cb420e3db1006b6fdfb6b (patch) | |
tree | 2c006f6f06fc284bc49f794bcd3c5884c735710f | |
parent | 9c7859326909c8025bf23909f1952ee963a1cdd4 (diff) | |
download | opensbi-b0a7e4b85301a59f717cb420e3db1006b6fdfb6b.zip opensbi-b0a7e4b85301a59f717cb420e3db1006b6fdfb6b.tar.gz opensbi-b0a7e4b85301a59f717cb420e3db1006b6fdfb6b.tar.bz2 |
lib: sbi: send a double trap SSE event to supervisor
In case the double trap handler is called and the double trap happened
in supervisor mode, send a double trap SSE event.
NOTE: this commit depends on the ratification of the new SSE event
id for double trap [1].
Link: https://lists.riscv.org/g/tech-prs/message/985 [1]
Signed-off-by: Clément Léger <cleger@rivosinc.com>
Reviewed-by: Samuel Holland <samuel.holland@sifive.com>
-rw-r--r-- | include/sbi/sbi_ecall_interface.h | 1 | ||||
-rw-r--r-- | lib/sbi/sbi_double_trap.c | 2 | ||||
-rw-r--r-- | lib/sbi/sbi_sse.c | 1 |
3 files changed, 3 insertions, 1 deletions
diff --git a/include/sbi/sbi_ecall_interface.h b/include/sbi/sbi_ecall_interface.h index 321039f..3aa5746 100644 --- a/include/sbi/sbi_ecall_interface.h +++ b/include/sbi/sbi_ecall_interface.h @@ -382,6 +382,7 @@ enum sbi_sse_state { /* SBI SSE Event IDs. */ #define SBI_SSE_EVENT_LOCAL_RAS 0x00000000 +#define SBI_SSE_EVENT_LOCAL_DOUBLE_TRAP 0x00000001 #define SBI_SSE_EVENT_LOCAL_PLAT_0_START 0x00004000 #define SBI_SSE_EVENT_LOCAL_PLAT_0_END 0x00007fff #define SBI_SSE_EVENT_GLOBAL_RAS 0x00008000 diff --git a/lib/sbi/sbi_double_trap.c b/lib/sbi/sbi_double_trap.c index 96f2fa5..bab96fb 100644 --- a/lib/sbi/sbi_double_trap.c +++ b/lib/sbi/sbi_double_trap.c @@ -26,5 +26,5 @@ int sbi_double_trap_handler(struct sbi_trap_context *tcntx) if (prev_virt) return sbi_trap_redirect(regs, trap); - return SBI_ENOTSUPP; + return sbi_sse_inject_event(SBI_SSE_EVENT_LOCAL_DOUBLE_TRAP); } diff --git a/lib/sbi/sbi_sse.c b/lib/sbi/sbi_sse.c index 94071f9..bf5620e 100644 --- a/lib/sbi/sbi_sse.c +++ b/lib/sbi/sbi_sse.c @@ -41,6 +41,7 @@ static const uint32_t supported_events[] = { SBI_SSE_EVENT_LOCAL_RAS, + SBI_SSE_EVENT_LOCAL_DOUBLE_TRAP, SBI_SSE_EVENT_GLOBAL_RAS, SBI_SSE_EVENT_LOCAL_PMU, SBI_SSE_EVENT_LOCAL_SOFTWARE, |