• Chris Wilson's avatar
    drm/i915: Only spin whilst waiting on the current request · 821485dc
    Chris Wilson authored
    Limit busywaiting only to the request currently being processed by the
    GPU. If the request is not currently being processed by the GPU, there
    is a very low likelihood of it being completed within the 2 microsecond
    spin timeout and so we will just be wasting CPU cycles.
    
    v2: Check for logical inversion when rebasing - we were incorrectly
    checking for this request being active, and instead busywaiting for
    when the GPU was not yet processing the request of interest.
    
    v3: Try another colour for the seqno names.
    v4: Another colour for the function names.
    
    v5: Remove the forced coherency when checking for the active request. On
    reflection and plenty of recent experimentation, the issue is not a
    cache coherency problem - but an irq/seqno ordering problem (timing issue).
    Here, we do not need the w/a to force ordering of the read with an
    interrupt.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
    Cc: "Rogozhkin, Dmitry V" <dmitry.v.rogozhkin@intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
    Cc: Eero Tamminen <eero.t.tamminen@intel.com>
    Cc: "Rantala, Valtteri" <valtteri.rantala@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/1449833608-22125-4-git-send-email-chris@chris-wilson.co.uk
    821485dc
i915_drv.h 108 KB