L4Linux stop at "Calibrating delay loop ..."
adam at os.inf.tu-dresden.de
Thu Sep 22 23:31:52 CEST 2016
On Thu Sep 22, 2016 at 22:32:28 +0800, li94575 wrote:
> Hi, adam
> >On Mon Sep 19, 2016 at 22:55:52 +0800, li94575 wrote:
> >> I compiled the l4re-snapshot-2014092821 with the default modules.list, and everything seems goes
> >> well. However, L4Linux would stop at "Calibrating delay loop ...", because the value of jiffies did not change.
> >> Timer thread has not generate soft interrupt? If I entered jdb via ESC at this time, and quit via "g", then
> >> l4linux can run again. It makes me confused so much.
> >> Any help or suggestion will be very welcome.
> >This behavior typically indicates that there's an issue with Fiasco's
> >timer interrupt or with the user-level one in L4Linux.
> >For a start you could add e.g. a printk(".\n") in timer_thread in
> >arch/l4/kernel/timer.c to see if it really does something.
> >Does 'hello' work?
> >Although it's a bit of work you could also compare the code of your
> >snapshot and a recent one if there's any significant change (i.e. fix)
> >that might be relevant. Check arch/l4/kernel/timer.c
> >and src/kern/arm/timer-arm-generic.cpp and
> >src/kern/arm/generic_timer.cpp in the Fiasco kernel.
> 'Hello' can work well, which prints "Hello World!" circularly. I add
> printk(".\n") in timer_thread in arch/l4/kernel/timer.c, and found
> timer_thread stop at l4_ipc_reply_and_wait(u, t, &l, to)
> afterinitializing the variable ¡®increment¡¯.
printk and any other Linux functionaliy cannot be used in this function
because the timer_thread isn't run in a Linux context. It's run in an L4
thread next to Linux. (Sorry for my mistake of writing printk above, I
actually really meant to write LOG_printf.)
> However, if I use
> LOG_printf() for printing, the phenomenon is different, that
> timer_thread trigers a soft interrupt once. I have checked
> src/kern/arm/timer-arm-generic.cpp and src/kern/arm/generic_timer.cpp
> in the Fiasco kernel, there is less likely to be a problem with them.
So there's still a problem somewhere. Do you think you could try with a
more recent L4Re version? I remember vaguely that I might have already
seen this behavior but this would be long ago.
Adam adam at os.inf.tu-dresden.de
More information about the l4-hackers