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/