diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | 13 | 
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c index a6899180b265..c586f44312f9 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c @@ -244,6 +244,12 @@ struct dma_fence *amdgpu_sync_peek_fence(struct amdgpu_sync *sync,  		struct dma_fence *f = e->fence;  		struct amd_sched_fence *s_fence = to_amd_sched_fence(f); +		if (dma_fence_is_signaled(f)) { +			hash_del(&e->node); +			dma_fence_put(f); +			kmem_cache_free(amdgpu_sync_slab, e); +			continue; +		}  		if (ring && s_fence) {  			/* For fences from the same ring it is sufficient  			 * when they are scheduled. @@ -256,13 +262,6 @@ struct dma_fence *amdgpu_sync_peek_fence(struct amdgpu_sync *sync,  			}  		} -		if (dma_fence_is_signaled(f)) { -			hash_del(&e->node); -			dma_fence_put(f); -			kmem_cache_free(amdgpu_sync_slab, e); -			continue; -		} -  		return f;  	}  |