[PATCH] powerpc: Dynamically allocate pacas
Michael Neuling
mikey at neuling.org
Thu Jan 28 10:27:33 EST 2010
> > > On 64-bit kernels we currently have a 512 byte struct paca_struct for
> > > each cpu (usually just called "the paca"). Currently they are staticall=
> y
> > > allocated, which means a kernel built for a large number of cpus will
> > > waste a lot of space if it's booted on a machine with few cpus.
> > >=20
> > > We can avoid that by only allocating the number of pacas we need at
> > > boot. However this is complicated by the fact that we need to access
> > > the paca before we know how many cpus there are in the system.
> > >=20
> > > The solution is to dynamically allocate enough space for NR_CPUS pacas,
> > > but then later in boot when we know how many cpus we have, we free any
> > > unused pacas.
> > >=20
> > > Lightly booted on Legacy iSeries & pSeries LPAR.
> > >=20
> > > Signed-off-by: Michael Ellerman <michael at ellerman.id.au>
> >=20
> > <snip>
> >=20
> > > --- a/arch/powerpc/kernel/setup-common.c
> > > +++ b/arch/powerpc/kernel/setup-common.c
> > > @@ -493,6 +493,8 @@ void __init smp_setup_cpu_maps(void)
> > > * here will have to be reworked
> > > */
> > > cpu_init_thread_core_maps(nthreads);
> > > +
> > > + free_unused_pacas();
> >=20
> > This is still barfing for me on 32bit.
>
> Darn, what config? I built at least one :)
I think I used mpc86xx_defconfig.
> > Putting an #include <asm/paca.h> at the top of setup-common.c fixes it.
>
> Gah, I saw it was coming via somewhere else but decided not to add it,
> wrong decision :)
IMHO, if it's used we should put it in. Otherwise some other random
include file will remove it and break us.
Mikey
More information about the Linuxppc-dev
mailing list