aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-10-04 09:10:17 +0100
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2006-10-04 09:10:17 +0100
commitfc7c643b21cceb90954ee492354b422b700bf569 (patch)
tree355f4e99a77876e6b2a9a629a44e060af6fa4844
parent86f22394f516507f855cb177458c5be264029def (diff)
downloadxen-fc7c643b21cceb90954ee492354b422b700bf569.tar.gz
xen-fc7c643b21cceb90954ee492354b422b700bf569.tar.bz2
xen-fc7c643b21cceb90954ee492354b422b700bf569.zip
[XEN] Never crash machine on int3 traps.
Do not enter debugger on dom0 shutdown unless dom0 crashed. Signed-off-by: Keir Fraser <keir@xensource.com>
-rw-r--r--xen/common/shutdown.c3
-rw-r--r--xen/include/asm-x86/debugger.h3
2 files changed, 3 insertions, 3 deletions
diff --git a/xen/common/shutdown.c b/xen/common/shutdown.c
index 1baea16205..a994e14bfc 100644
--- a/xen/common/shutdown.c
+++ b/xen/common/shutdown.c
@@ -30,8 +30,6 @@ static void maybe_reboot(void)
void dom0_shutdown(u8 reason)
{
- debugger_trap_immediate();
-
switch ( reason )
{
case SHUTDOWN_poweroff:
@@ -43,6 +41,7 @@ void dom0_shutdown(u8 reason)
case SHUTDOWN_crash:
{
+ debugger_trap_immediate();
printk("Domain 0 crashed: ");
maybe_reboot();
break; /* not reached */
diff --git a/xen/include/asm-x86/debugger.h b/xen/include/asm-x86/debugger.h
index 743dc2d8e5..b5256523e9 100644
--- a/xen/include/asm-x86/debugger.h
+++ b/xen/include/asm-x86/debugger.h
@@ -46,7 +46,8 @@
static inline int debugger_trap_fatal(
unsigned int vector, struct cpu_user_regs *regs)
{
- return (__trap_to_gdb(regs, vector) == 0);
+ int rc = __trap_to_gdb(regs, vector);
+ return ((rc == 0) || (vector == TRAP_int3));
}
/* Int3 is a trivial way to gather cpu_user_regs context. */