Re: [PATCH 3/4] x86_64: Fold pda into per cpu area

From: Yinghai Lu
Date: Sun Feb 17 2008 - 02:37:43 EST


On Feb 16, 2008 10:22 PM, Yinghai Lu <yhlu.kernel@xxxxxxxxx> wrote:
> On Feb 15, 2008 12:16 PM, Ingo Molnar <mingo@xxxxxxx> wrote:
> >
> > * travis@xxxxxxx <travis@xxxxxxx> wrote:
> >
> > > include/asm-generic/vmlinux.lds.h | 2 +
> > > include/linux/percpu.h | 9 ++++-
> >
> > couldnt these two generic bits be done separately (perhaps a preparatory
> > but otherwise NOP patch pushed upstream straight away) to make
> > subsequent patches only touch x86 architecture files?
>
> this patch need to apply to mainline asap.
>
> or you need revert to the patch about include/asm-x86/percpu.h
>
> +#ifdef CONFIG_X86_64
> +#include <linux/compiler.h>
> +
> +/* Same as asm-generic/percpu.h, except that we store the per cpu offset
> + in the PDA. Longer term the PDA and every per cpu variable
> + should be just put into a single section and referenced directly
> + from %gs */
> +
> +#ifdef CONFIG_SMP
> +#include <asm/pda.h>
> +
> +#define __per_cpu_offset(cpu) (cpu_pda(cpu)->data_offset)
> +#define __my_cpu_offset read_pda(data_offset)
> +
> +#define per_cpu_offset(x) (__per_cpu_offset(x))
> +
> #endif
> +#include <asm-generic/percpu.h>
> +
> +DECLARE_PER_CPU(struct x8664_pda, pda);
> +
> +#else /* CONFIG_X86_64 */
>
> because current tree
> in setup_per_cpu_areas will have
> cpu_pda(i)->data_offset = ptr - __per_cpu_start;
>
> but at that time all APs will use cpu_pda for boot cpu...,and APs will
> get their pda in do_boot_cpu()

sorry, boot_cpu_pda is array... so that is safe.

YH
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/