Handy mostly for assertions. Signed-off-by: Ben Widawsky <ben at bwidawsk.net> --- drivers/gpu/drm/i915/i915_drv.h | 5 +++++ drivers/gpu/drm/i915/i915_gem.c | 1 + drivers/gpu/drm/i915/i915_gem_context.c | 3 +++ 3 files changed, 9 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index e49e2f7..f458a8f 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -953,6 +953,11 @@ struct drm_i915_gem_object { * reaches 0, dev_priv->pending_flip_queue will be woken up. */ atomic_t pending_flip; + + /** + * >= 0 if this object is the object for a context. + */ + int context_id; }; #define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base) diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 6343a82..0985aa5 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -3629,6 +3629,7 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, obj->madv = I915_MADV_WILLNEED; /* Avoid an unnecessary call to unbind on the first bind. */ obj->map_and_fenceable = true; + obj->context_id = -1; return obj; } diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c index 2c9116d..321bafd 100644 --- a/drivers/gpu/drm/i915/i915_gem_context.c +++ b/drivers/gpu/drm/i915/i915_gem_context.c @@ -127,6 +127,7 @@ again: } else if (ret) goto err_out; + (*ctx_out)->obj->context_id = (*ctx_out)->id; return 0; err_out: @@ -171,6 +172,8 @@ static int create_default_context(struct drm_i915_private *dev_priv) * default context. */ ctx = dev_priv->ring[RCS].default_context; + ctx->id = DEFAULT_CONTEXT_ID; + ctx->obj->context_id = DEFAULT_CONTEXT_ID; ret = i915_gem_object_pin(ctx->obj, CONTEXT_ALIGN, false); if (ret) do_destroy(ctx); -- 1.7.9.4