Hi, Jiaxun,
On Wed, May 22, 2024 at 2:30 PM Jiaxun Yang jiaxun.yang@flygoat.com 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@vger.kernel.org Fixes: 88d4d957edc7 ("LoongArch: Add FDT booting support from efi system table") Signed-off-by: Jiaxun Yang jiaxun.yang@flygoat.com
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