Implement smp_processor_id() with the PDA. Use the cpu_number in the PDA to implement raw_smp_processor_id. This is a little simpler than using thread_info, though the cpu field in thread_info cannot be removed since it is used for things other than getting the current CPU in common code. Signed-off-by: Jeremy Fitzhardinge Cc: Chuck Ebbert <76306.1226@compuserve.com> Cc: Zachary Amsden Cc: Jan Beulich Cc: Andi Kleen --- arch/i386/kernel/asm-offsets.c | 2 +- include/asm-i386/smp.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff -r 412e9eb1cd8b arch/i386/kernel/asm-offsets.c --- a/arch/i386/kernel/asm-offsets.c Mon Sep 25 15:23:51 2006 -0700 +++ b/arch/i386/kernel/asm-offsets.c Mon Sep 25 15:23:53 2006 -0700 @@ -52,7 +52,6 @@ void foo(void) OFFSET(TI_exec_domain, thread_info, exec_domain); OFFSET(TI_flags, thread_info, flags); OFFSET(TI_status, thread_info, status); - OFFSET(TI_cpu, thread_info, cpu); OFFSET(TI_preempt_count, thread_info, preempt_count); OFFSET(TI_addr_limit, thread_info, addr_limit); OFFSET(TI_restart_block, thread_info, restart_block); @@ -96,4 +95,5 @@ void foo(void) BLANK(); OFFSET(PDA_pcurrent, i386_pda, pcurrent); + OFFSET(PDA_cpu, i386_pda, cpu_number); } diff -r 412e9eb1cd8b include/asm-i386/smp.h --- a/include/asm-i386/smp.h Mon Sep 25 15:23:51 2006 -0700 +++ b/include/asm-i386/smp.h Mon Sep 25 15:23:53 2006 -0700 @@ -8,6 +8,7 @@ #include #include #include +#include #endif #ifdef CONFIG_X86_LOCAL_APIC @@ -56,7 +57,7 @@ extern void cpu_uninit(void); * from the initial startup. We map APIC_BASE very early in page_setup(), * so this is correct in the x86 case. */ -#define raw_smp_processor_id() (current_thread_info()->cpu) +#define raw_smp_processor_id() (read_pda(cpu_number)) extern cpumask_t cpu_callout_map; extern cpumask_t cpu_callin_map;