From: Johann Obermayr <johann.obermayr@sigmatek.at>
To: xenomai@xenomai.org
Subject: Re: [Xenomai] usage of rtdm_task_sleep_abs
Date: Mon, 13 Jul 2015 18:58:14 +0200 [thread overview]
Message-ID: <55A3EE26.5070802@sigmatek.at> (raw)
In-Reply-To: <e5d48b6984cbc1b098062b303b56b0db.squirrel@sourcetrek.com>
Am 13.07.2015 um 17:24 schrieb Gilles Chanteperdrix:
> Johann Obermayr wrote:
>> without your application, there are no large latencies.
>> with your application see frozen.txt (with latency -f)
> I am confused. You mean "our application", not "your application", right?
> lrtdrv_monitoring_irq is not part of the code delivered by the Xenomai
> project.
>
>> We see the problem only if one task (background) is accessing the SRAM
>> on your PCI-Card. if we stop this task, all is ok.
> Again: the Xenomai project does not make PCI-card. So, you probably mean
> "our PCI-Card"?
yes, our PCI-Card. (sorry for my bad english)
>> So we have a higher prior task (pci-locker), that interrupt the
>> background task, so that the pci bus get free.
> I am not sure I understand your explanations. But the trace is pretty clear:
>
> At time -658 the timer is programmed to tick at -561.
>
>> :| # event tick@-561 -658 0.112 xntimer_next_local_shot+0xca
>
>> :| + func -651 0.145 lrtdrv_monitoring_irq+0x4
>> [sigmatek_lrt] (irq_hook_handler+0x32 [sigmatek_lrt])
>> :| + end 0x000000ef -651! 641.640 apic_timer_interrupt+0x52
>> (<102d0254>)
> But at that point the tick is delayed for 600us. And according to the
> trace, the last traced function called before that delay is the function
>
> ltdrv_monitoring_irq.
>
> So, I do not know what this irq is doing, but I would suggest having a
> close look at it.
>
>
hello,
i have disable our lrtdrv_monitoring_irq.
Only have this callback
static void irq_hook_handler(unsigned int irq, unsigned int state)
{
if (fpga_interrupt == irq && state == 0x01)
{
time_fpga_irq = rt_timer_tsc();
}
}
same latency
regards
Johann
-------------- next part --------------
I-pipe frozen back-tracing service on 3.10.0/ipipe release #1
------------------------------------------------------------
CPU: 0, Freeze: 897546816952 cycles, Trace Points: 100 (+10)
Calibrated minimum trace-point overhead: 0.078 us
+----- Hard IRQs ('|': locked)
|+-- Xenomai
||+- Linux ('*': domain stalled, '+': current, '#': current+stalled)
||| +---------- Delay flag ('+': > 1 us, '!': > 10 us)
||| | +- NMI noise ('N')
||| | |
Type User Val. Time Delay Function (Parent)
:| # func -700 0.222 measureIdleTime+0x9 [sigmatek_lrt] (taskSwitchXenomai+0x9a [sigmatek_lrt])
:| # func -700 0.163 xntimer_get_overruns+0x8 (xnpod_wait_thread_period+0x93)
:| # func -700 0.136 __ipipe_restore_head+0x4 (ipipe_restore_pipeline_head+0x42)
:| + end 0x80000000 -699 0.188 hard_local_irq_enable+0x16 (__ipipe_restore_head+0x66)
:| + begin 0x80000001 -699 0.173 hard_local_irq_save+0x16 (__ipipe_notify_syscall+0x6b)
:| + end 0x80000001 -699 0.144 hard_local_irq_restore+0x15 (__ipipe_notify_syscall+0xad)
:| + begin 0x80000000 -699 0.161 hard_local_irq_disable+0x17 (__ipipe_syscall_root+0x38)
:| + end 0x80000000 -699 0.311 __ipipe_syscall_root+0x70 (sysenter_past_esp+0x5b)
: + func -698 0.118 __ipipe_syscall_root+0x5 (sysenter_past_esp+0x5b)
: + func -698 0.120 __ipipe_notify_syscall+0x9 (__ipipe_syscall_root+0x31)
:| + begin 0x80000001 -698 0.188 hard_local_irq_save+0x16 (__ipipe_notify_syscall+0x18)
:| + end 0x80000001 -698 0.126 hard_local_irq_restore+0x15 (__ipipe_notify_syscall+0x59)
: + func -698 0.120 ipipe_syscall_hook+0x7 (__ipipe_notify_syscall+0x64)
:| + begin 0x80000001 -698 0.145 hard_local_irq_save+0x16 (ipipe_syscall_hook+0x1b)
:| + end 0x80000001 -698 0.126 hard_local_irq_restore+0x15 (ipipe_syscall_hook+0x5b)
: + func -698 0.127 hisyscall_event+0x9 (ipipe_syscall_hook+0x6b)
: + func -697 0.114 __rt_task_wait_period+0x5 (hisyscall_event+0x129)
: + func -697 0.118 rt_task_wait_period+0x4 (__rt_task_wait_period+0x14)
: + func -697 0.123 xnpod_wait_thread_period+0x9 (rt_task_wait_period+0x44)
:| + begin 0x80000000 -697 0.166 hard_local_irq_disable+0x15 (__xnlock_get_irqsave.constprop.43+0x9)
:| # func -697 0.145 xnpod_suspend_thread+0x9 (xnpod_wait_thread_period+0x6c)
:| # func -697 0.167 __xnpod_schedule+0x9 (xnpod_schedule+0x32)
:| # [ 613] -<?>- 99 -697 0.117 __xnpod_schedule+0x58 (xnpod_schedule+0x32)
:| # func -696 0.291 xnsched_pick_next+0x5 (__xnpod_schedule+0xa5)
:| # func -696 0.270 __switch_to+0x9 (__xnpod_schedule+0x3b8)
:| # [ 603] cyclic: 30 -696 0.273 __xnpod_schedule+0x431 (xnpod_schedule+0x32)
:| # func -696 0.118 xnpod_fire_callouts+0x7 (__xnpod_schedule+0x4b4)
:| # func -695 0.117 taskSwitchXenomai+0x9 [sigmatek_lrt] (xnpod_fire_callouts+0x4c)
:| # func -695 0.135 measureIdleTime+0x9 [sigmatek_lrt] (taskSwitchXenomai+0x9a [sigmatek_lrt])
:| # func -695 0.279 xnarch_tsc_to_ns+0x6 (measureIdleTime+0xae [sigmatek_lrt])
:| +func -695 0.200 __ipipe_do_sync_pipeline+0x4 (__ipipe_dispatch_irq+0x1c1)
:| +func -695 0.163 irq_hook_handler+0x3 [sigmatek_lrt] (__ipipe_handle_irq+0x10e)
:| +end 0x000000ef -695! 682.112 apic_timer_interrupt+0x52 (<102d0251>)
:| +begin 0x000000ef -12 0.145 apic_timer_interrupt+0x3a (<10139c1a>)
:| +func -12 0.158 __ipipe_handle_irq+0x7 (apic_timer_interrupt+0x41)
:| +func -12 0.114 irq_hook_handler+0x3 [sigmatek_lrt] (__ipipe_handle_irq+0xc4)
:| +func -12 0.117 __ipipe_dispatch_irq+0x9 (__ipipe_handle_irq+0xce)
:| +func -12 0.132 __ipipe_ack_hrtimer_irq+0x6 (__ipipe_dispatch_irq+0xa9)
:| +func -12 0.145 lapic_itimer_ack+0x3 (__ipipe_ack_hrtimer_irq+0x59)
:| +func -12 0.170 irq_hook_handler+0x3 [sigmatek_lrt] (__ipipe_dispatch_irq+0x118)
:| # func -11 0.114 irq_hook_handler+0x3 [sigmatek_lrt] (__ipipe_dispatch_irq+0x172)
:| # func -11 0.216 xnintr_clock_handler+0x9 (__ipipe_dispatch_irq+0x182)
:| # func -11 0.149 xntimer_tick_aperiodic+0x9 (xnintr_clock_handler+0xb9)
:| # func -11 0.115 xnthread_periodic_handler+0x3 (xntimer_tick_aperiodic+0xa0)
:| # func -11 0.136 xnpod_resume_thread+0x9 (xnthread_periodic_handler+0x20)
:| # [ 613] -<?>- 99 -11 0.273 xnpod_resume_thread+0x39 (xnthread_periodic_handler+0x20)
:| # func -10 0.135 xntimer_next_local_shot+0x9 (xntimer_tick_aperiodic+0x177)
:| # event tick@-5 -10 0.112 xntimer_next_local_shot+0xca (xntimer_tick_aperiodic+0x177)
:| # func -10 0.133 ipipe_timer_set+0x5 (xntimer_next_local_shot+0xd1)
:| # func -10 0.253 lapic_next_deadline+0x5 (ipipe_timer_set+0x67)
:| # func -10 0.176 __xnpod_schedule+0x9 (xnpod_schedule+0x32)
:| # [ 603] cyclic: 30 -10 0.120 __xnpod_schedule+0x58 (xnpod_schedule+0x32)
:| # func -10 0.135 xnsched_pick_next+0x5 (__xnpod_schedule+0xa5)
:| # func -9 0.366 __ipipe_notify_vm_preemption+0x4 (__xnpod_schedule+0x141)
:| # func -9 0.302 __switch_to+0x9 (__xnpod_schedule+0x3b8)
:| # [ 613] -<?>- 99 -9 0.195 __xnpod_schedule+0x431 (xnpod_schedule+0x32)
:| # func -9 0.121 xnpod_fire_callouts+0x7 (__xnpod_schedule+0x4b4)
:| # func -8 0.144 taskSwitchXenomai+0x9 [sigmatek_lrt] (xnpod_fire_callouts+0x4c)
:| # func -8 0.221 measureIdleTime+0x9 [sigmatek_lrt] (taskSwitchXenomai+0x9a [sigmatek_lrt])
:| # func -8 0.237 xntimer_get_overruns+0x8 (xnpod_wait_thread_period+0x93)
:| # func -8 0.149 __ipipe_restore_head+0x4 (ipipe_restore_pipeline_head+0x42)
:| + end 0x80000000 -8 0.194 hard_local_irq_enable+0x16 (__ipipe_restore_head+0x66)
:| + begin 0x80000001 -7 0.182 hard_local_irq_save+0x16 (__ipipe_notify_syscall+0x6b)
:| + end 0x80000001 -7 0.158 hard_local_irq_restore+0x15 (__ipipe_notify_syscall+0xad)
:| + begin 0x80000000 -7 0.160 hard_local_irq_disable+0x17 (__ipipe_syscall_root+0x38)
:| + end 0x80000000 -7+ 1.064 __ipipe_syscall_root+0x70 (sysenter_past_esp+0x5b)
: + func -6 0.126 __ipipe_syscall_root+0x5 (sysenter_past_esp+0x5b)
: + func -6 0.130 __ipipe_notify_syscall+0x9 (__ipipe_syscall_root+0x31)
:| + begin 0x80000001 -6 0.187 hard_local_irq_save+0x16 (__ipipe_notify_syscall+0x18)
:| + end 0x80000001 -5 0.127 hard_local_irq_restore+0x15 (__ipipe_notify_syscall+0x59)
: + func -5 0.120 ipipe_syscall_hook+0x7 (__ipipe_notify_syscall+0x64)
:| + begin 0x80000001 -5 0.145 hard_local_irq_save+0x16 (ipipe_syscall_hook+0x1b)
:| + end 0x80000001 -5 0.126 hard_local_irq_restore+0x15 (ipipe_syscall_hook+0x5b)
: + func -5 0.288 hisyscall_event+0x9 (ipipe_syscall_hook+0x6b)
: + func -5 0.242 xnshadow_sys_trace+0x6 (hisyscall_event+0x129)
: + func -4 0.368 ipipe_trace_frozen_reset+0x5 (xnshadow_sys_trace+0x5e)
:| + begin 0x000000ef -4 0.155 apic_timer_interrupt+0x3a (__ipipe_global_path_lock+0x0)
:| + func -4 0.160 __ipipe_handle_irq+0x7 (apic_timer_interrupt+0x41)
:| + func -4 0.117 irq_hook_handler+0x3 [sigmatek_lrt] (__ipipe_handle_irq+0xc4)
:| + func -4 0.117 __ipipe_dispatch_irq+0x9 (__ipipe_handle_irq+0xce)
:| + func -3 0.138 __ipipe_ack_hrtimer_irq+0x6 (__ipipe_dispatch_irq+0xa9)
:| + func -3 0.141 lapic_itimer_ack+0x3 (__ipipe_ack_hrtimer_irq+0x59)
:| + func -3 0.154 irq_hook_handler+0x3 [sigmatek_lrt] (__ipipe_dispatch_irq+0x118)
:| # func -3 0.126 irq_hook_handler+0x3 [sigmatek_lrt] (__ipipe_dispatch_irq+0x172)
:| # func -3 0.234 xnintr_clock_handler+0x9 (__ipipe_dispatch_irq+0x182)
:| # func -3 0.559 __xnlock_spin+0x4 (__xnlock_get+0x2b)
:| # func -2 0.136 xntimer_tick_aperiodic+0x9 (xnintr_clock_handler+0xb9)
:| # func -2 0.176 xnthread_periodic_handler+0x3 (xntimer_tick_aperiodic+0xa0)
:| # func -2 0.136 xntimer_next_local_shot+0x9 (xntimer_tick_aperiodic+0x177)
:| # event tick@94 -2 0.112 xntimer_next_local_shot+0xca (xntimer_tick_aperiodic+0x177)
:| # func -2 0.133 ipipe_timer_set+0x5 (xntimer_next_local_shot+0xd1)
:| # func -1 0.356 lapic_next_deadline+0x5 (ipipe_timer_set+0x67)
:| + func -1 0.144 irq_hook_handler+0x3 [sigmatek_lrt] (__ipipe_handle_irq+0x10e)
:| + end 0x000000ef -1 0.201 apic_timer_interrupt+0x52 (__ipipe_global_path_lock+0x0)
: + func -1 0.132 __ipipe_global_path_lock+0x7 (ipipe_trace_frozen_reset+0x14)
: + func -1 0.136 __ipipe_spin_lock_irqsave+0x6 (__ipipe_global_path_lock+0x16)
:| + begin 0x80000001 0 0.657 hard_local_irq_save+0x16 (__ipipe_spin_lock_irqsave+0x12)
:| # func 0 0.148 __ipipe_spin_unlock_irqcomplete+0x4 (__ipipe_global_path_unlock+0x5f)
:| + end 0x80000001 0 0.166 hard_local_irq_restore+0x15 (__ipipe_spin_unlock_irqcomplete+0x25)
< + freeze 0x00091117 0 0.179 xnshadow_sys_trace+0x67 (hisyscall_event+0x129)
| + begin 0x80000001 0 0.187 hard_local_irq_save+0x16 (__ipipe_notify_syscall+0x6b)
| + end 0x80000001 0 0.149 hard_local_irq_restore+0x15 (__ipipe_notify_syscall+0xad)
| + begin 0x80000000 0 0.170 hard_local_irq_disable+0x17 (__ipipe_syscall_root+0x38)
| + end 0x80000000 0 0.218 __ipipe_syscall_root+0x70 (sysenter_past_esp+0x5b)
+ func 0 0.130 __ipipe_syscall_root+0x5 (sysenter_past_esp+0x5b)
+ func 1 0.132 __ipipe_notify_syscall+0x9 (__ipipe_syscall_root+0x31)
| + begin 0x80000001 1 0.176 hard_local_irq_save+0x16 (__ipipe_notify_syscall+0x18)
| + end 0x80000001 1 0.126 hard_local_irq_restore+0x15 (__ipipe_notify_syscall+0x59)
+ func 1 0.138 ipipe_syscall_hook+0x7 (__ipipe_notify_syscall+0x64)
| + begin 0x80000001 1 0.000 hard_local_irq_save+0x16 (ipipe_syscall_hook+0x1b)
next prev parent reply other threads:[~2015-07-13 16:58 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-09 12:15 [Xenomai] usage of rtdm_task_sleep_abs Johann Obermayr
2015-07-09 14:19 ` Gilles Chanteperdrix
2015-07-09 15:43 ` Johann Obermayr
2015-07-09 15:51 ` Gilles Chanteperdrix
2015-07-10 9:34 ` Johann Obermayr
2015-07-10 9:46 ` Gilles Chanteperdrix
2015-07-10 10:43 ` Johann Obermayr
2015-07-10 10:49 ` Gilles Chanteperdrix
2015-07-13 13:41 ` Johann Obermayr
2015-07-13 14:02 ` Gilles Chanteperdrix
2015-07-13 14:56 ` Johann Obermayr
2015-07-13 15:24 ` Gilles Chanteperdrix
2015-07-13 16:58 ` Johann Obermayr [this message]
2015-07-13 17:21 ` Gilles Chanteperdrix
2015-07-13 17:26 ` Johann Obermayr
2015-07-13 19:58 ` Gilles Chanteperdrix
2015-07-13 20:23 ` Johann Obermayr
2015-07-13 20:31 ` Gilles Chanteperdrix
2015-07-13 20:45 ` Johann Obermayr
2015-07-13 20:54 ` Gilles Chanteperdrix
2015-07-13 21:30 ` Johann Obermayr
2015-07-13 21:58 ` Johann Obermayr
2015-07-13 22:39 ` Gilles Chanteperdrix
2015-07-13 23:30 ` Johann Obermayr
2015-07-14 0:02 ` Gilles Chanteperdrix
2015-07-15 21:00 ` Johann Obermayr
2015-07-15 21:21 ` [Xenomai] ipipe trace Johann Obermayr
2015-07-16 6:30 ` [Xenomai] usage of rtdm_task_sleep_abs Gilles Chanteperdrix
2015-07-16 11:46 ` Johann Obermayr
2015-07-17 5:25 ` Gilles Chanteperdrix
2015-07-13 20:35 ` Gilles Chanteperdrix
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55A3EE26.5070802@sigmatek.at \
--to=johann.obermayr@sigmatek.at \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.