[PATCH] drm/xe/xe_guc_submit: Declare reset if guc stopped
Cavitt, Jonathan
jonathan.cavitt at intel.com
Tue Jun 4 15:00:19 UTC 2024
-----Original Message-----
From: Brost, Matthew <matthew.brost at intel.com>
Sent: Monday, June 3, 2024 3:40 PM
To: Cavitt, Jonathan <jonathan.cavitt at intel.com>
Cc: intel-xe at lists.freedesktop.org; Gupta, saurabhg <saurabhg.gupta at intel.com>; Harrison, John C <john.c.harrison at intel.com>; Summers, Stuart <stuart.summers at intel.com>
Subject: Re: [PATCH] drm/xe/xe_guc_submit: Declare reset if guc stopped
>
> On Mon, Jun 03, 2024 at 02:05:54PM -0700, Jonathan Cavitt wrote:
> > An exec queue should be considered reset if the guc it was running on
> > has had its submission state disabled, as this normally only occurs on
> > a reset. So, add the condition to the reset_status guc_exec_queue_op.
> >
> > Signed-off-by: Jonathan Cavitt <jonathan.cavitt at intel.com>
> > CC: John Harrison <john.c.harrison at intel.com>
> > CC: Matthew Brost <matthew.brost at intel.com>
> > CC: Stuart Summers <stuart.summers at intel.com>
> > ---
> > drivers/gpu/drm/xe/xe_guc_submit.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> > index d9c159e3c5320..8c0b0c70fa5ea 100644
> > --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> > @@ -1414,7 +1414,8 @@ static void guc_exec_queue_resume(struct xe_exec_queue *q)
> >
> > static bool guc_exec_queue_reset_status(struct xe_exec_queue *q)
> > {
> > - return exec_queue_reset(q) || exec_queue_killed_or_banned_or_wedged(q);
> > + return guc_read_stopped(exec_queue_to_guc(q)) ||
>
> I haven't wrapped my head around this issue completely but will take an
> in depth look shortly but this patch is not correct. We only ban exec
> queues which have jobs started but not completed during GT reset whereas
> this patch will report all exec queues as reset during a period of time
> when GuC submission is stopped (e.g. during a GT reset all exec queues
> will being reset).
Is there a way to check the "started" status of an exec queue? We could use
that as an additional condition for the check, I.E.:
if (guc_read_stopped(exec_queue_to_guc(q)) && exec_queue_started(q))
return true;
else if (exec_queue_reset(q) || exec_queue_killed_or_banned_or_wedged(q))
return true;
return false;
-Jonathan Cavitt
>
> Matt
>
> > + exec_queue_reset(q) || exec_queue_killed_or_banned_or_wedged(q);
> > }
> >
> > /*
> > --
> > 2.25.1
> >
>
More information about the Intel-xe
mailing list