===== include/asm-ia64/pgalloc.h 1.6 vs edited ===== --- 1.6/include/asm-ia64/pgalloc.h Fri Jun 21 16:18:11 2002 +++ edited/include/asm-ia64/pgalloc.h Tue Jul 9 13:55:27 2002 @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -204,9 +205,15 @@ static inline void flush_tlb_pgtables (struct mm_struct *mm, unsigned long start, unsigned long end) { - if (rgn_index(start) != rgn_index(end)) - printk("flush_tlb_pgtables: can't flush across regions!!\n"); - flush_tlb_range(mm, ia64_thash(start), ia64_thash(end)); + if (unlikely(end - start >= 1024*1024*1024*1024UL + || rgn_index(start) != rgn_index(end - 1))) + /* + * This condition is very rare and normal applications shouldn't get + * here. No attempt has been made to optimize for this case. + */ + flush_tlb_all(); + else + flush_tlb_range(mm, ia64_thash(start), ia64_thash(end)); } /*