[PATCH 1/2] drm/amdgpu: handle the return for sync wait
Christian König
ckoenig.leichtzumerken at gmail.com
Mon Oct 23 11:59:08 UTC 2023
Am 20.10.23 um 11:59 schrieb Emily Deng:
> Add error handling for amdgpu_sync_wait.
>
> Signed-off-by: Emily Deng <Emily.Deng at amd.com>
Reviewed-by: Christian König <christian.koenig at amd.com> for this one.
Going to discuss with Felix later today what we do with the timeout.
Christian.
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 9 ++++++---
> drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 6 +++++-
> 2 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> index 54f31a420229..3011c191d7dd 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> @@ -2668,7 +2668,7 @@ static int validate_invalid_user_pages(struct amdkfd_process_info *process_info)
>
> unreserve_out:
> ttm_eu_backoff_reservation(&ticket, &resv_list);
> - amdgpu_sync_wait(&sync, false);
> + ret = amdgpu_sync_wait(&sync, false);
> amdgpu_sync_free(&sync);
> out_free:
> kfree(pd_bo_list_entries);
> @@ -2939,8 +2939,11 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence **ef)
> }
>
> /* Wait for validate and PT updates to finish */
> - amdgpu_sync_wait(&sync_obj, false);
> -
> + ret = amdgpu_sync_wait(&sync_obj, false);
> + if (ret) {
> + pr_err("Failed to wait for validate and PT updates to finish\n");
> + goto validate_map_fail;
> + }
> /* Release old eviction fence and create new one, because fence only
> * goes from unsignaled to signaled, fence cannot be reused.
> * Use context and mm from the old fence.
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> index 70fe3b39c004..a63139277583 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> @@ -1153,7 +1153,11 @@ int amdgpu_mes_ctx_map_meta_data(struct amdgpu_device *adev,
> }
> amdgpu_sync_fence(&sync, vm->last_update);
>
> - amdgpu_sync_wait(&sync, false);
> + r = amdgpu_sync_wait(&sync, false);
> + if (r) {
> + DRM_ERROR("failed to wait sync\n");
> + goto error;
> + }
> ttm_eu_backoff_reservation(&ticket, &list);
>
> amdgpu_sync_free(&sync);
More information about the amd-gfx
mailing list