drm/i915: Stop retiring requests from busy/wait ioctls

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
This commit is contained in:
Chris Wilson 2016-05-13 11:57:21 +01:00
parent bdb04614d8
commit e6db746908
1 changed files with 1 additions and 7 deletions

View File

@ -3069,15 +3069,9 @@ i915_gem_object_flush_active(struct drm_i915_gem_object *obj)
if (req == NULL) if (req == NULL)
continue; continue;
if (list_empty(&req->list)) if (i915_gem_request_completed(req, true))
goto retire;
if (i915_gem_request_completed(req, true)) {
__i915_gem_request_retire__upto(req);
retire:
i915_gem_object_retire__read(obj, i); i915_gem_object_retire__read(obj, i);
} }
}
return 0; return 0;
} }