There are quite alot of nasty things happening inside the seemingly bening intel_ring_begin() if seqno wrap happens. Warn the reader about it.
Signed-off-by: Mika Kuoppala <mika.kuopp...@intel.com> --- drivers/gpu/drm/i915/intel_ringbuffer.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index d897a19..f99e2ae 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -727,7 +727,13 @@ gen6_ring_sync(struct intel_ring_buffer *waiter, if (ret) return ret; - /* If seqno wrap happened, omit the wait with no-ops */ + /* Seqno allocation is inside intel_ring_begin() so the seqno + * wrap (re init of driver seqno counter) might have happened. + * This means that the seqno we are syncing to, just became + * irrelevant in this brand new seqno universe. And as it does + * not exists anymore, waiting for it to happen is unwise. + * If this is the case, emit no-ops instead. + */ if (likely(!i915_gem_has_seqno_wrapped(waiter->dev, seqno))) { intel_ring_emit(waiter, dw1 | -- 1.7.9.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx