The patch makes sense; it would normally point to a suspicious deadlock since the domain should eventually stop spinning and unblock, but in this case the console ring isn't being drained (whereas it normally would be).
I'll apply this for now, thanks James! The dreadful "always activate all devices" hack is still in the module for now, which I'll remove just as soon as we have a test case for 8 or so devices spinning and waking up. There's a small race somewhere in the wakeup that's causing an occasional hang, but it should be easy to track down with a testcase.
-anil Yeah, I think we get stuck because "Activations.run" traverses the callback sequence left-to-right, then when the thread is awakened, it re-adds itself on the right, which means the iteration never terminates when the blocked thread can't make progress.
This patch fixes the issue for me by adding waiters on the front of the callback list, but I'm not sure it's the best solution.
Thanks, James
<0001-Add-activation-event-callbacks-in-reverse-order.patch>
|