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