On Mon, May 22 2023 at 23:27, Mark Brown wrote: > On Mon, May 22, 2023 at 11:04:17PM +0200, Thomas Gleixner wrote: > >> That does not make any sense at all and my tired brain does not help >> either. > >> Can you please apply the below debug patch and provide the output? > > Here's the log, a quick glance says the > > if (!--ncpus) > break; > > check is doing the wrong thing Obviously. Let me find a brown paperbag and go to sleep before I even try to compile the obvious fix. --- diff --git a/kernel/cpu.c b/kernel/cpu.c index 005f863a3d2b..88a7ede322bd 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -1770,9 +1770,6 @@ static void __init cpuhp_bringup_mask(const struct cpumask *mask, unsigned int n for_each_cpu(cpu, mask) { struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu); - if (!--ncpus) - break; - if (cpu_up(cpu, target) && can_rollback_cpu(st)) { /* * If this failed then cpu_up() might have only @@ -1781,6 +1778,9 @@ static void __init cpuhp_bringup_mask(const struct cpumask *mask, unsigned int n */ WARN_ON(cpuhp_invoke_callback_range(false, cpu, st, CPUHP_OFFLINE)); } + + if (!--ncpus) + break; } }