On Mon, May 03, 2021 at 10:57:46AM -0500, Jason Ekstrand wrote: > This better models where we want to go with contexts in general where > things like the VM and engine set are create parameters instead of being > set after the fact. > > Signed-off-by: Jason Ekstrand <jason@xxxxxxxxxxxxxx> Looks reasonable. Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > .../drm/i915/gem/selftests/i915_gem_context.c | 4 ++-- > .../gpu/drm/i915/gem/selftests/mock_context.c | 9 ++++++++- > .../gpu/drm/i915/gem/selftests/mock_context.h | 4 +++- > drivers/gpu/drm/i915/gt/selftest_execlists.c | 20 +++++++++---------- > drivers/gpu/drm/i915/gt/selftest_hangcheck.c | 2 +- > 5 files changed, 24 insertions(+), 15 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c > index 16ff64ab34a1b..76029d7143f6c 100644 > --- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c > @@ -680,7 +680,7 @@ static int igt_ctx_exec(void *arg) > struct i915_gem_context *ctx; > struct intel_context *ce; > > - ctx = kernel_context(i915); > + ctx = kernel_context(i915, NULL); > if (IS_ERR(ctx)) { > err = PTR_ERR(ctx); > goto out_file; > @@ -813,7 +813,7 @@ static int igt_shared_ctx_exec(void *arg) > struct i915_gem_context *ctx; > struct intel_context *ce; > > - ctx = kernel_context(i915); > + ctx = kernel_context(i915, NULL); > if (IS_ERR(ctx)) { > err = PTR_ERR(ctx); > goto out_test; > diff --git a/drivers/gpu/drm/i915/gem/selftests/mock_context.c b/drivers/gpu/drm/i915/gem/selftests/mock_context.c > index 61aaac4a334cf..500ef27ba4771 100644 > --- a/drivers/gpu/drm/i915/gem/selftests/mock_context.c > +++ b/drivers/gpu/drm/i915/gem/selftests/mock_context.c > @@ -150,7 +150,8 @@ live_context_for_engine(struct intel_engine_cs *engine, struct file *file) > } > > struct i915_gem_context * > -kernel_context(struct drm_i915_private *i915) > +kernel_context(struct drm_i915_private *i915, > + struct i915_address_space *vm) > { > struct i915_gem_context *ctx; > struct i915_gem_proto_context *pc; > @@ -159,6 +160,12 @@ kernel_context(struct drm_i915_private *i915) > if (IS_ERR(pc)) > return ERR_CAST(pc); > > + if (vm) { > + if (pc->vm) > + i915_vm_put(pc->vm); > + pc->vm = i915_vm_get(vm); > + } > + > ctx = i915_gem_create_context(i915, pc); > proto_context_close(pc); > if (IS_ERR(ctx)) > diff --git a/drivers/gpu/drm/i915/gem/selftests/mock_context.h b/drivers/gpu/drm/i915/gem/selftests/mock_context.h > index 2a6121d33352d..7a02fd9b5866a 100644 > --- a/drivers/gpu/drm/i915/gem/selftests/mock_context.h > +++ b/drivers/gpu/drm/i915/gem/selftests/mock_context.h > @@ -10,6 +10,7 @@ > struct file; > struct drm_i915_private; > struct intel_engine_cs; > +struct i915_address_space; > > void mock_init_contexts(struct drm_i915_private *i915); > > @@ -25,7 +26,8 @@ live_context(struct drm_i915_private *i915, struct file *file); > struct i915_gem_context * > live_context_for_engine(struct intel_engine_cs *engine, struct file *file); > > -struct i915_gem_context *kernel_context(struct drm_i915_private *i915); > +struct i915_gem_context *kernel_context(struct drm_i915_private *i915, > + struct i915_address_space *vm); > void kernel_context_close(struct i915_gem_context *ctx); > > #endif /* !__MOCK_CONTEXT_H */ > diff --git a/drivers/gpu/drm/i915/gt/selftest_execlists.c b/drivers/gpu/drm/i915/gt/selftest_execlists.c > index a0e75b71a3374..0989e024f7a03 100644 > --- a/drivers/gpu/drm/i915/gt/selftest_execlists.c > +++ b/drivers/gpu/drm/i915/gt/selftest_execlists.c > @@ -1522,12 +1522,12 @@ static int live_busywait_preempt(void *arg) > * preempt the busywaits used to synchronise between rings. > */ > > - ctx_hi = kernel_context(gt->i915); > + ctx_hi = kernel_context(gt->i915, NULL); > if (!ctx_hi) > return -ENOMEM; > ctx_hi->sched.priority = I915_CONTEXT_MAX_USER_PRIORITY; > > - ctx_lo = kernel_context(gt->i915); > + ctx_lo = kernel_context(gt->i915, NULL); > if (!ctx_lo) > goto err_ctx_hi; > ctx_lo->sched.priority = I915_CONTEXT_MIN_USER_PRIORITY; > @@ -1724,12 +1724,12 @@ static int live_preempt(void *arg) > if (igt_spinner_init(&spin_lo, gt)) > goto err_spin_hi; > > - ctx_hi = kernel_context(gt->i915); > + ctx_hi = kernel_context(gt->i915, NULL); > if (!ctx_hi) > goto err_spin_lo; > ctx_hi->sched.priority = I915_CONTEXT_MAX_USER_PRIORITY; > > - ctx_lo = kernel_context(gt->i915); > + ctx_lo = kernel_context(gt->i915, NULL); > if (!ctx_lo) > goto err_ctx_hi; > ctx_lo->sched.priority = I915_CONTEXT_MIN_USER_PRIORITY; > @@ -1816,11 +1816,11 @@ static int live_late_preempt(void *arg) > if (igt_spinner_init(&spin_lo, gt)) > goto err_spin_hi; > > - ctx_hi = kernel_context(gt->i915); > + ctx_hi = kernel_context(gt->i915, NULL); > if (!ctx_hi) > goto err_spin_lo; > > - ctx_lo = kernel_context(gt->i915); > + ctx_lo = kernel_context(gt->i915, NULL); > if (!ctx_lo) > goto err_ctx_hi; > > @@ -1910,7 +1910,7 @@ struct preempt_client { > > static int preempt_client_init(struct intel_gt *gt, struct preempt_client *c) > { > - c->ctx = kernel_context(gt->i915); > + c->ctx = kernel_context(gt->i915, NULL); > if (!c->ctx) > return -ENOMEM; > > @@ -3367,12 +3367,12 @@ static int live_preempt_timeout(void *arg) > if (igt_spinner_init(&spin_lo, gt)) > return -ENOMEM; > > - ctx_hi = kernel_context(gt->i915); > + ctx_hi = kernel_context(gt->i915, NULL); > if (!ctx_hi) > goto err_spin_lo; > ctx_hi->sched.priority = I915_CONTEXT_MAX_USER_PRIORITY; > > - ctx_lo = kernel_context(gt->i915); > + ctx_lo = kernel_context(gt->i915, NULL); > if (!ctx_lo) > goto err_ctx_hi; > ctx_lo->sched.priority = I915_CONTEXT_MIN_USER_PRIORITY; > @@ -3659,7 +3659,7 @@ static int live_preempt_smoke(void *arg) > } > > for (n = 0; n < smoke.ncontext; n++) { > - smoke.contexts[n] = kernel_context(smoke.gt->i915); > + smoke.contexts[n] = kernel_context(smoke.gt->i915, NULL); > if (!smoke.contexts[n]) > goto err_ctx; > } > diff --git a/drivers/gpu/drm/i915/gt/selftest_hangcheck.c b/drivers/gpu/drm/i915/gt/selftest_hangcheck.c > index 746985971c3a6..3676eaf6b2aee 100644 > --- a/drivers/gpu/drm/i915/gt/selftest_hangcheck.c > +++ b/drivers/gpu/drm/i915/gt/selftest_hangcheck.c > @@ -42,7 +42,7 @@ static int hang_init(struct hang *h, struct intel_gt *gt) > memset(h, 0, sizeof(*h)); > h->gt = gt; > > - h->ctx = kernel_context(gt->i915); > + h->ctx = kernel_context(gt->i915, NULL); > if (IS_ERR(h->ctx)) > return PTR_ERR(h->ctx); > > -- > 2.31.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel