Commit cef9e99e authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/ttm: explicitly wait for bo idle before memcpy buffer move

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 35b8141b
...@@ -1180,28 +1180,27 @@ nouveau_bo_move(struct ttm_buffer_object *bo, bool evict, bool intr, ...@@ -1180,28 +1180,27 @@ nouveau_bo_move(struct ttm_buffer_object *bo, bool evict, bool intr,
goto out; goto out;
} }
/* CPU copy if we have no accelerated method available */
if (!drm->ttm.move) {
ret = ttm_bo_move_memcpy(bo, evict, no_wait_gpu, new_mem);
goto out;
}
/* Hardware assisted copy. */ /* Hardware assisted copy. */
if (new_mem->mem_type == TTM_PL_SYSTEM) if (drm->ttm.move) {
ret = nouveau_bo_move_flipd(bo, evict, intr, if (new_mem->mem_type == TTM_PL_SYSTEM)
no_wait_gpu, new_mem); ret = nouveau_bo_move_flipd(bo, evict, intr,
else if (old_mem->mem_type == TTM_PL_SYSTEM) no_wait_gpu, new_mem);
ret = nouveau_bo_move_flips(bo, evict, intr, else if (old_mem->mem_type == TTM_PL_SYSTEM)
no_wait_gpu, new_mem); ret = nouveau_bo_move_flips(bo, evict, intr,
else no_wait_gpu, new_mem);
ret = nouveau_bo_move_m2mf(bo, evict, intr, else
no_wait_gpu, new_mem); ret = nouveau_bo_move_m2mf(bo, evict, intr,
no_wait_gpu, new_mem);
if (!ret) if (!ret)
goto out; goto out;
}
/* Fallback to software copy. */ /* Fallback to software copy. */
ret = ttm_bo_move_memcpy(bo, evict, no_wait_gpu, new_mem); spin_lock(&bo->bdev->fence_lock);
ret = ttm_bo_wait(bo, true, intr, no_wait_gpu);
spin_unlock(&bo->bdev->fence_lock);
if (ret == 0)
ret = ttm_bo_move_memcpy(bo, evict, no_wait_gpu, new_mem);
out: out:
if (nv_device(drm->device)->card_type < NV_50) { if (nv_device(drm->device)->card_type < NV_50) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment