mirror of https://gitee.com/openkylin/linux.git
drm/amdgpu: save list length when fence is signaled
update the list first to avoid redundant checks. Signed-off-by: Chunming Zhou <David1.Zhou@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
This commit is contained in:
parent
46828dc779
commit
7a7c286d07
|
@ -244,6 +244,12 @@ struct dma_fence *amdgpu_sync_peek_fence(struct amdgpu_sync *sync,
|
||||||
struct dma_fence *f = e->fence;
|
struct dma_fence *f = e->fence;
|
||||||
struct amd_sched_fence *s_fence = to_amd_sched_fence(f);
|
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) {
|
if (ring && s_fence) {
|
||||||
/* For fences from the same ring it is sufficient
|
/* For fences from the same ring it is sufficient
|
||||||
* when they are scheduled.
|
* 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;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue