summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Gordeev <agordeev@linux.ibm.com>2022-11-16 08:49:30 +0100
committerAndrew Morton <akpm@linux-foundation.org>2022-12-01 00:58:50 +0100
commitf036c8184f8b6750fa642485fb01eb6ff036a86b (patch)
treedcf38b8e8a503f2b959ab602815ced01668f5ff6
parentmm: delay page_remove_rmap() until after the TLB has been flushed (diff)
downloadlinux-f036c8184f8b6750fa642485fb01eb6ff036a86b.tar.xz
linux-f036c8184f8b6750fa642485fb01eb6ff036a86b.zip
mm: mmu_gather: do not expose delayed_rmap flag
Flag delayed_rmap of 'struct mmu_gather' is rather a private member, but it is still accessed directly. Instead, let the TLB gather code access the flag. Link: https://lkml.kernel.org/r/Y3SWCu6NRaMQ5dbD@li-4a3a4a4c-28e5-11b2-a85c-a8d192c6f089.ibm.com Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com> Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--mm/memory.c3
-rw-r--r--mm/mmu_gather.c3
2 files changed, 4 insertions, 2 deletions
diff --git a/mm/memory.c b/mm/memory.c
index 6c85cba02113..086cb3dd8608 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1465,8 +1465,7 @@ again:
/* Do the actual TLB flush before dropping ptl */
if (force_flush) {
tlb_flush_mmu_tlbonly(tlb);
- if (tlb->delayed_rmap)
- tlb_flush_rmaps(tlb, vma);
+ tlb_flush_rmaps(tlb, vma);
}
pte_unmap_unlock(start_pte, ptl);
diff --git a/mm/mmu_gather.c b/mm/mmu_gather.c
index 1de1cf9ba581..dd1f8ca40cb5 100644
--- a/mm/mmu_gather.c
+++ b/mm/mmu_gather.c
@@ -61,6 +61,9 @@ void tlb_flush_rmaps(struct mmu_gather *tlb, struct vm_area_struct *vma)
{
struct mmu_gather_batch *batch;
+ if (!tlb->delayed_rmap)
+ return;
+
batch = tlb->active;
for (int i = 0; i < batch->nr; i++) {
struct encoded_page *enc = batch->encoded_pages[i];