On Mon, May 2, 2011 at 10:49 AM, Alex Williamson alex.williamson@redhat.com wrote:
We're likely to be sharing an interrupt line with other devices, which means our handler might get called after we've turned off the device via vga switcheroo. This can lead to all sorts of badness, like nv04_fifo_isr() spewing "PFIFO still angry after 100 spins, halt" to the console before the system enters a hard hang.
We can avoid this by simply checking if the device is still enabled before processing an interrupt. To avoid races, flush any inflight interrupts using synchronize_irq(). Note that since pci_intx() is called after pci_save_state(), pci_restore_state() will automatically re-enable INTx.
I still think we should just need the synchronize_irq followed by a check in the irq handler for all fs,
or is there a race there I'm missing?
Dave.