diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_ttm.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_ttm.c | 8 |
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); |