forked from luck/tmp_suning_uos_patched
[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 net_device *dev = pci_get_drvdata (pdev);
|
||||||
struct de_private *de = dev->priv;
|
struct de_private *de = dev->priv;
|
||||||
|
int retval = 0;
|
||||||
|
|
||||||
rtnl_lock();
|
rtnl_lock();
|
||||||
if (netif_device_present(dev))
|
if (netif_device_present(dev))
|
||||||
goto out;
|
goto out;
|
||||||
if (netif_running(dev)) {
|
if (!netif_running(dev))
|
||||||
pci_enable_device(pdev);
|
goto out_attach;
|
||||||
de_init_hw(de);
|
if ((retval = pci_enable_device(pdev))) {
|
||||||
netif_device_attach(dev);
|
printk (KERN_ERR "%s: pci_enable_device failed in resume\n",
|
||||||
} else {
|
dev->name);
|
||||||
netif_device_attach(dev);
|
goto out;
|
||||||
}
|
}
|
||||||
|
de_init_hw(de);
|
||||||
|
out_attach:
|
||||||
|
netif_device_attach(dev);
|
||||||
out:
|
out:
|
||||||
rtnl_unlock();
|
rtnl_unlock();
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1769,7 +1769,10 @@ static int tulip_resume(struct pci_dev *pdev)
|
|||||||
pci_set_power_state(pdev, PCI_D0);
|
pci_set_power_state(pdev, PCI_D0);
|
||||||
pci_restore_state(pdev);
|
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))) {
|
if ((retval = request_irq(dev->irq, &tulip_interrupt, IRQF_SHARED, dev->name, dev))) {
|
||||||
printk (KERN_ERR "tulip: request_irq failed in resume\n");
|
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 net_device *dev = pci_get_drvdata (pdev);
|
||||||
struct netdev_private *np = netdev_priv(dev);
|
struct netdev_private *np = netdev_priv(dev);
|
||||||
|
int retval = 0;
|
||||||
|
|
||||||
rtnl_lock();
|
rtnl_lock();
|
||||||
if (netif_device_present(dev))
|
if (netif_device_present(dev))
|
||||||
goto out; /* device not suspended */
|
goto out; /* device not suspended */
|
||||||
if (netif_running(dev)) {
|
if (netif_running(dev)) {
|
||||||
pci_enable_device(pdev);
|
if ((retval = pci_enable_device(pdev))) {
|
||||||
/* pci_power_on(pdev); */
|
printk (KERN_ERR
|
||||||
|
"%s: pci_enable_device failed in resume\n",
|
||||||
|
dev->name);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
spin_lock_irq(&np->lock);
|
spin_lock_irq(&np->lock);
|
||||||
iowrite32(1, np->base_addr+PCIBusCfg);
|
iowrite32(1, np->base_addr+PCIBusCfg);
|
||||||
ioread32(np->base_addr+PCIBusCfg);
|
ioread32(np->base_addr+PCIBusCfg);
|
||||||
@ -1651,7 +1655,7 @@ static int w840_resume (struct pci_dev *pdev)
|
|||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
rtnl_unlock();
|
rtnl_unlock();
|
||||||
return 0;
|
return retval;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user