[PATCH v19 5/6] init: move percpu_counter_tree_subsystem_init() earlier in boot

From: Mathieu Desnoyers

Date: Thu Jul 02 2026 - 15:28:50 EST


Move percpu_counter_tree_subsystem_init() from after trap_init() to
immediately after setup_nr_cpu_ids() in start_kernel().

The function's only dependency is nr_cpu_ids: it calls
get_count_order(nr_cpu_ids), indexes into a const configuration table,
and performs arithmetic to derive accuracy parameters. It requires no
memory allocator, percpu areas, or other infrastructure.

Initialize the subsystem as soon as its dependency is available rather
than deferring until later in the boot sequence. This ensures
percpu_counter_tree_items_size() returns the correct value well before
its first use in mm_cache_init().

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>
---
init/main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/init/main.c b/init/main.c
index 8581ea542cde..a0701d400b0f 100644
--- a/init/main.c
+++ b/init/main.c
@@ -1001,6 +1001,7 @@ void start_kernel(void)
setup_boot_config();
setup_command_line(command_line);
setup_nr_cpu_ids();
+ percpu_counter_tree_subsystem_init();
setup_per_cpu_areas();
smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
early_numa_node_init();
@@ -1032,7 +1033,6 @@ void start_kernel(void)
vfs_caches_init_early();
sort_main_extable();
trap_init();
- percpu_counter_tree_subsystem_init();
mm_core_init();
maple_tree_init();
poking_init();
--
2.43.0