drm/i915: Check against the signaled bit for fences/requests
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 23 Feb 2017 07:44:07 +0000 (07:44 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 23 Feb 2017 14:49:25 +0000 (14:49 +0000)
commit309663ab7b4f0de1540aff212fd067e3dd92acf3
tree77a7f2071bed4b517512a4c061cb8ad7cf7ae0ac
parenta5570fe5c2ca012f92666eb790973827554e19df
drm/i915: Check against the signaled bit for fences/requests

When dma_fence_signal() is called, it sets a flag to indicate the fence
is complete. Before the dma_fence is signaled, the seqno check will
first be passed. During an unlocked check (such as inside a waiter), it
is possible for the fence to be signaled even though the seqno has been
reset (by engine wraparound). In this case the waiter will be kicked,
but for an extra layer of protection we can check the persistent
signaled bit from the fence.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170223074422.4125-2-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_drv.h