Quoting Chris Wilson (2018-02-06 09:46:33)
When a request is preempted, it is unsubmitted from the HW queue and removed from the active list of breadcrumbs. In the process, this however triggers the signaler and it may see the clear rbtree with the old, and still valid, seqno. This confuses the signaler into action and signaling the fence.
Fixes: d6a2289d9d6b ("drm/i915: Remove the preempted request from the execution queue")
Testcase: igt/gem_exec_whisper/*-priority # reproducibility ~10% -Chris