mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
mm,do_huge_pmd_numa_page: remove unnecessary TLB flushing code
Before commitc5b5a3dd2c
("mm: thp: refactor NUMA fault handling"), the TLB flushing is done in do_huge_pmd_numa_page() itself via flush_tlb_range(). But after commitc5b5a3dd2c
("mm: thp: refactor NUMA fault handling"), the TLB flushing is done in migrate_pages() as in the following code path anyway. do_huge_pmd_numa_page migrate_misplaced_page migrate_pages So now, the TLB flushing code in do_huge_pmd_numa_page() becomes unnecessary. So the code is deleted in this patch to simplify the code. This is only code cleanup, there's no visible performance difference. The mmu_notifier_invalidate_range() in do_huge_pmd_numa_page() is deleted too. Because migrate_pages() takes care of that too when CPU TLB is flushed. Link: https://lkml.kernel.org/r/20210720065529.716031-1-ying.huang@intel.com Signed-off-by: "Huang, Ying" <ying.huang@intel.com> Reviewed-by: Zi Yan <ziy@nvidia.com> Reviewed-by: Yang Shi <shy828301@gmail.com> Cc: Dan Carpenter <dan.carpenter@oracle.com> Cc: Mel Gorman <mgorman@suse.de> Cc: Christian Borntraeger <borntraeger@de.ibm.com> Cc: Gerald Schaefer <gerald.schaefer@linux.ibm.com> Cc: Heiko Carstens <hca@linux.ibm.com> Cc: Hugh Dickins <hughd@google.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
f358afc52c
commit
f00230ff84
@ -1440,32 +1440,6 @@ vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf)
|
||||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
* Since we took the NUMA fault, we must have observed the !accessible
|
||||
* bit. Make sure all other CPUs agree with that, to avoid them
|
||||
* modifying the page we're about to migrate.
|
||||
*
|
||||
* Must be done under PTL such that we'll observe the relevant
|
||||
* inc_tlb_flush_pending().
|
||||
*
|
||||
* We are not sure a pending tlb flush here is for a huge page
|
||||
* mapping or not. Hence use the tlb range variant
|
||||
*/
|
||||
if (mm_tlb_flush_pending(vma->vm_mm)) {
|
||||
flush_tlb_range(vma, haddr, haddr + HPAGE_PMD_SIZE);
|
||||
/*
|
||||
* change_huge_pmd() released the pmd lock before
|
||||
* invalidating the secondary MMUs sharing the primary
|
||||
* MMU pagetables (with ->invalidate_range()). The
|
||||
* mmu_notifier_invalidate_range_end() (which
|
||||
* internally calls ->invalidate_range()) in
|
||||
* change_pmd_range() will run after us, so we can't
|
||||
* rely on it here and we need an explicit invalidate.
|
||||
*/
|
||||
mmu_notifier_invalidate_range(vma->vm_mm, haddr,
|
||||
haddr + HPAGE_PMD_SIZE);
|
||||
}
|
||||
|
||||
pmd = pmd_modify(oldpmd, vma->vm_page_prot);
|
||||
page = vm_normal_page_pmd(vma, haddr, pmd);
|
||||
if (!page)
|
||||
|
Loading…
Reference in New Issue
Block a user