From: Philippe Gerum <rpm@xenomai.org>
To: Jan Kiszka <jan.kiszka@domain.hid>
Cc: adeos-main <adeos-main@gna.org>, RTnet-users@domain.hid
Subject: Re: [Adeos-main] [RTnet-users] e1000 & MSI
Date: Thu, 14 Aug 2008 09:41:55 +0200 [thread overview]
Message-ID: <48A3E1C3.20309@domain.hid> (raw)
In-Reply-To: <48A3D595.9040607@domain.hid>
Jan Kiszka wrote:
> Jan Kiszka wrote:
>> Jan Kiszka wrote:
>>> Bernhard Pfund wrote:
>>>> Jan Kiszka wrote:
>>>>> Please post the oops. Also include the Adeos patch version you are using
>>>>> for this.
>>>>>
>>>>> Jan
>>>>>
>>>> Hi Jan
>>>>
>>>> Eventually I found the call that is responsible for the mess. It's
>>>> basically not in the rt_e1000 driver when loaded, but the ioctl sent by
>>>> rtifconfig (ifonfig of RTnet) when trying to activate the NIC. I enabled
>>>> i-pipe debugging in the kernel and got the following. I also posted the
>>>> trace to the RTAI list, but maybe you've seen something similar before?
>>> That's good that you forwarded it as this is an Adeos issue, not an RTAI
>>> thing. Added the related list.
>>>
>>>> Bernhard
>>>>
>>>> Adeos is RTAI's hal-linux-2.6.26-x86-2.0-09.patch
>>> OK.
>>>
>>>> I-pipe: Domain RTAI registered.
>>>> RTAI[hal]: <magma> mounted over IPIPE-NOTHREADS 2.0-09.
>>>> RTAI[hal]: compiled with gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7).
>>>> RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs VECTORED),
>>>> ISOL_CPUS_MASK: e).
>>>> PIPELINE layers:
>>>> f8936600 9ac15d93 RTAI 200
>>>> c0737540 0 Linux 100
>>>> RTAI[malloc]: global heap size = 4194304 bytes, <BSD>.
>>>> RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>,
>>>> kstacks pool size = 1048576 bytes.
>>>> RTAI[sched]: hard timer type/freq = APIC/16666663(Hz); default timing:
>>>> periodic; linear timed lists.
>>>> RTAI[sched]: Linux timer freq = 1000 (Hz), CPU freq = 2400046000 hz.
>>>> RTAI[sched]: timer setup = 999 ns, resched latency = 0 ns.
>>>> RTAI[usi]: enabled.
>>>> RTAI[rtai_msgq]: loaded.
>>>> RTAI[mq]: loaded.
>>>> RTDM started.
>>>>
>>>> *** RTnet 0.9.11 - built on Aug 13 2008 22:31:19 ***
>>>>
>>>> RTnet: initialising real-time networking
>>>> Intel(R) PRO/1000 Network Driver - version 7.1.9
>>>> Copyright (c) 1999-2006 Intel Corporation.
>>>> ACPI: PCI Interrupt Link [APC8] enabled at IRQ 16
>>>> ACPI: PCI Interrupt 0000:03:00.0[A] -> Link [APC8] -> GSI 16 (level,
>>>> low) -> IRQ 16
>>>> PCI: Setting latency timer of device 0000:03:00.0 to 64
>>>> e1000: 0000:03:00.0: e1000_probe: (PCI Express:2.5Gb/s:Width x1)
>>>> 00:1b:21:1e:56:64
>>>> RTnet: registered rteth0
>>>> e1000: rteth0: e1000_probe: Intel(R) PRO/1000 Network Connection
>>>> I-pipe: Detected illicit call from domain 'RTAI'
>>>> into a service reserved for domain 'Linux' and below.
>>>> Pid: 0, comm: swapper Not tainted 2.6.26.2-FuCS #3
>>>> [<c0156866>] ipipe_check_context+0xd6/0xf0
>>>> [<c03e202e>] <6>e1000: rteth0: e1000_watchdog: NIC Link is Up 1000 Mbps
>>>> Full Duplex
>>>> _spin_lock_irqsave+0x1e/0x80
>>>> [<c024a7a6>] pci_bus_read_config_word+0x36/0x80
>>>> [<c024c29e>] __pci_bus_find_cap_start+0x1e/0x50
>>>> [<c024c7f4>] pci_find_capability+0x24/0x50
>>>> [<c0254132>] msi_set_enable+0x22/0x80
>>>> [<c01176f3>] ? mcount+0x1f/0x23
>>>> [<c025444f>] msi_set_mask_bits+0xcf/0xe0
>>>> [<c01176f3>] ? mcount+0x1f/0x23
>>>> [<c02546f7>] unmask_msi_irq+0x17/0x30
>>>> [<c01542da>] default_enable+0x1a/0x30
>>>> [<f892f1ee>] rt_enable_irq+0xe/0x10 [rtai_hal]
>>>> [<f8dabd99>] ? xnintr_irq_handler+0x149/0x1f0 [rtai_rtdm]
>>>> [<f893164b>] rtai_hirq_dispatcher+0xfb/0x430 [rtai_hal]
>>>> [<c01021c5>] default_idle+0x45/0x60
>>>> [<c0102180>] default_idle+0x0/0x60
>>>> [<c0103cc7>] common_interrupt+0x2f/0x54
>>>> [<c0102180>] default_idle+0x0/0x60
>>>> [<c01500d8>] cgroup_file_write+0x118/0x140
>>>> [<c01021c5>] default_idle+0x45/0x60
>>>> [<c0101b76>] cpu_idle+0x86/0x140
>>>> [<c03dd7bd>] start_secondary+0x16d/0x210
>>>> [<c03d3a48>] initialize_secondary+0x8/0x20
>>>> =======================
>>>> I-pipe tracer log (100 points):
>>>> | +*func 0 ipipe_trace_panic_freeze+0x9
>>>> (ipipe_check_context+0x94)
>>>> | +*func 0 find_next_bit+0xa (__next_cpu+0x1a)
>>>> | +*func 0 __next_cpu+0x9 (ipipe_check_context+0x88)
>>>> | +*func 0 find_next_bit+0xa (__next_cpu+0x1a)
>>>> | +*func 0 __next_cpu+0x9 (ipipe_check_context+0x88)
>>>> | +*func 0 find_next_bit+0xa (__next_cpu+0x1a)
>>>> | +*func 0 __next_cpu+0x9 (ipipe_check_context+0x88)
>>>> | +*func 0 find_next_bit+0xa (__next_cpu+0x1a)
>>>> | +*func 0 __next_cpu+0x9 (ipipe_check_context+0x88)
>>>> | +*func 0 find_first_bit+0xa (__first_cpu+0x12)
>>>> | +*func -1 __first_cpu+0x8
>>>> (ipipe_check_context+0x66)
>>>> | +*func -1 ipipe_check_context+0x14
>>>> (_spin_lock_irqsave+0x1e)
>>>> | +*func -1 _spin_lock_irqsave+0x12
>>>> (pci_bus_read_config_word+0x36)
>>>> | +*func -1 pci_bus_read_config_word+0x14
>>>> (__pci_bus_find_cap_start+0x1e)
>>>> | +*func -1 __pci_bus_find_cap_start+0xc
>>>> (pci_find_capability+0x24)
>>>> | +*func -1 pci_find_capability+0x11
>>>> (msi_set_enable+0x22)
>>>> | +*func -1 msi_set_enable+0x14
>>>> (msi_set_mask_bits+0xcf)
>>>> | +*func -1 msi_set_mask_bits+0xe
>>>> (unmask_msi_irq+0x17)
>>>> | +*func -1 unmask_msi_irq+0x9 (default_enable+0x1a)
>>> I think to remember a similar issue biting the preempt-rt patch, and
>>> that resulted in some activity to cache that capability information. /me
>>> needs to dig into the archives, will let you know if I find something
>>> (tomorrow, likely).
>> Found it. Could you give this patch a try and report the result?
>>
>> http://permalink.gmane.org/gmane.linux.kernel/682362
>>
>> If it's ok, I guess we should include it in ipipe until someone (From
>> -rt) manages to get it accepted upstream (I didn't recall much activity
>> in this direction yet, though).
>
> Not true, the patch is in 2.6.27-rcX.
>
> But there is also
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=ce6fce4295ba727b36fdc73040e444bd1aae64cd
> which makes me wonder, for 2.6.27, if that may generate cases where
> masking MSI interrupts will not work as expected for ipipe (Linux should
> catch masked IRQs internally). However, future problems...
>
At the very least, this will affect the code relying on the I-pipe. The I-pipe
machinery itself should be fine as long as MSI interrupts are edge, which seems
to be the point in not relying on the MSI_ENABLE bit for devices that don't
support any INT disable bit. We have hw interrupts off from the MSI interrupt
receipt to the point where it has been marked as pending and possibly dispatched
to the domains, then the stall bit should handle any recursion properly.
However, having IRQ chip controller handlers not enforcing the requested
operation (i.e. masking) in the MSI case may clearly be a problem with respect
to explicit *_disable_irq() calls issued from Adeos clients, though. We should
probably emulate the IRQ_DISABLED flag with the I-pipe's per-IRQ lock bit for them.
> Jan
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Adeos-main mailing list
> Adeos-main@domain.hid
> https://mail.gna.org/listinfo/adeos-main
--
Philippe.
next prev parent reply other threads:[~2008-08-14 7:41 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20080812075358.4cg1ix9945msccsc@domain.hid>
[not found] ` <48A12EA8.4070601@domain.hid>
[not found] ` <48A34D75.9090509@domain.hid>
2008-08-13 22:01 ` [Adeos-main] [RTnet-users] e1000 & MSI Jan Kiszka
2008-08-14 6:34 ` Jan Kiszka
2008-08-14 6:49 ` Jan Kiszka
2008-08-14 7:41 ` Philippe Gerum [this message]
2008-08-14 10:53 ` bernhard
2008-08-14 13:38 ` Philippe Gerum
2008-08-14 15:25 ` Gilles Chanteperdrix
2008-08-14 15:34 ` Bernhard Pfund
2008-08-14 15:52 ` Gilles Chanteperdrix
2008-08-14 16:57 ` Philippe Gerum
2008-08-16 11:24 ` Bernhard Pfund
2008-08-19 10:17 ` Philippe Gerum
2008-08-19 10:31 ` bernhard
2008-08-19 14:18 ` Philippe Gerum
2008-08-19 20:53 ` Bernhard Pfund
2008-08-20 9:38 ` Philippe Gerum
2008-08-25 12:16 ` bernhard
2008-08-25 12:58 ` Jan Kiszka
2008-08-25 13:48 ` bernhard
2008-08-25 14:15 ` Philippe Gerum
2008-08-14 17:35 ` Jan Kiszka
2008-08-14 17:55 ` Philippe Gerum
2008-08-14 18:21 ` Philippe Gerum
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=48A3E1C3.20309@domain.hid \
--to=rpm@xenomai.org \
--cc=RTnet-users@domain.hid \
--cc=adeos-main@gna.org \
--cc=jan.kiszka@domain.hid \
/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.