diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vega10_ih.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 11 | 
1 files changed, 7 insertions, 4 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/vega10_ih.c b/drivers/gpu/drm/amd/amdgpu/vega10_ih.c index a3b30d84dbb3..697325737ba8 100644 --- a/drivers/gpu/drm/amd/amdgpu/vega10_ih.c +++ b/drivers/gpu/drm/amd/amdgpu/vega10_ih.c @@ -260,15 +260,18 @@ static bool vega10_ih_prescreen_iv(struct amdgpu_device *adev)  		return true;  	} -	/* Not a retry fault */ -	if (!(dw5 & 0x80)) -		return true; -  	pasid = dw3 & 0xffff;  	/* No PASID, can't identify faulting process */  	if (!pasid)  		return true; +	/* Not a retry fault, check fault credit */ +	if (!(dw5 & 0x80)) { +		if (!amdgpu_vm_pasid_fault_credit(adev, pasid)) +			goto ignore_iv; +		return true; +	} +  	addr = ((u64)(dw5 & 0xf) << 44) | ((u64)dw4 << 12);  	key = AMDGPU_VM_FAULT(pasid, addr);  	r = amdgpu_ih_add_fault(adev, key); | 
