Chris Wilson 55f99bf2a9 drm/i915/ringbuffer: Delay after EMIT_INVALIDATE for gen4/gen5
Exercising the gpu reloc path strenuously revealed an issue where the
updated relocations (from MI_STORE_DWORD_IMM) were not being observed
upon execution. After some experiments with adding pipecontrols (a lot
of pipecontrols (32) as gen4/5 do not have a bit to wait on earlier pipe
controls or even the current on), it was discovered that we merely
needed to delay the EMIT_INVALIDATE by several flushes. It is important
to note that it is the EMIT_INVALIDATE as opposed to the EMIT_FLUSH that
needs the delay as opposed to what one might first expect -- that the
delay is required for the TLB invalidation to take effect (one presumes
to purge any CS buffers) as opposed to a delay after flushing to ensure
the writes have landed before triggering invalidation.

Testcase: igt/gem_tiled_fence_blits
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@vger.kernel.org
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181105094305.5767-1-chris@chris-wilson.co.uk
2018-11-07 15:31:45 +00:00
..
2018-09-09 14:19:18 +02:00
2018-10-04 11:03:34 +10:00
2018-08-17 10:40:09 -07:00
2018-10-02 09:36:56 +03:00
2018-06-22 12:58:08 +10:00
2018-09-28 09:47:31 +10:00
2018-09-27 02:54:54 -04:00
2018-09-27 02:54:54 -04:00
2018-06-28 13:29:07 +10:00
2018-07-13 18:40:28 +02:00
2018-10-04 11:03:34 +10:00
2018-10-04 11:03:34 +10:00
2018-09-09 14:19:18 +02:00