Index: linux-2.6.18-mm3/arch/ia64/kernel/ivt.S =================================================================== --- linux-2.6.18-mm3.orig/arch/ia64/kernel/ivt.S 2006-10-09 11:33:23.217383415 -0700 +++ linux-2.6.18-mm3/arch/ia64/kernel/ivt.S 2006-10-09 13:27:14.574466961 -0700 @@ -432,15 +432,15 @@ ENTRY(nested_dtlb_miss) shr.u r17=r16,61 // get the region number into r17 ;; cmp.eq p6,p7=5,r17 // kernel region? - cmp.eq p9,p0=4,r17 // select other pgd for vmmap huge region? + cmp.eq p9,p0=99,r17 // select other pgd for vmmap huge region? extr.u r18=r18,2,6 // get the faulting page size ;; -(p7) cmp.eq p6,p7=4,r17 // huge region switches processing +(p7) cmp.eq p6,p7=99,r17 // huge region switches processing add r22=-PAGE_SHIFT,r18 // page order - add r18=PGDIR_SHIFT-PAGE_SHIFT+3,r18 // Calculate shift to get to nr of pgd + add r18=PGDIR_SHIFT-PAGE_SHIFT,r18 // Calculate shift to get to nr of pgd ;; shr.u r22=r16,r22 - shr.u r18=r21,r18 + shr.u r18=r16,r18 (p7) dep r17=r17,r19,(PAGE_SHIFT-3),3 // put region number bits in place srlz.d