diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 24 | 
1 files changed, 10 insertions, 14 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index 5e4e1bd90383..3526efa8960e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -762,8 +762,7 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,  	domain = amdgpu_mem_type_to_domain(bo->tbo.mem.mem_type);  	if (domain == AMDGPU_GEM_DOMAIN_VRAM) {  		adev->vram_pin_size += amdgpu_bo_size(bo); -		if (bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS) -			adev->invisible_pin_size += amdgpu_bo_size(bo); +		adev->invisible_pin_size += amdgpu_vram_mgr_bo_invisible_size(bo);  	} else if (domain == AMDGPU_GEM_DOMAIN_GTT) {  		adev->gart_pin_size += amdgpu_bo_size(bo);  	} @@ -790,25 +789,22 @@ int amdgpu_bo_unpin(struct amdgpu_bo *bo)  	bo->pin_count--;  	if (bo->pin_count)  		return 0; -	for (i = 0; i < bo->placement.num_placement; i++) { -		bo->placements[i].lpfn = 0; -		bo->placements[i].flags &= ~TTM_PL_FLAG_NO_EVICT; -	} -	r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx); -	if (unlikely(r)) { -		dev_err(adev->dev, "%p validate failed for unpin\n", bo); -		goto error; -	}  	if (bo->tbo.mem.mem_type == TTM_PL_VRAM) {  		adev->vram_pin_size -= amdgpu_bo_size(bo); -		if (bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS) -			adev->invisible_pin_size -= amdgpu_bo_size(bo); +		adev->invisible_pin_size -= amdgpu_vram_mgr_bo_invisible_size(bo);  	} else if (bo->tbo.mem.mem_type == TTM_PL_TT) {  		adev->gart_pin_size -= amdgpu_bo_size(bo);  	} -error: +	for (i = 0; i < bo->placement.num_placement; i++) { +		bo->placements[i].lpfn = 0; +		bo->placements[i].flags &= ~TTM_PL_FLAG_NO_EVICT; +	} +	r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx); +	if (unlikely(r)) +		dev_err(adev->dev, "%p validate failed for unpin\n", bo); +  	return r;  } |