|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v1] 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 <oleksii.kurochko@xxxxxxxxx>
---
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 84b5ab4142f6..34920f4e5693 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);
--
2.52.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |