Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dma-fence: add dma_fence_match_context helper

Add a helper to check if all fences in a fence array are from a given
context. For convenience, the function can also handle being given a
non-array fence.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.com>
Acked-by: Sumit Semwal <sumit.semwal@linaro.org>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1489768492-25190-1-git-send-email-p.zabel@pengutronix.de

authored by

Philipp Zabel and committed by
Sumit Semwal
d5b72a21 bb7d7856

+28
+26
drivers/dma-buf/dma-fence-array.c
··· 144 144 return array; 145 145 } 146 146 EXPORT_SYMBOL(dma_fence_array_create); 147 + 148 + /** 149 + * dma_fence_match_context - Check if all fences are from the given context 150 + * @fence: [in] fence or fence array 151 + * @context: [in] fence context to check all fences against 152 + * 153 + * Checks the provided fence or, for a fence array, all fences in the array 154 + * against the given context. Returns false if any fence is from a different 155 + * context. 156 + */ 157 + bool dma_fence_match_context(struct dma_fence *fence, u64 context) 158 + { 159 + struct dma_fence_array *array = to_dma_fence_array(fence); 160 + unsigned i; 161 + 162 + if (!dma_fence_is_array(fence)) 163 + return fence->context == context; 164 + 165 + for (i = 0; i < array->num_fences; i++) { 166 + if (array->fences[i]->context != context) 167 + return false; 168 + } 169 + 170 + return true; 171 + } 172 + EXPORT_SYMBOL(dma_fence_match_context);
+2
include/linux/dma-fence-array.h
··· 83 83 u64 context, unsigned seqno, 84 84 bool signal_on_any); 85 85 86 + bool dma_fence_match_context(struct dma_fence *fence, u64 context); 87 + 86 88 #endif /* __LINUX_DMA_FENCE_ARRAY_H */