Skip to content

Commit b9b7742

Browse files
committed
drm/i915/execlists: Emit i915_trace_request_out for preemption
Move the tracepoint into the common execlists_context_schedule_out() and call it from preemption completion as well. A small bit of refactoring code should help with when tracing, or else we end up with requests mysteriously disappearing and some being emitted to HW multiple times. Reported-by: Tvrtko Ursulin <[email protected]> Signed-off-by: Chris Wilson <[email protected]> Cc: Tvrtko Ursulin <[email protected]> Reviewed-by: Tvrtko Ursulin <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent a89d1f9 commit b9b7742

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

drivers/gpu/drm/i915/intel_lrc.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -398,10 +398,11 @@ execlists_context_schedule_in(struct i915_request *rq)
398398
}
399399

400400
static inline void
401-
execlists_context_schedule_out(struct i915_request *rq)
401+
execlists_context_schedule_out(struct i915_request *rq, unsigned long status)
402402
{
403403
intel_engine_context_out(rq->engine);
404-
execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_OUT);
404+
execlists_context_status_change(rq, status);
405+
trace_i915_request_out(rq);
405406
}
406407

407408
static void
@@ -772,12 +773,10 @@ execlists_cancel_port_requests(struct intel_engine_execlists * const execlists)
772773
intel_engine_get_seqno(rq->engine));
773774

774775
GEM_BUG_ON(!execlists->active);
775-
intel_engine_context_out(rq->engine);
776-
777-
execlists_context_status_change(rq,
778-
i915_request_completed(rq) ?
779-
INTEL_CONTEXT_SCHEDULE_OUT :
780-
INTEL_CONTEXT_SCHEDULE_PREEMPTED);
776+
execlists_context_schedule_out(rq,
777+
i915_request_completed(rq) ?
778+
INTEL_CONTEXT_SCHEDULE_OUT :
779+
INTEL_CONTEXT_SCHEDULE_PREEMPTED);
781780

782781
i915_request_put(rq);
783782

@@ -1105,8 +1104,8 @@ static void execlists_submission_tasklet(unsigned long data)
11051104
*/
11061105
GEM_BUG_ON(!i915_request_completed(rq));
11071106

1108-
execlists_context_schedule_out(rq);
1109-
trace_i915_request_out(rq);
1107+
execlists_context_schedule_out(rq,
1108+
INTEL_CONTEXT_SCHEDULE_OUT);
11101109
i915_request_put(rq);
11111110

11121111
GEM_TRACE("%s completed ctx=%d\n",

0 commit comments

Comments
 (0)