Pavel Roskin <[EMAIL PROTECTED]> : > On Fri, 2006-04-07 at 23:24 +0200, Francois Romieu wrote: > > Pavel Roskin <[EMAIL PROTECTED]> : > > [...] > > > diff --git a/drivers/net/wireless/orinoco_pci.c > > > b/drivers/net/wireless/orinoco_pci.c > > > index 5362c21..e57e92b 100644 > > > --- a/drivers/net/wireless/orinoco_pci.c > > > +++ b/drivers/net/wireless/orinoco_pci.c > > > @@ -304,7 +304,9 @@ static int orinoco_pci_suspend(struct pc > > > > > > orinoco_unlock(priv, &flags); > > > > > > + free_irq(pdev->irq, dev); > > > pci_save_state(pdev); > > > + pci_disable_device(pdev); > > > pci_set_power_state(pdev, PCI_D3hot); > > > > > > return 0; > > > > /me stares at the thread behind http://lkml.org/lkml/2005/7/30/143 > > > > Imho {free/request}_irq during suspend/resume deserves some > > explanation. > > I followed examples from other drivers.
Yep, that's what I do too. tg3/sky2/skge do not free_irq() in the suspend path. They disable the device. > The thread in question deals with the patch where pci_disable_device() > precedes free_irq(). Besides, bridges may need special care because > they pass interrupts from other devices. > I also followed the kernel documentation (Documentation/power/pci.txt), > which says that the driver should free the IRQ on suspend. > > If you can suggest an alternative approach, please do so. I don't see > what I can do differently. Disable the device and avoid free_irq/request_irq altogether ? The documentation does not require more: [...] A driver uses this function to actually transition the device into a low power state. This should include disabling I/O, IRQs, and bus-mastering, as well as ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ physically transitioning the device to a lower power state; it may also include calls to pci_enable_wake(). -> free_irq() looks like the heavyweight option. request_irq() can fail. The reference implementation does not care (who does ?). Imho it hints that the driver writer should not take the documentation _too_ literally when it suggests that "disabling irq == free_irq". -- Ueimor - 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