We pin when we submit to execlist queue. Balance
the pinning when the submitted queue is cleaned on reset.

Cc: Dave Gordon <david.s.gor...@intel.com>
Signed-off-by: Mika Kuoppala <mika.kuopp...@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);
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to