[Intel-gfx] [PATCH 2/5] drm/i915/selftests: Flush the active callbacks

Chris Wilson chris at chris-wilson.co.uk
Fri Nov 22 13:23:43 UTC 2019


Quoting Tvrtko Ursulin (2019-11-22 13:01:56)
> 
> On 22/11/2019 11:21, Chris Wilson wrote:
> > Before checking the current i915_active state for the asynchronous work
> > we submitted, flush any ongoing callback. This ensures that our sampling
> > is robust and does not sporadically fail due to bad timing as the work
> > is running on another cpu.
> > 
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> >   drivers/gpu/drm/i915/gt/selftest_context.c | 19 +++++++++++++------
> >   1 file changed, 13 insertions(+), 6 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/gt/selftest_context.c b/drivers/gpu/drm/i915/gt/selftest_context.c
> > index 3586af636304..939798338242 100644
> > --- a/drivers/gpu/drm/i915/gt/selftest_context.c
> > +++ b/drivers/gpu/drm/i915/gt/selftest_context.c
> > @@ -48,20 +48,25 @@ static int context_sync(struct intel_context *ce)
> >   
> >       mutex_lock(&tl->mutex);
> >       do {
> > -             struct dma_fence *fence;
> > +             struct i915_request *rq;
> >               long timeout;
> >   
> > -             fence = i915_active_fence_get(&tl->last_request);
> > -             if (!fence)
> > +             if (list_empty(&tl->requests))
> >                       break;
> >   
> > -             timeout = dma_fence_wait_timeout(fence, false, HZ / 10);
> > +             rq = list_last_entry(&tl->requests, typeof(*rq), link);
> > +             i915_request_get(rq);
> > +
> > +             timeout = i915_request_wait(rq, 0, HZ / 10);
> >               if (timeout < 0)
> >                       err = timeout;
> >               else
> > -                     i915_request_retire_upto(to_request(fence));
> > +                     i915_request_retire_upto(rq);
> >   
> > -             dma_fence_put(fence);
> > +             spin_lock_irq(&rq->lock);
> > +             spin_unlock_irq(&rq->lock);
> 
> Ugh.. this at least needs a comment.

I admit it also should not be required with the swap to list_last_entry.
-Chris


More information about the Intel-gfx mailing list