[Intel-xe] [PATCH] drm/xe/slpc: Start SLPC before GuC submission on reset

Matthew Brost matthew.brost at intel.com
Wed Jun 28 19:10:19 UTC 2023


On Tue, Jun 27, 2023 at 05:16:42PM -0700, Daniele Ceraolo Spurio wrote:
> The SLPC code has a strict 5ms timeout from when the start command is
> queued to when we expect the reply to appear in memory. This works if
> the CT channel is empty, but if the channel is busy there might be an
> extra delay that causes the process to exceeded the timeout. We see
> this issue when a reset occurs while userspace keeps submitting,
> because the submission code is re-enabled first and it will start using
> the channel to service those submissions.
> To fix this, we can simply start SLPC before re-enabling submission.
> This has also the benefit of not allowing submissions to go through with
> an uninitialized SLPC.
> 
> Reference: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/375
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> Cc: Vinay Belgaumkar <vinay.belgaumkar at intel.com>
> Cc: Matthew Brost <matthew.brost at intel.com>

Reviewed-by: Matthew Brost <matthew.brost at intel.com>

> ---
>  drivers/gpu/drm/xe/xe_guc.c | 6 +-----
>  1 file changed, 1 insertion(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index 43f862aaacbe..8a9857c78309 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -802,14 +802,10 @@ int xe_guc_start(struct xe_guc *guc)
>  {
>  	int ret;
>  
> -	ret = xe_guc_submit_start(guc);
> -	if (ret)
> -		return ret;
> -
>  	ret = xe_guc_pc_start(&guc->pc);
>  	XE_WARN_ON(ret);
>  
> -	return 0;
> +	return xe_guc_submit_start(guc);;
>  }
>  
>  void xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p)
> -- 
> 2.41.0
> 


More information about the Intel-xe mailing list