x86: get boot_cpu_id as early for k8_scan_nodes
authorYinghai Lu <Yinghai.Lu@Sun.COM>
Tue, 19 Feb 2008 11:21:06 +0000 (03:21 -0800)
committerIngo Molnar <mingo@elte.hu>
Thu, 17 Apr 2008 15:40:58 +0000 (17:40 +0200)
commit8643f9d02a7bb9db74634b4c062d8e70ce7c59b9
treef7d31205f8a9ea6e1c9551cbc0d160072c33f112
parent6079d2d5d11122eb52721f0f3c828952a490e6c1
x86: get boot_cpu_id as early for k8_scan_nodes

When acpi=off or there is no SRAT defined, apicid_to_node is got from K8
Northbridge PCI configuration space in k8_scan_nodes() in
arch/x86_64/mm/k8toplogy.c.

The problem is that it assumes bsp apic id is 0 at that point.

For four socket system with Quad core cpus installed, all cpus apic id
is offset by 4, and bsp apic id is 4.

For eight socket system with dual core cpus installed, all cpus apic id
is offset by 2, and bsp apic id is 2.

We need get boot_cpu_id --- bsp apic id, before k8_scan_nodes by called.

So create early_acpi_boot_init and early_get_smp_config for get boot_cpu_id.

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/apic_64.c
arch/x86/kernel/mpparse_64.c
include/asm-x86/apic.h
include/asm-x86/mpspec.h