On Fri, 2005-05-13 at 22:06 -0700, Fabrice Gautier wrote: > > There are still many PCI drivers don't implement their > > .suspend/.resume > > methods correctly. I felt it would be quite helpful there is > > a reference > > implementation. Here is my thought: > > > > [...snip...] > > > > Currently many drivers don't call > > free_irq/request_irq/pci_disable_device, which makes unexpected > > interrupt occur and even break suspend/resume in some systems. > > I don't understand why not calling free_irq would cause unexpected > interrupts. > > The way I understand the PCI spec is: if you suspend a PCI device, its IRQ > should be disabled. If an IRQ come from this device anyway (in violation of > the spec) then the driver for this device should handle it so you should NOT > unregister its irq_handler. > (How does such a device would handle such a irq is another matter - a device > specific one I guess) > > I'm not understanding where your unexpected interrupt is coming from. > > Care to elaborate? I actually don't know the exact reason but we did notice disabling a device isn't sufficient (an 'irq nobody card' is reported after a device is disabled). I think we should not trust device. Another point is resume is just like boot. At boot time, PIC/IOAPIC/irq router are disabled by default. They are enabled only when a device really starts using them. suspend/resume should be the same manner. Thanks, Shaohua