diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index dc34b50e6b29..9c1d491d742e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |||
| @@ -382,8 +382,7 @@ retry: | |||
| 382 | 382 | ||
| 383 | p->bytes_moved += ctx.bytes_moved; | 383 | p->bytes_moved += ctx.bytes_moved; |
| 384 | if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size && | 384 | if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size && |
| 385 | bo->tbo.mem.mem_type == TTM_PL_VRAM && | 385 | amdgpu_bo_in_cpu_visible_vram(bo)) |
| 386 | bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT) | ||
| 387 | p->bytes_moved_vis += ctx.bytes_moved; | 386 | p->bytes_moved_vis += ctx.bytes_moved; |
| 388 | 387 | ||
| 389 | if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains) { | 388 | if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains) { |
| @@ -411,7 +410,6 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p, | |||
| 411 | struct amdgpu_bo_list_entry *candidate = p->evictable; | 410 | struct amdgpu_bo_list_entry *candidate = p->evictable; |
| 412 | struct amdgpu_bo *bo = candidate->robj; | 411 | struct amdgpu_bo *bo = candidate->robj; |
| 413 | struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev); | 412 | struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev); |
| 414 | u64 initial_bytes_moved, bytes_moved; | ||
| 415 | bool update_bytes_moved_vis; | 413 | bool update_bytes_moved_vis; |
| 416 | uint32_t other; | 414 | uint32_t other; |
| 417 | 415 | ||
| @@ -435,18 +433,14 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p, | |||
| 435 | continue; | 433 | continue; |
| 436 | 434 | ||
| 437 | /* Good we can try to move this BO somewhere else */ | 435 | /* Good we can try to move this BO somewhere else */ |
| 438 | amdgpu_ttm_placement_from_domain(bo, other); | ||
| 439 | update_bytes_moved_vis = | 436 | update_bytes_moved_vis = |
| 440 | adev->gmc.visible_vram_size < adev->gmc.real_vram_size && | 437 | adev->gmc.visible_vram_size < adev->gmc.real_vram_size && |
| 441 | bo->tbo.mem.mem_type == TTM_PL_VRAM && | 438 | amdgpu_bo_in_cpu_visible_vram(bo); |
| 442 | bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT; | 439 | amdgpu_ttm_placement_from_domain(bo, other); |
| 443 | initial_bytes_moved = atomic64_read(&adev->num_bytes_moved); | ||
| 444 | r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx); | 440 | r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx); |
| 445 | bytes_moved = atomic64_read(&adev->num_bytes_moved) - | 441 | p->bytes_moved += ctx.bytes_moved; |
| 446 | initial_bytes_moved; | ||
| 447 | p->bytes_moved += bytes_moved; | ||
| 448 | if (update_bytes_moved_vis) | 442 | if (update_bytes_moved_vis) |
| 449 | p->bytes_moved_vis += bytes_moved; | 443 | p->bytes_moved_vis += ctx.bytes_moved; |
| 450 | 444 | ||
| 451 | if (unlikely(r)) | 445 | if (unlikely(r)) |
| 452 | break; | 446 | break; |
| @@ -536,7 +530,7 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p, | |||
| 536 | if (p->bo_list) { | 530 | if (p->bo_list) { |
| 537 | amdgpu_bo_list_get_list(p->bo_list, &p->validated); | 531 | amdgpu_bo_list_get_list(p->bo_list, &p->validated); |
| 538 | if (p->bo_list->first_userptr != p->bo_list->num_entries) | 532 | if (p->bo_list->first_userptr != p->bo_list->num_entries) |
| 539 | p->mn = amdgpu_mn_get(p->adev); | 533 | p->mn = amdgpu_mn_get(p->adev, AMDGPU_MN_TYPE_GFX); |
| 540 | } | 534 | } |
| 541 | 535 | ||
| 542 | INIT_LIST_HEAD(&duplicates); | 536 | INIT_LIST_HEAD(&duplicates); |
