]> git.karo-electronics.de Git - linux-beck.git/commitdiff
drm/nouveau: Remove call to reservation_object_test_signaled_rcu before wait
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 29 Aug 2016 07:08:27 +0000 (08:08 +0100)
committerSumit Semwal <sumit.semwal@linaro.org>
Wed, 12 Oct 2016 14:16:58 +0000 (19:46 +0530)
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@chris-wilson.co.uk>
Cc: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20160829070834.22296-4-chris@chris-wilson.co.uk
drivers/gpu/drm/nouveau/nouveau_gem.c

index 72e2399bce39f97cd2d2e82d3c62227b09743ca9..0bd7164bc8172d9ca81be4537aeceecfb9c263f7 100644 (file)
@@ -861,6 +861,7 @@ nouveau_gem_ioctl_cpu_prep(struct drm_device *dev, void *data,
        struct nouveau_bo *nvbo;
        bool no_wait = !!(req->flags & NOUVEAU_GEM_CPU_PREP_NOWAIT);
        bool write = !!(req->flags & NOUVEAU_GEM_CPU_PREP_WRITE);
+       long lret;
        int ret;
 
        gem = drm_gem_object_lookup(file_priv, req->handle);
@@ -868,19 +869,15 @@ nouveau_gem_ioctl_cpu_prep(struct drm_device *dev, void *data,
                return -ENOENT;
        nvbo = nouveau_gem_object(gem);
 
-       if (no_wait)
-               ret = reservation_object_test_signaled_rcu(nvbo->bo.resv, write) ? 0 : -EBUSY;
-       else {
-               long lret;
+       lret = reservation_object_wait_timeout_rcu(nvbo->bo.resv, write, true,
+                                                  no_wait ? 0 : 30 * HZ);
+       if (!lret)
+               ret = -EBUSY;
+       else if (lret > 0)
+               ret = 0;
+       else
+               ret = lret;
 
-               lret = reservation_object_wait_timeout_rcu(nvbo->bo.resv, write, true, 30 * HZ);
-               if (!lret)
-                       ret = -EBUSY;
-               else if (lret > 0)
-                       ret = 0;
-               else
-                       ret = lret;
-       }
        nouveau_bo_sync_for_cpu(nvbo);
        drm_gem_object_unreference_unlocked(gem);