mirror of https://gitee.com/openkylin/linux.git
drm/msm: Remove call to reservation_object_test_signaled_rcu before wait
Since fence_wait_timeout_reservation_object_wait_timeout_rcu() with a timeout of 0 becomes reservation_object_test_signaled_rcu(), we do not need to handle such conversion in the caller. The only challenge are those callers that wish to differentiate the error code between the nonblocking busy check and potentially blocking wait. v2: 9 is only 0 in German. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Rob Clark <robdclark@gmail.com> Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
5f6f5e08b1
commit
f755e227dc
|
@ -584,18 +584,16 @@ int msm_gem_cpu_prep(struct drm_gem_object *obj, uint32_t op, ktime_t *timeout)
|
|||
{
|
||||
struct msm_gem_object *msm_obj = to_msm_bo(obj);
|
||||
bool write = !!(op & MSM_PREP_WRITE);
|
||||
unsigned long remain =
|
||||
op & MSM_PREP_NOSYNC ? 0 : timeout_to_jiffies(timeout);
|
||||
long ret;
|
||||
|
||||
if (op & MSM_PREP_NOSYNC) {
|
||||
if (!reservation_object_test_signaled_rcu(msm_obj->resv, write))
|
||||
return -EBUSY;
|
||||
} else {
|
||||
int ret;
|
||||
|
||||
ret = reservation_object_wait_timeout_rcu(msm_obj->resv, write,
|
||||
true, timeout_to_jiffies(timeout));
|
||||
if (ret <= 0)
|
||||
return ret == 0 ? -ETIMEDOUT : ret;
|
||||
}
|
||||
ret = reservation_object_wait_timeout_rcu(msm_obj->resv, write,
|
||||
true, remain);
|
||||
if (ret == 0)
|
||||
return remain == 0 ? -EBUSY : -ETIMEDOUT;
|
||||
else if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* TODO cache maintenance */
|
||||
|
||||
|
|
Loading…
Reference in New Issue