From: Mike Travis This is from an earlier message from Christoph Lameter: processor_core.c currently tries to determine the apicid by special casing for IA64 and x86. The desired information is readily available via cpu_physical_id() on IA64, i386 and x86_64. Signed-off-by: Christoph Lameter Additionally, boot_cpu_id needed to be exported to fix compile errors in dma code when !CONFIG_SMP. Signed-off-by: Mike Travis Cc: Andi Kleen Cc: Christoph Lameter Cc: "Siddha, Suresh B" Cc: Len Brown Signed-off-by: Andrew Morton --- arch/x86_64/kernel/mpparse.c | 2 ++ drivers/acpi/processor_core.c | 8 +------- 2 files changed, 3 insertions(+), 7 deletions(-) diff -puN arch/x86_64/kernel/mpparse.c~x86-acpi-use-cpu_physical_id arch/x86_64/kernel/mpparse.c --- a/arch/x86_64/kernel/mpparse.c~x86-acpi-use-cpu_physical_id +++ a/arch/x86_64/kernel/mpparse.c @@ -57,6 +57,8 @@ unsigned long mp_lapic_addr = 0; /* Processor that is doing the boot up */ unsigned int boot_cpu_id = -1U; +EXPORT_SYMBOL(boot_cpu_id); + /* Internal processor count */ unsigned int num_processors __cpuinitdata = 0; diff -puN drivers/acpi/processor_core.c~x86-acpi-use-cpu_physical_id drivers/acpi/processor_core.c --- a/drivers/acpi/processor_core.c~x86-acpi-use-cpu_physical_id +++ a/drivers/acpi/processor_core.c @@ -421,12 +421,6 @@ static int map_lsapic_id(struct acpi_sub return 0; } -#ifdef CONFIG_IA64 -#define arch_cpu_to_apicid ia64_cpu_to_sapicid -#else -#define arch_cpu_to_apicid x86_cpu_to_apicid -#endif - static int map_madt_entry(u32 acpi_id) { unsigned long madt_end, entry; @@ -500,7 +494,7 @@ static int get_cpu_id(acpi_handle handle return apic_id; for (i = 0; i < NR_CPUS; ++i) { - if (arch_cpu_to_apicid[i] == apic_id) + if (cpu_physical_id(i) == apic_id) return i; } return -1; _