• Aneesh Kumar K.V's avatar
    powerpc/mm: Avoid calling arch_enter/leave_lazy_mmu() in set_ptes · 47b8def9
    Aneesh Kumar K.V authored
    With commit 9fee28ba ("powerpc: implement the new page table range
    API") we added set_ptes to powerpc architecture. The implementation
    included calling arch_enter/leave_lazy_mmu() calls.
    
    The patch removes the usage of arch_enter/leave_lazy_mmu() because
    set_pte is not supposed to be used when updating a pte entry. Powerpc
    architecture uses this rule to skip the expensive tlb invalidate which
    is not needed when you are setting up the pte for the first time. See
    commit 56eecdb9 ("mm: Use ptep/pmdp_set_numa() for updating
    _PAGE_NUMA bit") for more details
    
    The patch also makes sure we are not using the interface to update a
    valid/present pte entry by adding VM_WARN_ON check all the ptes we
    are setting up. Furthermore, we add a comment to set_pte_filter to
    clarify it can only update folio-related flags and cannot filter
    pfn specific details in pte filtering.
    
    Removal of arch_enter/leave_lazy_mmu() also will avoid nesting of
    these functions that are not supported. For ex:
    
    remap_pte_range()
      -> arch_enter_lazy_mmu()
      -> set_ptes()
          -> arch_enter_lazy_mmu()
          -> arch_leave_lazy_mmu()
      -> arch_leave_lazy_mmu()
    
    Fixes: 9fee28ba ("powerpc: implement the new page table range API")
    Signed-off-by: default avatar"Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20231024143604.16749-1-aneesh.kumar@linux.ibm.com
    47b8def9
pgtable.c 13 KB