Booting hangs after "Calibrating delay loop..."

Autran, Guillaume gautran at mrv.com
Thu Nov 24 03:39:05 EST 2005


Hi,

I remember there is some race condition before calling set_dec(..) in time.c
Basically, what happens is that the external decrementer is set way before
the interrupt gets enabled. When we get to enable the interrupt, the
decrementer value already reached 0 and wrapped arround (at least in our
case). 
The fix was to comment the line in:
arch/ppc/kernel/time.c:330: set_dec(tb_ticks_per_jiffy);

And move it to:
arch/ppc/syslib/m8xx_setup.c
inside m8xx_calibrate_decr() just before setting up the interrupt for the
decrementer.

In time.c, you may also need to initialize stamp = get_native_tbl(); as this
variable may not have been initialized since you are using an external
decrementer.

Try that...

Guillaume.



More information about the Linuxppc-embedded mailing list