aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Léger <cleger@rivosinc.com>2024-10-18 10:40:05 +0200
committerAnup Patel <anup@brainfault.org>2024-10-25 23:58:39 +0530
commitb0a7e4b85301a59f717cb420e3db1006b6fdfb6b (patch)
tree2c006f6f06fc284bc49f794bcd3c5884c735710f
parent9c7859326909c8025bf23909f1952ee963a1cdd4 (diff)
downloadopensbi-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.h1
-rw-r--r--lib/sbi/sbi_double_trap.c2
-rw-r--r--lib/sbi/sbi_sse.c1
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,