aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2018-08-27 07:51:27 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-08-29 13:35:37 -0400
commit0e33495d4907f0834321c678f86c912d64f0cd6c (patch)
treef66e480dfa561b81c27b4ba54bb08d77c0b320ab /drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
parent22d8bfafcc12dfa17b91d2e8ae4e1898e782003a (diff)
drm/amdgpu: distinct between allocated GART space and GMC addr
Most of the time we only need to know if the BO has a valid GMC addr. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com> Acked-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 5cadf4f1ee2c..d9f3201c9e5c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -345,7 +345,7 @@ static uint64_t amdgpu_mm_node_addr(struct ttm_buffer_object *bo,
345{ 345{
346 uint64_t addr = 0; 346 uint64_t addr = 0;
347 347
348 if (mem->mem_type != TTM_PL_TT || amdgpu_gtt_mgr_has_gart_addr(mem)) { 348 if (mm_node->start != AMDGPU_BO_INVALID_OFFSET) {
349 addr = mm_node->start << PAGE_SHIFT; 349 addr = mm_node->start << PAGE_SHIFT;
350 addr += bo->bdev->man[mem->mem_type].gpu_offset; 350 addr += bo->bdev->man[mem->mem_type].gpu_offset;
351 } 351 }
@@ -433,8 +433,7 @@ int amdgpu_ttm_copy_mem_to_mem(struct amdgpu_device *adev,
433 /* Map only what needs to be accessed. Map src to window 0 and 433 /* Map only what needs to be accessed. Map src to window 0 and
434 * dst to window 1 434 * dst to window 1
435 */ 435 */
436 if (src->mem->mem_type == TTM_PL_TT && 436 if (src->mem->start == AMDGPU_BO_INVALID_OFFSET) {
437 !amdgpu_gtt_mgr_has_gart_addr(src->mem)) {
438 r = amdgpu_map_buffer(src->bo, src->mem, 437 r = amdgpu_map_buffer(src->bo, src->mem,
439 PFN_UP(cur_size + src_page_offset), 438 PFN_UP(cur_size + src_page_offset),
440 src_node_start, 0, ring, 439 src_node_start, 0, ring,
@@ -447,8 +446,7 @@ int amdgpu_ttm_copy_mem_to_mem(struct amdgpu_device *adev,
447 from += src_page_offset; 446 from += src_page_offset;
448 } 447 }
449 448
450 if (dst->mem->mem_type == TTM_PL_TT && 449 if (dst->mem->start == AMDGPU_BO_INVALID_OFFSET) {
451 !amdgpu_gtt_mgr_has_gart_addr(dst->mem)) {
452 r = amdgpu_map_buffer(dst->bo, dst->mem, 450 r = amdgpu_map_buffer(dst->bo, dst->mem,
453 PFN_UP(cur_size + dst_page_offset), 451 PFN_UP(cur_size + dst_page_offset),
454 dst_node_start, 1, ring, 452 dst_node_start, 1, ring,
@@ -1086,11 +1084,10 @@ int amdgpu_ttm_alloc_gart(struct ttm_buffer_object *bo)
1086 uint64_t flags; 1084 uint64_t flags;
1087 int r; 1085 int r;
1088 1086
1089 if (bo->mem.mem_type != TTM_PL_TT || 1087 if (bo->mem.start != AMDGPU_BO_INVALID_OFFSET)
1090 amdgpu_gtt_mgr_has_gart_addr(&bo->mem))
1091 return 0; 1088 return 0;
1092 1089
1093 /* allocate GTT space */ 1090 /* allocate GART space */
1094 tmp = bo->mem; 1091 tmp = bo->mem;
1095 tmp.mm_node = NULL; 1092 tmp.mm_node = NULL;
1096 placement.num_placement = 1; 1093 placement.num_placement = 1;