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