[Intel-gfx] [PATCH] drm/i915: Don't skip request retirement if the active list is empty

Chris Wilson chris at chris-wilson.co.uk
Thu May 28 09:12:14 PDT 2015


On Thu, May 28, 2015 at 07:03:23PM +0300, Ville Syrjälä wrote:
> On Thu, May 28, 2015 at 04:47:49PM +0100, Chris Wilson wrote:
> > On Thu, May 28, 2015 at 06:32:36PM +0300, ville.syrjala at linux.intel.com wrote:
> > > From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > > 
> > > Apparently we can have requests even if though the active list is empty,
> > > so do the request retirement regardless of whether there's anything
> > > on the active list.
> > > 
> > > The way it happened here is that during suspend intel_ring_idle()
> > > notices the olr hanging around and then proceeds to get rid of it by
> > > adding a request. However since there was nothing on the active lists
> > > i915_gem_retire_requests() didn't clean those up, and so the idle work
> > > never runs, and we leave the GPU "busy" during suspend resulting in a
> > > WARN later.
> > 
> > Whlist I agree (I use list_empty(&ring->request_list);) I strongly
> > suspect something (i.e. execlists) isn't managing the active_list
> > correctly. Pretty much the only thing that can generate a request
> > without an object (and so avoid touching the active_list) is a CS flip,
> > and I doubt you are using those...
> 
> Oh, I forgot to mention that this was in ringbuffer mode. I guess I
> should try execlist too.

Now I am even more curious where the partial request came from. Anyhow,
it is immaterial since olr is just a great big wart overdue for
replacement.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list