]> git.baikalelectronics.ru Git - kernel.git/commit
drm/vmwgfx: Check pin count before attempting to move a buffer
authorSinclair Yeh <syeh@vmware.com>
Wed, 29 Jun 2016 20:20:26 +0000 (13:20 -0700)
committerSinclair Yeh <syeh@vmware.com>
Fri, 1 Jul 2016 17:47:50 +0000 (10:47 -0700)
commit2142d3eb4cf88f6f0c6c0b671d75cb136a3b76cb
tree2eee093f5c616fd30fbda370c67aa1e2701a941e
parent45843928da06a780879fb78a539a4024f0b1f7be
drm/vmwgfx: Check pin count before attempting to move a buffer

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: Sinclair Yeh <syeh@vmware.com>
Reviewed-by: Thomas 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.
drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c