• Sinclair Yeh's avatar
    drm/vmwgfx: Check pin count before attempting to move a buffer · 4ed7e224
    Sinclair Yeh authored
    In certain scenarios, e.g. when fbdev is enabled, we can get into
    a situation where a vmw_framebuffer_pin() is called on a buffer
    that is already pinned.
    
    When this happens, ttm_bo_validate() will unintentially remove the
    TTM_PL_FLAG_NO_EVICT flag, thus unpinning it, and leaving no way
    to actually pin the buffer again.
    
    To prevent this, if a buffer is already pinned, then instead of
    calling ttm_bo_validate(), just make sure the proposed placement is
    compatible with the existing placement.
    Signed-off-by: default avatarSinclair Yeh <syeh@vmware.com>
    Reviewed-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
    Cc: <stable@vger.kernel.org>
    ---
    This is the 2nd patch in a 3-patch series to fix a console black
    screen issue on Ubuntu 16.04 server.  This fixes a BUG_ON()
    condition where a pinned buffer gets accidentally put onto the
    LRU list.
    4ed7e224
vmwgfx_dmabuf.c 8.37 KB