提交 9736387a 编写于 作者: C Chris Wilson

drm/i915: Reduce test_and_set_bit to set_bit in i915_request_submit()

Avoid the full blown memory barrier of test_and_set_bit() by noting the
completed request and removing it from the lists.
Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: NAndi Shyti <andi.shyti@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210114135612.13210-5-chris@chris-wilson.co.uk
上级 2d60d3e0
...@@ -551,8 +551,10 @@ bool __i915_request_submit(struct i915_request *request) ...@@ -551,8 +551,10 @@ bool __i915_request_submit(struct i915_request *request)
* dropped upon retiring. (Otherwise if resubmit a *retired* * dropped upon retiring. (Otherwise if resubmit a *retired*
* request, this would be a horrible use-after-free.) * request, this would be a horrible use-after-free.)
*/ */
if (__i915_request_is_complete(request)) if (__i915_request_is_complete(request)) {
goto xfer; list_del_init(&request->sched.link);
goto active;
}
if (unlikely(intel_context_is_banned(request->context))) if (unlikely(intel_context_is_banned(request->context)))
i915_request_set_error_once(request, -EIO); i915_request_set_error_once(request, -EIO);
...@@ -587,11 +589,11 @@ bool __i915_request_submit(struct i915_request *request) ...@@ -587,11 +589,11 @@ bool __i915_request_submit(struct i915_request *request)
engine->serial++; engine->serial++;
result = true; result = true;
xfer: GEM_BUG_ON(test_bit(I915_FENCE_FLAG_ACTIVE, &request->fence.flags));
if (!test_and_set_bit(I915_FENCE_FLAG_ACTIVE, &request->fence.flags)) { list_move_tail(&request->sched.link, &engine->active.requests);
list_move_tail(&request->sched.link, &engine->active.requests); active:
clear_bit(I915_FENCE_FLAG_PQUEUE, &request->fence.flags); clear_bit(I915_FENCE_FLAG_PQUEUE, &request->fence.flags);
} set_bit(I915_FENCE_FLAG_ACTIVE, &request->fence.flags);
/* /*
* XXX Rollback bonded-execution on __i915_request_unsubmit()? * XXX Rollback bonded-execution on __i915_request_unsubmit()?
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册