On 3/21/23 18:05, Mike Rapoport wrote: > From: "Mike Rapoport (IBM)" <rppt@xxxxxxxxxx> > > Both build_all_zonelists() and page_alloc_init_cpuhp() must be called > after SMP setup is complete but before the page allocator is set up. > > Still, they both are a part of memory management initialization, so move > them to mm_init(). Well, logic grouping is one thing, but not breaking a functional order is more important. So this moves both calls to happen later than theyw ere. I guess it could only matter for page_alloc_init_cpuhp() in case cpu hotplugs would be processed in some of the calls we "skipped" over by moving this later. And one of them is setup_arch()... so are we sure no arch does some cpu hotplug for non-boot cpus there? > Signed-off-by: Mike Rapoport (IBM) <rppt@xxxxxxxxxx> > Acked-by: David Hildenbrand <david@xxxxxxxxxx> > --- > init/main.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/init/main.c b/init/main.c > index b2499bee7a3c..4423906177c1 100644 > --- a/init/main.c > +++ b/init/main.c > @@ -833,6 +833,10 @@ static void __init report_meminit(void) > */ > 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. > @@ -968,9 +972,6 @@ asmlinkage __visible void __init __no_sanitize_address start_kernel(void) > smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */ > boot_cpu_hotplug_init(); > > - build_all_zonelists(NULL); > - page_alloc_init_cpuhp(); > - > pr_notice("Kernel command line: %s\n", saved_command_line); > /* parameters may set static keys */ > jump_label_init();