[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