Re: [PATCH 7/8] Implement smp_processor_id() with the PDA.

Ian Campbell
2006-08-31T12:35:46Z

Hi Jeremy,

On Wed, 2006-08-30 at 16:52 -0700, Jeremy Fitzhardinge wrote:
> --- a/arch/i386/kernel/cpu/common.c
> +++ b/arch/i386/kernel/cpu/common.c@@ -664,7 +664,7 @@ static inline void set_kernel_gs(void)
> /* Initialize the CPU's GDT and PDA */
> static __cpuinit void init_gdt(void)
> {
> - int cpu = smp_processor_id();
> + int cpu = early_smp_processor_id();
> struct task_struct *curr = current;
> struct Xgt_desc_struct *cpu_gdt_descr = &per_cpu(cpu_gdt_descr, cpu);
> __u32 stk16_off = (__u32)&per_cpu(cpu_16bit_stack, cpu);

This doesn't compile for me if CONFIG_SMP=n

LD .tmp_vmlinux1
arch/i386/kernel/built-in.o: In function `cpu_init':
(.init.text+0x1eda): undefined reference to `early_smp_processor_id'
arch/i386/kernel/built-in.o: In function `cpu_init':
(.init.text+0x1f11): undefined reference to `early_smp_processor_id'

smp_processor_id() is defined for !SMP in include/linux/smp.h, I don't
know if it would be appropriate to add early_smp_processor_id() there
since it seems i386 specific. asm/smp.h isn't included by linux/smp.h
when !SMP but you could add an explicit include to common.c I suppose.

Ian.