Hi, Jiaxun, On Wed, May 22, 2024 at 2:30 PM Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx> wrote: > > NUMA enabled kernel on FDT based machine fails to boot > because CPUs are all in NUMA_NO_NODE and mm subsystem > won't accept that. > > Fix by adding them to default NUMA node for now. > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: 88d4d957edc7 ("LoongArch: Add FDT booting support from efi system table") > Signed-off-by: Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx> > --- > arch/loongarch/kernel/smp.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/arch/loongarch/kernel/smp.c b/arch/loongarch/kernel/smp.c > index 0dfe2388ef41..866757b76ecb 100644 > --- a/arch/loongarch/kernel/smp.c > +++ b/arch/loongarch/kernel/smp.c > @@ -273,7 +273,6 @@ static void __init fdt_smp_setup(void) > > if (cpuid == loongson_sysconf.boot_cpu_id) { > cpu = 0; > - numa_add_cpu(cpu); > } else { > cpu = cpumask_next_zero(-1, cpu_present_mask); > } > @@ -283,6 +282,10 @@ static void __init fdt_smp_setup(void) > set_cpu_present(cpu, true); > __cpu_number_map[cpuid] = cpu; > __cpu_logical_map[cpu] = cpuid; > + > + early_numa_add_cpu(cpu, 0); > + set_cpuid_to_node(cpuid, 0); > + numa_add_cpu(cpu); What's wrong exactly? Real machine has no problem here, and at least numa_add_cpu() should not be called for non-zero cpu so early, because it need per-cpu area be setup. I guess the root cause is that there is something wrong and "cpuid == loongson_sysconf.boot_cpu_id" is skipped. Huacai > } > > loongson_sysconf.nr_cpus = num_processors; > > -- > 2.43.0 >