On Monday 15 June 2009, Alan Stern wrote: > On Mon, 15 Jun 2009, Alan Jenkins wrote: > > > Alan Stern wrote: > > > On Mon, 15 Jun 2009, Alan Jenkins wrote: > > > > > > > > >> Hi, > > >> > > >> I triggered a WARNING while hacking on eeepc-laptop's > > >> rfkill-by-pci-hotplug. I saw "Trying to free already-free IRQ" in > > >> ath5k_pci_remove(), because the IRQ was already freed by > > >> ath5k_pci_suspend(). My changes to eeepc-laptop had allowed the PCI > > >> device to be removed while suspended. > > >> > > >> Are PCI drivers supposed to handle remove() while suspended? > > >> > > > > > > Yes. You found a bug in the driver. However it's not clear (to me at > > > least) whether the bug is that the IRQ is freed in the suspend method > > > or that there's no check for already-freed in the remove method. My > > > guess is the latter. > > > > > > Alan Stern > > > > > > > The example in Documentation/power/pci.txt shows free_irq() being called > > in suspend (and request_irq() in resume). So the problem is in remove(). > > I'm not sure whether the example is trustworthy. There was some > discussion quite a while ago regarding whether drivers should free > their IRQs during suspend, but I don't remember what the outcome was. No, they shouldn't. That's why we do the entire suspend_device_irqs() thing etc. Best, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html