Lines Matching refs:chain

21 static struct dma_fence *dma_fence_chain_get_prev(struct dma_fence_chain *chain)  in dma_fence_chain_get_prev()  argument
26 prev = dma_fence_get_rcu_safe(&chain->prev); in dma_fence_chain_get_prev()
41 struct dma_fence_chain *chain, *prev_chain; in dma_fence_chain_walk() local
44 chain = to_dma_fence_chain(fence); in dma_fence_chain_walk()
45 if (!chain) { in dma_fence_chain_walk()
50 while ((prev = dma_fence_chain_get_prev(chain))) { in dma_fence_chain_walk()
65 tmp = cmpxchg((struct dma_fence __force **)&chain->prev, in dma_fence_chain_walk()
92 struct dma_fence_chain *chain; in dma_fence_chain_find_seqno() local
97 chain = to_dma_fence_chain(*pfence); in dma_fence_chain_find_seqno()
98 if (!chain || chain->base.seqno < seqno) in dma_fence_chain_find_seqno()
101 dma_fence_chain_for_each(*pfence, &chain->base) { in dma_fence_chain_find_seqno()
102 if ((*pfence)->context != chain->base.context || in dma_fence_chain_find_seqno()
106 dma_fence_put(&chain->base); in dma_fence_chain_find_seqno()
124 struct dma_fence_chain *chain; in dma_fence_chain_irq_work() local
126 chain = container_of(work, typeof(*chain), work); in dma_fence_chain_irq_work()
129 if (!dma_fence_chain_enable_signaling(&chain->base)) in dma_fence_chain_irq_work()
131 dma_fence_signal(&chain->base); in dma_fence_chain_irq_work()
132 dma_fence_put(&chain->base); in dma_fence_chain_irq_work()
137 struct dma_fence_chain *chain; in dma_fence_chain_cb() local
139 chain = container_of(cb, typeof(*chain), cb); in dma_fence_chain_cb()
140 irq_work_queue(&chain->work); in dma_fence_chain_cb()
150 struct dma_fence_chain *chain = to_dma_fence_chain(fence); in dma_fence_chain_enable_signaling() local
151 struct dma_fence *f = chain ? chain->fence : fence; in dma_fence_chain_enable_signaling()
167 struct dma_fence_chain *chain = to_dma_fence_chain(fence); in dma_fence_chain_signaled() local
168 struct dma_fence *f = chain ? chain->fence : fence; in dma_fence_chain_signaled()
181 struct dma_fence_chain *chain = to_dma_fence_chain(fence); in dma_fence_chain_release() local
187 while ((prev = rcu_dereference_protected(chain->prev, true))) { in dma_fence_chain_release()
200 chain->prev = prev_chain->prev; in dma_fence_chain_release()
206 dma_fence_put(chain->fence); in dma_fence_chain_release()
230 void dma_fence_chain_init(struct dma_fence_chain *chain, in dma_fence_chain_init() argument
238 spin_lock_init(&chain->lock); in dma_fence_chain_init()
239 rcu_assign_pointer(chain->prev, prev); in dma_fence_chain_init()
240 chain->fence = fence; in dma_fence_chain_init()
241 chain->prev_seqno = 0; in dma_fence_chain_init()
242 init_irq_work(&chain->work, dma_fence_chain_irq_work); in dma_fence_chain_init()
247 chain->prev_seqno = prev->seqno; in dma_fence_chain_init()
255 dma_fence_init(&chain->base, &dma_fence_chain_ops, in dma_fence_chain_init()
256 &chain->lock, context, seqno); in dma_fence_chain_init()