dma-buf: consolidate dma_fence subclass checking

Consolidate the wrapper functions to check for dma_fence
subclasses in the dma_fence header.

This makes it easier to document and also check the different
requirements for fence containers in the subclasses.

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-2-christian.koenig@amd.com
This commit is contained in:
Christian König
2022-01-19 11:17:32 +01:00
parent ea181a3494
commit 976b6d97c6
3 changed files with 40 additions and 16 deletions

View File

@@ -587,4 +587,42 @@ struct dma_fence *dma_fence_get_stub(void);
struct dma_fence *dma_fence_allocate_private_stub(void);
u64 dma_fence_context_alloc(unsigned num);
extern const struct dma_fence_ops dma_fence_array_ops;
extern const struct dma_fence_ops dma_fence_chain_ops;
/**
* dma_fence_is_array - check if a fence is from the array subclass
* @fence: the fence to test
*
* Return true if it is a dma_fence_array and false otherwise.
*/
static inline bool dma_fence_is_array(struct dma_fence *fence)
{
return fence->ops == &dma_fence_array_ops;
}
/**
* dma_fence_is_chain - check if a fence is from the chain subclass
* @fence: the fence to test
*
* Return true if it is a dma_fence_chain and false otherwise.
*/
static inline bool dma_fence_is_chain(struct dma_fence *fence)
{
return fence->ops == &dma_fence_chain_ops;
}
/**
* dma_fence_is_container - check if a fence is a container for other fences
* @fence: the fence to test
*
* Return true if this fence is a container for other fences, false otherwise.
* This is important since we can't build up large fence structure or otherwise
* we run into recursion during operation on those fences.
*/
static inline bool dma_fence_is_container(struct dma_fence *fence)
{
return dma_fence_is_array(fence) || dma_fence_is_chain(fence);
}
#endif /* __LINUX_DMA_FENCE_H */