--- v6
+++ v10
@@ -1,17 +1,18 @@
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
- Documentation/admin-guide/kernel-parameters.txt | 2 ++
- arch/powerpc/Kconfig | 1 +
- 2 files changed, 3 insertions(+)
+ Documentation/admin-guide/kernel-parameters.txt | 2 ++
+ arch/powerpc/Kconfig | 1 +
+ arch/powerpc/kernel/module.c | 13 +++++++++++--
+ 3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
-index bdc1f33fd3d1..6f0b41289a90 100644
+index a10b545c2070..d62df53e5200 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
-@@ -3190,6 +3190,8 @@
+@@ -3225,6 +3225,8 @@
- nohugeiomap [KNL,X86,PPC] Disable kernel huge I/O mappings.
+ nohugeiomap [KNL,X86,PPC,ARM64] Disable kernel huge I/O mappings.
+ nohugevmalloc [PPC] Disable kernel huge vmalloc mappings.
+
@@ -19,17 +20,41 @@
Equivalent to smt=1.
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
-index 1f48bbfb3ce9..9171d25ad7dc 100644
+index 107bb4319e0e..781da6829ab7 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
-@@ -175,6 +175,7 @@ config PPC
- select GENERIC_TIME_VSYSCALL
+@@ -181,6 +181,7 @@ config PPC
+ select GENERIC_GETTIMEOFDAY
select HAVE_ARCH_AUDITSYSCALL
select HAVE_ARCH_HUGE_VMAP if PPC_BOOK3S_64 && PPC_RADIX_MMU
+ select HAVE_ARCH_HUGE_VMALLOC if HAVE_ARCH_HUGE_VMAP
select HAVE_ARCH_JUMP_LABEL
select HAVE_ARCH_KASAN if PPC32 && PPC_PAGE_SHIFT <= 14
select HAVE_ARCH_KASAN_VMALLOC if PPC32 && PPC_PAGE_SHIFT <= 14
+diff --git a/arch/powerpc/kernel/module.c b/arch/powerpc/kernel/module.c
+index a211b0253cdb..bc2695eeeb4c 100644
+--- a/arch/powerpc/kernel/module.c
++++ b/arch/powerpc/kernel/module.c
+@@ -92,8 +92,17 @@ void *module_alloc(unsigned long size)
+ {
+ BUILD_BUG_ON(TASK_SIZE > MODULES_VADDR);
+
+- return __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END, GFP_KERNEL,
+- PAGE_KERNEL_EXEC, VM_FLUSH_RESET_PERMS, NUMA_NO_NODE,
++ /*
++ * Don't do huge page allocations for modules yet until more testing
++ * is done. STRICT_MODULE_RWX may require extra work to support this
++ * too.
++ */
++
++ return __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END,
++ GFP_KERNEL,
++ PAGE_KERNEL_EXEC,
++ VM_NOHUGE | VM_FLUSH_RESET_PERMS,
++ NUMA_NO_NODE,
+ __builtin_return_address(0));
+ }
+ #endif
--
2.23.0