1 // SPDX-License-Identifier: GPL-2.0
2 #include <linux/hugetlb.h>
5 int pud_huge(pud_t pud)
10 int pmd_huge(pmd_t pmd)
15 static __init int setup_hugepagesz(char *opt)
17 unsigned long ps = memparse(opt, &opt);
19 if (ps == HPAGE_SIZE) {
20 hugetlb_add_hstate(HPAGE_SHIFT - PAGE_SHIFT);
21 } else if (IS_ENABLED(CONFIG_64BIT) && ps == PUD_SIZE) {
22 hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT);
25 pr_err("hugepagesz: Unsupported page size %lu M\n", ps >> 20);
31 __setup("hugepagesz=", setup_hugepagesz);
33 #ifdef CONFIG_CONTIG_ALLOC
34 static __init int gigantic_pages_init(void)
36 /* With CONTIG_ALLOC, we can allocate gigantic pages at runtime */
37 if (IS_ENABLED(CONFIG_64BIT) && !size_to_hstate(1UL << PUD_SHIFT))
38 hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT);
41 arch_initcall(gigantic_pages_init);