9575 apix can lose interrupts after interrupt thread blocks
Review Request #1096 — Created June 1, 2018 and submitted
If an interrupt thread blocks, after it has completed, pending interrupts are not processed and remain queued. Once in this state, one if three paths are possible:
1. The interrupts stay queued "forever".
2. Any interrupt at the same IPL can come in and get processed but the pending ones are ignored.
3. Any interrupt can arrive at a different IPL, in which case they will get processed - but maybe delayed.
The bug was reproduceable with a combined nvme and fibre channel workload, after the change interrupts no longer went missing.
Also dtrace was used to confirm conditions did exist in all the new code paths which may have triggered a missed interrupt.