From: Alex Deucher Date: Wed, 26 Jul 2023 21:09:40 +0000 (-0400) Subject: drm/amdgpu: refine fault cache updates X-Git-Tag: v6.7-rc1~145^2~10^2~140 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7d3f1d76f33dbeca5ffb2cb424f1e3b7e34c8d45;p=thirdparty%2Fkernel%2Flinux.git 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 Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 4058ed49e5a6a..afc19341334ff 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)) {