<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
From: Bjorn Helgaas &lt;bjorn.helgaas@hp.com&gt;

Add pci_enable_device()/pci_disable_device().  In the past, drivers
often worked without this, but it is now required in order to route
PCI interrupts correctly.

Signed-off-by: Bjorn Helgaas &lt;bjorn.helgaas@hp.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
---

 25-akpm/drivers/net/tulip/de4x5.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff -puN drivers/net/tulip/de4x5.c~de4x5c-add-missing-pci_enable_device drivers/net/tulip/de4x5.c
--- 25/drivers/net/tulip/de4x5.c~de4x5c-add-missing-pci_enable_device	Wed Aug  4 16:33:55 2004
+++ 25-akpm/drivers/net/tulip/de4x5.c	Wed Aug  4 16:33:55 2004
@@ -2242,8 +2242,13 @@ static int __devinit de4x5_pci_probe (st
 		return -ENODEV;
 
 	/* Ok, the device seems to be for us. */
-	if (!(dev = alloc_etherdev (sizeof (struct de4x5_private))))
-		return -ENOMEM;
+	if (pci_enable_device (pdev))
+		return -ENODEV;
+
+	if (!(dev = alloc_etherdev (sizeof (struct de4x5_private)))) {
+		error = -ENOMEM;
+		goto disable_dev;
+	}
 
 	lp = netdev_priv(dev);
 	lp-&gt;bus = PCI;
@@ -2327,6 +2332,8 @@ static int __devinit de4x5_pci_probe (st
 	release_region (iobase, DE4X5_PCI_TOTAL_SIZE);
  free_dev:
 	free_netdev (dev);
+ disable_dev:
+	pci_disable_device (pdev);
 	return error;
 }
 
@@ -2341,6 +2348,7 @@ static void __devexit de4x5_pci_remove (
 	unregister_netdev (dev);
 	free_netdev (dev);
 	release_region (iobase, DE4X5_PCI_TOTAL_SIZE);
+	pci_disable_device (pdev);
 }
 
 static struct pci_device_id de4x5_pci_tbl[] = {
_
</pre></body></html>