From d0f94a0d400c8b2d37d037606f9fc5878757ce2e Mon Sep 17 00:00:00 2001 From: Oleksii Kurochko Date: Mon, 2 Feb 2026 09:09:26 +0100 Subject: [PATCH] xen/riscv: route unhandled interrupts to do_unexpected_trap() Currently, an interrupt cause which is not explicitly handled is silently ignored, and execution resumes without reporting the fault. This is incorrect and do_unexpected_trap() should be called in the case of unhandled interrupt. Fixes: a8b85fabf6090 ("xen/riscv: add external interrupt handling for hypervisor mode") Signed-off-by: Oleksii Kurochko Acked-by: Jan Beulich --- xen/arch/riscv/traps.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xen/arch/riscv/traps.c b/xen/arch/riscv/traps.c index 84b5ab4142..34920f4e56 100644 --- a/xen/arch/riscv/traps.c +++ b/xen/arch/riscv/traps.c @@ -196,6 +196,7 @@ void do_trap(struct cpu_user_regs *cpu_regs) { /* Handle interrupt */ unsigned long icause = cause & ~CAUSE_IRQ_FLAG; + bool intr_handled = true; switch ( icause ) { @@ -204,10 +205,12 @@ void do_trap(struct cpu_user_regs *cpu_regs) break; default: + intr_handled = false; break; } - break; + if ( intr_handled ) + break; } do_unexpected_trap(cpu_regs);