Linus Torvalds [off-list ref] writes:
On Sun, May 23, 2021 at 11:04 PM Aneesh Kumar K.V
[off-list ref] wrote:
quoted
Add new helper flush_pte_tlb_pwc_range() which invalidates both TLB and
page walk cache where TLB entries are mapped with page size PAGE_SIZE.
So I dislike this patch for two reasons:
(a) naming.
If the ppc people want to use crazy TLA's that have no meaning outside
of the powerpc community, that's fine. But only in powerpc code.
"pwc" makes no sense to me, or to anybody else that isn't intimately
involved in low-level powerpc stuff. I assume it's "page walk cache",
but honestly, outside of this area, PWC is mostly used for a specific
type of webcam.
So there's no way I'd accept this as-is, simply because of that.
flush_pte_tlb_pwc_range() is simply not an acceptable name. You would
have to spell it out, not use an obscure TLA.
But I think you don't even want to do that, because of
How about flush_tlb_and_page_table_cache() ?
(b) is this even worth it as a public interface?
Why doesn't the powerpc radix TLB flushing code just always flush the
page table walking cache when the range is larger than a PMD?
Once you have big flush ranges like that, I don't believe it makes any
sense not to flush the walking cache too.
But such a large range invalidate doesn't imply we are freeing page
tables. Hence forcing a page table cache flush for large range
invalidate can have performance impact. ppc64 don't do a range page
table cache invalidate. Hence we will have to flush the full page table
cache.
NOTE! This is particularly true as "flush the walking cache" isn't a
well-defined operation anyway. Which _levels_ of the walking cache?
Again, the size (and alignment) of the flush would actually tell you.
A new boolean "flush" parameter does *NOT* tell that at all.
So I think this new interface is mis-named, but I also think it's
pointless. Just DTRT automatically when somebody asks for a flush that
covers a PMD range (or a PUD range).
Linus
-aneesh