Subject: Re: [PATCH] powerpc: Use more accurate limit for first segment memory allocations

From: Michael Ellerman <[email-masked]>
Date: Tue, 11 May 2010 23:24:50 +1000

On Tue, 2010-05-11 at 14:59 +1000, Anton Blanchard wrote:
> Author: Milton Miller <[email-masked]>
> 
> On large machines we are running out of room below 256MB. In some cases we
> only need to ensure the allocation is in the first segment, which may be
> 256MB or 1TB.
> 
> Add slb0_limit and use it to specify the upper limit for the irqstack and
> emergency stacks.
> 
> On a large ppc64 box, this fixes a panic at boot when the crashkernel=
> option is specified (previously we would run out of memory below 256MB).
> 
> Signed-off-by: Milton Miller <[email-masked]>
> Signed-off-by: Anton Blanchard <[email-masked]>
> ---
> 
> Some things we should add:
> 
> - Specify a more intelligent limit for BookE
> - The allocation of the PACAs should use this limit too

We access the PACA from real mode?

> Index: linux-2.6/arch/powerpc/kernel/setup_64.c
> ===================================================================
> --- linux-2.6.orig/arch/powerpc/kernel/setup_64.c	2010-04-22 17:23:42.000000000 +1000
> +++ linux-2.6/arch/powerpc/kernel/setup_64.c	2010-04-30 09:46:15.000000000 +1000
> @@ -424,9 +424,18 @@ void __init setup_system(void)
>  	DBG(" <- setup_system()\n");
>  }
>  
> +static u64 slb0_limit(void)
> +{
> +	if (cpu_has_feature(CPU_FTR_1T_SEGMENT)) {
> +		return 1UL << SID_SHIFT_1T;
> +	}
> +	return 1UL << SID_SHIFT;
> +}

I take it there's no chance the CPU feature is there but we're using 256
for whatever reason?

cheers