Lines Matching refs:ctx
136 static void i915_gem_context_clean(struct intel_context *ctx) in i915_gem_context_clean() argument
138 struct i915_hw_ppgtt *ppgtt = ctx->ppgtt; in i915_gem_context_clean()
153 struct intel_context *ctx = container_of(ctx_ref, typeof(*ctx), ref); in i915_gem_context_free() local
155 trace_i915_context_free(ctx); in i915_gem_context_free()
158 intel_lr_context_free(ctx); in i915_gem_context_free()
165 i915_gem_context_clean(ctx); in i915_gem_context_free()
167 i915_ppgtt_put(ctx->ppgtt); in i915_gem_context_free()
169 if (ctx->legacy_hw_ctx.rcs_state) in i915_gem_context_free()
170 drm_gem_object_unreference(&ctx->legacy_hw_ctx.rcs_state->base); in i915_gem_context_free()
171 list_del(&ctx->link); in i915_gem_context_free()
172 kfree(ctx); in i915_gem_context_free()
210 struct intel_context *ctx; in __create_hw_context() local
213 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); in __create_hw_context()
214 if (ctx == NULL) in __create_hw_context()
217 kref_init(&ctx->ref); in __create_hw_context()
218 list_add_tail(&ctx->link, &dev_priv->context_list); in __create_hw_context()
219 ctx->i915 = dev_priv; in __create_hw_context()
228 ctx->legacy_hw_ctx.rcs_state = obj; in __create_hw_context()
233 ret = idr_alloc(&file_priv->context_idr, ctx, in __create_hw_context()
240 ctx->file_priv = file_priv; in __create_hw_context()
241 ctx->user_handle = ret; in __create_hw_context()
245 ctx->remap_slice = (1 << NUM_L3_SLICES(dev)) - 1; in __create_hw_context()
247 ctx->hang_stats.ban_period_seconds = DRM_I915_CTX_BAN_PERIOD; in __create_hw_context()
249 return ctx; in __create_hw_context()
252 i915_gem_context_unreference(ctx); in __create_hw_context()
266 struct intel_context *ctx; in i915_gem_create_context() local
271 ctx = __create_hw_context(dev, file_priv); in i915_gem_create_context()
272 if (IS_ERR(ctx)) in i915_gem_create_context()
273 return ctx; in i915_gem_create_context()
275 if (is_global_default_ctx && ctx->legacy_hw_ctx.rcs_state) { in i915_gem_create_context()
283 ret = i915_gem_obj_ggtt_pin(ctx->legacy_hw_ctx.rcs_state, in i915_gem_create_context()
301 ctx->ppgtt = ppgtt; in i915_gem_create_context()
304 trace_i915_context_create(ctx); in i915_gem_create_context()
306 return ctx; in i915_gem_create_context()
309 if (is_global_default_ctx && ctx->legacy_hw_ctx.rcs_state) in i915_gem_create_context()
310 i915_gem_object_ggtt_unpin(ctx->legacy_hw_ctx.rcs_state); in i915_gem_create_context()
312 idr_remove(&file_priv->context_idr, ctx->user_handle); in i915_gem_create_context()
313 i915_gem_context_unreference(ctx); in i915_gem_create_context()
323 struct intel_context *ctx; in i915_gem_context_reset() local
325 list_for_each_entry(ctx, &dev_priv->context_list, link) { in i915_gem_context_reset()
326 intel_lr_context_reset(dev, ctx); in i915_gem_context_reset()
353 struct intel_context *ctx; in i915_gem_context_init() local
381 ctx = i915_gem_create_context(dev, NULL); in i915_gem_context_init()
382 if (IS_ERR(ctx)) { in i915_gem_context_init()
384 PTR_ERR(ctx)); in i915_gem_context_init()
385 return PTR_ERR(ctx); in i915_gem_context_init()
392 ring->default_context = ctx; in i915_gem_context_init()
467 struct intel_context *ctx = p; in context_idr_cleanup() local
469 i915_gem_context_unreference(ctx); in context_idr_cleanup()
476 struct intel_context *ctx; in i915_gem_context_open() local
481 ctx = i915_gem_create_context(dev, file_priv); in i915_gem_context_open()
484 if (IS_ERR(ctx)) { in i915_gem_context_open()
486 return PTR_ERR(ctx); in i915_gem_context_open()
503 struct intel_context *ctx; in i915_gem_context_get() local
505 ctx = (struct intel_context *)idr_find(&file_priv->context_idr, id); in i915_gem_context_get()
506 if (!ctx) in i915_gem_context_get()
509 return ctx; in i915_gem_context_get()
569 intel_ring_emit(ring, i915_gem_obj_ggtt_offset(req->ctx->legacy_hw_ctx.rcs_state) | in mi_set_context()
652 struct intel_context *to = req->ctx; in do_switch()
831 if (req->ctx->legacy_hw_ctx.rcs_state == NULL) { /* We have the fake context */ in i915_switch_context()
832 if (req->ctx != ring->last_context) { in i915_switch_context()
833 i915_gem_context_reference(req->ctx); in i915_switch_context()
836 ring->last_context = req->ctx; in i915_switch_context()
854 struct intel_context *ctx; in i915_gem_context_create_ioctl() local
864 ctx = i915_gem_create_context(dev, file_priv); in i915_gem_context_create_ioctl()
866 if (IS_ERR(ctx)) in i915_gem_context_create_ioctl()
867 return PTR_ERR(ctx); in i915_gem_context_create_ioctl()
869 args->ctx_id = ctx->user_handle; in i915_gem_context_create_ioctl()
880 struct intel_context *ctx; in i915_gem_context_destroy_ioctl() local
890 ctx = i915_gem_context_get(file_priv, args->ctx_id); in i915_gem_context_destroy_ioctl()
891 if (IS_ERR(ctx)) { in i915_gem_context_destroy_ioctl()
893 return PTR_ERR(ctx); in i915_gem_context_destroy_ioctl()
896 idr_remove(&ctx->file_priv->context_idr, ctx->user_handle); in i915_gem_context_destroy_ioctl()
897 i915_gem_context_unreference(ctx); in i915_gem_context_destroy_ioctl()
909 struct intel_context *ctx; in i915_gem_context_getparam_ioctl() local
916 ctx = i915_gem_context_get(file_priv, args->ctx_id); in i915_gem_context_getparam_ioctl()
917 if (IS_ERR(ctx)) { in i915_gem_context_getparam_ioctl()
919 return PTR_ERR(ctx); in i915_gem_context_getparam_ioctl()
925 args->value = ctx->hang_stats.ban_period_seconds; in i915_gem_context_getparam_ioctl()
928 args->value = ctx->flags & CONTEXT_NO_ZEROMAP; in i915_gem_context_getparam_ioctl()
944 struct intel_context *ctx; in i915_gem_context_setparam_ioctl() local
951 ctx = i915_gem_context_get(file_priv, args->ctx_id); in i915_gem_context_setparam_ioctl()
952 if (IS_ERR(ctx)) { in i915_gem_context_setparam_ioctl()
954 return PTR_ERR(ctx); in i915_gem_context_setparam_ioctl()
961 else if (args->value < ctx->hang_stats.ban_period_seconds && in i915_gem_context_setparam_ioctl()
965 ctx->hang_stats.ban_period_seconds = args->value; in i915_gem_context_setparam_ioctl()
971 ctx->flags &= ~CONTEXT_NO_ZEROMAP; in i915_gem_context_setparam_ioctl()
972 ctx->flags |= args->value ? CONTEXT_NO_ZEROMAP : 0; in i915_gem_context_setparam_ioctl()