From: Ravikiran G Thirumalai 2.6.14-rc2 does not assign cpus to proper nodeids on our em64t numa boxen. Our boxes use acpi srat for parsing the numa information. Due to the changes in the recent kernels, early_identify_cpu in arch/x86_64/kernel/setup.c uses cpuid_ebx(1) to populate the phys_proc_id[] array. However, apicid_to_node is populated in acpi_numa_processor_affinity_init() with acpi_table_processor_affinity information, and the srat apic ids. According to intel manuals, I guess cpuid can only return the initial apic ids, and these may not be the same as the local apic ids, based on the firmware/bios. I guess the right solution maybe to use hard_smp_processor_id to populate the phys_proc_id[] array. This fixes our em64t NUMA boxes. That said, we donot have access to multicore boxes etc. Hence, checking with you if this is the right approach/if you have comments. Attached is a patch which works for us. Signed-off-by: Ravikiran Thirumalai Signed-off-by: Shai Fultheim Cc: Andi Kleen Signed-off-by: Andrew Morton --- arch/x86_64/kernel/setup.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletion(-) diff -puN arch/x86_64/kernel/setup.c~x86_64-numa-node-topology-fix arch/x86_64/kernel/setup.c --- devel/arch/x86_64/kernel/setup.c~x86_64-numa-node-topology-fix 2005-09-28 16:26:51.000000000 -0700 +++ devel-akpm/arch/x86_64/kernel/setup.c 2005-09-28 16:26:51.000000000 -0700 @@ -1075,7 +1075,10 @@ void __cpuinit early_identify_cpu(struct } #ifdef CONFIG_SMP - phys_proc_id[smp_processor_id()] = (cpuid_ebx(1) >> 24) & 0xff; + if (c == &boot_cpu_data) + phys_proc_id[smp_processor_id()] = (cpuid_ebx(1) >> 24) & 0xff; + else + phys_proc_id[smp_processor_id()] = hard_smp_processor_id(); #endif } _