• Mike Rapoport (IBM)'s avatar
    mm/execmem, arch: convert simple overrides of module_alloc to execmem · f6bec26c
    Mike Rapoport (IBM) authored
    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: default avatarMike Rapoport (IBM) <rppt@kernel.org>
    Acked-by: default avatarSong Liu <song@kernel.org>
    Reviewed-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
    f6bec26c
mm_init.c 78.4 KB