diff options
author | Christian König <christian.koenig@amd.com> | 2017-04-27 12:20:47 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-12-06 12:48:04 -0500 |
commit | 6af046d26f34278eacd6ecddb37170624f6d4251 (patch) | |
tree | 994a35f99ee86912803c16a0b5145f4e492469a6 /drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |
parent | dfb8fa9828dba4a83545c8d854bb6bc003a95d95 (diff) |
drm/amdgpu: use the new TTM bytes moved counter v2
Instead of the global statistics use the per context bytes moved counter.
v2: rebased
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
Tested-by: Michel Dänzer <michel.daenzer@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_cs.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index faab662ce680..5e89d7a7178f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |||
@@ -344,7 +344,6 @@ static int amdgpu_cs_bo_validate(struct amdgpu_cs_parser *p, | |||
344 | { | 344 | { |
345 | struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev); | 345 | struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev); |
346 | struct ttm_operation_ctx ctx = { true, false }; | 346 | struct ttm_operation_ctx ctx = { true, false }; |
347 | u64 initial_bytes_moved, bytes_moved; | ||
348 | uint32_t domain; | 347 | uint32_t domain; |
349 | int r; | 348 | int r; |
350 | 349 | ||
@@ -374,15 +373,13 @@ static int amdgpu_cs_bo_validate(struct amdgpu_cs_parser *p, | |||
374 | 373 | ||
375 | retry: | 374 | retry: |
376 | amdgpu_ttm_placement_from_domain(bo, domain); | 375 | amdgpu_ttm_placement_from_domain(bo, domain); |
377 | initial_bytes_moved = atomic64_read(&adev->num_bytes_moved); | ||
378 | r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx); | 376 | r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx); |
379 | bytes_moved = atomic64_read(&adev->num_bytes_moved) - | 377 | |
380 | initial_bytes_moved; | 378 | p->bytes_moved += ctx.bytes_moved; |
381 | p->bytes_moved += bytes_moved; | ||
382 | if (adev->mc.visible_vram_size < adev->mc.real_vram_size && | 379 | if (adev->mc.visible_vram_size < adev->mc.real_vram_size && |
383 | bo->tbo.mem.mem_type == TTM_PL_VRAM && | 380 | bo->tbo.mem.mem_type == TTM_PL_VRAM && |
384 | bo->tbo.mem.start < adev->mc.visible_vram_size >> PAGE_SHIFT) | 381 | bo->tbo.mem.start < adev->mc.visible_vram_size >> PAGE_SHIFT) |
385 | p->bytes_moved_vis += bytes_moved; | 382 | p->bytes_moved_vis += ctx.bytes_moved; |
386 | 383 | ||
387 | if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains) { | 384 | if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains) { |
388 | domain = bo->allowed_domains; | 385 | domain = bo->allowed_domains; |