mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
dma-buf: add dma_fence_chain_contained helper
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> Link: https://patchwork.freedesktop.org/patch/msgid/20220204100429.2049-6-christian.koenig@amd.com
This commit is contained in:
parent
68129f431f
commit
18f5fad275
2 changed files with 17 additions and 4 deletions
|
@ -148,8 +148,7 @@ static bool dma_fence_chain_enable_signaling(struct dma_fence *fence)
|
||||||
|
|
||||||
dma_fence_get(&head->base);
|
dma_fence_get(&head->base);
|
||||||
dma_fence_chain_for_each(fence, &head->base) {
|
dma_fence_chain_for_each(fence, &head->base) {
|
||||||
struct dma_fence_chain *chain = to_dma_fence_chain(fence);
|
struct dma_fence *f = dma_fence_chain_contained(fence);
|
||||||
struct dma_fence *f = chain ? chain->fence : fence;
|
|
||||||
|
|
||||||
dma_fence_get(f);
|
dma_fence_get(f);
|
||||||
if (!dma_fence_add_callback(f, &head->cb, dma_fence_chain_cb)) {
|
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)
|
static bool dma_fence_chain_signaled(struct dma_fence *fence)
|
||||||
{
|
{
|
||||||
dma_fence_chain_for_each(fence, fence) {
|
dma_fence_chain_for_each(fence, fence) {
|
||||||
struct dma_fence_chain *chain = to_dma_fence_chain(fence);
|
struct dma_fence *f = dma_fence_chain_contained(fence);
|
||||||
struct dma_fence *f = chain ? chain->fence : fence;
|
|
||||||
|
|
||||||
if (!dma_fence_is_signaled(f)) {
|
if (!dma_fence_is_signaled(f)) {
|
||||||
dma_fence_put(fence);
|
dma_fence_put(fence);
|
||||||
|
|
|
@ -66,6 +66,21 @@ to_dma_fence_chain(struct dma_fence *fence)
|
||||||
return container_of(fence, struct dma_fence_chain, base);
|
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
|
* dma_fence_chain_alloc
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Reference in a new issue