|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-ia64-devel] [PATCH]Fix infinite loop in fault handler if debugger is not connected
Hi all, If xen is compiled with crash_debug=y and the debugger is not connected, the fault handler enters infinite loop. The attached patch increments regs->cr_iip. Thanks. KAZ Signed-off-by: Kazuhiro Suzuki <kaz@xxxxxxxxxxxxxx> diff -r b79802517a75 xen/arch/ia64/vmx/vmx_fault.c
--- a/xen/arch/ia64/vmx/vmx_fault.c Tue Jan 22 09:04:41 2008 -0700
+++ b/xen/arch/ia64/vmx/vmx_fault.c Wed Jan 23 11:37:29 2008 +0900
@@ -181,6 +181,7 @@ vmx_ia64_handle_break (unsigned long ifa
if (iim == 0)
show_registers(regs);
debugger_trap_fatal(0 /* don't care */, regs);
+ ia64_increment_ip(regs);
} else
#endif
{
diff -r b79802517a75 xen/arch/ia64/xen/faults.c
--- a/xen/arch/ia64/xen/faults.c Tue Jan 22 09:04:41 2008 -0700
+++ b/xen/arch/ia64/xen/faults.c Wed Jan 23 10:53:23 2008 +0900
@@ -515,6 +515,7 @@ ia64_handle_break(unsigned long ifa, str
if (iim == 0)
show_registers(regs);
debugger_trap_fatal(0 /* don't care */ , regs);
+ ia64_increment_ip(regs);
}
#endif
else if (iim == d->arch.breakimm &&
diff -r b79802517a75 xen/arch/ia64/xen/xenmisc.c
--- a/xen/arch/ia64/xen/xenmisc.c Tue Jan 22 09:04:41 2008 -0700
+++ b/xen/arch/ia64/xen/xenmisc.c Wed Jan 23 08:41:06 2008 +0900
@@ -140,3 +140,15 @@ void panic_domain(struct pt_regs *regs,
show_registers(regs);
domain_crash_synchronous ();
}
+
+#ifdef CRASH_DEBUG
+void ia64_increment_ip(struct pt_regs *regs)
+{
+ struct ia64_psr *ipsr = (struct ia64_psr *)®s->cr_ipsr;
+ if (ipsr->ri == 2) {
+ ipsr->ri = 0;
+ regs->cr_iip += 16;
+ } else
+ ipsr->ri++;
+}
+#endif
_______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ia64-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |