xref: /linux-6.15/arch/arm64/include/asm/vmalloc.h (revision 168a6333)
11f059dfdSIngo Molnar #ifndef _ASM_ARM64_VMALLOC_H
21f059dfdSIngo Molnar #define _ASM_ARM64_VMALLOC_H
31f059dfdSIngo Molnar 
4bbc180a5SNicholas Piggin #include <asm/page.h>
5bbc180a5SNicholas Piggin 
6bbc180a5SNicholas Piggin #ifdef CONFIG_HAVE_ARCH_HUGE_VMAP
7*168a6333SNicholas Piggin static inline bool arch_vmap_p4d_supported(pgprot_t prot)
8*168a6333SNicholas Piggin {
9*168a6333SNicholas Piggin 	return false;
10*168a6333SNicholas Piggin }
11*168a6333SNicholas Piggin 
12*168a6333SNicholas Piggin static inline bool arch_vmap_pud_supported(pgprot_t prot)
13*168a6333SNicholas Piggin {
14*168a6333SNicholas Piggin 	/*
15*168a6333SNicholas Piggin 	 * Only 4k granule supports level 1 block mappings.
16*168a6333SNicholas Piggin 	 * SW table walks can't handle removal of intermediate entries.
17*168a6333SNicholas Piggin 	 */
18*168a6333SNicholas Piggin 	return IS_ENABLED(CONFIG_ARM64_4K_PAGES) &&
19*168a6333SNicholas Piggin 	       !IS_ENABLED(CONFIG_PTDUMP_DEBUGFS);
20*168a6333SNicholas Piggin }
21*168a6333SNicholas Piggin 
22*168a6333SNicholas Piggin static inline bool arch_vmap_pmd_supported(pgprot_t prot)
23*168a6333SNicholas Piggin {
24*168a6333SNicholas Piggin 	/* See arch_vmap_pud_supported() */
25*168a6333SNicholas Piggin 	return !IS_ENABLED(CONFIG_PTDUMP_DEBUGFS);
26*168a6333SNicholas Piggin }
27bbc180a5SNicholas Piggin #endif
28bbc180a5SNicholas Piggin 
291f059dfdSIngo Molnar #endif /* _ASM_ARM64_VMALLOC_H */
30