On Wed, Nov 14, 2012 at 12:50 AM, Ingo Molnar <mi...@kernel.org> wrote: > What do you guys think about this mprotect() optimization?
Hmm.. If this is mainly about just avoiding the TLB flushing, I do wonder if it might not be more interesting to try to be much more aggressive. As noted elsewhere, we should just notice when vm_page_prot doesn't change at all - even if 'flags' change, it is possible that the actual low-level page protection bits do not (due to the X=R issue). But even *more* aggressively, how about looking at - not flushing the TLB at all if the bits become more permissive (taking the TLB micro-fault and letting the CPU just update it on its own) - even *more* aggressive: if the bits become strictly more restrictive, how about not flushing the TLB at all, *and* not even changing the page tables, and just teaching the page fault code to do it lazily at fault time? Now, the "change protections lazily" might actually be a huge performance problem with the page fault overhead dwarfing any TLB flush costs, but we don't really know, do we? It might be worth trying out. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/