Re: [discuss] [patch 3/3] x86_64: Node local pda take 2 -- node local pda allocation

From: Ravikiran G Thirumalai
Date: Thu Dec 15 2005 - 13:46:30 EST


On Thu, Dec 15, 2005 at 10:42:32AM +0100, Andi Kleen wrote:
> On Wed, Dec 14, 2005 at 06:37:48PM -0800, Ravikiran G Thirumalai wrote:
> > Patch uses a static PDA array early at boot and reallocates processor PDA
> > with node local memory when kmalloc is ready, just before pda_init.
> > The boot_cpu_pda is needed since the cpu_pda is used even before pda_init for
> > that cpu is called.
> > (pda_init is called when APs are brought on at rest_init(). But
> > setup_per_cpu_areas is called early in start_kernel and
> > sched_init uses the per-cpu offset table early)
> >
>
> That is why I suggested to allocate it in smpboot.c in advance before
> starting the AP. Can you please do that change?

Maybe I am missing something, or not getting what you are suggesting;
As I see it,

asmlinkage void __init start_kernel(void)
{
...
...
...
setup_arch(&command_line); --> (1)
setup_per_cpu_areas(); --> (2)
...
sched_init(); --> (3)
...
vfs_caches_init_early();
mem_init();
kmem_cache_init(); --> (4)
...
rest_init() --> (5)
}


I could allocate memory for pda somewhere in setup_arch after cpu_to_node is
initialized, but I would have to use alloc_bootmem_node and allocate for
NR_CPUS, which could be wasteful. I cannot use kmalloc_node until after (4)
above, and sched_init refers to the per-cpu offset table before that.

So are you suggesting I use alloc_bootmem_node and allocate PDA for
NR_CPUS?

-
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/