Skip to content
  • Vineet Gupta's avatar
    mm,thp: khugepaged: call pte flush at the time of collapse · 6a6ac72f
    Vineet Gupta authored
    This showed up on ARC when running LMBench bw_mem tests as Overlapping
    TLB Machine Check Exception triggered due to STLB entry (2M pages)
    overlapping some NTLB entry (regular 8K page).
    
    bw_mem 2m touches a large chunk of vaddr creating NTLB entries.  In the
    interim khugepaged kicks in, collapsing the contiguous ptes into a
    single pmd.  pmdp_collapse_flush()->flush_pmd_tlb_range() is called to
    flush out NTLB entries for the ptes.  This for ARC (by design) can only
    shootdown STLB entries (for pmd).  The stray NTLB entries cause the
    overlap with the subsequent STLB entry for collapsed page.  So make
    pmdp_collapse_flush() call pte flush interface not pmd flush.
    
    Note that originally all thp flush call sites in generic code called
    flush_tlb_range() leaving it to architecture to implement the flush for
    pte and/or pmd.  Commit 12ebc158 changed this by calling a new
    opt-in API flush_pmd_tlb_range() which made the semantics more explicit
    but failed to distinguish the pte vs pmd flush in generic code, which is
    what this patch fixes.
    
    Note that ARC can fixed w/o touching the generic pmdp_collapse_flush()
    by defining a ARC version, but that defeats the purpose of generic
    version, plus sementically this is the right thing to do.
    
    Fixes STAR 9000961194: LMBench on AXS103 triggering duplicate TLB
    exceptions with super pages
    
    Fixes: 12ebc158
    
     ("mm,thp: introduce flush_pmd_tlb_range")
    Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
    Reviewed-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Acked-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: <stable@vger.kernel.org>	[4.4]
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6a6ac72f