[U-Boot-Users] problem about booting kenrel

Ralph Siemsen rsiemsen at rossvideo.com
Fri Sep 10 14:25:03 CEST 2004


刘勇 wrote:
> my cpu is 440gx and my board is OCOTEA.
> 
> (1)now i use bootm 0x400000, at the same time,
> i set bootargs into console=ttyS0,15200n8 or console=ttySICC,15200n8,

That's not a valid serial speed... try 115200 (you are missing a zero).
On Ocotea the ttyS0 port is correct to use.

> (2)i use ppc_md.progress as my print function.i find after kernel maps io 
> address with ioremap64() and visit the address, kernel die.
> .......
> when the 440gx goes into simple_strtoull, it never returns.

This is probably an indirect result of a bug present in 
arch/ppc/kernel/head_44x.S where temporary TLB mappings are created for 
early serial debugging.  Check around line 214, inside an #ifdef 
CONFIG_SERIAL_TEXT_DEBUG section... there are two mappings created:

     li      r0,1                    /* TLB slot 1 */

     tlbwe   r3,r0,PPC44x_TLB_PAGEID /* Load the pageid fields */
     tlbwe   r4,r0,PPC44x_TLB_XLAT   /* Load the translation fields*/
     tlbwe   r5,r0,PPC44x_TLB_ATTRIB /* Load the attrib/access fields */

     ori     r3,r3,PPC44x_TLB_TS     /* Translation state 1 */

     li      r0,2                    /* TLB slot 2 */

     tlbwe   r3,r0,PPC44x_TLB_PAGEID /* Load the pageid fields */
     tlbwe   r4,r0,PPC44x_TLB_XLAT   /* Load the translation fields */
     tlbwe   r5,r0,PPC44x_TLB_ATTRIB /* Load the attrib/access fields */

     /* Force context change */
     isync

The second "li" instruction is shown correctly above, but you will 
probably find in your source that it reads the same as the first one.
In that case, the first attempt to use this TLB (which happens when 
serial operation is done) will cause a fault hang the system.

This is fixed in the current BK linux source tree.

Note you can also turn off CONFIG_SERIAL_TEXT_DEBUG to avoid the problem.

-Ralph




More information about the U-Boot mailing list