diff --git a/arch/x86/kernel/cpu/hygon.c b/arch/x86/kernel/cpu/hygon.c index a4d667ef2068352a0cea2410a76585c945601d7f..19e03380ffda7e3aeaaa511dba598c65f4b9d11c 100644 --- a/arch/x86/kernel/cpu/hygon.c +++ b/arch/x86/kernel/cpu/hygon.c @@ -54,8 +54,15 @@ static void srat_detect_node(struct cpuinfo_x86 *c) unsigned int apicid = c->topo.apicid; node = numa_cpu_node(cpu); - if (node == NUMA_NO_NODE) - node = c->topo.llc_id; + if (node == NUMA_NO_NODE) { + if (c->x86_model >= 0x4 && c->x86_model <= 0x8) { + node = cpu_to_node(cpu); + numa_set_node(cpu, node); + return; + } else { + node = c->topo.llc_id; + } + } /* * On multi-fabric platform (e.g. Numascale NumaChip) a