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

Reply via email to