This is to support Transparent Contiguous PTEs for User Mappings on arm64.
Barry Song (1): mm: make folio_pte_batch available outside of mm/memory.c
Kefeng Wang (5): mm: memory: rename page_copy_prealloc() to folio_prealloc() mm: memory: use a folio in do_cow_fault() mm: memory: use folio_prealloc() in wp_page_copy() mm: memory: move mem_cgroup_charge() into alloc_anon_folio() arm64: configs: enable ARM64_CONTPTE
Ryan Roberts (19): mm: clarify the spec for set_ptes() mm: thp: batch-collapse PMD with set_ptes() mm: introduce pte_advance_pfn() and use for pte_next_pfn() arm64/mm: convert pte_next_pfn() to pte_advance_pfn() x86/mm: convert pte_next_pfn() to pte_advance_pfn() mm: tidy up pte_next_pfn() definition arm64/mm: convert READ_ONCE(*ptep) to ptep_get(ptep) arm64/mm: convert set_pte_at() to set_ptes(..., 1) arm64/mm: convert ptep_clear() to ptep_get_and_clear() arm64/mm: new ptep layer to manage contig bit arm64/mm: dplit __flush_tlb_range() to elide trailing DSB arm64/mm: wire up PTE_CONT for user mappings arm64/mm: implement new wrprotect_ptes() batch API arm64/mm: implement new [get_and_]clear_full_ptes() batch APIs mm: add pte_batch_hint() to reduce scanning in folio_pte_batch() arm64/mm: implement pte_batch_hint() arm64/mm: __always_inline to improve fork() perf arm64/mm: automatically fold contpte mappings tools/mm: add thpmaps script to dump THP usage info
arch/arm64/Kconfig | 9 + arch/arm64/configs/openeuler_defconfig | 1 + arch/arm64/include/asm/pgtable.h | 411 +++++++++++++-- arch/arm64/include/asm/tlbflush.h | 13 +- arch/arm64/kernel/efi.c | 4 +- arch/arm64/kernel/mte.c | 2 +- arch/arm64/kvm/guest.c | 2 +- arch/arm64/mm/Makefile | 1 + arch/arm64/mm/contpte.c | 404 +++++++++++++++ arch/arm64/mm/fault.c | 12 +- arch/arm64/mm/fixmap.c | 4 +- arch/arm64/mm/hugetlbpage.c | 40 +- arch/arm64/mm/kasan_init.c | 6 +- arch/arm64/mm/mmu.c | 16 +- arch/arm64/mm/pageattr.c | 6 +- arch/arm64/mm/trans_pgd.c | 6 +- arch/x86/include/asm/pgtable.h | 8 +- include/linux/efi.h | 5 + include/linux/pgtable.h | 32 +- mm/huge_memory.c | 58 ++- mm/internal.h | 93 ++++ mm/memory.c | 138 ++--- tools/mm/Makefile | 9 +- tools/mm/thpmaps | 675 +++++++++++++++++++++++++ 24 files changed, 1716 insertions(+), 239 deletions(-) create mode 100644 arch/arm64/mm/contpte.c create mode 100644 tools/mm/thpmaps