提交 ab709795 编写于 作者: Z Zack Rusin

drm/vmwgfx: Fix mob cursor allocation race

Writes to SVGA_REG_CURSOR_MOBID did not wait for the buffers to be fully
populated. This sometimes results in the device not being aware of
the buffer when the cursor mob register was written.
Properly wait for the buffer to be fully populated before setting it
as a cursor mob.
Signed-off-by: NZack Rusin <zackr@vmware.com>
Fixes: 485d98d4 ("drm/vmwgfx: Add support for CursorMob and CursorBypass 4")
Reviewed-by: NMartin Krastev <krastevm@vmware.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220318174332.440068-3-zack@kde.org
上级 10a26e0d
......@@ -602,6 +602,14 @@ vmw_du_cursor_plane_prepare_fb(struct drm_plane *plane,
ret = ttm_bo_kmap(cm_bo, 0, PFN_UP(size), &vps->cm_map);
/*
* We just want to try to get mob bind to finish
* so that the first write to SVGA_REG_CURSOR_MOBID
* is done with a buffer that the device has already
* seen
*/
(void) ttm_bo_wait(cm_bo, false, false);
ttm_bo_unreserve(cm_bo);
if (unlikely(ret != 0)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册