On 1/24/22 14:03, Christian König wrote:
It's a reoccurring pattern that we need to extract the fence from a dma_fence_chain object. Add a helper for this.
Signed-off-by: Christian König christian.koenig@amd.com
Reviewed-by: Thomas Hellström thomas.hellstrom@linux.intel.com
drivers/dma-buf/dma-fence-chain.c | 6 ++---- include/linux/dma-fence-chain.h | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c index 084c6927b735..06f8ef97c6e8 100644 --- a/drivers/dma-buf/dma-fence-chain.c +++ b/drivers/dma-buf/dma-fence-chain.c @@ -148,8 +148,7 @@ static bool dma_fence_chain_enable_signaling(struct dma_fence *fence)
dma_fence_get(&head->base); dma_fence_chain_for_each(fence, &head->base) {
struct dma_fence_chain *chain = to_dma_fence_chain(fence);
struct dma_fence *f = chain ? chain->fence : fence;
struct dma_fence *f = dma_fence_chain_contained(fence);
dma_fence_get(f); if (!dma_fence_add_callback(f, &head->cb, dma_fence_chain_cb)) {
@@ -165,8 +164,7 @@ static bool dma_fence_chain_enable_signaling(struct dma_fence *fence) static bool dma_fence_chain_signaled(struct dma_fence *fence) { dma_fence_chain_for_each(fence, fence) {
struct dma_fence_chain *chain = to_dma_fence_chain(fence);
struct dma_fence *f = chain ? chain->fence : fence;
struct dma_fence *f = dma_fence_chain_contained(fence);
if (!dma_fence_is_signaled(f)) { dma_fence_put(fence);
diff --git a/include/linux/dma-fence-chain.h b/include/linux/dma-fence-chain.h index ee906b659694..10d51bcdf7b7 100644 --- a/include/linux/dma-fence-chain.h +++ b/include/linux/dma-fence-chain.h @@ -66,6 +66,21 @@ to_dma_fence_chain(struct dma_fence *fence) return container_of(fence, struct dma_fence_chain, base); }
+/**
- dma_fence_chain_contained - return the contained fence
- @fence: the fence to test
- If the fence is a dma_fence_chain the function returns the fence contained
- inside the chain object, otherwise it returns the fence itself.
- */
+static inline struct dma_fence * +dma_fence_chain_contained(struct dma_fence *fence) +{
- struct dma_fence_chain *chain = to_dma_fence_chain(fence);
- return chain ? chain->fence : fence;
+}
- /**
- dma_fence_chain_alloc