diff options
author | Christian König <christian.koenig@amd.com> | 2017-08-07 11:46:49 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-08-17 15:46:03 -0400 |
commit | 3c848bb38aca1f7fd23edeb867b89d714a2e6ce2 (patch) | |
tree | 37886a411c494568d6ba4c82176ca327680b520b /drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |
parent | 9255d77d8cfd714f336a48168a9dada32912b19a (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.c | 50 |
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 | |||
42 | static 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 | |||
54 | static 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 | |||
87 | static void amdgpu_ttm_bo_destroy(struct ttm_buffer_object *tbo) | 40 | static 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 | ||