The patch titled Subject: arm64: inline huge vmap supported functions has been added to the -mm tree. Its filename is arm64-inline-huge-vmap-supported-functions.patch This patch should soon appear at https://ozlabs.org/~akpm/mmots/broken-out/arm64-inline-huge-vmap-supported-functions.patch and later at https://ozlabs.org/~akpm/mmotm/broken-out/arm64-inline-huge-vmap-supported-functions.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Nicholas Piggin <npiggin@xxxxxxxxx> Subject: arm64: inline huge vmap supported functions This allows unsupported levels to be constant folded away, and so p4d_free_pud_page can be removed because it's no longer linked to. Link: https://lkml.kernel.org/r/20210317062402.533919-9-npiggin@xxxxxxxxx Signed-off-by: Nicholas Piggin <npiggin@xxxxxxxxx> Acked-by: Catalin Marinas <catalin.marinas@xxxxxxx> Cc: Will Deacon <will@xxxxxxxxxx> Cc: Borislav Petkov <bp@xxxxxxxxx> Cc: Christoph Hellwig <hch@xxxxxx> Cc: Ding Tianhong <dingtianhong@xxxxxxxxxx> Cc: "H. Peter Anvin" <hpa@xxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: Miaohe Lin <linmiaohe@xxxxxxxxxx> Cc: Michael Ellerman <mpe@xxxxxxxxxxxxxx> Cc: Russell King <linux@xxxxxxxxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- arch/arm64/include/asm/vmalloc.h | 23 ++++++++++++++++++++--- arch/arm64/mm/mmu.c | 26 -------------------------- 2 files changed, 20 insertions(+), 29 deletions(-) --- a/arch/arm64/include/asm/vmalloc.h~arm64-inline-huge-vmap-supported-functions +++ a/arch/arm64/include/asm/vmalloc.h @@ -4,9 +4,26 @@ #include <asm/page.h> #ifdef CONFIG_HAVE_ARCH_HUGE_VMAP -bool arch_vmap_p4d_supported(pgprot_t prot); -bool arch_vmap_pud_supported(pgprot_t prot); -bool arch_vmap_pmd_supported(pgprot_t prot); +static inline bool arch_vmap_p4d_supported(pgprot_t prot) +{ + return false; +} + +static inline bool arch_vmap_pud_supported(pgprot_t prot) +{ + /* + * Only 4k granule supports level 1 block mappings. + * SW table walks can't handle removal of intermediate entries. + */ + return IS_ENABLED(CONFIG_ARM64_4K_PAGES) && + !IS_ENABLED(CONFIG_PTDUMP_DEBUGFS); +} + +static inline bool arch_vmap_pmd_supported(pgprot_t prot) +{ + /* See arch_vmap_pud_supported() */ + return !IS_ENABLED(CONFIG_PTDUMP_DEBUGFS); +} #endif #endif /* _ASM_ARM64_VMALLOC_H */ --- a/arch/arm64/mm/mmu.c~arm64-inline-huge-vmap-supported-functions +++ a/arch/arm64/mm/mmu.c @@ -1316,27 +1316,6 @@ void *__init fixmap_remap_fdt(phys_addr_ return dt_virt; } -bool arch_vmap_p4d_supported(pgprot_t prot) -{ - return false; -} - -bool arch_vmap_pud_supported(pgprot_t prot) -{ - /* - * Only 4k granule supports level 1 block mappings. - * SW table walks can't handle removal of intermediate entries. - */ - return IS_ENABLED(CONFIG_ARM64_4K_PAGES) && - !IS_ENABLED(CONFIG_PTDUMP_DEBUGFS); -} - -bool arch_vmap_pmd_supported(pgprot_t prot) -{ - /* See arch_vmap_pud_supported() */ - return !IS_ENABLED(CONFIG_PTDUMP_DEBUGFS); -} - int pud_set_huge(pud_t *pudp, phys_addr_t phys, pgprot_t prot) { pud_t new_pud = pfn_pud(__phys_to_pfn(phys), mk_pud_sect_prot(prot)); @@ -1428,11 +1407,6 @@ int pud_free_pmd_page(pud_t *pudp, unsig return 1; } -int p4d_free_pud_page(p4d_t *p4d, unsigned long addr) -{ - return 0; /* Don't attempt a block mapping */ -} - #ifdef CONFIG_MEMORY_HOTPLUG static void __remove_pgd_mapping(pgd_t *pgdir, unsigned long start, u64 size) { _ Patches currently in -mm which might be from npiggin@xxxxxxxxx are arm-mm-add-missing-pud_page-define-to-2-level-page-tables.patch mm-vmalloc-fix-huge_vmap-regression-by-enabling-huge-pages-in-vmalloc_to_page.patch mm-apply_to_pte_range-warn-and-fail-if-a-large-pte-is-encountered.patch mm-vmalloc-rename-vmap__range-vmap_pages__range.patch mm-ioremap-rename-ioremap__range-to-vmap__range.patch mm-huge_vmap-arch-support-cleanup.patch powerpc-inline-huge-vmap-supported-functions.patch arm64-inline-huge-vmap-supported-functions.patch x86-inline-huge-vmap-supported-functions.patch mm-vmalloc-provide-fallback-arch-huge-vmap-support-functions.patch mm-move-vmap_range-from-mm-ioremapc-to-mm-vmallocc.patch mm-vmalloc-add-vmap_range_noflush-variant.patch mm-vmalloc-hugepage-vmalloc-mappings.patch powerpc-64s-radix-enable-huge-vmalloc-mappings.patch