diff mbox

[1/2] drm/i915/execlists: Emit i915_trace_request_out for preemption

Message ID 20180501134114.29216-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson May 1, 2018, 1:41 p.m. UTC
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 <tvrtko.ursulin@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/intel_lrc.c | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

Comments

Tvrtko Ursulin May 1, 2018, 2:37 p.m. UTC | #1
On 01/05/2018 14:41, Chris Wilson wrote:
> 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 <tvrtko.ursulin@intel.com>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
>   drivers/gpu/drm/i915/intel_lrc.c | 19 +++++++++----------
>   1 file changed, 9 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 57396a2a6ea2..ffc74f562f77 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -398,10 +398,11 @@ execlists_context_schedule_in(struct i915_request *rq)
>   }
>   
>   static inline void
> -execlists_context_schedule_out(struct i915_request *rq)
> +execlists_context_schedule_out(struct i915_request *rq, unsigned long status)
>   {
>   	intel_engine_context_out(rq->engine);
> -	execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_OUT);
> +	execlists_context_status_change(rq, status);
> +	trace_i915_request_out(rq);
>   }
>   
>   static void
> @@ -772,12 +773,10 @@ execlists_cancel_port_requests(struct intel_engine_execlists * const execlists)
>   			  intel_engine_get_seqno(rq->engine));
>   
>   		GEM_BUG_ON(!execlists->active);
> -		intel_engine_context_out(rq->engine);
> -
> -		execlists_context_status_change(rq,
> -						i915_request_completed(rq) ?
> -						INTEL_CONTEXT_SCHEDULE_OUT :
> -						INTEL_CONTEXT_SCHEDULE_PREEMPTED);
> +		execlists_context_schedule_out(rq,
> +					       i915_request_completed(rq) ?
> +					       INTEL_CONTEXT_SCHEDULE_OUT :
> +					       INTEL_CONTEXT_SCHEDULE_PREEMPTED);
>   
>   		i915_request_put(rq);
>   
> @@ -1105,8 +1104,8 @@ static void execlists_submission_tasklet(unsigned long data)
>   				 */
>   				GEM_BUG_ON(!i915_request_completed(rq));
>   
> -				execlists_context_schedule_out(rq);
> -				trace_i915_request_out(rq);
> +				execlists_context_schedule_out(rq,
> +							       INTEL_CONTEXT_SCHEDULE_OUT);
>   				i915_request_put(rq);
>   
>   				GEM_TRACE("%s completed ctx=%d\n",
> 

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

Tvrtko
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 57396a2a6ea2..ffc74f562f77 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -398,10 +398,11 @@  execlists_context_schedule_in(struct i915_request *rq)
 }
 
 static inline void
-execlists_context_schedule_out(struct i915_request *rq)
+execlists_context_schedule_out(struct i915_request *rq, unsigned long status)
 {
 	intel_engine_context_out(rq->engine);
-	execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_OUT);
+	execlists_context_status_change(rq, status);
+	trace_i915_request_out(rq);
 }
 
 static void
@@ -772,12 +773,10 @@  execlists_cancel_port_requests(struct intel_engine_execlists * const execlists)
 			  intel_engine_get_seqno(rq->engine));
 
 		GEM_BUG_ON(!execlists->active);
-		intel_engine_context_out(rq->engine);
-
-		execlists_context_status_change(rq,
-						i915_request_completed(rq) ?
-						INTEL_CONTEXT_SCHEDULE_OUT :
-						INTEL_CONTEXT_SCHEDULE_PREEMPTED);
+		execlists_context_schedule_out(rq,
+					       i915_request_completed(rq) ?
+					       INTEL_CONTEXT_SCHEDULE_OUT :
+					       INTEL_CONTEXT_SCHEDULE_PREEMPTED);
 
 		i915_request_put(rq);
 
@@ -1105,8 +1104,8 @@  static void execlists_submission_tasklet(unsigned long data)
 				 */
 				GEM_BUG_ON(!i915_request_completed(rq));
 
-				execlists_context_schedule_out(rq);
-				trace_i915_request_out(rq);
+				execlists_context_schedule_out(rq,
+							       INTEL_CONTEXT_SCHEDULE_OUT);
 				i915_request_put(rq);
 
 				GEM_TRACE("%s completed ctx=%d\n",