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>
Showing
- arch/loongarch/kernel/module.c 16 additions, 3 deletionsarch/loongarch/kernel/module.c
- arch/mips/kernel/module.c 16 additions, 4 deletionsarch/mips/kernel/module.c
- arch/nios2/kernel/module.c 16 additions, 5 deletionsarch/nios2/kernel/module.c
- arch/parisc/kernel/module.c 16 additions, 8 deletionsarch/parisc/kernel/module.c
- arch/riscv/kernel/module.c 17 additions, 7 deletionsarch/riscv/kernel/module.c
- arch/sparc/kernel/module.c 16 additions, 4 deletionsarch/sparc/kernel/module.c
- include/linux/execmem.h 47 additions, 0 deletionsinclude/linux/execmem.h
- mm/execmem.c 64 additions, 3 deletionsmm/execmem.c
- mm/mm_init.c 2 additions, 0 deletionsmm/mm_init.c
Loading
Please register or sign in to comment