xen/arm: Panic when we receive an unexpected trap
authorJulien Grall <julien.grall@linaro.org>
Tue, 17 Jun 2014 20:44:28 +0000 (21:44 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 18 Jun 2014 14:05:30 +0000 (15:05 +0100)
The current implementation of do_unexpected_trap make Xen spin forever
on the current physical CPU. This may lead to stall guests VCPU and print
unhelpful message (RCU stall...).

Usually when Xen receives an unexpected trap, it means that something goes
wrong either in the hypervisor or in the CPU. In this case we should
directly panic to also stop the other CPUs.

Signed-off-by: Julien Grall <julien.grall@linaro.org>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
xen/arch/arm/traps.c

index 31127feea3f4f77b80298d65f4e055276d86b35b..7f77c56ac38228a98cff07f74d546494898a0c45 100644 (file)
@@ -999,7 +999,7 @@ void do_unexpected_trap(const char *msg, struct cpu_user_regs *regs)
 {
     printk("CPU%d: Unexpected Trap: %s\n", smp_processor_id(), msg);
     show_execution_state(regs);
-    while(1);
+    panic("CPU%d: Unexpected Trap: %s\n", smp_processor_id(), msg);
 }
 
 typedef register_t (*arm_hypercall_fn_t)(