[Intel-gfx] [PATCH 1/2] drm/i915: Balance context pinning on reset cleanup

Daniel, Thomas thomas.daniel at intel.com
Tue Jan 20 08:14:58 PST 2015


> -----Original Message-----
> From: Intel-gfx [mailto:intel-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Mika Kuoppala
> Sent: Tuesday, January 13, 2015 9:32 AM
> To: intel-gfx at lists.freedesktop.org
> Subject: [Intel-gfx] [PATCH 1/2] drm/i915: Balance context pinning on reset
> cleanup
> 
> We pin when we submit to execlist queue. Balance the pinning when the
> submitted queue is cleaned on reset.
> 
> Cc: Dave Gordon <david.s.gordon at intel.com>
> Signed-off-by: Mika Kuoppala <mika.kuoppala at intel.com>
> ---
>  drivers/gpu/drm/i915/i915_gem.c  | 4 ++++
> drivers/gpu/drm/i915/intel_lrc.c | 1 +
>  2 files changed, 5 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem.c
> b/drivers/gpu/drm/i915/i915_gem.c index 6c40365..68ea67d 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -2657,6 +2657,10 @@ static void i915_gem_reset_ring_cleanup(struct
> drm_i915_private *dev_priv,
>  				execlist_link);
>  		list_del(&submit_req->execlist_link);
>  		intel_runtime_pm_put(dev_priv);
> +
> +		if (submit_req->ctx != ring->default_context)
> +			intel_lr_context_unpin(ring, submit_req->ctx);
> +
>  		i915_gem_context_unreference(submit_req->ctx);
>  		kfree(submit_req);
>  	}
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c
> b/drivers/gpu/drm/i915/intel_lrc.c
> index 7670a0f..56a3625 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -1774,6 +1774,7 @@ void intel_lr_context_free(struct intel_context
> *ctx)
>  				intel_unpin_ringbuffer_obj(ringbuf);
>  				i915_gem_object_ggtt_unpin(ctx_obj);
>  			}
> +			WARN_ON(ctx->engine[ring->id].unpin_count);
>  			intel_destroy_ringbuffer_obj(ringbuf);
>  			kfree(ringbuf);
>  			drm_gem_object_unreference(&ctx_obj->base);

Assuming this still patch still applies after Nick Hoath's recent changes,
Reviewed-by: Thomas Daniel <thomas.daniel at intel.com>

Note that there is still a bug in reset_ring_cleanup where neither the ring buffers nor the contexts head and tail are updated in execlists mode but the requests are cleaned out.  I will post a separate patch for that soon.

Thomas.


More information about the Intel-gfx mailing list