On Wed, Nov 14, 2012 at 12:50 AM, Ingo Molnar <mingo@xxxxxxxxxx> 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, 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/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>