[PATCH 2/6] drm/amdgpu: Remove TTM resource->start visible VRAM condition

Christian König christian.koenig at amd.com
Wed Feb 8 12:11:07 UTC 2023



Am 08.02.23 um 10:01 schrieb Somalapuram Amaranath:
> Use amdgpu_bo_in_cpu_visible_vram() instead.
>
> Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 9 +++------
>   1 file changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index 981010de0a28..d835ee2131d2 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -600,7 +600,7 @@ int amdgpu_bo_create(struct amdgpu_device *adev,
>   
>   	if (!amdgpu_gmc_vram_full_visible(&adev->gmc) &&
>   	    bo->tbo.resource->mem_type == TTM_PL_VRAM &&
> -	    bo->tbo.resource->start < adev->gmc.visible_vram_size >> PAGE_SHIFT)
> +	    amdgpu_bo_in_cpu_visible_vram(bo))
>   		amdgpu_cs_report_moved_bytes(adev, ctx.bytes_moved,
>   					     ctx.bytes_moved);
>   	else
> @@ -1346,7 +1346,6 @@ vm_fault_t amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo)
>   	struct amdgpu_device *adev = amdgpu_ttm_adev(bo->bdev);
>   	struct ttm_operation_ctx ctx = { false, false };
>   	struct amdgpu_bo *abo = ttm_to_amdgpu_bo(bo);
> -	unsigned long offset;
>   	int r;
>   
>   	/* Remember that this BO was accessed by the CPU */
> @@ -1355,8 +1354,7 @@ vm_fault_t amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo)
>   	if (bo->resource->mem_type != TTM_PL_VRAM)
>   		return 0;
>   
> -	offset = bo->resource->start << PAGE_SHIFT;
> -	if ((offset + bo->base.size) <= adev->gmc.visible_vram_size)
> +	if (amdgpu_bo_in_cpu_visible_vram(abo))
>   		return 0;
>   
>   	/* Can't move a pinned BO to visible VRAM */
> @@ -1378,10 +1376,9 @@ vm_fault_t amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo)
>   	else if (unlikely(r))
>   		return VM_FAULT_SIGBUS;
>   
> -	offset = bo->resource->start << PAGE_SHIFT;
>   	/* this should never happen */
>   	if (bo->resource->mem_type == TTM_PL_VRAM &&
> -	    (offset + bo->base.size) > adev->gmc.visible_vram_size)
> +	    amdgpu_bo_in_cpu_visible_vram(abo))

This check needs to be inversed. E.g. we return the error if the BO is 
not in visible VRAM.

Apart from that the patch looks good to me.

Regards,
Christian.

>   		return VM_FAULT_SIGBUS;
>   
>   	ttm_bo_move_to_lru_tail_unlocked(bo);



More information about the dri-devel mailing list