[PATCH] drm/amdkfd: Add sync after creating vram bo

Felix Kuehling felix.kuehling at amd.com
Mon Jan 9 20:20:53 UTC 2023


Am 2023-01-09 um 14:27 schrieb Eric Huang:
> There will be data corruption on vram allocated by svm
> if initialization is not being done. Adding sync is to
> resolve this issue.
>
> Signed-off-by: Eric Huang <jinhuieric.huang at amd.com>

The description is a bit misleading. The problem is not that the 
initialization is not being done. It is being done as a result of 
setting AMDGPU_GEM_CREATE_VRAM_CLEARED. The problem is that the 
initialization is not complete yet, so it can corrupt data written by 
the application unless we wait for it to finish first.

Other than that the patch is

Reviewed-by: Felix Kuehling <Felix.Kuehling at amd.com>


> ---
>   drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> index b8c9753a4818..344e20306635 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> @@ -574,6 +574,13 @@ svm_range_vram_node_new(struct amdgpu_device *adev, struct svm_range *prange,
>   		goto reserve_bo_failed;
>   	}
>   
> +	r = amdgpu_bo_sync_wait(bo, AMDGPU_FENCE_OWNER_KFD, false);
> +	if (r) {
> +		pr_debug("failed %d to sync bo\n", r);
> +		amdgpu_bo_unreserve(bo);
> +		goto reserve_bo_failed;
> +	}
> +
>   	r = dma_resv_reserve_fences(amdkcl_ttm_resvp(&bo->tbo), 1);
>   	if (r) {
>   		pr_debug("failed %d to reserve bo\n", r);


More information about the amd-gfx mailing list