[PATCH v2 10/13] drm/i915/xehp: Don't support parallel submission on compute / render

Ceraolo Spurio, Daniele daniele.ceraolospurio at intel.com
Tue Mar 1 19:04:19 UTC 2022



On 2/28/2022 9:42 AM, Matt Roper wrote:
> From: Matthew Brost <matthew.brost at 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 at intel.com>
> Signed-off-by: Matt Roper <matthew.d.roper at 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 at 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;



More information about the dri-devel mailing list