Lines Matching full:fence

3  * fence-chain: chain fences together in a timeline
10 #include <linux/dma-fence-chain.h>
12 static bool dma_fence_chain_enable_signaling(struct dma_fence *fence);
15 * dma_fence_chain_get_prev - use RCU to get a reference to the previous fence
18 * Use dma_fence_get_rcu_safe to get a reference to the previous fence of the
33 * @fence: current chain node
35 * Walk the chain to the next node. Returns the next fence or NULL if we are at
39 struct dma_fence *dma_fence_chain_walk(struct dma_fence *fence) in dma_fence_chain_walk() argument
44 chain = to_dma_fence_chain(fence); in dma_fence_chain_walk()
46 dma_fence_put(fence); in dma_fence_chain_walk()
54 if (!dma_fence_is_signaled(prev_chain->fence)) in dma_fence_chain_walk()
74 dma_fence_put(fence); in dma_fence_chain_walk()
80 * dma_fence_chain_find_seqno - find fence chain node by seqno
84 * Advance the fence pointer to the chain node which will signal this sequence
87 * Returns EINVAL if the fence is not a chain node or the sequence number has
112 static const char *dma_fence_chain_get_driver_name(struct dma_fence *fence) in dma_fence_chain_get_driver_name() argument
117 static const char *dma_fence_chain_get_timeline_name(struct dma_fence *fence) in dma_fence_chain_get_timeline_name() argument
145 static bool dma_fence_chain_enable_signaling(struct dma_fence *fence) in dma_fence_chain_enable_signaling() argument
147 struct dma_fence_chain *head = to_dma_fence_chain(fence); in dma_fence_chain_enable_signaling()
150 dma_fence_chain_for_each(fence, &head->base) { in dma_fence_chain_enable_signaling()
151 struct dma_fence *f = dma_fence_chain_contained(fence); in dma_fence_chain_enable_signaling()
155 dma_fence_put(fence); in dma_fence_chain_enable_signaling()
164 static bool dma_fence_chain_signaled(struct dma_fence *fence) in dma_fence_chain_signaled() argument
166 dma_fence_chain_for_each(fence, fence) { in dma_fence_chain_signaled()
167 struct dma_fence *f = dma_fence_chain_contained(fence); in dma_fence_chain_signaled()
170 dma_fence_put(fence); in dma_fence_chain_signaled()
178 static void dma_fence_chain_release(struct dma_fence *fence) in dma_fence_chain_release() argument
180 struct dma_fence_chain *chain = to_dma_fence_chain(fence); in dma_fence_chain_release()
205 dma_fence_put(chain->fence); in dma_fence_chain_release()
206 dma_fence_free(fence); in dma_fence_chain_release()
210 static void dma_fence_chain_set_deadline(struct dma_fence *fence, in dma_fence_chain_set_deadline() argument
213 dma_fence_chain_for_each(fence, fence) { in dma_fence_chain_set_deadline()
214 struct dma_fence *f = dma_fence_chain_contained(fence); in dma_fence_chain_set_deadline()
232 * dma_fence_chain_init - initialize a fence chain
234 * @prev: the previous fence
235 * @fence: the current fence
236 * @seqno: the sequence number to use for the fence chain
239 * the existing chain of the previous fence.
243 struct dma_fence *fence, in dma_fence_chain_init() argument
251 chain->fence = fence; in dma_fence_chain_init()
270 * the prev fence and not through the contained fence. in dma_fence_chain_init()
272 * The correct way of handling this is to flatten out the fence in dma_fence_chain_init()
275 WARN_ON(dma_fence_is_chain(fence)); in dma_fence_chain_init()