In order to reduce the difficulty of code review in series[1]. We disable huge PMD mapping of vmemmap pages when that feature is enabled. In this series, we do not disable huge PMD mapping of vmemmap pages anymore. We will split huge PMD mapping when needed. When HugeTLB pages are freed from the pool we do not attempt coalasce and move back to a PMD mapping because it is much more complex. [1] https://lore.kernel.org/linux-doc/20210510030027.56044-1-songmuchun@xxxxxxxxxxxxx/ Changelog in v3: 1. Collect Review-by from Mike. 2. Rename 'walked_pte' to 'nr_walked'. 3. Update commit log in patch 1. 4. Add a comment above vmemmap_remap_range() called from vmemmap_remap_free(). Thanks Mike's suggestions and review. Changelog in v2: 1. Collect Review-by from Mike. 2. Remove helpers used to preallocate/free page tables for HugeTLB pages. Thanks Mike's suggestions. It really eliminate a lot of code. Muchun Song (3): mm: sparsemem: split the huge PMD mapping of vmemmap pages mm: sparsemem: use huge PMD mapping for vmemmap pages mm: hugetlb: introduce CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON Documentation/admin-guide/kernel-parameters.txt | 10 +- arch/x86/mm/init_64.c | 8 +- fs/Kconfig | 10 ++ include/linux/hugetlb.h | 25 +--- include/linux/mm.h | 4 +- mm/hugetlb_vmemmap.c | 11 +- mm/memory_hotplug.c | 2 +- mm/sparse-vmemmap.c | 163 ++++++++++++++++++------ 8 files changed, 155 insertions(+), 78 deletions(-) -- 2.11.0