[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