9575 apix can lose interrupts after interrupt thread blocks

Review Request #1096 - Created June 1, 2018 and submitted

Paul Winder

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.

Paul Winder
Igor Kozhukhov
Hans Rosenfeld
Ken Mays
Paul Winder
Review request changed

Status: Closed (submitted)