mm,do_huge_pmd_numa_page: remove unnecessary TLB flushing code

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2023396

This patch is a backport of the following upstream commit:
commit f00230ff8411eaecbea1f2e528e205424f3725ba
Author: Huang Ying <ying.huang@intel.com>
Date:   Thu Sep 2 14:56:40 2021 -0700

    mm,do_huge_pmd_numa_page: remove unnecessary TLB flushing code

    Before commit c5b5a3dd2c ("mm: thp: refactor NUMA fault handling"), the
    TLB flushing is done in do_huge_pmd_numa_page() itself via
    flush_tlb_range().

    But after commit c5b5a3dd2c ("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>

Signed-off-by: Rafael Aquini <aquini@redhat.com>
This commit is contained in:
Rafael Aquini 2021-11-29 11:37:39 -05:00
parent f5a4961a06
commit 74f58afb60
1 changed files with 0 additions and 26 deletions

View File

@ -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)