2009/11/1 Ralf Baechle <ralf@xxxxxxxxxxxxxx>: > On Thu, Oct 29, 2009 at 07:51:52AM +0800, wilbur.chan wrote: > When something like this happens it is in most cases caused by timer > interrupt not working. > > Ralf > Today , I found that , the code never enter the do_timer function. As a matter of fact, I'm testing kexec on mips64 smp. In the end of the first kernel , I' ve used local_irq_disable and jumped directly into second kernel. However it hang at calibrate_delay. In a normal booting on mips64, I found that , do_timer was invoked after console_init. Here is my dump_stack of do_timer, in a successfully booting log: 0:Call Trace: 0:[ <834243cc>]0: dump_stack+0x8/0x34 0:[ <83451ee0>]0: do_timer+0x70/0xa8 0:[ <8342333c>]0: timer_interrupt+0x64/0x160 0:[ <834234b4>]0: ll_timer_interrupt+0x7c/0xd8 0:[ <8341d220>]0: ret_from_irq+0x0/0x4 0:[ <83443a64>]0: release_console_sem+0x1e0/0x328 0:[ <8377cf88>]0: serial8250_console_init+0x1c/0x2c 0:[ <8377ae58>]0: console_init+0x4c/0x6c 0:[ <83762dd8>]0: start_kernel+0x3e0/0x75c So, I thought that , it might be release_console_sem being failed in my second kernel of kexec when booting, but I don't know why