mm/execmem, arch: convert simple overrides of module_alloc to execmem
authorMike Rapoport (IBM) <rppt@kernel.org>
Sun, 5 May 2024 16:06:19 +0000 (19:06 +0300)
committerLuis Chamberlain <mcgrof@kernel.org>
Tue, 14 May 2024 07:31:43 +0000 (00:31 -0700)
commitf6bec26c0a7364d3506a3e12dab7c228ef32bd65
tree4686bc944b0452c523664ad70241e3f0a115d12b
parent12af2b83d0b17ec8b379b721dd4a8fbcd5d791f3
mm/execmem, arch: convert simple overrides of module_alloc to execmem

Several architectures override module_alloc() only to define address
range for code allocations different than VMALLOC address space.

Provide a generic implementation in execmem that uses the parameters for
address space ranges, required alignment and page protections provided
by architectures.

The architectures must fill execmem_info structure and implement
execmem_arch_setup() that returns a pointer to that structure. This way the
execmem initialization won't be called from every architecture, but rather
from a central place, namely a core_initcall() in execmem.

The execmem provides execmem_alloc() API that wraps __vmalloc_node_range()
with the parameters defined by the architectures.  If an architecture does
not implement execmem_arch_setup(), execmem_alloc() will fall back to
module_alloc().

Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
Acked-by: Song Liu <song@kernel.org>
Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
arch/loongarch/kernel/module.c
arch/mips/kernel/module.c
arch/nios2/kernel/module.c
arch/parisc/kernel/module.c
arch/riscv/kernel/module.c
arch/sparc/kernel/module.c
include/linux/execmem.h
mm/execmem.c
mm/mm_init.c