From: Grant Grundler <grundler@parisc-linux.org>
To: Jeff Garzik <jgarzik@pobox.com>
Cc: Grant Grundler <grundler@parisc-linux.org>,
Andrew Morton <akpm@osdl.org>,
netdev@vger.kernel.org, Val Henson <val.henson@gmail.com>
Subject: Re: PATCH 2.6.17-rc5 tulip free_irq() called too late
Date: Thu, 8 Jun 2006 11:01:20 -0600 [thread overview]
Message-ID: <20060608170120.GI8246@colo.lackof.org> (raw)
In-Reply-To: <44883778.8000209@pobox.com>
On Thu, Jun 08, 2006 at 10:43:04AM -0400, Jeff Garzik wrote:
...
> Perhaps cp_close() in 8139cp.c could be an example of a good ordering?
> It stops the chip, syncs irqs, frees irq, then frees [thus unmapping]
> the rings.
Here is a new patch that moves free_irq() into tulip_down().
The resulting code is structured the same as cp_close().
While I believe the code is correct, I'm not real happy
that tulip_up() and tulip_down() don't both deal with IRQs.
(ie not symetrical). Oh well, I can submit another patch
for that if Val doesn't want to wrangle that herself.
This is compile tested only.
I'll drop it on ia64/parisc servers later and retest.
thanks,
grant
Index: drivers/net/tulip/tulip_core.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/net/tulip/tulip_core.c,v
retrieving revision 1.35
diff -u -p -r1.35 tulip_core.c
--- drivers/net/tulip/tulip_core.c 23 Apr 2006 15:18:28 -0000 1.35
+++ drivers/net/tulip/tulip_core.c 8 Jun 2006 16:25:43 -0000
@@ -18,11 +18,11 @@
#define DRV_NAME "tulip"
#ifdef CONFIG_TULIP_NAPI
-#define DRV_VERSION "1.1.13-NAPI" /* Keep at least for test */
+#define DRV_VERSION "1.1.14-NAPI" /* Keep at least for test */
#else
-#define DRV_VERSION "1.1.13"
+#define DRV_VERSION "1.1.14"
#endif
-#define DRV_RELDATE "December 15, 2004"
+#define DRV_RELDATE "May 6, 2006"
#include <linux/module.h>
@@ -743,6 +745,11 @@ static void tulip_down (struct net_devic
/* Stop the Tx and Rx processes. */
tulip_stop_rxtx(tp);
+ spin_unlock_irqrestore (&tp->lock, flags);
+
+ synchronize_irq(dev->irq);
+ free_irq (dev->irq, dev);
+
/* prepare receive buffers */
tulip_refill_rx(dev);
@@ -752,7 +759,6 @@ static void tulip_down (struct net_devic
if (ioread32 (ioaddr + CSR6) != 0xffffffff)
tp->stats.rx_missed_errors += ioread32 (ioaddr + CSR8) & 0xffff;
- spin_unlock_irqrestore (&tp->lock, flags);
init_timer(&tp->timer);
tp->timer.data = (unsigned long)dev;
@@ -774,14 +780,13 @@ static int tulip_close (struct net_devic
int i;
netif_stop_queue (dev);
tulip_down (dev);
if (tulip_debug > 1)
printk (KERN_DEBUG "%s: Shutting down ethercard, status was %2.2x.\n",
dev->name, ioread32 (ioaddr + CSR5));
- free_irq (dev->irq, dev);
/* Free all the skbuffs in the Rx queue. */
for (i = 0; i < RX_RING_SIZE; i++) {
@@ -1750,7 +1757,6 @@ static int tulip_suspend (struct pci_dev
tulip_down(dev);
netif_device_detach(dev);
- free_irq(dev->irq, dev);
pci_save_state(pdev);
pci_disable_device(pdev);
next prev parent reply other threads:[~2006-06-08 17:01 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-31 19:52 PATCH 2.6.17-rc5 tulip free_irq() called too late Grant Grundler
2006-06-08 14:43 ` Jeff Garzik
2006-06-08 15:22 ` Grant Grundler
2006-06-08 15:32 ` Grant Grundler
2006-06-08 15:38 ` Jeff Garzik
2006-06-08 15:47 ` Grant Grundler
2006-06-08 15:32 ` Jeff Garzik
2006-06-08 15:36 ` Grant Grundler
2006-06-08 17:01 ` Grant Grundler [this message]
2006-06-13 23:55 ` PATCHv3 " Grant Grundler
2006-06-14 0:06 ` Valerie Henson
2006-06-14 0:33 ` Jeff Garzik
2006-06-14 4:44 ` Grant Grundler
2006-06-14 13:05 ` Kyle McMartin
2006-06-14 14:54 ` Grant Grundler
2006-06-14 15:03 ` Jeff Garzik
2006-06-14 18:14 ` Grant Grundler
2006-06-14 19:51 ` Jeff Garzik
2006-06-14 22:25 ` Grant Grundler
2006-06-14 20:47 ` Francois Romieu
2006-06-14 22:30 ` Grant Grundler
2006-06-15 20:30 ` Francois Romieu
2006-06-16 5:47 ` Grant Grundler
2006-06-16 7:32 ` Jeff Garzik
2006-06-16 15:25 ` Grant Grundler
[not found] ` <20060616152400.GA7868@colo.lackof.org>
[not found] ` <4492CE98.50900@pobox.com>
2006-06-16 16:06 ` Grant Grundler
2006-06-16 16:16 ` Jeff Garzik
2006-06-22 0:43 ` Valerie Henson
2006-06-23 5:00 ` Grant Grundler
2006-06-26 22:31 ` [PATCH] Fix tulip shutdown DMA/irq race Valerie Henson
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=20060608170120.GI8246@colo.lackof.org \
--to=grundler@parisc-linux.org \
--cc=akpm@osdl.org \
--cc=jgarzik@pobox.com \
--cc=netdev@vger.kernel.org \
--cc=val.henson@gmail.com \
/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.