Re: [v2 PATCH] mm: move page_ext_init after all struct pages are initialized

From: Michal Hocko
Date: Fri May 20 2016 - 09:16:56 EST


On Thu 19-05-16 15:13:26, Yang Shi wrote:
[...]
> diff --git a/init/main.c b/init/main.c
> index b3c6e36..2075faf 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -606,7 +606,6 @@ asmlinkage __visible void __init start_kernel(void)
> initrd_start = 0;
> }
> #endif
> - page_ext_init();
> debug_objects_mem_init();
> kmemleak_init();
> setup_per_cpu_pageset();
> @@ -1004,6 +1003,8 @@ static noinline void __init kernel_init_freeable(void)
> sched_init_smp();
>
> page_alloc_init_late();
> + /* Initialize page ext after all struct pages are initializaed */
> + page_ext_init();
>
> do_basic_setup();

I might be missing something but don't we have the same problem with
CONFIG_FLATMEM? page_ext_init_flatmem is called way earlier. Or
CONFIG_DEFERRED_STRUCT_PAGE_INIT is never enabled for CONFIG_FLATMEM?
--
Michal Hocko
SUSE Labs