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 | |
| 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')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 50 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 72 |
6 files changed, 79 insertions, 62 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 593618e6c186..ad944aea0d4b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h | |||
| @@ -1482,8 +1482,6 @@ struct amdgpu_device { | |||
| 1482 | struct amdgpu_mman mman; | 1482 | struct amdgpu_mman mman; |
| 1483 | struct amdgpu_vram_scratch vram_scratch; | 1483 | struct amdgpu_vram_scratch vram_scratch; |
| 1484 | struct amdgpu_wb wb; | 1484 | struct amdgpu_wb wb; |
| 1485 | atomic64_t vram_usage; | ||
| 1486 | atomic64_t vram_vis_usage; | ||
| 1487 | atomic64_t num_bytes_moved; | 1485 | atomic64_t num_bytes_moved; |
| 1488 | atomic64_t num_evictions; | 1486 | atomic64_t num_evictions; |
| 1489 | atomic64_t num_vram_cpu_page_faults; | 1487 | atomic64_t num_vram_cpu_page_faults; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 825784b3b193..7e71a511990e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |||
| @@ -246,7 +246,7 @@ static void amdgpu_cs_get_threshold_for_moves(struct amdgpu_device *adev, | |||
| 246 | } | 246 | } |
| 247 | 247 | ||
| 248 | total_vram = adev->mc.real_vram_size - adev->vram_pin_size; | 248 | total_vram = adev->mc.real_vram_size - adev->vram_pin_size; |
| 249 | used_vram = atomic64_read(&adev->vram_usage); | 249 | used_vram = amdgpu_vram_mgr_usage(&adev->mman.bdev.man[TTM_PL_VRAM]); |
| 250 | free_vram = used_vram >= total_vram ? 0 : total_vram - used_vram; | 250 | free_vram = used_vram >= total_vram ? 0 : total_vram - used_vram; |
| 251 | 251 | ||
| 252 | spin_lock(&adev->mm_stats.lock); | 252 | spin_lock(&adev->mm_stats.lock); |
| @@ -292,7 +292,8 @@ static void amdgpu_cs_get_threshold_for_moves(struct amdgpu_device *adev, | |||
| 292 | /* Do the same for visible VRAM if half of it is free */ | 292 | /* Do the same for visible VRAM if half of it is free */ |
| 293 | if (adev->mc.visible_vram_size < adev->mc.real_vram_size) { | 293 | if (adev->mc.visible_vram_size < adev->mc.real_vram_size) { |
| 294 | u64 total_vis_vram = adev->mc.visible_vram_size; | 294 | u64 total_vis_vram = adev->mc.visible_vram_size; |
| 295 | u64 used_vis_vram = atomic64_read(&adev->vram_vis_usage); | 295 | u64 used_vis_vram = |
| 296 | amdgpu_vram_mgr_vis_usage(&adev->mman.bdev.man[TTM_PL_VRAM]); | ||
| 296 | 297 | ||
| 297 | if (used_vis_vram < total_vis_vram) { | 298 | if (used_vis_vram < total_vis_vram) { |
| 298 | u64 free_vis_vram = total_vis_vram - used_vis_vram; | 299 | u64 free_vis_vram = total_vis_vram - used_vis_vram; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c index 889f96fcfc81..29cd5dabf8b5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | |||
| @@ -455,10 +455,10 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file | |||
| 455 | ui64 = atomic64_read(&adev->num_vram_cpu_page_faults); | 455 | ui64 = atomic64_read(&adev->num_vram_cpu_page_faults); |
| 456 | return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; | 456 | return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; |
| 457 | case AMDGPU_INFO_VRAM_USAGE: | 457 | case AMDGPU_INFO_VRAM_USAGE: |
| 458 | ui64 = atomic64_read(&adev->vram_usage); | 458 | ui64 = amdgpu_vram_mgr_usage(&adev->mman.bdev.man[TTM_PL_VRAM]); |
| 459 | return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; | 459 | return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; |
| 460 | case AMDGPU_INFO_VIS_VRAM_USAGE: | 460 | case AMDGPU_INFO_VIS_VRAM_USAGE: |
| 461 | ui64 = atomic64_read(&adev->vram_vis_usage); | 461 | ui64 = amdgpu_vram_mgr_vis_usage(&adev->mman.bdev.man[TTM_PL_VRAM]); |
| 462 | return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; | 462 | return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; |
| 463 | case AMDGPU_INFO_GTT_USAGE: | 463 | case AMDGPU_INFO_GTT_USAGE: |
| 464 | ui64 = amdgpu_gtt_mgr_usage(&adev->mman.bdev.man[TTM_PL_TT]); | 464 | ui64 = amdgpu_gtt_mgr_usage(&adev->mman.bdev.man[TTM_PL_TT]); |
| @@ -497,7 +497,8 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file | |||
| 497 | mem.vram.total_heap_size = adev->mc.real_vram_size; | 497 | mem.vram.total_heap_size = adev->mc.real_vram_size; |
| 498 | mem.vram.usable_heap_size = | 498 | mem.vram.usable_heap_size = |
| 499 | adev->mc.real_vram_size - adev->vram_pin_size; | 499 | adev->mc.real_vram_size - adev->vram_pin_size; |
| 500 | mem.vram.heap_usage = atomic64_read(&adev->vram_usage); | 500 | mem.vram.heap_usage = |
| 501 | amdgpu_vram_mgr_usage(&adev->mman.bdev.man[TTM_PL_VRAM]); | ||
| 501 | mem.vram.max_allocation = mem.vram.usable_heap_size * 3 / 4; | 502 | mem.vram.max_allocation = mem.vram.usable_heap_size * 3 / 4; |
| 502 | 503 | ||
| 503 | mem.cpu_accessible_vram.total_heap_size = | 504 | mem.cpu_accessible_vram.total_heap_size = |
| @@ -506,7 +507,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file | |||
| 506 | adev->mc.visible_vram_size - | 507 | adev->mc.visible_vram_size - |
| 507 | (adev->vram_pin_size - adev->invisible_pin_size); | 508 | (adev->vram_pin_size - adev->invisible_pin_size); |
| 508 | mem.cpu_accessible_vram.heap_usage = | 509 | mem.cpu_accessible_vram.heap_usage = |
| 509 | atomic64_read(&adev->vram_vis_usage); | 510 | amdgpu_vram_mgr_vis_usage(&adev->mman.bdev.man[TTM_PL_VRAM]); |
| 510 | mem.cpu_accessible_vram.max_allocation = | 511 | mem.cpu_accessible_vram.max_allocation = |
| 511 | mem.cpu_accessible_vram.usable_heap_size * 3 / 4; | 512 | mem.cpu_accessible_vram.usable_heap_size * 3 / 4; |
| 512 | 513 | ||
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 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h index 1307ab581449..f22a4758719d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | |||
| @@ -68,6 +68,9 @@ int amdgpu_gtt_mgr_alloc(struct ttm_mem_type_manager *man, | |||
| 68 | struct ttm_mem_reg *mem); | 68 | struct ttm_mem_reg *mem); |
| 69 | uint64_t amdgpu_gtt_mgr_usage(struct ttm_mem_type_manager *man); | 69 | uint64_t amdgpu_gtt_mgr_usage(struct ttm_mem_type_manager *man); |
| 70 | 70 | ||
| 71 | uint64_t amdgpu_vram_mgr_usage(struct ttm_mem_type_manager *man); | ||
| 72 | uint64_t amdgpu_vram_mgr_vis_usage(struct ttm_mem_type_manager *man); | ||
| 73 | |||
| 71 | int amdgpu_copy_buffer(struct amdgpu_ring *ring, uint64_t src_offset, | 74 | int amdgpu_copy_buffer(struct amdgpu_ring *ring, uint64_t src_offset, |
| 72 | uint64_t dst_offset, uint32_t byte_count, | 75 | uint64_t dst_offset, uint32_t byte_count, |
| 73 | struct reservation_object *resv, | 76 | struct reservation_object *resv, |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c index 1eb8d5d3acf2..26e900627971 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | |||
| @@ -28,6 +28,8 @@ | |||
| 28 | struct amdgpu_vram_mgr { | 28 | struct amdgpu_vram_mgr { |
| 29 | struct drm_mm mm; | 29 | struct drm_mm mm; |
| 30 | spinlock_t lock; | 30 | spinlock_t lock; |
| 31 | atomic64_t usage; | ||
| 32 | atomic64_t vis_usage; | ||
| 31 | }; | 33 | }; |
| 32 | 34 | ||
| 33 | /** | 35 | /** |
| @@ -79,6 +81,27 @@ static int amdgpu_vram_mgr_fini(struct ttm_mem_type_manager *man) | |||
| 79 | } | 81 | } |
| 80 | 82 | ||
| 81 | /** | 83 | /** |
| 84 | * amdgpu_vram_mgr_vis_size - Calculate visible node size | ||
| 85 | * | ||
| 86 | * @adev: amdgpu device structure | ||
| 87 | * @node: MM node structure | ||
| 88 | * | ||
| 89 | * Calculate how many bytes of the MM node are inside visible VRAM | ||
| 90 | */ | ||
| 91 | static u64 amdgpu_vram_mgr_vis_size(struct amdgpu_device *adev, | ||
| 92 | struct drm_mm_node *node) | ||
| 93 | { | ||
| 94 | uint64_t start = node->start << PAGE_SHIFT; | ||
| 95 | uint64_t end = (node->size + node->start) << PAGE_SHIFT; | ||
| 96 | |||
| 97 | if (start >= adev->mc.visible_vram_size) | ||
| 98 | return 0; | ||
| 99 | |||
| 100 | return (end > adev->mc.visible_vram_size ? | ||
| 101 | adev->mc.visible_vram_size : end) - start; | ||
| 102 | } | ||
| 103 | |||
| 104 | /** | ||
| 82 | * amdgpu_vram_mgr_new - allocate new ranges | 105 | * amdgpu_vram_mgr_new - allocate new ranges |
| 83 | * | 106 | * |
| 84 | * @man: TTM memory type manager | 107 | * @man: TTM memory type manager |
| @@ -93,11 +116,13 @@ static int amdgpu_vram_mgr_new(struct ttm_mem_type_manager *man, | |||
| 93 | const struct ttm_place *place, | 116 | const struct ttm_place *place, |
| 94 | struct ttm_mem_reg *mem) | 117 | struct ttm_mem_reg *mem) |
| 95 | { | 118 | { |
| 119 | struct amdgpu_device *adev = amdgpu_ttm_adev(man->bdev); | ||
| 96 | struct amdgpu_vram_mgr *mgr = man->priv; | 120 | struct amdgpu_vram_mgr *mgr = man->priv; |
| 97 | struct drm_mm *mm = &mgr->mm; | 121 | struct drm_mm *mm = &mgr->mm; |
| 98 | struct drm_mm_node *nodes; | 122 | struct drm_mm_node *nodes; |
| 99 | enum drm_mm_insert_mode mode; | 123 | enum drm_mm_insert_mode mode; |
| 100 | unsigned long lpfn, num_nodes, pages_per_node, pages_left; | 124 | unsigned long lpfn, num_nodes, pages_per_node, pages_left; |
| 125 | uint64_t usage = 0, vis_usage = 0; | ||
| 101 | unsigned i; | 126 | unsigned i; |
| 102 | int r; | 127 | int r; |
| 103 | 128 | ||
| @@ -142,6 +167,9 @@ static int amdgpu_vram_mgr_new(struct ttm_mem_type_manager *man, | |||
| 142 | if (unlikely(r)) | 167 | if (unlikely(r)) |
| 143 | goto error; | 168 | goto error; |
| 144 | 169 | ||
| 170 | usage += nodes[i].size << PAGE_SHIFT; | ||
| 171 | vis_usage += amdgpu_vram_mgr_vis_size(adev, &nodes[i]); | ||
| 172 | |||
| 145 | /* Calculate a virtual BO start address to easily check if | 173 | /* Calculate a virtual BO start address to easily check if |
| 146 | * everything is CPU accessible. | 174 | * everything is CPU accessible. |
| 147 | */ | 175 | */ |
| @@ -155,6 +183,9 @@ static int amdgpu_vram_mgr_new(struct ttm_mem_type_manager *man, | |||
| 155 | } | 183 | } |
| 156 | spin_unlock(&mgr->lock); | 184 | spin_unlock(&mgr->lock); |
| 157 | 185 | ||
| 186 | atomic64_add(usage, &mgr->usage); | ||
| 187 | atomic64_add(vis_usage, &mgr->vis_usage); | ||
| 188 | |||
| 158 | mem->mm_node = nodes; | 189 | mem->mm_node = nodes; |
| 159 | 190 | ||
| 160 | return 0; | 191 | return 0; |
| @@ -181,8 +212,10 @@ error: | |||
| 181 | static void amdgpu_vram_mgr_del(struct ttm_mem_type_manager *man, | 212 | static void amdgpu_vram_mgr_del(struct ttm_mem_type_manager *man, |
| 182 | struct ttm_mem_reg *mem) | 213 | struct ttm_mem_reg *mem) |
| 183 | { | 214 | { |
| 215 | struct amdgpu_device *adev = amdgpu_ttm_adev(man->bdev); | ||
| 184 | struct amdgpu_vram_mgr *mgr = man->priv; | 216 | struct amdgpu_vram_mgr *mgr = man->priv; |
| 185 | struct drm_mm_node *nodes = mem->mm_node; | 217 | struct drm_mm_node *nodes = mem->mm_node; |
| 218 | uint64_t usage = 0, vis_usage = 0; | ||
| 186 | unsigned pages = mem->num_pages; | 219 | unsigned pages = mem->num_pages; |
| 187 | 220 | ||
| 188 | if (!mem->mm_node) | 221 | if (!mem->mm_node) |
| @@ -192,15 +225,48 @@ static void amdgpu_vram_mgr_del(struct ttm_mem_type_manager *man, | |||
| 192 | while (pages) { | 225 | while (pages) { |
| 193 | pages -= nodes->size; | 226 | pages -= nodes->size; |
| 194 | drm_mm_remove_node(nodes); | 227 | drm_mm_remove_node(nodes); |
| 228 | usage += nodes->size << PAGE_SHIFT; | ||
| 229 | vis_usage += amdgpu_vram_mgr_vis_size(adev, nodes); | ||
| 195 | ++nodes; | 230 | ++nodes; |
| 196 | } | 231 | } |
| 197 | spin_unlock(&mgr->lock); | 232 | spin_unlock(&mgr->lock); |
| 198 | 233 | ||
| 234 | atomic64_sub(usage, &mgr->usage); | ||
| 235 | atomic64_sub(vis_usage, &mgr->vis_usage); | ||
| 236 | |||
| 199 | kfree(mem->mm_node); | 237 | kfree(mem->mm_node); |
| 200 | mem->mm_node = NULL; | 238 | mem->mm_node = NULL; |
| 201 | } | 239 | } |
| 202 | 240 | ||
| 203 | /** | 241 | /** |
| 242 | * amdgpu_vram_mgr_usage - how many bytes are used in this domain | ||
| 243 | * | ||
| 244 | * @man: TTM memory type manager | ||
| 245 | * | ||
| 246 | * Returns how many bytes are used in this domain. | ||
| 247 | */ | ||
| 248 | uint64_t amdgpu_vram_mgr_usage(struct ttm_mem_type_manager *man) | ||
| 249 | { | ||
| 250 | struct amdgpu_vram_mgr *mgr = man->priv; | ||
| 251 | |||
| 252 | return atomic64_read(&mgr->usage); | ||
| 253 | } | ||
| 254 | |||
| 255 | /** | ||
| 256 | * amdgpu_vram_mgr_vis_usage - how many bytes are used in the visible part | ||
| 257 | * | ||
| 258 | * @man: TTM memory type manager | ||
| 259 | * | ||
| 260 | * Returns how many bytes are used in the visible part of VRAM | ||
| 261 | */ | ||
| 262 | uint64_t amdgpu_vram_mgr_vis_usage(struct ttm_mem_type_manager *man) | ||
| 263 | { | ||
| 264 | struct amdgpu_vram_mgr *mgr = man->priv; | ||
| 265 | |||
| 266 | return atomic64_read(&mgr->vis_usage); | ||
| 267 | } | ||
| 268 | |||
| 269 | /** | ||
| 204 | * amdgpu_vram_mgr_debug - dump VRAM table | 270 | * amdgpu_vram_mgr_debug - dump VRAM table |
| 205 | * | 271 | * |
| 206 | * @man: TTM memory type manager | 272 | * @man: TTM memory type manager |
| @@ -211,7 +277,6 @@ static void amdgpu_vram_mgr_del(struct ttm_mem_type_manager *man, | |||
| 211 | static void amdgpu_vram_mgr_debug(struct ttm_mem_type_manager *man, | 277 | static void amdgpu_vram_mgr_debug(struct ttm_mem_type_manager *man, |
| 212 | struct drm_printer *printer) | 278 | struct drm_printer *printer) |
| 213 | { | 279 | { |
| 214 | struct amdgpu_device *adev = amdgpu_ttm_adev(man->bdev); | ||
| 215 | struct amdgpu_vram_mgr *mgr = man->priv; | 280 | struct amdgpu_vram_mgr *mgr = man->priv; |
| 216 | 281 | ||
| 217 | spin_lock(&mgr->lock); | 282 | spin_lock(&mgr->lock); |
| @@ -219,9 +284,8 @@ static void amdgpu_vram_mgr_debug(struct ttm_mem_type_manager *man, | |||
| 219 | spin_unlock(&mgr->lock); | 284 | spin_unlock(&mgr->lock); |
| 220 | 285 | ||
| 221 | drm_printf(printer, "man size:%llu pages, ram usage:%lluMB, vis usage:%lluMB\n", | 286 | drm_printf(printer, "man size:%llu pages, ram usage:%lluMB, vis usage:%lluMB\n", |
| 222 | adev->mman.bdev.man[TTM_PL_VRAM].size, | 287 | man->size, amdgpu_vram_mgr_usage(man) >> 20, |
| 223 | (u64)atomic64_read(&adev->vram_usage) >> 20, | 288 | amdgpu_vram_mgr_vis_usage(man) >> 20); |
| 224 | (u64)atomic64_read(&adev->vram_vis_usage) >> 20); | ||
| 225 | } | 289 | } |
| 226 | 290 | ||
| 227 | const struct ttm_mem_type_manager_func amdgpu_vram_mgr_func = { | 291 | const struct ttm_mem_type_manager_func amdgpu_vram_mgr_func = { |
