Lines Matching refs:fc

113 static int fence_chains_init(struct fence_chains *fc, unsigned int count,
119 fc->chains = kvmalloc_array(count, sizeof(*fc->chains),
121 if (!fc->chains)
124 fc->fences = kvmalloc_array(count, sizeof(*fc->fences),
126 if (!fc->fences) {
131 fc->tail = NULL;
133 fc->fences[i] = mock_fence();
134 if (!fc->fences[i]) {
139 fc->chains[i] = mock_chain(fc->tail,
140 fc->fences[i],
142 if (!fc->chains[i]) {
147 fc->tail = fc->chains[i];
149 dma_fence_enable_sw_signaling(fc->chains[i]);
152 fc->chain_length = i;
157 dma_fence_put(fc->fences[i]);
158 dma_fence_put(fc->chains[i]);
160 kvfree(fc->fences);
162 kvfree(fc->chains);
166 static void fence_chains_fini(struct fence_chains *fc)
170 for (i = 0; i < fc->chain_length; i++) {
171 dma_fence_signal(fc->fences[i]);
172 dma_fence_put(fc->fences[i]);
174 kvfree(fc->fences);
176 for (i = 0; i < fc->chain_length; i++)
177 dma_fence_put(fc->chains[i]);
178 kvfree(fc->chains);
183 struct fence_chains fc;
188 err = fence_chains_init(&fc, 64, seqno_inc);
192 fence = dma_fence_get(fc.tail);
200 for (i = 0; i < fc.chain_length; i++) {
201 fence = dma_fence_get(fc.tail);
206 err, fc.chain_length + 1, i + 1);
209 if (fence != fc.chains[i]) {
211 fc.chain_length + 1, i + 1);
223 if (fence != fc.chains[i]) {
246 if (i > 0 && fence != fc.chains[i - 1]) {
255 fence_chains_fini(&fc);
261 struct fence_chains fc;
265 err = fence_chains_init(&fc, 2, seqno_inc);
269 dma_fence_signal(fc.fences[0]);
271 fence = dma_fence_get(fc.tail);
279 if (fence && fence != fc.chains[0]) {
293 fence_chains_fini(&fc);
299 struct fence_chains fc;
303 err = fence_chains_init(&fc, 3, seqno_inc);
307 dma_fence_signal(fc.fences[1]);
309 fence = dma_fence_get(fc.tail);
324 if (fence != fc.chains[0]) {
332 fence_chains_fini(&fc);
343 struct fence_chains fc;
348 err = fence_chains_init(&fc, 64, seqno_inc2);
352 for (i = 0; i < fc.chain_length; i++) {
353 fence = dma_fence_get(fc.tail);
358 err, fc.chain_length + 1, 2 * i + 1);
361 if (fence != fc.chains[i]) {
364 fc.chain_length + 1,
377 if (fence != fc.chains[i]) {
385 fence_chains_fini(&fc);
390 struct fence_chains fc;
400 struct dma_fence *fence = dma_fence_get(data->fc.tail);
403 seqno = get_random_u32_inclusive(1, data->fc.chain_length);
432 seqno = get_random_u32_below(data->fc.chain_length - 1);
433 dma_fence_signal(data->fc.fences[seqno]);
451 err = fence_chains_init(&data.fc, CHAIN_SZ, seqno_inc);
486 for (i = 0; i < data.fc.chain_length; i++)
487 if (dma_fence_is_signaled(data.fc.fences[i]))
492 fence_chains_fini(&data.fc);
498 struct fence_chains fc;
502 err = fence_chains_init(&fc, 64, seqno_inc);
506 for (i = 0; i < fc.chain_length; i++) {
507 dma_fence_signal(fc.fences[i]);
509 if (!dma_fence_is_signaled(fc.chains[i])) {
515 if (i + 1 < fc.chain_length &&
516 dma_fence_is_signaled(fc.chains[i + 1])) {
524 fence_chains_fini(&fc);
530 struct fence_chains fc;
534 err = fence_chains_init(&fc, 64, seqno_inc);
538 for (i = fc.chain_length; i--; ) {
539 dma_fence_signal(fc.fences[i]);
541 if (i > 0 && dma_fence_is_signaled(fc.chains[i])) {
548 for (i = 0; i < fc.chain_length; i++) {
549 if (!dma_fence_is_signaled(fc.chains[i])) {
557 fence_chains_fini(&fc);
563 struct fence_chains *fc = arg;
565 if (dma_fence_wait(fc->tail, false))
573 struct fence_chains fc;
578 err = fence_chains_init(&fc, CHAIN_SZ, seqno_inc);
582 tsk = kthread_run(__wait_fence_chains, &fc, "dmabuf/wait");
590 for (i = 0; i < fc.chain_length; i++)
591 dma_fence_signal(fc.fences[i]);
596 fence_chains_fini(&fc);
602 struct fence_chains fc;
607 err = fence_chains_init(&fc, CHAIN_SZ, seqno_inc);
611 tsk = kthread_run(__wait_fence_chains, &fc, "dmabuf/wait");
619 for (i = fc.chain_length; i--; )
620 dma_fence_signal(fc.fences[i]);
625 fence_chains_fini(&fc);
629 static void randomise_fences(struct fence_chains *fc)
631 unsigned int count = fc->chain_length;
641 swap(fc->fences[count], fc->fences[swp]);
647 struct fence_chains fc;
652 err = fence_chains_init(&fc, CHAIN_SZ, seqno_inc);
656 randomise_fences(&fc);
658 tsk = kthread_run(__wait_fence_chains, &fc, "dmabuf/wait");
666 for (i = 0; i < fc.chain_length; i++)
667 dma_fence_signal(fc.fences[i]);
672 fence_chains_fini(&fc);