summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2023-07-26 17:09:40 -0400
committerAlex Deucher <alexander.deucher@amd.com>2023-10-05 17:49:51 -0400
commit7d3f1d76f33dbeca5ffb2cb424f1e3b7e34c8d45 (patch)
treeba9df4f6b1d2160f8f89ac85755cf74f70c7eacd /drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
parent7a41ed8b59ba74ae36adc7f4688feff9e710cf76 (diff)
downloadlwn-7d3f1d76f33dbeca5ffb2cb424f1e3b7e34c8d45.tar.gz
lwn-7d3f1d76f33dbeca5ffb2cb424f1e3b7e34c8d45.zip
drm/amdgpu: refine fault cache updates
Don't update the fault cache if status is 0. In the multiple fault case, subsequent faults will return a 0 status which is useless for userspace and replaces the useful fault status, so only update if status is non-0. Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 4058ed49e5a6..afc19341334f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -2753,7 +2753,12 @@ void amdgpu_vm_update_fault_cache(struct amdgpu_device *adev,
xa_lock_irqsave(&adev->vm_manager.pasids, flags);
vm = xa_load(&adev->vm_manager.pasids, pasid);
- if (vm) {
+ /* Don't update the fault cache if status is 0. In the multiple
+ * fault case, subsequent faults will return a 0 status which is
+ * useless for userspace and replaces the useful fault status, so
+ * only update if status is non-0.
+ */
+ if (vm && status) {
vm->fault_info.addr = addr;
vm->fault_info.status = status;
if (AMDGPU_IS_GFXHUB(vmhub)) {