[PATCH] riscv: Add support to allocate gigantic hugepages using CMA

Kefeng Wang wangkefeng.wang at huawei.com
Wed Jul 28 23:24:17 PDT 2021


The RV32 only has at most 1GB memory(MAXPHYSMEM_1GB), so let's
disable HUGETLBFS on RV32. And add support to allocate gigantic
hugepages using CMA by specifying the hugetlb_cma= kernel parameter.

Signed-off-by: Kefeng Wang <wangkefeng.wang at huawei.com>
---
 arch/riscv/Kconfig   | 2 +-
 arch/riscv/mm/init.c | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 8fcceb8eda07..20a589605307 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -33,7 +33,7 @@ config RISCV
 	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
 	select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
 	select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
-	select ARCH_SUPPORTS_HUGETLBFS if MMU
+	select ARCH_SUPPORTS_HUGETLBFS if MMU && 64BIT
 	select ARCH_USE_MEMTEST
 	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT if MMU
 	select ARCH_WANT_FRAME_POINTERS
diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
index a14bf3910eec..f2268402894b 100644
--- a/arch/riscv/mm/init.c
+++ b/arch/riscv/mm/init.c
@@ -19,6 +19,7 @@
 #include <linux/set_memory.h>
 #include <linux/dma-map-ops.h>
 #include <linux/crash_dump.h>
+#include <linux/hugetlb.h>
 
 #include <asm/fixmap.h>
 #include <asm/tlbflush.h>
@@ -216,6 +217,7 @@ static void __init setup_bootmem(void)
 
 	early_init_fdt_scan_reserved_mem();
 	dma_contiguous_reserve(dma32_phys_limit);
+	hugetlb_cma_reserve(PUD_SHIFT - PAGE_SHIFT);
 	memblock_allow_resize();
 }
 
-- 
2.26.2




More information about the linux-riscv mailing list