[PATCH] drm/i915/gt: Add delay to let engine resumes properly

Gote, Nitin R nitin.r.gote at intel.com
Tue Apr 29 07:01:36 UTC 2025


Hi Krzysztof,

> 
> Hi Nitin,
> 
> [...]
> 
> > -		if (!stop_ring(engine)) {
> > +		/*
> > +		 * Sometimes engine head failed to set to zero even after writing
> into it.
> > +		 * Use wait_for_atomic() with 20ms delay to let engine resumes
> from
> > +		 * correct RING_HEAD. Experimented different values and
> determined
> > +		 * that 20ms works best based on testing.
> > +		 */
> > +		if (wait_for_atomic((!stop_ring(engine) == 0), 20)) {
> >  			drm_err(&engine->i915->drm,
> >  				"failed to set %s head to zero "
> >  				"ctl %08x head %08x tail %08x start %08x\n",
> 
> I am wondering if xcs_resume() calling stop_ring() too would benefit from having
> this timeout on hand as well. That would require moving
> wait_for_atomic((!stop_ring(engine) == 0), 20) along with your comment to a
> separate wrapper function.
> What do you think?

In xcs_resume(), there is no need for a timeout for stop_ring(), as we have not encountered any issues/errors in xcs_resume().
So, I think, currently there is no need for a separate wrapper function.

- Nitin

> 
> Best Regards
> Krzysztof



More information about the Intel-gfx mailing list