drm/i915/gvt: fix nested sleeping issue
authorDu, Changbin <changbin.du@intel.com>
Thu, 27 Oct 2016 03:10:31 +0000 (11:10 +0800)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Thu, 27 Oct 2016 03:20:42 +0000 (11:20 +0800)
commite45d7b7f47a4849a5d3d55a2cf5802a72924d37b
tree5a341c6270949ee05150beeff5b53a0ae4990f9a
parent6fb5082a8c4243c22ecf310b9f3add8371dfa26e
drm/i915/gvt: fix nested sleeping issue

We cannot use blocking method mutex_lock inside a wait loop.
Here we invoke pick_next_workload() which needs acquire a
mutex in our "condition" experssion. Then we go into a another
of the going-to-sleep sequence and changing the task state.
This is a dangerous. Let's rewrite the wait sequence to avoid
nested sleeping.

v2: fix do...while loop exit condition (zhenyu)
v3: rebase to gvt-staging branch

Signed-off-by: Du, Changbin <changbin.du@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
drivers/gpu/drm/i915/gvt/scheduler.c