Actions
Bug #7725
closedapix may lose interrupts occuring while softint is running at same IPL
Start date:
2017-01-03
Due date:
% Done:
0%
Estimated time:
Difficulty:
Medium
Tags:
needs-triage
Gerrit CR:
Description
During development of the emlxs driver Bob Warning of ATTO found that hardware interrupts could go missing. He analyzed that issue and found a bug in apix. Here's what happens:
- a softint is running at IPL x
- hardint a comes in at IPL x and is put on the pending queue, bit x being set in x_intr_pending
- softint finishes, and the harding stays pending
- time passes
- hardint b comes in at IPL x, clears bit x in x_intr_pending (in apix_intr_thread_prolog())
- hardint b finishes, but apix_do_pending_hardint() doesn't see pending hardint a as bit x isn't set in x_intr_pending
Bob was also able to reproduce this with a QLogic FC card.
The fix is actually pretty simple: After finishing the softint processing, check the queues for newly added interrupts again and process them immediately.
Related issues
Updated by Marcel Telka almost 4 years ago
- Is duplicate of Bug #7724: apix may lose interrupts occuring while softint is running at same IPL added
Actions