On 3/22/23 21:26, Mike Rapoport wrote: > On Wed, Mar 22, 2023 at 05:10:10PM +0100, Vlastimil Babka wrote: >> 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? > > mm_init() happens after the point build_all_zonelists() and > page_alloc_init_cpuhp() were originally, so they are essentially moved > later in the init sequence and in either case called after setup_arch(). Right, I looked at a wrong place in start_kernel() for the original location of the calls, sorry for the noise. > We skip the code below and it does not do neither cpu hotplug nor > non-memblock allocations. > > jump_label_init(); > parse_early_param(); > after_dashes = parse_args("Booting kernel", > static_command_line, __start___param, > __stop___param - __start___param, > -1, -1, NULL, &unknown_bootoption); > print_unknown_bootoptions(); > if (!IS_ERR_OR_NULL(after_dashes)) > parse_args("Setting init args", after_dashes, NULL, 0, -1, -1, > NULL, set_init_arg); > if (extra_init_args) > parse_args("Setting extra init args", extra_init_args, > NULL, 0, -1, -1, NULL, set_init_arg); > > /* Architectural and non-timekeeping rng init, before allocator init */ > random_init_early(command_line); > > /* > * These use large bootmem allocations and must precede > * kmem_cache_init() > */ > setup_log_buf(0); > vfs_caches_init_early(); > sort_main_extable(); > trap_init(); > Yeah, that looks safe. >> > Signed-off-by: Mike Rapoport (IBM) <rppt@xxxxxxxxxx> >> > Acked-by: David Hildenbrand <david@xxxxxxxxxx> Reviewed-by: Vlastimil Babka <vbabka@xxxxxxx>