[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 |