Message ID | 20220228174245.1569581-11-matthew.d.roper@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | i915: Prepare for Xe_HP compute engines | expand |
On 2/28/2022 9:42 AM, Matt Roper wrote: > From: Matthew Brost <matthew.brost@intel.com> > > A different emit breadcrumbs ring programming is required for compute / > render and we don't have UMD user so just reject parallel submission for > these engine classes. > > Signed-off-by: Matthew Brost <matthew.brost@intel.com> > Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Excluding the RCS is not really required given that there is only 1 instance and therefore can't be used for parallel submission (which is why we didn't need this check before the compute engines were added), but I agree that for coherency and future-proofing it makes sense to explicitly exclude all the unsupported classes. Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> > --- > drivers/gpu/drm/i915/gem/i915_gem_context.c | 10 ++++++++++ > drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c | 4 ++++ > 2 files changed, 14 insertions(+) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c > index bc6d59df064d..9ae294eb7fb4 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c > @@ -670,6 +670,16 @@ set_proto_ctx_engines_parallel_submit(struct i915_user_extension __user *base, > goto out_err; > } > > + /* > + * We don't support breadcrumb handshake on these > + * classes > + */ > + if (siblings[n]->class == RENDER_CLASS || > + siblings[n]->class == COMPUTE_CLASS) { > + err = -EINVAL; > + goto out_err; > + } > + > if (n) { > if (prev_engine.engine_class != > ci.engine_class) { > diff --git a/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c b/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c > index 1297ddbf7f88..f9218a37d170 100644 > --- a/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c > +++ b/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c > @@ -154,6 +154,10 @@ static int intel_guc_multi_lrc_basic(void *arg) > int ret; > > for (class = 0; class < MAX_ENGINE_CLASS + 1; ++class) { > + /* We don't support breadcrumb handshake on these classes */ > + if (class == COMPUTE_CLASS || class == RENDER_CLASS) > + continue; > + > ret = __intel_guc_multi_lrc_basic(gt, class); > if (ret) > return ret;
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c index bc6d59df064d..9ae294eb7fb4 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c @@ -670,6 +670,16 @@ set_proto_ctx_engines_parallel_submit(struct i915_user_extension __user *base, goto out_err; } + /* + * We don't support breadcrumb handshake on these + * classes + */ + if (siblings[n]->class == RENDER_CLASS || + siblings[n]->class == COMPUTE_CLASS) { + err = -EINVAL; + goto out_err; + } + if (n) { if (prev_engine.engine_class != ci.engine_class) { diff --git a/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c b/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c index 1297ddbf7f88..f9218a37d170 100644 --- a/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c +++ b/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c @@ -154,6 +154,10 @@ static int intel_guc_multi_lrc_basic(void *arg) int ret; for (class = 0; class < MAX_ENGINE_CLASS + 1; ++class) { + /* We don't support breadcrumb handshake on these classes */ + if (class == COMPUTE_CLASS || class == RENDER_CLASS) + continue; + ret = __intel_guc_multi_lrc_basic(gt, class); if (ret) return ret;