[Intel-gfx] [PATCH 2/2] drm/i915: Flush request queue when waiting for ring space

Chris Wilson chris at chris-wilson.co.uk
Mon May 5 21:09:18 CEST 2014


On Mon, May 05, 2014 at 11:49:12AM -0700, Ben Widawsky wrote:
> On Mon, May 05, 2014 at 09:07:33AM +0100, Chris Wilson wrote:
> > During the review of
> > 
> > commit 1f70999f9052f5a1b0ce1a55aff3808f2ec9fe42
> > Author: Chris Wilson <chris at chris-wilson.co.uk>
> > Date:   Mon Jan 27 22:43:07 2014 +0000
> > 
> >     drm/i915: Prevent recursion by retiring requests when the ring is full
> > 
> > Ville raised the point that our interaction with request->tail was
> > likely to foul up other uses elsewhere (such as hang check comparing
> > ACTHD against requests).
> > 
> > However, we also need to restore the implicit retire requests that certain
> > test cases depend upon (e.g. igt/gem_exec_lut_handle), this raises the
> > spectre that the ppgtt will randomly call i915_gpu_idle() and recurse
> > back into intel_ring_begin().
> 
> Forgive my ignorance. Why is i915_gpu_idle() randomly being called for
> PPGTT? I don't see anything PPGTT specific here.

commit 1f70999f9052f5a1b0ce1a55aff3808f2ec9fe42
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Jan 27 22:43:07 2014 +0000

    drm/i915: Prevent recursion by retiring requests when the ring is full
    
    As the VM do not track activity of objects and instead use a large
    hammer to forcibly idle and evict all of their associated objects when
    one is released, it is possible for that to cause a recursion when we
    need to wait for free space on a ring and call retire requests.
    (intel_ring_begin -> intel_ring_wait_request ->
    i915_gem_retire_requests_ring -> i915_gem_context_free ->
    i915_gem_evict_vm -> i915_gpu_idle -> intel_ring_begin etc)
    
    In order to remove the requirement for calling retire-requests from
    intel_ring_wait_request, we have to inline a couple of steps from
    retiring requests, notably we have to record the position of the request
    we wait for and use that to update the available ring space.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list