forked from Mirrors/opensbi
		
	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>
This commit is contained in:
		
				
					committed by
					
						
						Anup Patel
					
				
			
			
				
	
			
			
			
						parent
						
							9c78593269
						
					
				
				
					commit
					b0a7e4b853
				
			@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user