• C
    drm/i915: Wait for completion of pending flips when starved of fences · 5dce5b93
    Chris Wilson 提交于
    On older generations (gen2, gen3) the GPU requires fences for many
    operations, such as blits. The display hardware also requires fences for
    scanouts and this leads to a situation where an arbitrary number of
    fences may be pinned by old scanouts following a pageflip but before we
    have executed the unpin workqueue. This is unpredictable by userspace
    and leads to random EDEADLK when submitting an otherwise benign
    execbuffer. However, we can detect when we have an outstanding flip and
    so cause userspace to wait upon their completion before finally
    declaring that the system is starved of fences. This is really no worse
    than forcing the GPU to stall waiting for older execbuffer to retire and
    release their fences before we can reallocate them for the next
    execbuffer.
    
    v2: move the test for a pending fb unpin to a common routine for
    later reuse during eviction
    
    Reported-and-tested-by: dimon@gmx.net
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73696Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: NJon Bloomfield <jon.bloomfield@intel.com>
    Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
    5dce5b93
i915_gem.c 129.0 KB