From: Philip Yang Date: Tue, 20 Apr 2021 01:51:27 +0000 (-0400) Subject: drm/amdkfd: retry validation to recover range X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=4999e398e281b336c7e08a3bf0da014d9cc2119f;p=linux.git drm/amdkfd: retry validation to recover range GPU vm retry fault recover range need retry validation if 1. range is split in parallel by unmap while recover 2. range migrate to system memory and range is updated in system memory while recover Signed-off-by: Philip Yang Reviewed-by: Felix Kuehling Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c index e4ce97ab6e260..30d142f6272f3 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c @@ -1402,11 +1402,13 @@ static int svm_range_validate_and_map(struct mm_struct *mm, svm_range_lock(prange); if (!prange->actual_loc) { if (amdgpu_hmm_range_get_pages_done(hmm_range)) { + pr_debug("hmm update the range, need validate again\n"); r = -EAGAIN; goto unlock_out; } } if (!list_empty(&prange->child_list)) { + pr_debug("range split by unmap in parallel, validate again\n"); r = -EAGAIN; goto unlock_out; } @@ -2355,6 +2357,10 @@ out_unlock_svms: out: kfd_unref_process(p); + if (r == -EAGAIN) { + pr_debug("recover vm fault later\n"); + r = 0; + } return r; }