Messages in this thread Patch in this message |  | | From | "Barry Song (Xiaomi)" <> | | Subject | [RFC PATCH 1/8] arm64/hugetlb: Extend batching of multiple CONT_PTE in a single PTE setup | | Date | Wed, 8 Apr 2026 10:51:08 +0800 |
| |
For sizes aligned to CONT_PTE_SIZE and smaller than PMD_SIZE, we can batch CONT_PTE settings instead of handling them individually.
Signed-off-by: Barry Song (Xiaomi) <baohua@kernel.org> --- arch/arm64/mm/hugetlbpage.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c index a42c05cf5640..bf31c11ebd3b 100644 --- a/arch/arm64/mm/hugetlbpage.c +++ b/arch/arm64/mm/hugetlbpage.c @@ -110,6 +110,12 @@ static inline int num_contig_ptes(unsigned long size, size_t *pgsize) contig_ptes = CONT_PTES; break; default: + if (size < CONT_PMD_SIZE && size > 0 && + IS_ALIGNED(size, CONT_PTE_SIZE)) { + contig_ptes = size >> PAGE_SHIFT; + *pgsize = PAGE_SIZE; + break; + } WARN_ON(!__hugetlb_valid_size(size)); } @@ -359,6 +365,10 @@ pte_t arch_make_huge_pte(pte_t entry, unsigned int shift, vm_flags_t flags) case CONT_PTE_SIZE: return pte_mkcont(entry); default: + if (pagesize < CONT_PMD_SIZE && pagesize > 0 && + IS_ALIGNED(pagesize, CONT_PTE_SIZE)) + return pte_mkcont(entry); + break; } pr_warn("%s: unrecognized huge page size 0x%lx\n", -- 2.39.3 (Apple Git-146)
|  |