aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2016-09-12 10:06:18 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-09-14 15:10:45 -0400
commit08291c5c2ea76af86b6a3d8ef78c60f3ef8a8413 (patch)
tree2b7231543d060b4a20638345adf5eb06c3f7d223 /drivers/gpu/drm/amd/amdgpu
parent78ab0a38bfe0e02db6e619185dd4337fc97e3ffe (diff)
drm/amdgpu: use explicit GTT limit for evictions
This way the address space gets allocated immediately. 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_ttm.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 8aa3fe6c270c..3daf85897d7c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -201,6 +201,7 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
201 .lpfn = 0, 201 .lpfn = 0,
202 .flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM 202 .flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM
203 }; 203 };
204 unsigned i;
204 205
205 if (!amdgpu_ttm_bo_is_amdgpu_bo(bo)) { 206 if (!amdgpu_ttm_bo_is_amdgpu_bo(bo)) {
206 placement->placement = &placements; 207 placement->placement = &placements;
@@ -212,10 +213,25 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
212 rbo = container_of(bo, struct amdgpu_bo, tbo); 213 rbo = container_of(bo, struct amdgpu_bo, tbo);
213 switch (bo->mem.mem_type) { 214 switch (bo->mem.mem_type) {
214 case TTM_PL_VRAM: 215 case TTM_PL_VRAM:
215 if (rbo->adev->mman.buffer_funcs_ring->ready == false) 216 if (rbo->adev->mman.buffer_funcs_ring->ready == false) {
216 amdgpu_ttm_placement_from_domain(rbo, AMDGPU_GEM_DOMAIN_CPU); 217 amdgpu_ttm_placement_from_domain(rbo, AMDGPU_GEM_DOMAIN_CPU);
217 else 218 } else {
218 amdgpu_ttm_placement_from_domain(rbo, AMDGPU_GEM_DOMAIN_GTT); 219 amdgpu_ttm_placement_from_domain(rbo, AMDGPU_GEM_DOMAIN_GTT);
220 for (i = 0; i < rbo->placement.num_placement; ++i) {
221 if (!(rbo->placements[i].flags &
222 TTM_PL_FLAG_TT))
223 continue;
224
225 if (rbo->placements[i].lpfn)
226 continue;
227
228 /* set an upper limit to force directly
229 * allocating address space for the BO.
230 */
231 rbo->placements[i].lpfn =
232 rbo->adev->mc.gtt_size >> PAGE_SHIFT;
233 }
234 }
219 break; 235 break;
220 case TTM_PL_TT: 236 case TTM_PL_TT:
221 default: 237 default: