[Intel-gfx] [PATCH 08/11] dma-buf: add dma_fence_chain_contained helper
Thomas Hellström
thomas.hellstrom at linux.intel.com
Mon Jan 24 16:52:30 UTC 2022
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 at amd.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom at 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
> *
More information about the Intel-gfx
mailing list