aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2017-09-11 11:10:26 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-09-13 12:10:13 -0400
commit88531913a841a6354adfb40c78c86599639e5f32 (patch)
tree3d41eef3240cfcecda77b8bf644b34d4a1a95eef /drivers/gpu/drm/amd/amdgpu
parent9f0ed7aab60e3563bfe247bc2ad82db3a88c2d57 (diff)
drm/amd: remove min/max addr handling from cgs
Nobody is actually using this and it causes a bunch of unused and buggy code. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c48
1 files changed, 3 insertions, 45 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
index 892cd8b3483c..df3bf22039d5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
@@ -45,7 +45,6 @@ struct amdgpu_cgs_device {
45static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device, 45static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device,
46 enum cgs_gpu_mem_type type, 46 enum cgs_gpu_mem_type type,
47 uint64_t size, uint64_t align, 47 uint64_t size, uint64_t align,
48 uint64_t min_offset, uint64_t max_offset,
49 cgs_handle_t *handle) 48 cgs_handle_t *handle)
50{ 49{
51 CGS_FUNC_ADEV; 50 CGS_FUNC_ADEV;
@@ -53,13 +52,6 @@ static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device,
53 int ret = 0; 52 int ret = 0;
54 uint32_t domain = 0; 53 uint32_t domain = 0;
55 struct amdgpu_bo *obj; 54 struct amdgpu_bo *obj;
56 struct ttm_placement placement;
57 struct ttm_place place;
58
59 if (min_offset > max_offset) {
60 BUG_ON(1);
61 return -EINVAL;
62 }
63 55
64 /* fail if the alignment is not a power of 2 */ 56 /* fail if the alignment is not a power of 2 */
65 if (((align != 1) && (align & (align - 1))) 57 if (((align != 1) && (align & (align - 1)))
@@ -73,41 +65,19 @@ static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device,
73 flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | 65 flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
74 AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; 66 AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS;
75 domain = AMDGPU_GEM_DOMAIN_VRAM; 67 domain = AMDGPU_GEM_DOMAIN_VRAM;
76 if (max_offset > adev->mc.real_vram_size)
77 return -EINVAL;
78 place.fpfn = min_offset >> PAGE_SHIFT;
79 place.lpfn = max_offset >> PAGE_SHIFT;
80 place.flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED |
81 TTM_PL_FLAG_VRAM;
82 break; 68 break;
83 case CGS_GPU_MEM_TYPE__INVISIBLE_CONTIG_FB: 69 case CGS_GPU_MEM_TYPE__INVISIBLE_CONTIG_FB:
84 case CGS_GPU_MEM_TYPE__INVISIBLE_FB: 70 case CGS_GPU_MEM_TYPE__INVISIBLE_FB:
85 flags = AMDGPU_GEM_CREATE_NO_CPU_ACCESS | 71 flags = AMDGPU_GEM_CREATE_NO_CPU_ACCESS |
86 AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; 72 AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS;
87 domain = AMDGPU_GEM_DOMAIN_VRAM; 73 domain = AMDGPU_GEM_DOMAIN_VRAM;
88 if (adev->mc.visible_vram_size < adev->mc.real_vram_size) {
89 place.fpfn =
90 max(min_offset, adev->mc.visible_vram_size) >> PAGE_SHIFT;
91 place.lpfn =
92 min(max_offset, adev->mc.real_vram_size) >> PAGE_SHIFT;
93 place.flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED |
94 TTM_PL_FLAG_VRAM;
95 }
96
97 break; 74 break;
98 case CGS_GPU_MEM_TYPE__GART_CACHEABLE: 75 case CGS_GPU_MEM_TYPE__GART_CACHEABLE:
99 domain = AMDGPU_GEM_DOMAIN_GTT; 76 domain = AMDGPU_GEM_DOMAIN_GTT;
100 place.fpfn = min_offset >> PAGE_SHIFT;
101 place.lpfn = max_offset >> PAGE_SHIFT;
102 place.flags = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT;
103 break; 77 break;
104 case CGS_GPU_MEM_TYPE__GART_WRITECOMBINE: 78 case CGS_GPU_MEM_TYPE__GART_WRITECOMBINE:
105 flags = AMDGPU_GEM_CREATE_CPU_GTT_USWC; 79 flags = AMDGPU_GEM_CREATE_CPU_GTT_USWC;
106 domain = AMDGPU_GEM_DOMAIN_GTT; 80 domain = AMDGPU_GEM_DOMAIN_GTT;
107 place.fpfn = min_offset >> PAGE_SHIFT;
108 place.lpfn = max_offset >> PAGE_SHIFT;
109 place.flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_TT |
110 TTM_PL_FLAG_UNCACHED;
111 break; 81 break;
112 default: 82 default:
113 return -EINVAL; 83 return -EINVAL;
@@ -116,15 +86,8 @@ static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device,
116 86
117 *handle = 0; 87 *handle = 0;
118 88
119 placement.placement = &place; 89 ret = amdgpu_bo_create(adev, size, align, true, domain, flags,
120 placement.num_placement = 1; 90 NULL, NULL, 0, &obj);
121 placement.busy_placement = &place;
122 placement.num_busy_placement = 1;
123
124 ret = amdgpu_bo_create_restricted(adev, size, align,
125 true, domain, flags,
126 NULL, &placement, NULL,
127 0, &obj);
128 if (ret) { 91 if (ret) {
129 DRM_ERROR("(%d) bo create failed\n", ret); 92 DRM_ERROR("(%d) bo create failed\n", ret);
130 return ret; 93 return ret;
@@ -155,19 +118,14 @@ static int amdgpu_cgs_gmap_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t h
155 uint64_t *mcaddr) 118 uint64_t *mcaddr)
156{ 119{
157 int r; 120 int r;
158 u64 min_offset, max_offset;
159 struct amdgpu_bo *obj = (struct amdgpu_bo *)handle; 121 struct amdgpu_bo *obj = (struct amdgpu_bo *)handle;
160 122
161 WARN_ON_ONCE(obj->placement.num_placement > 1); 123 WARN_ON_ONCE(obj->placement.num_placement > 1);
162 124
163 min_offset = obj->placements[0].fpfn << PAGE_SHIFT;
164 max_offset = obj->placements[0].lpfn << PAGE_SHIFT;
165
166 r = amdgpu_bo_reserve(obj, true); 125 r = amdgpu_bo_reserve(obj, true);
167 if (unlikely(r != 0)) 126 if (unlikely(r != 0))
168 return r; 127 return r;
169 r = amdgpu_bo_pin_restricted(obj, obj->preferred_domains, 128 r = amdgpu_bo_pin(obj, obj->preferred_domains, mcaddr);
170 min_offset, max_offset, mcaddr);
171 amdgpu_bo_unreserve(obj); 129 amdgpu_bo_unreserve(obj);
172 return r; 130 return r;
173} 131}