On Mon, Aug 21, 2006 at 11:12:03AM -0700, Auke Kok wrote:
> Valerie Henson wrote:
> >I'm trying to properly handle pci_enable_device() errors in the resume
> >routines of a couple of tulip drivers.  I noticed that several drivers
> >pay attention to errors from pci_enable_device() in the init routine
> >but ignore it on resume; other drivers vary wildly.  What's proper
> >behavior when resuming?  Extant examples:
> >
> >0. Don't call pci_enable_device() at all (8139too)
> >1. Ignore the return value (eepro100, many others)
> >2. Check for failure and bail out, but return success (sungem)
> 
> Digging through e1000 I spot that we even pci_enable_device after a PCI 
> error, so it is good practice I think to make sure the device is up. I 
> suppose that most people can live without explicit re-enabling the device 
> (most NICs are on anyway), but if we do enable it explicitly we should 
> certainly check the result code. Interestingly enough we failed to do this 
> in e1000, so I'll submit a patch for that later.

For people looking for how to implement this in their own driver,
here's how I solved it in tulip (will submit later):

---
 drivers/net/tulip/tulip_core.c  |    5 ++++-
 drivers/net/tulip/winbond-840.c |   10 +++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

--- a/drivers/net/tulip/tulip_core.c
+++ b/drivers/net/tulip/tulip_core.c
@@ -1780,7 +1780,10 @@ static int tulip_resume(struct pci_dev *
        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");



-VAL
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to