Lines Matching refs:fc

111 static int fence_chains_init(struct fence_chains *fc, unsigned int count,  in fence_chains_init()  argument
117 fc->chains = kvmalloc_array(count, sizeof(*fc->chains), in fence_chains_init()
119 if (!fc->chains) in fence_chains_init()
122 fc->fences = kvmalloc_array(count, sizeof(*fc->fences), in fence_chains_init()
124 if (!fc->fences) { in fence_chains_init()
129 fc->tail = NULL; in fence_chains_init()
131 fc->fences[i] = mock_fence(); in fence_chains_init()
132 if (!fc->fences[i]) { in fence_chains_init()
137 fc->chains[i] = mock_chain(fc->tail, in fence_chains_init()
138 fc->fences[i], in fence_chains_init()
140 if (!fc->chains[i]) { in fence_chains_init()
145 fc->tail = fc->chains[i]; in fence_chains_init()
148 fc->chain_length = i; in fence_chains_init()
153 dma_fence_put(fc->fences[i]); in fence_chains_init()
154 dma_fence_put(fc->chains[i]); in fence_chains_init()
156 kvfree(fc->fences); in fence_chains_init()
158 kvfree(fc->chains); in fence_chains_init()
162 static void fence_chains_fini(struct fence_chains *fc) in fence_chains_fini() argument
166 for (i = 0; i < fc->chain_length; i++) { in fence_chains_fini()
167 dma_fence_signal(fc->fences[i]); in fence_chains_fini()
168 dma_fence_put(fc->fences[i]); in fence_chains_fini()
170 kvfree(fc->fences); in fence_chains_fini()
172 for (i = 0; i < fc->chain_length; i++) in fence_chains_fini()
173 dma_fence_put(fc->chains[i]); in fence_chains_fini()
174 kvfree(fc->chains); in fence_chains_fini()
179 struct fence_chains fc; in find_seqno() local
184 err = fence_chains_init(&fc, 64, seqno_inc); in find_seqno()
188 fence = dma_fence_get(fc.tail); in find_seqno()
196 for (i = 0; i < fc.chain_length; i++) { in find_seqno()
197 fence = dma_fence_get(fc.tail); in find_seqno()
202 err, fc.chain_length + 1, i + 1); in find_seqno()
205 if (fence != fc.chains[i]) { in find_seqno()
207 fc.chain_length + 1, i + 1); in find_seqno()
219 if (fence != fc.chains[i]) { in find_seqno()
242 if (i > 0 && fence != fc.chains[i - 1]) { in find_seqno()
251 fence_chains_fini(&fc); in find_seqno()
257 struct fence_chains fc; in find_signaled() local
261 err = fence_chains_init(&fc, 2, seqno_inc); in find_signaled()
265 dma_fence_signal(fc.fences[0]); in find_signaled()
267 fence = dma_fence_get(fc.tail); in find_signaled()
275 if (fence && fence != fc.chains[0]) { in find_signaled()
289 fence_chains_fini(&fc); in find_signaled()
295 struct fence_chains fc; in find_out_of_order() local
299 err = fence_chains_init(&fc, 3, seqno_inc); in find_out_of_order()
303 dma_fence_signal(fc.fences[1]); in find_out_of_order()
305 fence = dma_fence_get(fc.tail); in find_out_of_order()
320 if (fence != fc.chains[0]) { in find_out_of_order()
328 fence_chains_fini(&fc); in find_out_of_order()
339 struct fence_chains fc; in find_gap() local
344 err = fence_chains_init(&fc, 64, seqno_inc2); in find_gap()
348 for (i = 0; i < fc.chain_length; i++) { in find_gap()
349 fence = dma_fence_get(fc.tail); in find_gap()
354 err, fc.chain_length + 1, 2 * i + 1); in find_gap()
357 if (fence != fc.chains[i]) { in find_gap()
360 fc.chain_length + 1, in find_gap()
373 if (fence != fc.chains[i]) { in find_gap()
381 fence_chains_fini(&fc); in find_gap()
386 struct fence_chains fc; member
396 struct dma_fence *fence = dma_fence_get(data->fc.tail); in __find_race()
399 seqno = prandom_u32_max(data->fc.chain_length) + 1; in __find_race()
428 seqno = prandom_u32_max(data->fc.chain_length - 1); in __find_race()
429 dma_fence_signal(data->fc.fences[seqno]); in __find_race()
447 err = fence_chains_init(&data.fc, CHAIN_SZ, seqno_inc); in find_race()
483 for (i = 0; i < data.fc.chain_length; i++) in find_race()
484 if (dma_fence_is_signaled(data.fc.fences[i])) in find_race()
489 fence_chains_fini(&data.fc); in find_race()
495 struct fence_chains fc; in signal_forward() local
499 err = fence_chains_init(&fc, 64, seqno_inc); in signal_forward()
503 for (i = 0; i < fc.chain_length; i++) { in signal_forward()
504 dma_fence_signal(fc.fences[i]); in signal_forward()
506 if (!dma_fence_is_signaled(fc.chains[i])) { in signal_forward()
512 if (i + 1 < fc.chain_length && in signal_forward()
513 dma_fence_is_signaled(fc.chains[i + 1])) { in signal_forward()
521 fence_chains_fini(&fc); in signal_forward()
527 struct fence_chains fc; in signal_backward() local
531 err = fence_chains_init(&fc, 64, seqno_inc); in signal_backward()
535 for (i = fc.chain_length; i--; ) { in signal_backward()
536 dma_fence_signal(fc.fences[i]); in signal_backward()
538 if (i > 0 && dma_fence_is_signaled(fc.chains[i])) { in signal_backward()
545 for (i = 0; i < fc.chain_length; i++) { in signal_backward()
546 if (!dma_fence_is_signaled(fc.chains[i])) { in signal_backward()
554 fence_chains_fini(&fc); in signal_backward()
560 struct fence_chains *fc = arg; in __wait_fence_chains() local
562 if (dma_fence_wait(fc->tail, false)) in __wait_fence_chains()
570 struct fence_chains fc; in wait_forward() local
575 err = fence_chains_init(&fc, CHAIN_SZ, seqno_inc); in wait_forward()
579 tsk = kthread_run(__wait_fence_chains, &fc, "dmabuf/wait"); in wait_forward()
587 for (i = 0; i < fc.chain_length; i++) in wait_forward()
588 dma_fence_signal(fc.fences[i]); in wait_forward()
594 fence_chains_fini(&fc); in wait_forward()
600 struct fence_chains fc; in wait_backward() local
605 err = fence_chains_init(&fc, CHAIN_SZ, seqno_inc); in wait_backward()
609 tsk = kthread_run(__wait_fence_chains, &fc, "dmabuf/wait"); in wait_backward()
617 for (i = fc.chain_length; i--; ) in wait_backward()
618 dma_fence_signal(fc.fences[i]); in wait_backward()
624 fence_chains_fini(&fc); in wait_backward()
628 static void randomise_fences(struct fence_chains *fc) in randomise_fences() argument
630 unsigned int count = fc->chain_length; in randomise_fences()
640 swap(fc->fences[count], fc->fences[swp]); in randomise_fences()
646 struct fence_chains fc; in wait_random() local
651 err = fence_chains_init(&fc, CHAIN_SZ, seqno_inc); in wait_random()
655 randomise_fences(&fc); in wait_random()
657 tsk = kthread_run(__wait_fence_chains, &fc, "dmabuf/wait"); in wait_random()
665 for (i = 0; i < fc.chain_length; i++) in wait_random()
666 dma_fence_signal(fc.fences[i]); in wait_random()
672 fence_chains_fini(&fc); in wait_random()