aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_ttm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_ttm.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_ttm.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index 6d8c32377c6f..7dddfdce85e6 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -397,9 +397,15 @@ static int radeon_bo_move(struct ttm_buffer_object *bo,
397 struct ttm_mem_reg *new_mem) 397 struct ttm_mem_reg *new_mem)
398{ 398{
399 struct radeon_device *rdev; 399 struct radeon_device *rdev;
400 struct radeon_bo *rbo;
400 struct ttm_mem_reg *old_mem = &bo->mem; 401 struct ttm_mem_reg *old_mem = &bo->mem;
401 int r; 402 int r;
402 403
404 /* Can't move a pinned BO */
405 rbo = container_of(bo, struct radeon_bo, tbo);
406 if (WARN_ON_ONCE(rbo->pin_count > 0))
407 return -EINVAL;
408
403 rdev = radeon_get_rdev(bo->bdev); 409 rdev = radeon_get_rdev(bo->bdev);
404 if (old_mem->mem_type == TTM_PL_SYSTEM && bo->ttm == NULL) { 410 if (old_mem->mem_type == TTM_PL_SYSTEM && bo->ttm == NULL) {
405 radeon_move_null(bo, new_mem); 411 radeon_move_null(bo, new_mem);
@@ -609,7 +615,7 @@ static void radeon_ttm_tt_unpin_userptr(struct ttm_tt *ttm)
609 set_page_dirty(page); 615 set_page_dirty(page);
610 616
611 mark_page_accessed(page); 617 mark_page_accessed(page);
612 page_cache_release(page); 618 put_page(page);
613 } 619 }
614 620
615 sg_free_table(ttm->sg); 621 sg_free_table(ttm->sg);