Hi Maarten, > Can't you simply add if (!timeout) return !reservation_object_test_signaled_rcu(obj, wait_all); to the beginning instead? Hmm, after looking into it, I think that can achieve the same purpose. I will update the patch with this. > Also why do you need this? Why not simply return 0 with timeout = 0. The major purpose here is to use reservation_object_wait_timeout_rcu to handle all possible timeout values (and just to check status with timeout==0). If we simply return 0, we cannot determine the fence is signaled or not with the return value. Regards, Jammy -----Original Message----- From: Maarten Lankhorst [mailto:maarten.lankhorst@xxxxxxxxxxxxx] Sent: Tuesday, January 13, 2015 2:50 PM To: Zhou, Jammy Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx; Christian König; Deucher, Alexander Subject: Re: [PATCH 1/1] reservation: wait only with non-zero timeout specified (v2) Hey, Can't you simply add if (!timeout) return !reservation_object_test_signaled_rcu(obj, wait_all); to the beginning instead? Waiting with timeout = 0 is not really defined. Look at fence_default_wait for example. It returns timeout if the fence is signaled, but since this is 0 you can't distinguish between timed out wait and succesful wait. Also why do you need this? Why not simply return 0 with timeout = 0. ~Maarten On 13-01-15 06:50, Jammy Zhou wrote: > 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 > > Signed-off-by: Jammy Zhou <Jammy.Zhou@xxxxxxx> > Reviewed-by: Christian König <christian.koenig@xxxxxxx> > Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > drivers/dma-buf/reservation.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma-buf/reservation.c > b/drivers/dma-buf/reservation.c index 3c97c8f..b1d554f 100644 > --- a/drivers/dma-buf/reservation.c > +++ b/drivers/dma-buf/reservation.c > @@ -380,12 +380,19 @@ retry: > } > > rcu_read_unlock(); > - if (fence) { > + if (fence && timeout) { > ret = fence_wait_timeout(fence, intr, ret); > fence_put(fence); > if (ret > 0 && wait_all && (i + 1 < shared_count)) > goto retry; > } > + > + if (fence && !timeout) > + fence_put(fence); > + > + if (!fence && !timeout) > + ret = 1; > + > return ret; > > unlock_retry: > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel