You need to sign in or sign up before continuing.
  • Catalin Marinas's avatar
    arm64: mm: hugetlb: Disable HUGETLB_PAGE_OPTIMIZE_VMEMMAP · 060a2c92
    Catalin Marinas authored
    Revert the HUGETLB_PAGE_FREE_VMEMMAP selection from commit 1e63ac08
    ("arm64: mm: hugetlb: enable HUGETLB_PAGE_FREE_VMEMMAP for arm64") but
    keep the flush_dcache_page() compound_head() change as it aligns with
    the corresponding check in the __sync_icache_dcache() function.
    
    The original config option was renamed in commit 47010c04 ("mm:
    hugetlb_vmemmap: cleanup CONFIG_HUGETLB_PAGE_FREE_VMEMMAP*") to
    HUGETLB_PAGE_OPTIMIZE_VMEMMAP and the flush_dcache_page() check was
    further simplified by commit 2da1c309 ("mm: hugetlb_vmemmap: delete
    hugetlb_optimize_vmemmap_enabled()").
    
    The reason for the revert is that the generic vmemmap_remap_pte()
    function changes both the permissions (writeable to read-only) and the
    output address (pfn) of the vmemmap ptes. This is deemed UNPREDICTABLE
    by the Arm architecture without a break-before-make sequence (make the
    PTE invalid, TLBI, write the new valid PTE). However, such sequence is
    not possible since the vmemmap may be concurrently accessed by the
    kernel. Disable the optimisation until a better solution is found.
    
    Fixes: 1e63ac08 ("arm64: mm: hugetlb: enable HUGETLB_PAGE_FREE_VMEMMAP for arm64")
    Cc: <stable@vger.kernel.org> # 5.19.x
    Cc: Muchun Song <muchun.song@linux.dev>
    Cc: Will Deacon <will@kernel.org>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Link: https://lore.kernel.org/r/Y9pZALdn3pKiJUeQ@arm.com
    
    Reviewed-by: default avatarAnshuman Khandual <anshuman.khandual@arm.com>
    Link: https://lore.kernel.org/r/20230222175232.540851-1-catalin.marinas@arm.com
    
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    060a2c92
Kconfig 78.3 KB