On Fri, Apr 25, 2008 at 11:30:57AM +1000, Simon Horman wrote: > Index: xen-unstable.hg/xen/arch/ia64/xen/xenasm.S > =================================================================== > --- xen-unstable.hg.orig/xen/arch/ia64/xen/xenasm.S 2008-04-25 > 11:17:22.000000000 +1000 > +++ xen-unstable.hg/xen/arch/ia64/xen/xenasm.S 2008-04-25 > 11:18:36.000000000 +1000 > @@ -195,6 +195,175 @@ GLOBAL_ENTRY(ia64_new_rr7) ... > +GLOBAL_ENTRY(ia64_new_rr7_efi) ... > + // re-pin mappings for kernel text and data > + mov r24=KERNEL_TR_PAGE_SHIFT<<2 > + movl r17=KERNEL_START > + ;; > + ptr.i r17,r24 > + ;; > + ptr.d r17,r24 > + ;; > + srlz.i > + ;; > + srlz.d > + ;; > + mov r16=IA64_TR_KERNEL > + mov cr.itir=r24 > + mov cr.ifa=r17 > + or r18=loc6,r26 > + ;; > + itr.i itr[r16]=r18 > + ;; > + itr.d dtr[r16]=r18 > + ;; > + srlz.i > + ;; > + srlz.d > + ;; > + > + // re-pin mappings for stack (current) > + > + // unless overlaps with KERNEL_TR > + dep r18=0,r13,0,KERNEL_TR_PAGE_SHIFT > + ;; > + cmp.eq p7,p0=r17,r18 > +(p7) br.cond.sptk ia64_new_rr7_efi_stack_overlaps > + mov r25=IA64_GRANULE_SHIFT<<2 > + dep r21=0,r13,60,4 // physical address of "current" > + ;; > + ptr.d r13,r25 > + ;; > + srlz.d > + ;; > + or r23=r21,r26 // construct PA | page properties > + mov cr.itir=r25 > + mov cr.ifa=r13 // VA of next task... > + mov r21=IA64_TR_CURRENT_STACK > + ;; > + itr.d dtr[r21]=r23 // wire in new mapping... > + ;; > + srlz.d > + ;; > +ia64_new_rr7_efi_stack_overlaps:
Now the text area starts at KERNEL_START = 0xa000000100000000 which is out of the xen identity mapping area. The above overlapping check always fails so that the check is unnecessary. Please check the current ia64_new_rr7() which was chenged rather recently. -- yamahata _______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@lists.xensource.com http://lists.xensource.com/xen-ia64-devel