From: Fernando Luis Vazquez Cao Use the APIC to determine the hardware processor id when APIC support has been selected, independently of whether CONFIG_SMP is set or not. Signed-off-by: Fernando Luis Vazquez Cao Cc: Andi Kleen Cc: Vivek Goyal Cc: "Eric W. Biederman" Cc: "Luck, Tony" Signed-off-by: Andrew Morton --- include/asm-i386/smp.h | 29 ++++++++++++++--------------- 1 files changed, 14 insertions(+), 15 deletions(-) diff -puN include/asm-i386/smp.h~use-the-apic-to-determine-the-hardware-processor-id-i386 include/asm-i386/smp.h --- a/include/asm-i386/smp.h~use-the-apic-to-determine-the-hardware-processor-id-i386 +++ a/include/asm-i386/smp.h @@ -71,20 +71,6 @@ static inline int num_booting_cpus(void) return cpus_weight(cpu_callout_map); } -#ifdef CONFIG_X86_LOCAL_APIC - -#ifdef APIC_DEFINITION -extern int hard_smp_processor_id(void); -#else -#include -static inline int hard_smp_processor_id(void) -{ - /* we don't want to mark this access volatile - bad code generation */ - return GET_APIC_ID(*(unsigned long *)(APIC_BASE+APIC_ID)); -} -#endif -#endif - extern int safe_smp_processor_id(void); extern int __cpu_disable(void); extern void __cpu_die(unsigned int cpu); @@ -99,10 +85,23 @@ extern unsigned int num_processors; #define NO_PROC_ID 0xFF /* No processor magic marker */ -#endif +#endif /* CONFIG_SMP */ #ifndef __ASSEMBLY__ +#ifdef CONFIG_X86_LOCAL_APIC +#ifdef APIC_DEFINITION +extern int hard_smp_processor_id(void); +#else +#include +static inline int hard_smp_processor_id(void) +{ + /* we don't want to mark this access volatile - bad code generation */ + return GET_APIC_ID(*(unsigned long *)(APIC_BASE+APIC_ID)); +} +#endif /* APIC_DEFINITION */ +#endif /* CONFIG_X86_LOCAL_APIC */ + extern u8 apicid_2_node[]; #ifdef CONFIG_X86_LOCAL_APIC _