From: Jan Kiszka <jan.kiszka@domain.hid>
To: rpm@xenomai.org
Cc: xenomai@xenomai.org
Subject: Re: Rép. : Re: [Xenomai-help] Switch mode with x86
Date: Mon, 04 Dec 2006 09:13:10 +0100 [thread overview]
Message-ID: <4573D896.9050200@domain.hid> (raw)
In-Reply-To: <1165188655.4952.457.camel@domain.hid>
[-- Attachment #1: Type: text/plain, Size: 8302 bytes --]
Philippe Gerum wrote:
> On Sun, 2006-12-03 at 22:09 +0100, Jan Kiszka wrote:
>> Philippe Gerum wrote:
>>> On Sun, 2006-12-03 at 20:32 +0100, Jan Kiszka wrote:
>>>> Nicolas BLANCHARD wrote:
>>>>>>>>> "Nicolas BLANCHARD" <n.blanchard@domain.hid> 29.11 11:25 >>>
>>>>>> Hello,
>>>>>>
>>>>>> I've tested wiith Xenomai 2.3-rc2 (adeos 1.5-02)
>>>>>> and change the config :
>>>>>> - CONFIG_M586
>>>>>> - disable CONFIG_INPUT_PCSPKR
>>>>> (it was on module)
>>>>>> - disable prio boosting (check
>>>>> CONFIG_XENO_OPT_RPDISALBLE)
>>>>>> and it seems to work better, one hour without blocking, it's a record
>>>>>> for me.
>>>>>>
>>>>>> So, i will investigate to find which modification improve my problem.
>>>>> After somes tests (kernel compil), it seems that prio boost is
>>>>> responsable of my
>>>>> problem. When it's disable (kernel option checked) my program run
>>>>> correctly.
>>>> Confirmed!
>>>>
>>>> root@domain.hid :/root# cat /proc/xenomai/sched
>>>> CPU PID PRI PERIOD TIMEOUT STAT NAME
>>>> 0 0 99 0 0 R ROOT
>>>> 0 837 99 9999312 0 X TASK1
>>>> 0 838 0 10999998 0 R TASK2
>>>>
>>>> So far "only" on real hardware (P-I 133) with CONFIG_M586 and (this is
>>>> likely also very important) CONFIG_PREEMPT. I'm now about to check if I
>>>> can migrate this problem into qemu and/or capture it with the I-pipe tracer.
>>>>
>>> Please also try moving task2 to the SCHED_FIFO class to see if things
>>> evolve.
>>>
>> Here is the Xenomai scheduling sequence that leads to the deadlock. I
>> raised the frequency of TASK2 a bit, and this seems to accelerate the
>> lock-up.
>>
>> ...
>>> :| *+[ 844] TASK2 1 -5061+ 4.436 xnpod_resume_thread+0x48 (gatekeeper_thread+0xf7)
>>> :| *+[ 827] sshd -1 -5055+ 4.015 xnpod_schedule_runnable+0x45 (gatekeeper_thread+0x12e)
>
> Damnit. What about this?
>
> --- ksrc/nucleus/shadow.c~ 2006-11-19 11:09:00.000000000 +0100
> +++ ksrc/nucleus/shadow.c 2006-12-04 00:29:13.000000000 +0100
> @@ -551,9 +551,6 @@
> thread->sched = xnpod_sched_slot(cpu);
> #endif /* CONFIG_SMP */
> xnpod_resume_thread(thread, XNRELAX);
> -#ifndef CONFIG_XENO_OPT_RPIDISABLE
> - xnpod_renice_root(XNPOD_ROOT_PRIO_BASE);
> -#endif /* CONFIG_XENO_OPT_RPIDISABLE */
> #ifdef CONFIG_XENO_OPT_ISHIELD
> disengage_irq_shield();
> #endif /* CONFIG_XENO_OPT_ISHIELD */
>
Stalls on relaxing TASK1:
CPU PID PRI PERIOD TIMEOUT STAT NAME
0 0 99 0 0 R ROOT
0 831 99 10000000 0 R TASK1
0 832 1 11000000 0 R TASK2
My excerpt may have suggested a priority adjustment bug, but there is
non. When TASK2 is resumed, the currently running root thread still has
prio -1, all correct.
But here is the full trace of the problematic path:
> :| # [ 844] TASK2 1 -2992+ 9.954 xnpod_resume_thread+0x48 (xnthread_periodic_handler+0x28)
> :| # func -2982+ 3.368 xnpod_schedule+0xe (xnintr_irq_handler+0xec)
> :| # [ 75] gatekee -1 -2978! 13.759 xnpod_schedule+0x81 (xnintr_irq_handler+0xec)
> :| # func -2965+ 2.285 __switch_to+0xb (xnpod_schedule+0x6ce)
> :| # func -2962+ 7.879 debug_smp_processor_id+0x9 (__switch_to+0x1e)
> :| # [ 844] TASK2 1 -2955+ 7.842 xnpod_schedule+0x7a2 (xnpod_suspend_thread+0x1e4)
> :| # func -2947! 39.947 __ipipe_restore_pipeline_head+0x8 (xnpod_wait_thread_period+0x1a8)
> : + func -2907+ 2.406 __ipipe_syscall_root+0x9 (system_call+0x20)
> : + func -2904+ 2.857 __ipipe_dispatch_event+0xe (__ipipe_syscall_root+0x73)
> : + func -2902+ 4.375 hisyscall_event+0xe (__ipipe_dispatch_event+0x82)
> : + func -2897+ 2.225 xnshadow_relax+0xe (hisyscall_event+0x1ed)
> : + func -2895+ 2.330 schedule_linux_call+0xe (xnshadow_relax+0x7d)
> :| # func -2893+ 2.962 __ipipe_restore_pipeline_head+0x8 (schedule_linux_call+0xaf)
> : + func -2890+ 2.323 rthal_apc_schedule+0x8 (schedule_linux_call+0xb9)
> : + func -2887+ 3.511 __ipipe_schedule_irq+0xa (rthal_apc_schedule+0x31)
> :| + func -2884+ 2.240 __ipipe_handle_irq+0xe (common_interrupt+0x18)
> :| + func -2882+ 1.639 __ipipe_ack_common_irq+0xa (__ipipe_handle_irq+0x80)
> :| + func -2880+ 2.067 ipipe_test_and_stall_pipeline_from+0x8 (__ipipe_ack_common_irq+0x16)
> :| # func -2878+ 2.879 mask_and_ack_8259A+0xb (__ipipe_ack_common_irq+0x3e)
> :| + func -2875+ 2.812 __ipipe_dispatch_wired+0xe (__ipipe_handle_irq+0x8a)
> :| # func -2872+ 1.759 xnintr_clock_handler+0x8 (__ipipe_dispatch_wired+0x7d)
> :| # func -2870+ 1.969 xnintr_irq_handler+0xe (xnintr_clock_handler+0x17)
> :| # func -2868+ 1.864 xnpod_announce_tick+0x8 (xnintr_irq_handler+0x39)
> :| # func -2867+ 3.052 xntimer_do_tick_aperiodic+0xe (xnpod_announce_tick+0xf)
> :| # func -2863+ 2.511 xnthread_periodic_handler+0x8 (xntimer_do_tick_aperiodic+0x7b)
> :| # func -2861+ 2.789 xnpod_resume_thread+0xe (xnthread_periodic_handler+0x28)
> :| # [ 843] TASK1 99 -2858+ 7.977 xnpod_resume_thread+0x48 (xnthread_periodic_handler+0x28)
> :| # func -2850+ 2.270 xnpod_schedule+0xe (xnintr_irq_handler+0xec)
> :| # [ 844] TASK2 1 -2848+ 8.466 xnpod_schedule+0x81 (xnintr_irq_handler+0xec)
> :| # func -2839+ 1.751 __switch_to+0xb (xnpod_schedule+0x6ce)
> :| # func -2838+ 6.593 debug_smp_processor_id+0x9 (__switch_to+0x1e)
> :| # [ 843] TASK1 99 -2831+ 4.421 xnpod_schedule+0x7a2 (xnpod_suspend_thread+0x1e4)
> :| # func -2827! 17.894 __ipipe_restore_pipeline_head+0x8 (xnpod_wait_thread_period+0x1a8)
> : + func -2809+ 2.360 __ipipe_syscall_root+0x9 (system_call+0x20)
> : + func -2806+ 2.210 __ipipe_dispatch_event+0xe (__ipipe_syscall_root+0x73)
> : + func -2804+ 3.458 hisyscall_event+0xe (__ipipe_dispatch_event+0x82)
> : + func -2801+ 2.421 xnshadow_relax+0xe (hisyscall_event+0x1ed)
> : + func -2798+ 2.691 schedule_linux_call+0xe (xnshadow_relax+0x7d)
> :| # func -2796+ 1.984 __ipipe_restore_pipeline_head+0x8 (schedule_linux_call+0xaf)
> : + func -2794+ 2.631 rthal_apc_schedule+0x8 (schedule_linux_call+0xb9)
> :| # func -2791+ 2.180 xnpod_schedule_runnable+0xe (xnshadow_relax+0xd9)
> :| # [ 843] TASK1 99 -2789+ 4.315 xnpod_schedule_runnable+0x45 (xnshadow_relax+0xd9)
> :| # func -2785+ 5.593 xnpod_suspend_thread+0xe (xnshadow_relax+0x104)
> :| # func -2779+ 2.045 xnpod_schedule+0xe (xnpod_suspend_thread+0x1e4)
> :| # [ 843] TASK1 99 -2777+ 6.932 xnpod_schedule+0x81 (xnpod_suspend_thread+0x1e4)
> :| # func -2770+ 2.368 __switch_to+0xb (xnpod_schedule+0x6ce)
> :| # func -2768+ 5.736 debug_smp_processor_id+0x9 (__switch_to+0x1e)
> :| # [ 827] sshd 99 -2762+ 4.917 xnpod_schedule+0x7a2 (xnintr_irq_handler+0xec)
> :| +func -2757+ 3.744 __ipipe_walk_pipeline+0xe (__ipipe_handle_irq+0x182)
> :| +func -2753+ 2.135 __ipipe_unstall_iret_root+0x8 (restore_raw+0x0)
> : +func -2751+ 2.360 tcp_cong_avoid+0xa (tcp_ack+0x14d3)
> : +func -2749+ 5.909 bictcp_cong_avoid+0xb (tcp_cong_avoid+0x1b)
> : +func -2743+ 2.496 __kfree_skb+0xa (tcp_rcv_established+0x109)
This indicates that we face an I-pipe bug: the scheduled Linux call on
relaxation of TASK2 and then later TASK1 somehow gets lost (there is no
rthal_apc_handler in the remaining trace).
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 249 bytes --]
next prev parent reply other threads:[~2006-12-04 8:13 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-29 12:19 Rép. : Re: [Xenomai-help] Switch mode with x86 Nicolas BLANCHARD
2006-12-03 19:32 ` Jan Kiszka
2006-12-03 19:59 ` Philippe Gerum
2006-12-03 20:10 ` Jan Kiszka
2006-12-03 21:09 ` Jan Kiszka
2006-12-03 23:30 ` Philippe Gerum
2006-12-04 8:13 ` Jan Kiszka [this message]
2006-12-04 21:06 ` Jan Kiszka
2006-12-05 22:17 ` Philippe Gerum
2006-12-06 8:37 ` Jan Kiszka
2006-12-06 9:06 ` Philippe Gerum
2006-12-05 22:18 ` Philippe Gerum
2006-12-04 9:46 ` Gilles Chanteperdrix
2006-12-03 21:02 ` Philippe Gerum
[not found] <s575af89.064@domain.hid>
2006-12-05 17:15 ` Jan Kiszka
-- strict thread matches above, loose matches on Subject: below --
2006-12-05 12:33 Nicolas BLANCHARD
[not found] <s56d88c0.000@domain.hid>
2006-11-29 13:52 ` Jan Kiszka
2006-11-29 10:25 Nicolas BLANCHARD
[not found] <s56c97a4.096@domain.hid>
2006-11-28 20:27 ` Jan Kiszka
2006-11-28 19:09 Nicolas BLANCHARD
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=4573D896.9050200@domain.hid \
--to=jan.kiszka@domain.hid \
--cc=rpm@xenomai.org \
--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.