diff options
| author | Tony Lindgren <tony@atomide.com> | 2019-05-20 08:32:11 -0700 |
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2019-05-20 08:32:11 -0700 |
| commit | f29f24b5568fd6169e0363c78f1a80db38d0e7e9 (patch) | |
| tree | 835abaf6e1bb95b9d388f4249f355618e9da1489 /drivers/gpu/drm/i915/selftests/mock_context.c | |
| parent | 1ba12322e2f0934383f111a5e695702aaf46b812 (diff) | |
| parent | 34b1b8061de3215208db9accfe60cc3f5b40178f (diff) | |
| download | talos-op-linux-f29f24b5568fd6169e0363c78f1a80db38d0e7e9.tar.gz talos-op-linux-f29f24b5568fd6169e0363c78f1a80db38d0e7e9.zip | |
Merge branch 'fixes-dra7' into fixes
Diffstat (limited to 'drivers/gpu/drm/i915/selftests/mock_context.c')
| -rw-r--r-- | drivers/gpu/drm/i915/selftests/mock_context.c | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/selftests/mock_context.c b/drivers/gpu/drm/i915/selftests/mock_context.c index b646cdcdd602..0426093bf1d9 100644 --- a/drivers/gpu/drm/i915/selftests/mock_context.c +++ b/drivers/gpu/drm/i915/selftests/mock_context.c @@ -30,7 +30,6 @@ mock_context(struct drm_i915_private *i915, const char *name) { struct i915_gem_context *ctx; - unsigned int n; int ret; ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); @@ -41,25 +40,31 @@ mock_context(struct drm_i915_private *i915, INIT_LIST_HEAD(&ctx->link); ctx->i915 = i915; + ctx->hw_contexts = RB_ROOT; + spin_lock_init(&ctx->hw_contexts_lock); + INIT_RADIX_TREE(&ctx->handles_vma, GFP_KERNEL); INIT_LIST_HEAD(&ctx->handles_list); INIT_LIST_HEAD(&ctx->hw_id_link); - - for (n = 0; n < ARRAY_SIZE(ctx->__engine); n++) - intel_context_init(&ctx->__engine[n], ctx, i915->engine[n]); + INIT_LIST_HEAD(&ctx->active_engines); + mutex_init(&ctx->mutex); ret = i915_gem_context_pin_hw_id(ctx); if (ret < 0) goto err_handles; if (name) { + struct i915_hw_ppgtt *ppgtt; + ctx->name = kstrdup(name, GFP_KERNEL); if (!ctx->name) goto err_put; - ctx->ppgtt = mock_ppgtt(i915, name); - if (!ctx->ppgtt) + ppgtt = mock_ppgtt(i915, name); + if (!ppgtt) goto err_put; + + __set_ppgtt(ctx, ppgtt); } return ctx; @@ -87,9 +92,24 @@ void mock_init_contexts(struct drm_i915_private *i915) struct i915_gem_context * live_context(struct drm_i915_private *i915, struct drm_file *file) { + struct i915_gem_context *ctx; + int err; + lockdep_assert_held(&i915->drm.struct_mutex); - return i915_gem_create_context(i915, file->driver_priv); + ctx = i915_gem_create_context(i915, 0); + if (IS_ERR(ctx)) + return ctx; + + err = gem_context_register(ctx, file->driver_priv); + if (err < 0) + goto err_ctx; + + return ctx; + +err_ctx: + context_close(ctx); + return ERR_PTR(err); } struct i915_gem_context * |

