drm/i915: Stop retiring requests from busy/wait ioctls
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 13 May 2016 10:57:21 +0000 (11:57 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 13 May 2016 11:38:59 +0000 (12:38 +0100)
In order to reduce the workload of the caller, we do not want to
actually have to retire requests of others when checking the busy status
of this object. This applies to both busy/wait ioctls as the wait ioctl
has a semantically equivalent mode to the busy ioctl.

At the present time, this is only a minor improvement to reduce the
workload of the busy ioctl under the struct_mutex which helps to reduce
its impact upon contention of struct_mutex. However, since it is mostly
a victim in highly contended scenarios, the impact is very minor until
we can eliminate the struct_mutex requirement for busy-ioctl in the near
future.

v2: Mention the patches intended limited impact. It is just paving the
way for greater changes whilst reducing the impact of a bugfix in the
next patch.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1463137042-9669-3-git-send-email-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem.c

index 8439867dc654d50d214cb44e1b3619312d63a6bf..474c0272e73d29c1fdc777edb2d088087f92bd85 100644 (file)
@@ -3069,14 +3069,8 @@ i915_gem_object_flush_active(struct drm_i915_gem_object *obj)
                if (req == NULL)
                        continue;
 
-               if (list_empty(&req->list))
-                       goto retire;
-
-               if (i915_gem_request_completed(req, true)) {
-                       __i915_gem_request_retire__upto(req);
-retire:
+               if (i915_gem_request_completed(req, true))
                        i915_gem_object_retire__read(obj, i);
-               }
        }
 
        return 0;