reservation: wait only with non-zero timeout specified (v3)
authorJammy Zhou <Jammy.Zhou@amd.com>
Wed, 21 Jan 2015 10:35:47 +0000 (18:35 +0800)
committerSumit Semwal <sumit.semwal@linaro.org>
Thu, 22 Jan 2015 05:57:57 +0000 (11:27 +0530)
When the timeout value passed to reservation_object_wait_timeout_rcu
is zero, no wait should be done if the fences are not signaled.

Return '1' for idle and '0' for busy if the specified timeout is '0'
to keep consistent with the case of non-zero timeout.

v2: call fence_put if not signaled in the case of timeout==0

v3: switch to reservation_object_test_signaled_rcu

Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-By: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
drivers/dma-buf/reservation.c

index 3c97c8fa8d02687290e7340f82666f3466fbda2e..807ef155525561e0b51a03a9e43a4f77d5ac6107 100644 (file)
@@ -327,6 +327,9 @@ long reservation_object_wait_timeout_rcu(struct reservation_object *obj,
        unsigned seq, shared_count, i = 0;
        long ret = timeout;
 
+       if (!timeout)
+               return reservation_object_test_signaled_rcu(obj, wait_all);
+
 retry:
        fence = NULL;
        shared_count = 0;