Message ID | 20210803222943.27686-40-matthew.brost@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Parallel submission aka multi-bb execbuf | expand |
On Tue, Aug 03, 2021 at 03:29:36PM -0700, Matthew Brost wrote: > Submitting to a subset of hardware contexts is not allowed, so use the > copy engine for GPU relocations when using a parallel context. > > Signed-off-by: Matthew Brost <matthew.brost@intel.com> Luckily I just pushed the patches to delete all this, so you can too. -Daniel > --- > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c > index b224b28530d1..b6143973ac67 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c > @@ -1386,7 +1386,8 @@ static int __reloc_gpu_alloc(struct i915_execbuffer *eb, > if (err) > goto err_unmap; > > - if (engine == eb->context->engine) { > + if (engine == eb->context->engine && > + !intel_context_is_parallel(eb->context)) { > rq = i915_request_create(eb->context); > } else { > struct intel_context *ce = eb->reloc_context; > @@ -1483,7 +1484,8 @@ static u32 *reloc_gpu(struct i915_execbuffer *eb, > if (eb_use_cmdparser(eb)) > return ERR_PTR(-EWOULDBLOCK); > > - if (!reloc_can_use_engine(engine)) { > + if (!reloc_can_use_engine(engine) || > + intel_context_is_parallel(eb->context)) { > engine = engine->gt->engine_class[COPY_ENGINE_CLASS][0]; > if (!engine) > return ERR_PTR(-ENODEV); > -- > 2.28.0 >
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c index b224b28530d1..b6143973ac67 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -1386,7 +1386,8 @@ static int __reloc_gpu_alloc(struct i915_execbuffer *eb, if (err) goto err_unmap; - if (engine == eb->context->engine) { + if (engine == eb->context->engine && + !intel_context_is_parallel(eb->context)) { rq = i915_request_create(eb->context); } else { struct intel_context *ce = eb->reloc_context; @@ -1483,7 +1484,8 @@ static u32 *reloc_gpu(struct i915_execbuffer *eb, if (eb_use_cmdparser(eb)) return ERR_PTR(-EWOULDBLOCK); - if (!reloc_can_use_engine(engine)) { + if (!reloc_can_use_engine(engine) || + intel_context_is_parallel(eb->context)) { engine = engine->gt->engine_class[COPY_ENGINE_CLASS][0]; if (!engine) return ERR_PTR(-ENODEV);
Submitting to a subset of hardware contexts is not allowed, so use the copy engine for GPU relocations when using a parallel context. Signed-off-by: Matthew Brost <matthew.brost@intel.com> --- drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)