drm/i915: Flush request queue when waiting for ring space
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 5 May 2014 08:07:33 +0000 (09:07 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 7 May 2014 23:23:34 +0000 (01:23 +0200)
commit1cf0ba14740d96fbf6f58a201f000a34b74f4725
treed96d157f27c06eb90f91aed6c95aaa0d319c5898
parentdcfe050659bbd02e3b18d4b19eb0bcc8d0072bb0
drm/i915: Flush request queue when waiting for ring space

During the review of

commit 1f70999f9052f5a1b0ce1a55aff3808f2ec9fe42
Author: Chris Wilson <chris@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().

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78023
Reviewed-by: Brad Volkin <bradley.d.volkin@intel.com>
[danvet: Remove now unused 'tail' variable as spotted by Brad.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/intel_ringbuffer.c