aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_object.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index 726a662f43f4..6982baeccd14 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -635,7 +635,6 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,
635{ 635{
636 struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev); 636 struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
637 int r, i; 637 int r, i;
638 unsigned fpfn, lpfn;
639 638
640 if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm)) 639 if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm))
641 return -EPERM; 640 return -EPERM;
@@ -667,22 +666,16 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,
667 } 666 }
668 667
669 bo->flags |= AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; 668 bo->flags |= AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS;
669 /* force to pin into visible video ram */
670 if (!(bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS))
671 bo->flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
670 amdgpu_ttm_placement_from_domain(bo, domain); 672 amdgpu_ttm_placement_from_domain(bo, domain);
671 for (i = 0; i < bo->placement.num_placement; i++) { 673 for (i = 0; i < bo->placement.num_placement; i++) {
672 /* force to pin into visible video ram */ 674 unsigned fpfn, lpfn;
673 if ((bo->placements[i].flags & TTM_PL_FLAG_VRAM) && 675
674 !(bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS) && 676 fpfn = min_offset >> PAGE_SHIFT;
675 (!max_offset || max_offset > 677 lpfn = max_offset >> PAGE_SHIFT;
676 adev->mc.visible_vram_size)) { 678
677 if (WARN_ON_ONCE(min_offset >
678 adev->mc.visible_vram_size))
679 return -EINVAL;
680 fpfn = min_offset >> PAGE_SHIFT;
681 lpfn = adev->mc.visible_vram_size >> PAGE_SHIFT;
682 } else {
683 fpfn = min_offset >> PAGE_SHIFT;
684 lpfn = max_offset >> PAGE_SHIFT;
685 }
686 if (fpfn > bo->placements[i].fpfn) 679 if (fpfn > bo->placements[i].fpfn)
687 bo->placements[i].fpfn = fpfn; 680 bo->placements[i].fpfn = fpfn;
688 if (!bo->placements[i].lpfn || 681 if (!bo->placements[i].lpfn ||