aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Yang <Philip.Yang@amd.com>2021-04-20 15:13:59 -0400
committerAlex Deucher <alexander.deucher@amd.com>2021-04-28 23:36:05 -0400
commitb3dc91f973172dd71594076eb20484471d981a89 (patch)
tree04d3e395eafdad91cade4ceb4307fc8027349e12
parentdrm/amdgpu: address remove from fault filter (diff)
downloadlinux-dev-b3dc91f973172dd71594076eb20484471d981a89.tar.xz
linux-dev-b3dc91f973172dd71594076eb20484471d981a89.zip
drm/amdkfd: enable subsequent retry fault
After draining the stale retry fault, or failed to validate the range to recover, have to remove the fault address from fault filter ring, to be able to handle subsequent retry interrupt on same address. Otherwise the retry fault will not be processed to recover until timeout passed. Signed-off-by: Philip Yang <Philip.Yang@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_svm.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index 00d759b257f4..d9111fea724b 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -2363,8 +2363,10 @@ retry_write_locked:
mutex_lock(&prange->migrate_mutex);
- if (svm_range_skip_recover(prange))
+ if (svm_range_skip_recover(prange)) {
+ amdgpu_gmc_filter_faults_remove(adev, addr, pasid);
goto out_unlock_range;
+ }
timestamp = ktime_to_us(ktime_get()) - prange->validate_timestamp;
/* skip duplicate vm fault on different pages of same range */
@@ -2426,6 +2428,7 @@ out:
if (r == -EAGAIN) {
pr_debug("recover vm fault later\n");
+ amdgpu_gmc_filter_faults_remove(adev, addr, pasid);
r = 0;
}
return r;