diff options
author | Christian König <christian.koenig@amd.com> | 2022-05-04 13:01:29 +0200 |
---|---|---|
committer | Christian König <christian.koenig@amd.com> | 2022-05-30 14:23:21 +0200 |
commit | 8f61973718485f3e89bc4f408f929048b7b47c83 (patch) | |
tree | 0482066134e33262f44efd3d89ff9b21b9ecc652 /include/linux/dma-fence-unwrap.h | |
parent | 01357a5a45ed8eb9543183f5c9c6713ae60fc1f3 (diff) |
dma-buf: return only unsignaled fences in dma_fence_unwrap_for_each v3
dma_fence_chain containers cleanup signaled fences automatically, so
filter those out from arrays as well.
v2: fix missing walk over the array
v3: massively simplify the patch and actually update the description.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20220518135844.3338-4-christian.koenig@amd.com
Diffstat (limited to 'include/linux/dma-fence-unwrap.h')
-rw-r--r-- | include/linux/dma-fence-unwrap.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/include/linux/dma-fence-unwrap.h b/include/linux/dma-fence-unwrap.h index e7c219da4ed7..a4d342fef8e0 100644 --- a/include/linux/dma-fence-unwrap.h +++ b/include/linux/dma-fence-unwrap.h @@ -43,9 +43,13 @@ struct dma_fence *dma_fence_unwrap_next(struct dma_fence_unwrap *cursor); * Unwrap dma_fence_chain and dma_fence_array containers and deep dive into all * potential fences in them. If @head is just a normal fence only that one is * returned. + * + * Note that signalled fences are opportunistically filtered out, which + * means the iteration is potentially over no fence at all. */ #define dma_fence_unwrap_for_each(fence, cursor, head) \ for (fence = dma_fence_unwrap_first(head, cursor); fence; \ - fence = dma_fence_unwrap_next(cursor)) + fence = dma_fence_unwrap_next(cursor)) \ + if (!dma_fence_is_signaled(fence)) #endif |