OSDN Git Service

drm/amdgpu: use ctx bytes_moved
authorChristian König <christian.koenig@amd.com>
Thu, 5 Apr 2018 12:46:41 +0000 (14:46 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 15 May 2018 18:43:05 +0000 (13:43 -0500)
Instead of the global (inaccurate) counter.

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>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c

index d7d7ce1..de69ab1 100644 (file)
@@ -412,7 +412,6 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p,
                struct amdgpu_bo_list_entry *candidate = p->evictable;
                struct amdgpu_bo *bo = candidate->robj;
                struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
-               u64 initial_bytes_moved, bytes_moved;
                bool update_bytes_moved_vis;
                uint32_t other;
 
@@ -436,18 +435,15 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p,
                        continue;
 
                /* Good we can try to move this BO somewhere else */
-               amdgpu_ttm_placement_from_domain(bo, other);
                update_bytes_moved_vis =
                        adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
                        bo->tbo.mem.mem_type == TTM_PL_VRAM &&
                        bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT;
-               initial_bytes_moved = atomic64_read(&adev->num_bytes_moved);
+               amdgpu_ttm_placement_from_domain(bo, other);
                r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
-               bytes_moved = atomic64_read(&adev->num_bytes_moved) -
-                       initial_bytes_moved;
-               p->bytes_moved += bytes_moved;
+               p->bytes_moved += ctx.bytes_moved;
                if (update_bytes_moved_vis)
-                       p->bytes_moved_vis += bytes_moved;
+                       p->bytes_moved_vis += ctx.bytes_moved;
 
                if (unlikely(r))
                        break;