Commit 4999e398 authored by Philip Yang's avatar Philip Yang Committed by Alex Deucher
Browse files

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: default avatarPhilip Yang <Philip.Yang@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c3c5cc9a
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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 @@ svm_range_restore_pages(struct amdgpu_device *adev, unsigned int pasid,
out:
	kfd_unref_process(p);

	if (r == -EAGAIN) {
		pr_debug("recover vm fault later\n");
		r = 0;
	}
	return r;
}