Index: xen-unstable.hg/xen/arch/ia64/linux-xen/mca_asm.S
===================================================================
--- xen-unstable.hg.orig/xen/arch/ia64/linux-xen/mca_asm.S	2007-12-05 19:48:48.000000000 +0900
+++ xen-unstable.hg/xen/arch/ia64/linux-xen/mca_asm.S	2007-12-05 19:48:52.000000000 +0900
@@ -492,6 +492,17 @@ ia64_reload_tr:
 	;;
 	cmp.eq p7,p0=r17,r16
 (p7)	br.cond.sptk	.reload_vhpt
+	// avoid overlapping with xen heap TR
+	// XXX: Fixme needs to be calculated
+	movl r17=XEN_HEAP_ADDR
+	GET_THIS_PADDR(r2,cpu_kr);;
+	add r2=IA64_KR_CURRENT_OFFSET,r2;;
+	ld8 r16=[r2];;
+	;;
+	dep  r16=0,r16,0,KERNEL_TR_PAGE_SHIFT
+	;;
+	cmp.eq p7,p0=r17,r16
+(p7)	br.cond.sptk	.reload_vhpt
 	
 	// Kernel registers are saved in a per_cpu cpu_kr_ia64_t
 	// to allow the kernel registers themselves to be used by domains.
