kernel ported from ELDK 3.0 hangs (loops in idled()) on my custom MPC870 Board
Randy Vinson
rvinson at mvista.com
Tue Jun 7 04:48:32 EST 2005
Edward Hong wrote:
>
> Yes. rest_init() got called and executed kernel_thread(init,...) ...
> and got into cpu_idle().
Hi Edward,
I've seen these symptoms before. The problem was traced to external
interrupts being disabled (MSR[EE] not set). Without external
interrupts, there is no decrementer interrupt (at least on 7xx
processors). Without the decrementer, there in no system clock tick and
without the clock tick, the scheduler won't run which means that the
init task won't start. To verify that this is the problem, use mfmsr()
to get the MSR and print it. I'd suggest that you add something like:
printk("MSR = %x\n", mfmsr());
to rest_init just before call to cpu_idle. Or you can use:
if (irqs_disabled()) printk(....
if you don't want to decode the MSR yourself.
Randy Vinson
More information about the Linuxppc-embedded
mailing list