Re: L4Linux stop at "Calibrating delay loop ..."

Adam Lackorzynski <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
On Fri Sep 30, 2016 at 22:06:47 +0800, li94575 wrote:
> At 2016-09-23 05:31:52, "Adam Lackorzynski" <[email protected]> wrote:
> >
> >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.
> >
> I have to admit that there may be a problem with the configuration of
> the generic timer, but I donot know where the problem. Before this,
> the generic timer can run well with fiasco.oc-r56+genode+l4linux3.9, I
> do not make any changes and move the bsp codefor this newer fiasco
> version.I replace generic timer with Aptimer, then l4linux can run
> well. So, If I want to assign anAptimer for each CPU, is there any
> ready-made case for reference?

Do you have others timers for each CPU? Maybe better (as easier), use
one timer and distribute the timer tick to other CPUs: There's a
timer_tick-broadcast and it is used in 3 BSPs. Does this help?



Adam
-- 
Adam                 [email protected]
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.