On 03/07/2012 07:13 PM, Roberto Bielli wrote:
> Hi Gilles,
> this is the trace and the test.
> It seems that '__ipipe_dispatch_event' last about ~84 milliseconds with
> disable interrupts.
Sorry, I somehow missed this post.
I am afraid you are mis-reading the trace. The time spent in user-space
gets accounted to __ipipe_dispatch_event, because this is the last
instrumented function called before the return to user-space. Interrupts
are disabled at this point, this is perfectly normal, but they are
probably re-enabled when returning to user-space.
What is more problematic, however, is that the timer interrupt did not
tick at -83749 like it is supposed to. If it had ticked and the
interrupt had been disabled in user-space, you would have taken the
interrupt at -35, when __ipipe_syscall_root gets called with interrupts on.
So, now, you have to understand why the timer interrupt did not tick. I
suggest, when the problem happens, you look at:
* the interrupt controller register, to see if the timer interrupt is
still masked, if it is masked, then try first commenting out the snippet
in arch/arm/plat-mxc/avic.c which declares mxc_mask_irq as the
* the timer registers, to see if the timer was programmed correctly, and
is still ticking when the issue happens.
Xenomai-core mailing list