On Mon, Jun 24, 2019 at 04:15:37PM -0400, Mike Marciniszyn wrote:
commit da9de5f8527f4b9efc82f967d29a583318c034c7 upstream.
The call to sdma_progress() is called outside the wait lock.
In this case, there is a race condition where sdma_progress() can return false and the sdma_engine can idle. If that happens, there will be no more sdma interrupts to cause the wakeup and the user_sdma xmit will hang.
Fix by moving the lock to enclose the sdma_progress() call.
Also, delete busycount. The need for this was removed by: commit bcad29137a97 ("IB/hfi1: Serve the most starved iowait entry first")
Ported to linux-4.9.y.
Now applied, thanks.
Note, this already is in 4.14.132 and 4.19.57 so I didn't need the backports for those kernels.
greg k-h