init,mm: move mm_init() to mm/mm_init.c and rename it to mm_core_init()
Make mm_init() a part of mm/ codebase. mm_core_init() better describes what the function does and does not clash with mm_init() in kernel/fork.c Link: https://lkml.kernel.org/r/20230321170513.2401534-8-rppt@kernel.org Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org> Acked-by: David Hildenbrand <david@redhat.com> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Cc: Doug Berger <opendmb@gmail.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Mel Gorman <mgorman@suse.de> Cc: Michal Hocko <mhocko@kernel.org> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
9cca18390d
commit
b7ec1bf3e7
@ -38,6 +38,7 @@ struct pt_regs;
|
|||||||
|
|
||||||
extern int sysctl_page_lock_unfairness;
|
extern int sysctl_page_lock_unfairness;
|
||||||
|
|
||||||
|
void mm_core_init(void);
|
||||||
void init_mm_internals(void);
|
void init_mm_internals(void);
|
||||||
|
|
||||||
#ifndef CONFIG_NUMA /* Don't use mapnrs, do it properly */
|
#ifndef CONFIG_NUMA /* Don't use mapnrs, do it properly */
|
||||||
|
71
init/main.c
71
init/main.c
@ -807,73 +807,6 @@ static inline void initcall_debug_enable(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Report memory auto-initialization states for this boot. */
|
|
||||||
static void __init report_meminit(void)
|
|
||||||
{
|
|
||||||
const char *stack;
|
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_INIT_STACK_ALL_PATTERN))
|
|
||||||
stack = "all(pattern)";
|
|
||||||
else if (IS_ENABLED(CONFIG_INIT_STACK_ALL_ZERO))
|
|
||||||
stack = "all(zero)";
|
|
||||||
else if (IS_ENABLED(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL))
|
|
||||||
stack = "byref_all(zero)";
|
|
||||||
else if (IS_ENABLED(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF))
|
|
||||||
stack = "byref(zero)";
|
|
||||||
else if (IS_ENABLED(CONFIG_GCC_PLUGIN_STRUCTLEAK_USER))
|
|
||||||
stack = "__user(zero)";
|
|
||||||
else
|
|
||||||
stack = "off";
|
|
||||||
|
|
||||||
pr_info("mem auto-init: stack:%s, heap alloc:%s, heap free:%s\n",
|
|
||||||
stack, want_init_on_alloc(GFP_KERNEL) ? "on" : "off",
|
|
||||||
want_init_on_free() ? "on" : "off");
|
|
||||||
if (want_init_on_free())
|
|
||||||
pr_info("mem auto-init: clearing system memory may take some time...\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Set up kernel memory allocators
|
|
||||||
*/
|
|
||||||
static void __init mm_init(void)
|
|
||||||
{
|
|
||||||
/* Initializations relying on SMP setup */
|
|
||||||
build_all_zonelists(NULL);
|
|
||||||
page_alloc_init_cpuhp();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* page_ext requires contiguous pages,
|
|
||||||
* bigger than MAX_ORDER unless SPARSEMEM.
|
|
||||||
*/
|
|
||||||
page_ext_init_flatmem();
|
|
||||||
init_mem_debugging_and_hardening();
|
|
||||||
kfence_alloc_pool();
|
|
||||||
report_meminit();
|
|
||||||
kmsan_init_shadow();
|
|
||||||
stack_depot_early_init();
|
|
||||||
mem_init();
|
|
||||||
mem_init_print_info();
|
|
||||||
kmem_cache_init();
|
|
||||||
/*
|
|
||||||
* page_owner must be initialized after buddy is ready, and also after
|
|
||||||
* slab is ready so that stack_depot_init() works properly
|
|
||||||
*/
|
|
||||||
page_ext_init_flatmem_late();
|
|
||||||
kmemleak_init();
|
|
||||||
pgtable_init();
|
|
||||||
debug_objects_mem_init();
|
|
||||||
vmalloc_init();
|
|
||||||
/* If no deferred init page_ext now, as vmap is fully initialized */
|
|
||||||
if (!deferred_struct_pages)
|
|
||||||
page_ext_init();
|
|
||||||
/* Should be run before the first non-init thread is created */
|
|
||||||
init_espfix_bsp();
|
|
||||||
/* Should be run after espfix64 is set up. */
|
|
||||||
pti_init();
|
|
||||||
kmsan_init_runtime();
|
|
||||||
mm_cache_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_RANDOMIZE_KSTACK_OFFSET
|
#ifdef CONFIG_RANDOMIZE_KSTACK_OFFSET
|
||||||
DEFINE_STATIC_KEY_MAYBE_RO(CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT,
|
DEFINE_STATIC_KEY_MAYBE_RO(CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT,
|
||||||
randomize_kstack_offset);
|
randomize_kstack_offset);
|
||||||
@ -997,13 +930,13 @@ asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* These use large bootmem allocations and must precede
|
* These use large bootmem allocations and must precede
|
||||||
* kmem_cache_init()
|
* initalization of page allocator
|
||||||
*/
|
*/
|
||||||
setup_log_buf(0);
|
setup_log_buf(0);
|
||||||
vfs_caches_init_early();
|
vfs_caches_init_early();
|
||||||
sort_main_extable();
|
sort_main_extable();
|
||||||
trap_init();
|
trap_init();
|
||||||
mm_init();
|
mm_core_init();
|
||||||
poking_init();
|
poking_init();
|
||||||
ftrace_init();
|
ftrace_init();
|
||||||
|
|
||||||
|
73
mm/mm_init.c
73
mm/mm_init.c
@ -20,9 +20,15 @@
|
|||||||
#include <linux/nmi.h>
|
#include <linux/nmi.h>
|
||||||
#include <linux/buffer_head.h>
|
#include <linux/buffer_head.h>
|
||||||
#include <linux/kmemleak.h>
|
#include <linux/kmemleak.h>
|
||||||
|
#include <linux/kfence.h>
|
||||||
|
#include <linux/page_ext.h>
|
||||||
|
#include <linux/pti.h>
|
||||||
|
#include <linux/pgtable.h>
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "shuffle.h"
|
#include "shuffle.h"
|
||||||
|
|
||||||
|
#include <asm/setup.h>
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_MEMORY_INIT
|
#ifdef CONFIG_DEBUG_MEMORY_INIT
|
||||||
int __meminitdata mminit_loglevel;
|
int __meminitdata mminit_loglevel;
|
||||||
|
|
||||||
@ -2524,3 +2530,70 @@ void __init memblock_free_pages(struct page *page, unsigned long pfn,
|
|||||||
}
|
}
|
||||||
__free_pages_core(page, order);
|
__free_pages_core(page, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Report memory auto-initialization states for this boot. */
|
||||||
|
static void __init report_meminit(void)
|
||||||
|
{
|
||||||
|
const char *stack;
|
||||||
|
|
||||||
|
if (IS_ENABLED(CONFIG_INIT_STACK_ALL_PATTERN))
|
||||||
|
stack = "all(pattern)";
|
||||||
|
else if (IS_ENABLED(CONFIG_INIT_STACK_ALL_ZERO))
|
||||||
|
stack = "all(zero)";
|
||||||
|
else if (IS_ENABLED(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL))
|
||||||
|
stack = "byref_all(zero)";
|
||||||
|
else if (IS_ENABLED(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF))
|
||||||
|
stack = "byref(zero)";
|
||||||
|
else if (IS_ENABLED(CONFIG_GCC_PLUGIN_STRUCTLEAK_USER))
|
||||||
|
stack = "__user(zero)";
|
||||||
|
else
|
||||||
|
stack = "off";
|
||||||
|
|
||||||
|
pr_info("mem auto-init: stack:%s, heap alloc:%s, heap free:%s\n",
|
||||||
|
stack, want_init_on_alloc(GFP_KERNEL) ? "on" : "off",
|
||||||
|
want_init_on_free() ? "on" : "off");
|
||||||
|
if (want_init_on_free())
|
||||||
|
pr_info("mem auto-init: clearing system memory may take some time...\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set up kernel memory allocators
|
||||||
|
*/
|
||||||
|
void __init mm_core_init(void)
|
||||||
|
{
|
||||||
|
/* Initializations relying on SMP setup */
|
||||||
|
build_all_zonelists(NULL);
|
||||||
|
page_alloc_init_cpuhp();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* page_ext requires contiguous pages,
|
||||||
|
* bigger than MAX_ORDER unless SPARSEMEM.
|
||||||
|
*/
|
||||||
|
page_ext_init_flatmem();
|
||||||
|
init_mem_debugging_and_hardening();
|
||||||
|
kfence_alloc_pool();
|
||||||
|
report_meminit();
|
||||||
|
kmsan_init_shadow();
|
||||||
|
stack_depot_early_init();
|
||||||
|
mem_init();
|
||||||
|
mem_init_print_info();
|
||||||
|
kmem_cache_init();
|
||||||
|
/*
|
||||||
|
* page_owner must be initialized after buddy is ready, and also after
|
||||||
|
* slab is ready so that stack_depot_init() works properly
|
||||||
|
*/
|
||||||
|
page_ext_init_flatmem_late();
|
||||||
|
kmemleak_init();
|
||||||
|
pgtable_init();
|
||||||
|
debug_objects_mem_init();
|
||||||
|
vmalloc_init();
|
||||||
|
/* If no deferred init page_ext now, as vmap is fully initialized */
|
||||||
|
if (!deferred_struct_pages)
|
||||||
|
page_ext_init();
|
||||||
|
/* Should be run before the first non-init thread is created */
|
||||||
|
init_espfix_bsp();
|
||||||
|
/* Should be run after espfix64 is set up. */
|
||||||
|
pti_init();
|
||||||
|
kmsan_init_runtime();
|
||||||
|
mm_cache_init();
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user