aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2017-08-07 11:46:49 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-08-17 15:46:03 -0400
commit3c848bb38aca1f7fd23edeb867b89d714a2e6ce2 (patch)
tree37886a411c494568d6ba4c82176ca327680b520b /drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
parent9255d77d8cfd714f336a48168a9dada32912b19a (diff)
drm/amdgpu: move vram usage tracking into the vram manager v2
Looks like a better place for this. v2: use atomic64_t members instead 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/amdgpu_object.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_object.c50
1 files changed, 0 insertions, 50 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index 57d2cb6bd331..e7e899190bef 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -37,53 +37,6 @@
37#include "amdgpu.h" 37#include "amdgpu.h"
38#include "amdgpu_trace.h" 38#include "amdgpu_trace.h"
39 39
40
41
42static u64 amdgpu_get_vis_part_size(struct amdgpu_device *adev,
43 struct ttm_mem_reg *mem)
44{
45 if (mem->start << PAGE_SHIFT >= adev->mc.visible_vram_size)
46 return 0;
47
48 return ((mem->start << PAGE_SHIFT) + mem->size) >
49 adev->mc.visible_vram_size ?
50 adev->mc.visible_vram_size - (mem->start << PAGE_SHIFT) :
51 mem->size;
52}
53
54static void amdgpu_update_memory_usage(struct amdgpu_device *adev,
55 struct ttm_mem_reg *old_mem,
56 struct ttm_mem_reg *new_mem)
57{
58 u64 vis_size;
59 if (!adev)
60 return;
61
62 if (new_mem) {
63 switch (new_mem->mem_type) {
64 case TTM_PL_TT:
65 break;
66 case TTM_PL_VRAM:
67 atomic64_add(new_mem->size, &adev->vram_usage);
68 vis_size = amdgpu_get_vis_part_size(adev, new_mem);
69 atomic64_add(vis_size, &adev->vram_vis_usage);
70 break;
71 }
72 }
73
74 if (old_mem) {
75 switch (old_mem->mem_type) {
76 case TTM_PL_TT:
77 break;
78 case TTM_PL_VRAM:
79 atomic64_sub(old_mem->size, &adev->vram_usage);
80 vis_size = amdgpu_get_vis_part_size(adev, old_mem);
81 atomic64_sub(vis_size, &adev->vram_vis_usage);
82 break;
83 }
84 }
85}
86
87static void amdgpu_ttm_bo_destroy(struct ttm_buffer_object *tbo) 40static void amdgpu_ttm_bo_destroy(struct ttm_buffer_object *tbo)
88{ 41{
89 struct amdgpu_device *adev = amdgpu_ttm_adev(tbo->bdev); 42 struct amdgpu_device *adev = amdgpu_ttm_adev(tbo->bdev);
@@ -92,7 +45,6 @@ static void amdgpu_ttm_bo_destroy(struct ttm_buffer_object *tbo)
92 bo = container_of(tbo, struct amdgpu_bo, tbo); 45 bo = container_of(tbo, struct amdgpu_bo, tbo);
93 46
94 amdgpu_bo_kunmap(bo); 47 amdgpu_bo_kunmap(bo);
95 amdgpu_update_memory_usage(adev, &bo->tbo.mem, NULL);
96 48
97 drm_gem_object_release(&bo->gem_base); 49 drm_gem_object_release(&bo->gem_base);
98 amdgpu_bo_unref(&bo->parent); 50 amdgpu_bo_unref(&bo->parent);
@@ -990,8 +942,6 @@ void amdgpu_bo_move_notify(struct ttm_buffer_object *bo,
990 return; 942 return;
991 943
992 /* move_notify is called before move happens */ 944 /* move_notify is called before move happens */
993 amdgpu_update_memory_usage(adev, &bo->mem, new_mem);
994
995 trace_amdgpu_ttm_bo_move(abo, new_mem->mem_type, old_mem->mem_type); 945 trace_amdgpu_ttm_bo_move(abo, new_mem->mem_type, old_mem->mem_type);
996} 946}
997 947