diff options
| author | Chunming Zhou <[email protected]> | 2017-08-11 01:34:33 +0000 |
|---|---|---|
| committer | Alex Deucher <[email protected]> | 2017-08-15 18:10:01 +0000 |
| commit | 7a7c286d07f9c704e8fd11dd960bf421cc67b66b (patch) | |
| tree | b766310f61cc1ed41f35dbd2b9af4304e5d33366 /drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | |
| parent | Merge branch 'linux-4.13' of git://github.com/skeggsb/linux into drm-fixes (diff) | |
| download | kernel-7a7c286d07f9c704e8fd11dd960bf421cc67b66b.tar.gz kernel-7a7c286d07f9c704e8fd11dd960bf421cc67b66b.zip | |
drm/amdgpu: save list length when fence is signaled
update the list first to avoid redundant checks.
Signed-off-by: Chunming Zhou <[email protected]>
Reviewed-by: Christian König <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
Cc: [email protected]
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; } |
