Commit 9f486ae1 authored by Valerie Henson's avatar Valerie Henson Committed by Jeff Garzik
Browse files

[PATCH] Handle pci_enable_device() errors in resume



Signed-off-by: default avatarValerie Henson <val_henson@linux.intel.com>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 42eab567
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -2138,17 +2138,21 @@ static int de_resume (struct pci_dev *pdev)
{
	struct net_device *dev = pci_get_drvdata (pdev);
	struct de_private *de = dev->priv;
	int retval = 0;

	rtnl_lock();
	if (netif_device_present(dev))
		goto out;
	if (netif_running(dev)) {
		pci_enable_device(pdev);
	if (!netif_running(dev))
		goto out_attach;
	if ((retval = pci_enable_device(pdev))) {
		printk (KERN_ERR "%s: pci_enable_device failed in resume\n",
			dev->name);
		goto out;
	}
	de_init_hw(de);
out_attach:
	netif_device_attach(dev);
	} else {
		netif_device_attach(dev);
	}
out:
	rtnl_unlock();
	return 0;
+4 −1
Original line number Diff line number Diff line
@@ -1769,7 +1769,10 @@ static int tulip_resume(struct pci_dev *pdev)
	pci_set_power_state(pdev, PCI_D0);
	pci_restore_state(pdev);

	pci_enable_device(pdev);
	if ((retval = pci_enable_device(pdev))) {
		printk (KERN_ERR "tulip: pci_enable_device failed in resume\n");
		return retval;
	}

	if ((retval = request_irq(dev->irq, &tulip_interrupt, IRQF_SHARED, dev->name, dev))) {
		printk (KERN_ERR "tulip: request_irq failed in resume\n");
+8 −4
Original line number Diff line number Diff line
@@ -1626,14 +1626,18 @@ static int w840_resume (struct pci_dev *pdev)
{
	struct net_device *dev = pci_get_drvdata (pdev);
	struct netdev_private *np = netdev_priv(dev);
	int retval = 0;

	rtnl_lock();
	if (netif_device_present(dev))
		goto out; /* device not suspended */
	if (netif_running(dev)) {
		pci_enable_device(pdev);
	/*	pci_power_on(pdev); */

		if ((retval = pci_enable_device(pdev))) {
			printk (KERN_ERR
				"%s: pci_enable_device failed in resume\n",
				dev->name);
			goto out;
		}
		spin_lock_irq(&np->lock);
		iowrite32(1, np->base_addr+PCIBusCfg);
		ioread32(np->base_addr+PCIBusCfg);
@@ -1651,7 +1655,7 @@ static int w840_resume (struct pci_dev *pdev)
	}
out:
	rtnl_unlock();
	return 0;
	return retval;
}
#endif