• Chris Wilson's avatar
    drm/i915: Remove request retirement before each batch · 0340d9fd
    Chris Wilson authored
    This reimplements the denial-of-service protection against igt from
    commit 227f782e ("drm/i915: Retire requests before creating a new
    one") and transfers the stall from before each batch into get_pages().
    The issue is that the stall is increasing latency between batches which
    is detrimental in some cases (especially coupled with execlists) to
    keeping the GPU well fed. Also we have made the observation that retiring
    requests can of itself free objects (and requests) and therefore makes
    a good first step when shrinking.
    
    v2: Recycle objects prior to i915_gem_object_get_pages()
    v3: Remove the reference to the ring from i915_gem_requests_ring() as it
    operates on an intel_engine_cs.
    v4: Since commit 9b5f4e5e ("drm/i915: Retire oldest completed request
    before allocating next") we no longer need the safeguard to retire
    requests before get_pages(). We no longer see the huge latencies when
    hitting the shrinker between allocations.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1470324762-2545-4-git-send-email-chris@chris-wilson.co.uk
    0340d9fd
i915_gem_execbuffer.c 50.3 KB