diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2015-02-20 10:36:28 +0530 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2015-10-17 17:48:20 +0530 |
commit | 12ebc1581ad114543ae822aa3a12f76072e2f902 (patch) | |
tree | 2e80b72284497b1a45f29f0970ce13332f6896e2 /mm/huge_memory.c | |
parent | bd5e88ad72b26ebf7ecb231bc22ceecd6cbdb951 (diff) | |
download | linux-stable-12ebc1581ad114543ae822aa3a12f76072e2f902.tar.gz linux-stable-12ebc1581ad114543ae822aa3a12f76072e2f902.tar.bz2 linux-stable-12ebc1581ad114543ae822aa3a12f76072e2f902.zip |
mm,thp: introduce flush_pmd_tlb_range
ARCHes with special requirements for evicting THP backing TLB entries
can implement this.
Otherwise also, it can help optimize TLB flush in THP regime.
stock flush_tlb_range() typically has optimization to nuke the entire
TLB if flush span is greater than a certain threshhold, which will
likely be true for a single huge page. Thus a single thp flush will
invalidate the entrire TLB which is not desirable.
e.g. see arch/arc: flush_pmd_tlb_range
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Link: http://lkml.kernel.org/r/20151009100816.GC7873@node
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'mm/huge_memory.c')
-rw-r--r-- | mm/huge_memory.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 4b06b8db9df2..e25eb3d2081a 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1880,7 +1880,7 @@ static int __split_huge_page_map(struct page *page, * here). But it is generally safer to never allow * small and huge TLB entries for the same virtual * address to be loaded simultaneously. So instead of - * doing "pmd_populate(); flush_tlb_range();" we first + * doing "pmd_populate(); flush_pmd_tlb_range();" we first * mark the current pmd notpresent (atomically because * here the pmd_trans_huge and pmd_trans_splitting * must remain set at all times on the pmd until the |