mirror of https://gitee.com/openkylin/linux.git
[PATCH] Handle pci_enable_device() errors in resume
Signed-off-by: Valerie Henson <val_henson@linux.intel.com> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
42eab56776
commit
9f486ae1d9
|
@ -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);
|
||||
de_init_hw(de);
|
||||
netif_device_attach(dev);
|
||||
} else {
|
||||
netif_device_attach(dev);
|
||||
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);
|
||||
out:
|
||||
rtnl_unlock();
|
||||
return 0;
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue