Message ID | 20230118071609.17572-19-niranjana.vishwanathapura@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915/vm_bind: Add VM_BIND functionality | expand |
Hi Niranjana, On Tue, Jan 17, 2023 at 11:16:04PM -0800, Niranjana Vishwanathapura wrote: > Only support vm_bind mode with non-recoverable contexts. > With new vm_bind mode with eb3 submission path, we need not > support older recoverable contexts. > > Reviewed-by: Matthew Auld <matthew.auld@intel.com> > Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com> Andi > --- > drivers/gpu/drm/i915/gem/i915_gem_context.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c > index fb4d2dab5053..9809c58316c2 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c > @@ -1617,6 +1617,12 @@ i915_gem_create_context(struct drm_i915_private *i915, > INIT_LIST_HEAD(&ctx->stale.engines); > > if (pc->vm) { > + /* Only non-recoverable contexts are allowed in vm_bind mode */ > + if (i915_gem_vm_is_vm_bind_mode(pc->vm) && > + (pc->user_flags & BIT(UCONTEXT_RECOVERABLE))) { > + err = -EINVAL; > + goto err_ctx; > + } > vm = i915_vm_get(pc->vm); > } else if (HAS_FULL_PPGTT(i915)) { > struct i915_ppgtt *ppgtt; > -- > 2.21.0.rc0.32.g243a4c7e27
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c index fb4d2dab5053..9809c58316c2 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c @@ -1617,6 +1617,12 @@ i915_gem_create_context(struct drm_i915_private *i915, INIT_LIST_HEAD(&ctx->stale.engines); if (pc->vm) { + /* Only non-recoverable contexts are allowed in vm_bind mode */ + if (i915_gem_vm_is_vm_bind_mode(pc->vm) && + (pc->user_flags & BIT(UCONTEXT_RECOVERABLE))) { + err = -EINVAL; + goto err_ctx; + } vm = i915_vm_get(pc->vm); } else if (HAS_FULL_PPGTT(i915)) { struct i915_ppgtt *ppgtt;