[U-Boot] U-Boot configuration and latter Linux MMU init failures

Jerry Van Baren gerald.vanbaren at ge.com
Wed Sep 24 14:23:00 CEST 2008


Remi Lefevre wrote:
> Hi,
> 
> From your experience, can some incomplete/incorrect U-Boot configuration
> lead to MMU init failures inside Linux ?
> 
> Particularly, my Linux kernel fails during the first Data Cache Block Store
> instruction (dcbst) of the MMU init and I ask myself if this cannot be linked
> to my cache initialization inside U-Boot (HID0 for my MPC8270 board).
> 
> See http://ozlabs.org/pipermail/linuxppc-embedded/2008-September/031398.html
> for more details.
> 
> Regards,
> Rémi

Hi Rémi,

I don't have much advice, sorry.

The linux MMU setup code is the #1 most delicate operation in starting 
linux.  It is extremely easy to get something wrong and extremely hard 
to debug (as you found out).

Questions that may help:
1) Are you enabling dcache? icache? in u-boot?
2) Does linux boot if you don't enable dcache/icache?
3) (really 1a) How are you setting up and/or using cache that is 
different from other 82xx boards?
4) (really 1b?) How are you using DBATs (and IBATs)?  Is it compatible 
with linux's start up code?  Is linux changing your DBATs, for instance, 
causing memory (un)mapping side effects?  IIRC (been a while, may have 
changed), linux uses 3 of the 4 DBATs during start up.

Interestingly enough, dcbst is a *data* cache store, run in the *icache* 
flush routine.  I assume this is intended to flush out any instructions 
that are stuck in the dcache due to writes (self modifying code and/or 
loaded/copied code).  I would *speculate* that the address of the stuff 
in your dcache no longer points to valid memory.

HTH,
gvb


More information about the U-Boot mailing list