Subject: Re: [PATCH] do firmware feature fixups after features are initialised

From: Benjamin Herrenschmidt <[email-masked]>
Date: Wed, 11 Jul 2007 20:28:10 +1000

On Fri, 2007-06-08 at 14:00 +1000, Michael Neuling wrote:
> On pSeries the firmware features are not setup until ppc_md.init_early,
> so we can't do the firmware feature sections fixups till after this.
> 
> Currently firmware feature sections is only used on iSeries which inits
> the firmware features much earlier.  This is a bug in waiting on
> pSeries. 
> 
> Signed-off-by: Michael Neuling <[email-masked]>
> ---
> paulus: since we aren't hitting this currently, it can wait for 2.6.23. 

This patch will cause the kernel to blow up at boot on various machines,
I'm surprised we haven't hit that already.

The problem is that we can't service SLB miss on a !iseries machine if
CONFIG_PPC_ISERIES is set, before the fixup occurs. (Some iseries code
in there will not have been nop'ed out and SRR0 will be loaded with
crap).

Thus we die when unflattening the device-tree on some machines.

There are two possibly solutions I see in the long run:

 - We could set the FW features earlier on pseries, though that is a bit
annoying because that means doing it before the device-tree is
unflattened.

 - We could constraint lmb_alloc to the first segment until the FW fixup
occurs, either within lmb_alloc itself, or fixup the callers such as
unflatten_device_tree, to pass an explicit limit.

What do you think ?

Ben.