Question:
What if some other driver is sharing the IRQ, and requires IRQs to be
enabled for the resume to complete?
Answer:
-IRQ sharing is an excellent example, not a counter-example,
of why it is necessary to disable devices and free IRQs
on suspend, and acquire them again on resume.
eg. if a device is suspended, but the hardware still causes
an interrupt on a shared IRQ, another device can
suffer a screaming IRQ failure.
Documentation/power/pci.txt has as much as we know about
how to address this -- but I'm certainly open to suggestions
on how to be less invasive to the drivers while having some
chance of being robust.
-All drivers re-enable IRQs on their way back up in their resume code,
they shouldn't be doing anything before that point..
-This is quite possible if a device has child devices which will be
resumed after it has been resumed, and they share this interrupt.
This is why I think request_irq/free_irq is a better solution.
Alternatively, we need to go to a two stage resume model - 1st
stage to re-setup the devices such that they are in a quiescent
state, 2nd stage to complete.