diff options
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 23 |
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 || |