On Sun, Mar 18, 2012 at 03:01:08PM -0700, Linus Torvalds wrote: > On Sun, Mar 18, 2012 at 12:07 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > - ? ? ? tlb_finish_mmu(&tlb, 0, end); > > + ? ? ? tlb_finish_mmu(&tlb, 0, -1); > > Hmm. The fact that you drop the end pointer means that some > architectures that optimize the TLB flushing for ranges now > effectively can't do it any more. > > Now, I think it's only ia64 that really is affected, but it *might* matter. > > In particular, ia64 has some logic for "if you only flush one single > region, you can optimize it", and the region sizes are in the > terabytes. And I'm pretty sure you broke that - I'm just not entirely > sure how much we care. Nope - ia64 check explicitly for precisely that case: static inline void ia64_tlb_flush_mmu (struct mmu_gather *tlb, unsigned long start, unsigned long end) { unsigned int nr; if (!tlb->need_flush) return; tlb->need_flush = 0; if (tlb->fullmm) { /* * Tearing down the entire address space. This happens both as a result * of exit() and execve(). The latter case necessitates the call to * flush_tlb_mm() here. */ flush_tlb_mm(tlb->mm); .... and if that condition is true, we don't even look at start or end. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>