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:
parent
bdb04614d8
commit
e6db746908
|
@ -3069,14 +3069,8 @@ 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;
|
||||||
|
|
Loading…
Reference in New Issue