[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-ia64-devel] [PATCH] [5/6] panic stack trace: adds hook
5/6 insert hook to handle 'break 0x0'. Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx> -- diff -r fc7f2f8057cb -r 8a92e8091a2f xen/arch/ia64/xen/hyperprivop.S --- a/xen/arch/ia64/xen/hyperprivop.S Wed Dec 28 15:20:00 2005 +0900 +++ b/xen/arch/ia64/xen/hyperprivop.S Wed Dec 28 15:29:23 2005 +0900 @@ -543,6 +543,13 @@ extr.u r21=r30,IA64_PSR_PP_BIT,1 ;; cmp.ne p7,p0=r21,r0 ;; (p7) br.spnt.few dispatch_break_fault ;; + movl r20=IA64_PSR_CPL ;; + and r22=r20,r30 ;; + cmp.ne p7,p0=r22,r0 +(p7) br.spnt.many 1f ;; + cmp.eq p7,p0=r17,r0 +(p7) br.spnt.few dispatch_break_fault ;; +1: #if 1 /* special handling in case running on simulator */ movl r20=first_break;; ld4 r23=[r20];; diff -r fc7f2f8057cb -r 8a92e8091a2f xen/arch/ia64/xen/ivt.S --- a/xen/arch/ia64/xen/ivt.S Wed Dec 28 15:20:00 2005 +0900 +++ b/xen/arch/ia64/xen/ivt.S Wed Dec 28 15:29:23 2005 +0900 @@ -839,6 +839,8 @@ mov r17=cr.iim mov r31=pr ;; + cmp.eq p7,p0=r17,r0 +(p7) br.spnt.few dispatch_break_fault ;; movl r18=XSI_PSR_IC ;; ld8 r19=[r18] diff -r fc7f2f8057cb -r 8a92e8091a2f xen/arch/ia64/xen/process.c --- a/xen/arch/ia64/xen/process.c Wed Dec 28 15:20:00 2005 +0900 +++ b/xen/arch/ia64/xen/process.c Wed Dec 28 15:29:23 2005 +0900 @@ -33,6 +33,7 @@ #include <xen/multicall.h> extern unsigned long vcpu_get_itir_on_fault(struct vcpu *, UINT64); +extern void die_if_kernel(char *str, struct pt_regs *regs, long err); extern unsigned long dom0_start, dom0_size; @@ -686,6 +687,8 @@ vcpu_increment_iip(current); } else { + if (iim == 0) + die_if_kernel("bug check", regs, iim); PSCB(v,iim) = iim; reflect_interruption(isr,regs,IA64_BREAK_VECTOR); } diff -r fc7f2f8057cb -r 8a92e8091a2f xen/arch/ia64/xen/xenmisc.c --- a/xen/arch/ia64/xen/xenmisc.c Wed Dec 28 15:20:00 2005 +0900 +++ b/xen/arch/ia64/xen/xenmisc.c Wed Dec 28 15:29:23 2005 +0900 @@ -230,7 +230,13 @@ void die_if_kernel(char *str, struct pt_regs *regs, long err) /* __attribute__ ((noreturn)) */ { - printk("die_if_kernel: called, not implemented\n"); + if (user_mode(regs)) + return; + + printk("%s: %s %ld\n", __func__, str, err); + debugtrace_dump(); + show_registers(regs); + domain_crash_synchronous(); } long -- yamahata _______________________________________________ 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 |