]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
arm64: mm: Test for pmd_sect() in vmemmap_check_pmd()
authorZhenhua Huang <quic_zhenhuah@quicinc.com>
Thu, 2 Jan 2025 07:40:47 +0000 (15:40 +0800)
committerWill Deacon <will@kernel.org>
Tue, 7 Jan 2025 16:51:42 +0000 (16:51 +0000)
Commit 2045a3b8911b ("mm/sparse-vmemmap: generalise vmemmap_populate_hugepages()")
introduces the vmemmap_check_pmd() while does not verify if the entry is a
section mapping, as is already done for Loongarch & X86.
The update includes a check for pmd_sect(). Only if pmd_sect() returns true,
further vmemmap population for the addr is skipped.

Signed-off-by: Zhenhua Huang <quic_zhenhuah@quicinc.com>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Link: https://lore.kernel.org/r/20250102074047.674156-1-quic_zhenhuah@quicinc.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/mm/mmu.c

index e2739b69e11bd8a9fd40ecbf856aef3b49c0f328..b4df5bc5b1b8ba3810aa8ffc65594befd7778f03 100644 (file)
@@ -1169,7 +1169,8 @@ int __meminit vmemmap_check_pmd(pmd_t *pmdp, int node,
                                unsigned long addr, unsigned long next)
 {
        vmemmap_verify((pte_t *)pmdp, node, addr, next);
-       return 1;
+
+       return pmd_sect(READ_ONCE(*pmdp));
 }
 
 int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,