diff options
| author | Lijo Lazar <lijo.lazar@amd.com> | 2025-07-14 10:37:00 +0530 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2025-07-16 16:49:04 -0400 | 
| commit | 86790e300d8b7bbadaad5024e308c52f1222128f (patch) | |
| tree | a51c7a6738ce3ded08a66becdf30709148870743 /drivers/gpu/drm/amd | |
| parent | 4c1a0fc2aeb8486956f37cad4433e4d18b45821d (diff) | |
drm/amdgpu: Increase reset counter only on success
Increment the reset counter only if soft recovery succeeded. This is
consistent with a ring hard reset behaviour where counter gets
incremented only if hard reset succeeded.
Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 25c314aa3ec3d30e4ee282540e2096b5c66a2437)
Cc: stable@vger.kernel.org
Diffstat (limited to 'drivers/gpu/drm/amd')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c index 426834806fbf..6ac0ce361a2d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c @@ -427,6 +427,7 @@ bool amdgpu_ring_soft_recovery(struct amdgpu_ring *ring, unsigned int vmid,  {  	unsigned long flags;  	ktime_t deadline; +	bool ret;  	if (unlikely(ring->adev->debug_disable_soft_recovery))  		return false; @@ -441,12 +442,16 @@ bool amdgpu_ring_soft_recovery(struct amdgpu_ring *ring, unsigned int vmid,  		dma_fence_set_error(fence, -ENODATA);  	spin_unlock_irqrestore(fence->lock, flags); -	atomic_inc(&ring->adev->gpu_reset_counter);  	while (!dma_fence_is_signaled(fence) &&  	       ktime_to_ns(ktime_sub(deadline, ktime_get())) > 0)  		ring->funcs->soft_recovery(ring, vmid); -	return dma_fence_is_signaled(fence); +	ret = dma_fence_is_signaled(fence); +	/* increment the counter only if soft reset worked */ +	if (ret) +		atomic_inc(&ring->adev->gpu_reset_counter); + +	return ret;  }  /* | 
