On Mon, Aug 29, 2016 at 08:08:25AM +0100, Chris Wilson wrote: > 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. > > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk> > Cc: Lucas Stach <l.stach at pengutronix.de> > Cc: Russell King <linux+etnaviv at armlinux.org.uk> > Cc: Christian Gmeiner <christian.gmeiner at gmail.com>
Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch> > --- > drivers/gpu/drm/etnaviv/etnaviv_gem.c | 24 ++++++++++-------------- > 1 file changed, 10 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c > b/drivers/gpu/drm/etnaviv/etnaviv_gem.c > index 5ce3603e6eac..9ffca2478e02 100644 > --- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c > +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c > @@ -409,20 +409,16 @@ int etnaviv_gem_cpu_prep(struct drm_gem_object *obj, > u32 op, > struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj); > struct drm_device *dev = obj->dev; > bool write = !!(op & ETNA_PREP_WRITE); > - int ret; > - > - if (op & ETNA_PREP_NOSYNC) { > - if (!reservation_object_test_signaled_rcu(etnaviv_obj->resv, > - write)) > - return -EBUSY; > - } else { > - unsigned long remain = etnaviv_timeout_to_jiffies(timeout); > - > - ret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv, > - write, true, remain); > - if (ret <= 0) > - return ret == 0 ? -ETIMEDOUT : ret; > - } > + unsigned long remain = > + op & ETNA_PREP_NOSYNC ? 0 : etnaviv_timeout_to_jiffies(timeout); > + long lret; > + > + lret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv, > + write, true, remain); > + if (lret < 0) > + return lret; > + else if (lret == 0) > + return remain == 0 ? -EBUSY : -ETIMEDOUT; > > if (etnaviv_obj->flags & ETNA_BO_CACHED) { > if (!etnaviv_obj->sgt) { > -- > 2.9.3 > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch