drm/i915: Make LRC pinning own a reference to the context
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>
Thu, 28 Jan 2016 10:29:55 +0000 (10:29 +0000)
committerTvrtko Ursulin <tvrtko.ursulin@intel.com>
Thu, 28 Jan 2016 17:23:15 +0000 (17:23 +0000)
Will simplify the following fix and sounds logical.

v2: Add some whitespace to separate logic better. (Chris Wilson)

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Nick Hoath <nicholas.hoath@intel.com>
drivers/gpu/drm/i915/intel_lrc.c

index 6c95aa19cc90d34d5d96cc723ca526bfce036ff8..61e64d78adbd01b18749b40a0fca630094337952 100644 (file)
@@ -1116,6 +1116,8 @@ static int intel_lr_context_pin(struct intel_context *ctx,
                ret = intel_lr_context_do_pin(ctx, engine);
                if (ret)
                        goto reset_pin_count;
+
+               i915_gem_context_reference(ctx);
        }
        return ret;
 
@@ -1141,6 +1143,8 @@ void intel_lr_context_unpin(struct intel_context *ctx,
                ctx->engine[engine->id].lrc_vma = NULL;
                ctx->engine[engine->id].lrc_desc = 0;
                ctx->engine[engine->id].lrc_reg_state = NULL;
+
+               i915_gem_context_unreference(ctx);
        }
 }