From: Ingo Molnar <mingo@elte.hu>
To: William Weston <weston@sysex.net>
Cc: "K.R. Foley" <kr@cybsft.com>,
linux-kernel@vger.kernel.org,
"Eugeny S. Mints" <emints@ru.mvista.com>,
Daniel Walker <dwalker@mvista.com>,
linux-ns83820@kvack.org, nhorman@redhat.com,
Jeff Garzik <jgarzik@redhat.com>
Subject: Re: [patch] Real-Time Preemption, -RT-2.6.12-rc6-V0.7.48-00
Date: Tue, 21 Jun 2005 15:10:09 +0200 [thread overview]
Message-ID: <20050621131009.GA22691@elte.hu> (raw)
In-Reply-To: <Pine.LNX.4.58.0506171139570.32721@echo.lysdexia.org>
* William Weston <weston@sysex.net> wrote:
> Fortunately, there were some dumps (all ns83820 tx related) left in
> the logs before the machine locked:
i'm not sure it's related to the lockup - but there is a generic bug in
the driver, which in ns83820_tx_timeout() does:
local_irq_save(flags);
...
CALL do_tx_done()
spin_lock_irq(&dev->tx_lock);
...
spin_unlock_irq(&dev->tx_lock); // [1]
...
local_irq_restore(flags); // [2]
this leads to interrupts being enabled at [1], while the intention was
to enable them at [2]. To solve this bug we can do the tx-locking in
ns83820_tx_timeout(). (local_irq_disable() use in ns83820_tx_timeout()
was probably SMP-unsafe too, but needs a rare race.)
find the patch below - it's also included in the -50-05 -RT tree i just
uploaded. Can you confirm that you dont get the warnings in the -50-05
(and later) -RT kernels?
Ingo
Index: drivers/net/ns83820.c
===================================================================
--- drivers/net/ns83820.c.orig
+++ drivers/net/ns83820.c
@@ -1013,8 +1013,6 @@ static void do_tx_done(struct net_device
struct ns83820 *dev = PRIV(ndev);
u32 cmdsts, tx_done_idx, *desc;
- spin_lock_irq(&dev->tx_lock);
-
dprintk("do_tx_done(%p)\n", ndev);
tx_done_idx = dev->tx_done_idx;
desc = dev->tx_descs + (tx_done_idx * DESC_SIZE);
@@ -1070,7 +1068,6 @@ static void do_tx_done(struct net_device
netif_start_queue(ndev);
netif_wake_queue(ndev);
}
- spin_unlock_irq(&dev->tx_lock);
}
static void ns83820_cleanup_tx(struct ns83820 *dev)
@@ -1371,7 +1368,9 @@ static void ns83820_do_isr(struct net_de
* work has accumulated
*/
if ((ISR_TXDESC | ISR_TXIDLE | ISR_TXOK | ISR_TXERR) & isr) {
+ spin_lock_irq(&dev->tx_lock);
do_tx_done(ndev);
+ spin_unlock_irq(&dev->tx_lock);
/* Disable TxOk if there are no outstanding tx packets.
*/
@@ -1456,7 +1455,7 @@ static void ns83820_tx_timeout(struct ne
u32 tx_done_idx, *desc;
unsigned long flags;
- local_irq_save(flags);
+ spin_lock_irqsave(&dev->tx_lock, flags);
tx_done_idx = dev->tx_done_idx;
desc = dev->tx_descs + (tx_done_idx * DESC_SIZE);
@@ -1483,7 +1482,7 @@ static void ns83820_tx_timeout(struct ne
ndev->name,
tx_done_idx, dev->tx_free_idx, le32_to_cpu(desc[DESC_CMDSTS]));
- local_irq_restore(flags);
+ spin_unlock_irqrestore(&dev->tx_lock, flags);
}
next prev parent reply other threads:[~2005-06-21 13:18 UTC|newest]
Thread overview: 139+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-08 11:28 [patch] Real-Time Preemption, -RT-2.6.12-rc6-V0.7.48-00 Ingo Molnar
2005-06-08 14:18 ` Michal Schmidt
2005-06-08 14:40 ` Keith Owens
2005-06-08 14:41 ` Paulo Marques
2005-06-08 15:04 ` Michal Schmidt
2005-06-08 15:23 ` Keith Owens
2005-06-08 15:56 ` Paulo Marques
2005-06-08 14:32 ` Michal Schmidt
2005-06-08 15:48 ` K.R. Foley
2005-06-08 16:08 ` K.R. Foley
2005-06-08 16:26 ` K.R. Foley
2005-06-08 17:26 ` K.R. Foley
2005-06-08 19:18 ` Ingo Molnar
2005-06-09 11:39 ` Ingo Molnar
2005-06-10 13:34 ` K.R. Foley
2005-06-09 8:47 ` Serge Noiraud
2005-06-09 11:55 ` Ingo Molnar
2005-06-09 15:12 ` Serge Noiraud
2005-06-09 16:34 ` Daniel Walker
2005-06-13 8:53 ` Serge Noiraud
2005-06-13 9:07 ` Ingo Molnar
2005-06-08 17:51 ` Michal Schmidt
2005-06-09 11:45 ` Ingo Molnar
2005-06-09 12:09 ` Michal Schmidt
2005-06-09 12:13 ` Ingo Molnar
2005-06-09 12:48 ` Michal Schmidt
2005-06-10 8:56 ` Esben Nielsen
2005-06-08 19:58 ` Daniel Walker
2005-06-09 21:24 ` Michal Schmidt
2005-06-09 21:34 ` Michal Schmidt
2005-06-11 7:32 ` Ingo Molnar
2005-06-11 8:10 ` Ingo Molnar
2005-06-11 16:35 ` Peter Zijlstra
2005-06-11 18:48 ` Ingo Molnar
2005-06-11 21:14 ` Peter Zijlstra
2005-06-12 1:40 ` Gene Heskett
2005-06-12 6:49 ` Ingo Molnar
2005-06-12 9:02 ` Gene Heskett
2005-06-12 10:35 ` Ingo Molnar
2005-06-12 13:40 ` Gene Heskett
2005-06-12 13:49 ` Ingo Molnar
2005-06-12 14:23 ` Gene Heskett
2005-06-13 2:11 ` Gene Heskett
2005-06-13 6:09 ` Ingo Molnar
2005-06-13 8:37 ` Gene Heskett
2005-06-14 18:24 ` K.R. Foley
2005-06-14 18:54 ` Ingo Molnar
2005-06-14 22:45 ` Daniel Walker
2005-06-15 6:12 ` Ingo Molnar
2005-06-15 9:13 ` Esben Nielsen
2005-06-14 20:37 ` Paul E. McKenney
2005-06-16 3:51 ` K.R. Foley
2005-06-16 7:29 ` Ingo Molnar
2005-06-16 11:22 ` K.R. Foley
2005-06-16 17:32 ` Ingo Molnar
2005-06-16 17:59 ` K.R. Foley
2005-06-16 20:37 ` K.R. Foley
2005-06-17 11:08 ` Ingo Molnar
2005-06-16 20:43 ` Ingo Molnar
2005-06-17 2:06 ` Gene Heskett
2005-06-17 4:53 ` Gene Heskett
2005-06-17 11:18 ` Ingo Molnar
2005-06-17 14:12 ` K.R. Foley
2005-06-17 15:33 ` K.R. Foley
2005-06-17 19:28 ` William Weston
2005-06-17 21:30 ` William Weston
2005-06-18 12:28 ` Ingo Molnar
2005-06-21 1:18 ` William Weston
2005-06-23 2:05 ` William Weston
2005-06-23 7:56 ` Ingo Molnar
2005-06-23 13:45 ` Gene Heskett
2005-06-21 13:10 ` Ingo Molnar [this message]
2005-06-21 19:08 ` William Weston
2005-06-21 20:17 ` Benjamin LaHaise
2005-06-21 20:37 ` William Weston
2005-06-21 20:48 ` Benjamin LaHaise
2005-06-22 2:42 ` Gene Heskett
2005-06-22 7:40 ` Ingo Molnar
2005-06-22 13:27 ` Gene Heskett
2005-06-22 13:51 ` Gene Heskett
2005-06-22 14:08 ` Gene Heskett
2005-06-25 4:41 ` Ingo Molnar
2005-06-25 4:47 ` Ingo Molnar
2005-06-25 5:39 ` Gene Heskett
2005-06-25 7:26 ` Gene Heskett
2005-06-25 9:12 ` Ingo Molnar
2005-06-25 13:19 ` Gene Heskett
2005-06-25 14:39 ` Gene Heskett
2005-06-27 19:01 ` Real-Time Preemption, -RT-2.6.12-final-V0.7.50-24 Chuck Harding
2005-06-27 19:42 ` Chuck Harding
2005-06-27 21:08 ` Gene Heskett
2005-06-27 20:09 ` Daniel Walker
2005-06-27 20:28 ` Chuck Harding
2005-06-28 0:50 ` Daniel Walker
2005-06-28 7:53 ` Steven Rostedt
2005-06-28 8:18 ` Ingo Molnar
2005-06-28 8:34 ` Steven Rostedt
2005-06-28 9:12 ` Ingo Molnar
2005-06-28 15:26 ` Michal Schmidt
2005-06-28 15:31 ` Ingo Molnar
2005-06-28 18:50 ` Chuck Harding
2005-06-28 22:16 ` Chuck Harding
2005-06-29 0:32 ` Chuck Harding
2005-06-28 15:54 ` Daniel Walker
2005-06-21 13:12 ` [patch] Real-Time Preemption, -RT-2.6.12-rc6-V0.7.48-00 Ingo Molnar
[not found] ` <Pine.LNX.4.58.0506211228210.16701@echo.lysdexia.org>
2005-06-22 8:03 ` Ingo Molnar
2005-06-22 8:24 ` Ingo Molnar
2005-06-22 10:08 ` Ingo Molnar
2005-06-22 21:53 ` William Weston
2005-06-22 22:00 ` Ingo Molnar
2005-06-22 23:06 ` William Weston
2005-06-23 0:10 ` Ingo Molnar
2005-06-23 22:11 ` William Weston
2005-06-24 1:46 ` William Weston
2005-06-24 7:06 ` Ingo Molnar
2005-06-24 22:31 ` William Weston
2005-06-25 4:14 ` Ingo Molnar
2005-06-27 4:21 ` William Weston
2005-06-27 8:15 ` Ingo Molnar
2005-06-28 3:32 ` William Weston
2005-06-28 8:10 ` Ingo Molnar
2005-06-28 11:15 ` Ingo Molnar
[not found] ` <Pine.LNX.4.58.0506281745040.10406@echo.lysdexia.org>
2005-06-29 12:54 ` Ingo Molnar
2005-06-30 0:29 ` William Weston
2005-06-27 5:43 ` Gene Heskett
2005-06-27 8:17 ` Ingo Molnar
2005-06-27 17:29 ` Gene Heskett
2005-06-27 19:54 ` Ingo Molnar
2005-06-27 21:17 ` Gene Heskett
2005-06-28 8:28 ` Ingo Molnar
-- strict thread matches above, loose matches on Subject: below --
2005-06-08 14:02 kus Kusche Klaus
2005-06-08 14:14 ` Thomas Gleixner
2005-06-08 15:49 ` Daniel Walker
2005-06-08 15:50 ` Ingo Molnar
2005-06-08 16:23 ` Thomas Gleixner
2005-06-08 17:29 ` Daniel Walker
2005-06-08 19:24 ` Ingo Molnar
2005-06-12 9:29 Zoltan Boszormenyi
2005-06-12 10:39 ` Ingo Molnar
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=20050621131009.GA22691@elte.hu \
--to=mingo@elte.hu \
--cc=dwalker@mvista.com \
--cc=emints@ru.mvista.com \
--cc=jgarzik@redhat.com \
--cc=kr@cybsft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-ns83820@kvack.org \
--cc=nhorman@redhat.com \
--cc=weston@sysex.net \
/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