All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@domain.hid>
To: Philippe Gerum <rpm@xenomai.org>
Cc: xenomai-core <xenomai@xenomai.org>
Subject: Re: [Xenomai-core] [BUG] trunk: screwed Linux irq state
Date: Mon, 12 Feb 2007 12:49:05 +0100	[thread overview]
Message-ID: <45D05431.10409@domain.hid> (raw)
In-Reply-To: <45CFBE7B.3050906@domain.hid>

[-- Attachment #1: Type: text/plain, Size: 3640 bytes --]

Jan Kiszka wrote:
> 2.6.19 didn't magically start to work as well. Instead I have a back
> trace now, see attachment.
> 
> I included a full set of 16k points, but the thrilling things are around
> -73 to -25: Some Linux process with IRQs on gets preempted by an RT-IRQ
> (RTnet NIC). That triggers an RT kernel thread to run for a while (RTnet
> stack manager, prio 98). But when returning to Linux again, its IRQs
> remain masked now. The reason must be that weird exception at -62. Don't
> know where it comes from and why is there no report about THAT issue in
> the kernel logs.

The cause of this page fault will get tracked down later today, but the
way it is handled already causes some doubts to me. To make discussion
easier, here is the relevant excerpt from the trace:

> :    +func                 -73+   1.426  link_path_walk+0x14 (__link_path_walk+0xca0)
> :|   +func                 -72    0.605  __ipipe_handle_irq+0x14 (common_interrupt+0x18)
> :|   +func                 -71    0.472  __ipipe_ack_irq+0x8 (__ipipe_handle_irq+0xaf)
> :|   +func                 -70    0.224  __ipipe_ack_level_irq+0x12 (__ipipe_ack_irq+0x19)
> :|   +func                 -70+   4.424  mask_and_ack_8259A+0x14 (__ipipe_ack_level_irq+0x22)
> :|   +func                 -66    0.475  __ipipe_dispatch_wired+0x14 (__ipipe_handle_irq+0x62)
> :|  # func                 -65    0.974  xnintr_irq_handler+0xe (__ipipe_dispatch_wired+0x95)
> :|  # func                 -64+   1.892  rtl8139_interrupt+0x11 [rt_8139too] (xnintr_irq_handler+0x3b)
> :|  # func                 -62    0.382  __ipipe_handle_exception+0xe (error_code+0x3e)
> :|  # func                 -62    0.222  __ipipe_test_root+0x8 (__ipipe_handle_exception+0x1a)
> :|  # func                 -62    0.377  __ipipe_stall_root+0x8 (__ipipe_handle_exception+0x15b)
> :|  #*func                 -62    0.173  trace_hardirqs_off+0xc (__ipipe_handle_exception+0x165)
> :|  #*func                 -61    0.211  __ipipe_test_root+0x8 (trace_hardirqs_off+0x2d)
> :|  #*func                 -61+   1.965  do_page_fault+0xe (__ipipe_handle_exception+0x6d)
> :   #*func                 -59    0.180  trace_hardirqs_on+0x11 (__ipipe_handle_exception+0xd9)
> :   #*func                 -59    0.163  __ipipe_test_root+0x8 (trace_hardirqs_on+0x5e)
> :   #*func                 -59    0.396  mark_held_locks+0xe (trace_hardirqs_on+0x8b)
> :   #*func                 -58    0.212  mark_held_locks+0xe (trace_hardirqs_on+0xc9)
> :   #*func                 -58    0.461  __ipipe_restore_root+0x8 (__ipipe_handle_exception+0xe1)
> :   #*func                 -58    0.253  __ipipe_unstall_root+0x8 (__ipipe_restore_root+0x18)
> :   # func                 -57    0.224  __ipipe_stall_root+0x8 (ret_from_exception+0x5)
> :   #*func                 -57    0.366  trace_hardirqs_off+0xc (ret_from_exception+0xe)
> :   #*func                 -57    0.327  __ipipe_test_root+0x8 (trace_hardirqs_off+0x2d)
> :|  #*func                 -57+   2.089  __ipipe_unstall_iret_root+0x8 (restore_nocheck_notrace+0x0)
> :|  #*func                 -54+   1.444  alloc_rtskb+0xa [rtnet] (rtl8139_interrupt+0x182 [rt_8139too])
> :|  #*func                 -53+   1.172  rt_eth_type_trans+0xe [rtnet] (rtl8139_interrupt+0x1d6 [rt_8139too]) 

The fault gets forwarded to Linux because ipipe_trap_notify doesn't
choke: we are neither running over a task with PF_EVNOTIFY set nor over
a kernel thread yet (IPIPE_NOSTACK_FLAG). Still, we are already in
primary domain, so I wonder if this forwarding is intentional. At least
it seems to break some things later on...

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

  reply	other threads:[~2007-02-12 11:49 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-11 22:13 [Xenomai-core] [BUG] trunk: screwed Linux irq state Jan Kiszka
2007-02-11 22:26 ` Gilles Chanteperdrix
2007-02-11 22:31 ` Gilles Chanteperdrix
2007-02-11 22:42 ` Philippe Gerum
2007-02-11 23:07   ` Gilles Chanteperdrix
2007-02-11 23:49     ` Philippe Gerum
2007-02-12  0:20       ` Gilles Chanteperdrix
2007-02-12  0:28         ` Jan Kiszka
2007-02-12  1:10           ` Jan Kiszka
2007-02-12 11:49             ` Jan Kiszka [this message]
2007-02-12 13:16               ` Gilles Chanteperdrix
2007-02-12 13:46                 ` Philippe Gerum
2007-02-12 13:49                   ` Jan Kiszka
2007-02-12 14:10                     ` Philippe Gerum
2007-02-12 14:39                       ` Gilles Chanteperdrix
2007-02-12 15:10                         ` Philippe Gerum
2007-02-12 19:02                           ` 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=45D05431.10409@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.