public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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);
 }
 

  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