From: Ingo Molnar <mingo@elte.hu>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Marcin ??lusarz <marcin.slusarz@gmail.com>,
Jarek Poplawski <jarkao2@o2.pl>,
Jean-Baptiste Vignaud <vignaud@xandmail.fr>,
linux-kernel <linux-kernel@vger.kernel.org>,
shemminger <shemminger@linux-foundation.org>,
linux-net <linux-net@vger.kernel.org>,
netdev <netdev@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: 2.6.20->2.6.21 - networking dies after random time
Date: Tue, 24 Jul 2007 22:04:31 +0200 [thread overview]
Message-ID: <20070724200431.GA22190@elte.hu> (raw)
In-Reply-To: <alpine.LFD.0.999.0707241228291.3607@woody.linux-foundation.org>
* Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Tue, 24 Jul 2007, Ingo Molnar wrote:
> >
> > please try the patch below instead.
>
> I'm hoping this is just a "let's see if the behavior changes" patch,
> not something that you think should be applied if it fixes something?
>
> This patch looks like it is trying to paper over (rather than fix)
> some possible bug in the "->disable" logic. Makes sense as a "let's
> see if it's that" kind of thing, but not as a "let's fix it".
>
> Or am I missing something?
yeah - it's a totaly bad and unacceptable hack (i realized how bad it
was when i wrote up that comment section ...), i just wanted to see
which portion of ne2k/lib8390.c is sensitive to the fact whether an irq
line is masked or not. The patch has no SOB line either.
the current best fix forward is to undo my original change, unless we
find a better fix for this problem. (Note that the other patches posted
in this thread are broken too: they only mask the irq but dont reliably
unmask it.)
here's the current method of handling irqs for Marcin's card:
17: 12 IO-APIC-fasteoi eth1, eth0
and fasteoi is a really simple sequence: no masking/unmasking by the
flow handler itself but a NOP at entry and an APIC-EOI at the end. The
disable/enable irq thing should thus have minimal effect if done within
an irq handler.
now ne2k does something uncommon: for xmit (which is normally done
outside of irq handlers) it will disable_irq_nosync()/enable_irq() the
interrupt. It does it to exclude the handler from _that_ CPU, but due to
the _nosync it does not exclude it from any other CPUs. So that's a bit
weird already.
just in case, i've just re-checked all the genirq bits that change
IRQ_DISABLED (that bit accidentally clear would be the only way to truly
allow an IRQ handler to interrupt the disable_irq_nosync() critical
section on that CPU) - but i can see no way for that to happen: we
unconditionally detect and report unbalanced and underflowing
irq_desc->depth, and the only other place (besides enable_irq()) that
clears IRQ_DISABLED is __set_irq_handler(), and on x86 that is only used
during bootup.
Marcin, could you try the patch below too? [without having any other
patch applied.] It basically turns the critical section into an irqs-off
critical section and thus checks whether your problem is related to that
particular area of code.
Ingo
Index: linux/drivers/net/lib8390.c
===================================================================
--- linux.orig/drivers/net/lib8390.c
+++ linux/drivers/net/lib8390.c
@@ -297,9 +297,7 @@ static int ei_start_xmit(struct sk_buff
* Slow phase with lock held.
*/
- disable_irq_nosync_lockdep_irqsave(dev->irq, &flags);
-
- spin_lock(&ei_local->page_lock);
+ spin_lock_irqsave(&ei_local->page_lock, flags);
ei_local->irqlock = 1;
@@ -376,8 +374,7 @@ static int ei_start_xmit(struct sk_buff
ei_local->irqlock = 0;
ei_outb_p(ENISR_ALL, e8390_base + EN0_IMR);
- spin_unlock(&ei_local->page_lock);
- enable_irq_lockdep_irqrestore(dev->irq, &flags);
+ spin_unlock_irqrestore(&ei_local->page_lock, flags);
dev_kfree_skb (skb);
ei_local->stat.tx_bytes += send_length;
next prev parent reply other threads:[~2007-07-24 20:04 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-29 8:50 2.6.20->2.6.21 - networking dies after random time Jean-Baptiste Vignaud
2007-06-29 15:07 ` Jarek Poplawski
2007-07-23 5:44 ` Marcin Ślusarz
2007-07-23 8:53 ` Jarek Poplawski
2007-07-24 7:18 ` Jarek Poplawski
2007-07-24 8:05 ` Ingo Molnar
2007-07-24 9:42 ` Ingo Molnar
2007-07-24 19:30 ` Linus Torvalds
2007-07-24 20:04 ` Ingo Molnar [this message]
2007-07-25 0:19 ` Thomas Gleixner
2007-07-25 7:23 ` Jarek Poplawski
2007-07-25 13:57 ` Jarek Poplawski
2007-07-25 14:46 ` Alan Cox
2007-07-26 12:44 ` [PATCH][netdrvr] lib8390: comment on locking by Alan Cox " Jarek Poplawski
2007-07-26 12:47 ` Alan Cox
2007-07-30 19:47 ` Jeff Garzik
2007-07-30 8:46 ` Ingo Molnar
2007-07-30 13:05 ` Alan Cox
2007-07-26 7:16 ` Marcin Ślusarz
2007-07-26 8:13 ` Jarek Poplawski
2007-07-26 8:10 ` Thomas Gleixner
2007-07-26 8:31 ` Ingo Molnar
2007-07-26 8:55 ` Jarek Poplawski
2007-07-26 9:12 ` Ingo Molnar
2007-07-30 7:29 ` Marcin Ślusarz
2007-07-30 8:49 ` Ingo Molnar
2007-08-01 7:24 ` Marcin Ślusarz
2007-08-01 7:27 ` Ingo Molnar
2007-08-06 6:58 ` Marcin Ślusarz
2007-07-31 13:20 ` Jarek Poplawski
2007-08-06 7:00 ` Marcin Ślusarz
2007-08-06 7:03 ` Ingo Molnar
2007-08-06 17:43 ` Chuck Ebbert
2007-08-06 19:08 ` Ingo Molnar
2007-08-09 14:50 ` [RFC] " Jarek Poplawski
[not found] ` <p738x8kg0dp.fsf@bingen.suse.de>
2007-08-09 15:30 ` Jarek Poplawski
2007-08-07 10:09 ` Jarek Poplawski
2007-08-07 7:46 ` Marcin Ślusarz
2007-08-07 8:23 ` Jarek Poplawski
[not found] ` <4bacf17f0708070237w19d184b3p7f74b53612edb9a6@mail.gmail.com>
2007-08-07 9:52 ` Jarek Poplawski
2007-08-07 12:13 ` Jarek Poplawski
2007-08-07 12:55 ` Jarek Poplawski
2007-08-08 11:11 ` Marcin Ślusarz
2007-08-08 11:09 ` Marcin Ślusarz
2007-08-08 11:42 ` Jarek Poplawski
2007-08-08 11:53 ` Jarek Poplawski
2007-08-09 9:19 ` [patch (testing)] " Jarek Poplawski
[not found] ` <4bacf17f0708092333n17e0ba19jf2c769531610868d@mail.gmail.com>
2007-08-10 7:10 ` Jarek Poplawski
2007-08-10 10:43 ` Marcin Ślusarz
2007-08-10 11:37 ` Jarek Poplawski
2007-07-31 15:58 ` [patch] genirq: temporary fix for level-triggered IRQ resend Ingo Molnar
2007-07-31 16:00 ` Ingo Molnar
2007-08-08 11:00 ` Jarek Poplawski
2007-08-02 17:03 ` Gabriel C
2007-08-02 20:11 ` Ingo Molnar
2007-08-03 6:07 ` [patch] genirq: fix simple and fasteoi irq handlers Jarek Poplawski
2007-08-03 8:04 ` Ingo Molnar
2007-08-03 8:46 ` Ingo Molnar
2007-08-03 9:10 ` Jarek Poplawski
2007-08-03 11:57 ` Marcin Ślusarz
2007-08-03 12:26 ` Jarek Poplawski
2007-08-06 7:05 ` Marcin Ślusarz
2007-08-06 6:07 ` [patch (take 2)] " Jarek Poplawski
2007-08-06 6:14 ` Ingo Molnar
2007-08-06 7:07 ` Marcin Ślusarz
2007-08-06 7:19 ` Jarek Poplawski
2007-07-26 9:11 ` 2.6.20->2.6.21 - networking dies after random time Jarek Poplawski
2007-07-26 8:19 ` Jarek Poplawski
2007-07-26 8:16 ` Ingo Molnar
-- strict thread matches above, loose matches on Subject: below --
2007-08-08 8:59 Jean-Baptiste Vignaud
2007-08-08 9:30 ` Jarek Poplawski
2007-08-08 12:16 ` Jarek Poplawski
2007-08-07 17:16 Jean-Baptiste Vignaud
2007-08-08 7:21 ` Jarek Poplawski
2007-08-08 7:36 ` Jarek Poplawski
2007-08-07 9:21 Jean-Baptiste Vignaud
2007-08-07 9:44 ` Jarek Poplawski
2007-08-07 8:10 Jean-Baptiste Vignaud
2007-08-07 9:05 ` Jarek Poplawski
2007-08-06 20:42 Jean-Baptiste Vignaud
2007-08-06 21:19 ` Chuck Ebbert
2007-08-07 7:26 ` Jarek Poplawski
2007-08-06 21:30 ` Al Boldi
2007-08-06 19:36 Jean-Baptiste Vignaud
2007-06-26 14:24 Jean-Baptiste Vignaud
2007-06-27 10:17 ` Jarek Poplawski
[not found] <4bacf17f0706161435g1bb7c08bpd427901f64d57fa@mail.gmail.com>
2007-06-18 11:08 ` Jarek Poplawski
2007-06-18 15:10 ` Stephen Hemminger
2007-06-19 5:27 ` Jarek Poplawski
2007-06-19 5:50 ` Jarek Poplawski
2007-06-22 8:56 ` Marcin Ślusarz
2007-06-22 13:32 ` Jarek Poplawski
[not found] ` <4bacf17f0706252310w155fc4d7v1bf12319a650559a@mail.gmail.com>
2007-06-26 8:08 ` Jarek Poplawski
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=20070724200431.GA22190@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@linux-foundation.org \
--cc=jarkao2@o2.pl \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-net@vger.kernel.org \
--cc=marcin.slusarz@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=shemminger@linux-foundation.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=vignaud@xandmail.fr \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).