• Chris Wilson's avatar
    drm: Only evict the blocks required to create the requested hole · 901593f2
    Chris Wilson authored
    Avoid clobbering adjacent blocks if they happen to expire earlier and
    amalgamate together to form the requested hole.
    
    In passing this fixes a regression from
    commit ea7b1dd4
    Author: Daniel Vetter <daniel.vetter@ffwll.ch>
    Date:   Fri Feb 18 17:59:12 2011 +0100
    
        drm: mm: track free areas implicitly
    
    which swaps the end address for size (with a potential overflow) and
    effectively causes the eviction code to clobber almost all earlier
    buffers above the evictee.
    
    v2: Check the original hole not the adjusted as the coloring may confuse
    us when later searching for the overlapping nodes. Also make sure that
    we do apply the range restriction and color adjustment in the same
    order for both scanning, searching and insertion.
    
    v3: Send the version that was actually tested.
    
    Note that this seems to be ducttape of decent quality ot paper over
    some of our unbind related gpu hangs reported since 3.7. It is not
    fully effective though, and certainly doesn't fix the underlying bug.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    [danvet: Added note plus bugzilla link and tested-by.]
    Cc: stable@vger.kernel.org
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55984Tested-by: default avatarNorbert Preining <preining@logic.at>
    Acked-by: Dave Airlie <airlied@gmail.com
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    901593f2
drm_mm.c 20.3 KB