On 10/25/2012 10:56 PM, Linus Torvalds wrote:
Guess what? If you want to optimize the function to not do remote TLB
flushes, then just do that! None of the garbage. Just change the
flush_tlb_page(vma, address);
line to
__flush_tlb_one(address);
That may not even be needed. Apparently Intel chips
automatically flush an entry from the TLB when it
causes a page fault. I assume AMD chips do the same,
because flush_tlb_fix_spurious_fault evaluates to
nothing on x86.
and it should damn well work. Because everything I see about
"flush_remote" looks just wrong, wrong, wrong.
Are there architectures where we do need to flush
remote TLBs on upgrading the permissions on a PTE?
Because that is what the implementation in
pgtable-generic.c seems to be doing as well...
And if there really is some reason for that whole flush_remote
braindamage, then we have much bigger problems, namely the fact that
we've broken the documented semantics of that function, and we're
doing various other things that are completely and utterly invalid
unless the above semantics hold.
Want to just remove the TLB flush entirely and see
if anything breaks in 3.8-rc1?
From reading the code again, it looks like things
should indeed work ok.
--
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/