[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