Lines Matching refs:cursor
359 static void dma_resv_iter_restart_unlocked(struct dma_resv_iter *cursor) in dma_resv_iter_restart_unlocked() argument
361 cursor->index = 0; in dma_resv_iter_restart_unlocked()
362 cursor->num_fences = 0; in dma_resv_iter_restart_unlocked()
363 cursor->fences = dma_resv_fences_list(cursor->obj); in dma_resv_iter_restart_unlocked()
364 if (cursor->fences) in dma_resv_iter_restart_unlocked()
365 cursor->num_fences = cursor->fences->num_fences; in dma_resv_iter_restart_unlocked()
366 cursor->is_restarted = true; in dma_resv_iter_restart_unlocked()
370 static void dma_resv_iter_walk_unlocked(struct dma_resv_iter *cursor) in dma_resv_iter_walk_unlocked() argument
372 if (!cursor->fences) in dma_resv_iter_walk_unlocked()
377 dma_fence_put(cursor->fence); in dma_resv_iter_walk_unlocked()
379 if (cursor->index >= cursor->num_fences) { in dma_resv_iter_walk_unlocked()
380 cursor->fence = NULL; in dma_resv_iter_walk_unlocked()
385 dma_resv_list_entry(cursor->fences, cursor->index++, in dma_resv_iter_walk_unlocked()
386 cursor->obj, &cursor->fence, in dma_resv_iter_walk_unlocked()
387 &cursor->fence_usage); in dma_resv_iter_walk_unlocked()
388 cursor->fence = dma_fence_get_rcu(cursor->fence); in dma_resv_iter_walk_unlocked()
389 if (!cursor->fence) { in dma_resv_iter_walk_unlocked()
390 dma_resv_iter_restart_unlocked(cursor); in dma_resv_iter_walk_unlocked()
394 if (!dma_fence_is_signaled(cursor->fence) && in dma_resv_iter_walk_unlocked()
395 cursor->usage >= cursor->fence_usage) in dma_resv_iter_walk_unlocked()
412 struct dma_fence *dma_resv_iter_first_unlocked(struct dma_resv_iter *cursor) in dma_resv_iter_first_unlocked() argument
416 dma_resv_iter_restart_unlocked(cursor); in dma_resv_iter_first_unlocked()
417 dma_resv_iter_walk_unlocked(cursor); in dma_resv_iter_first_unlocked()
418 } while (dma_resv_fences_list(cursor->obj) != cursor->fences); in dma_resv_iter_first_unlocked()
421 return cursor->fence; in dma_resv_iter_first_unlocked()
435 struct dma_fence *dma_resv_iter_next_unlocked(struct dma_resv_iter *cursor) in dma_resv_iter_next_unlocked() argument
440 cursor->is_restarted = false; in dma_resv_iter_next_unlocked()
441 restart = dma_resv_fences_list(cursor->obj) != cursor->fences; in dma_resv_iter_next_unlocked()
444 dma_resv_iter_restart_unlocked(cursor); in dma_resv_iter_next_unlocked()
445 dma_resv_iter_walk_unlocked(cursor); in dma_resv_iter_next_unlocked()
447 } while (dma_resv_fences_list(cursor->obj) != cursor->fences); in dma_resv_iter_next_unlocked()
450 return cursor->fence; in dma_resv_iter_next_unlocked()
463 struct dma_fence *dma_resv_iter_first(struct dma_resv_iter *cursor) in dma_resv_iter_first() argument
467 dma_resv_assert_held(cursor->obj); in dma_resv_iter_first()
469 cursor->index = 0; in dma_resv_iter_first()
470 cursor->fences = dma_resv_fences_list(cursor->obj); in dma_resv_iter_first()
472 fence = dma_resv_iter_next(cursor); in dma_resv_iter_first()
473 cursor->is_restarted = true; in dma_resv_iter_first()
485 struct dma_fence *dma_resv_iter_next(struct dma_resv_iter *cursor) in dma_resv_iter_next() argument
489 dma_resv_assert_held(cursor->obj); in dma_resv_iter_next()
491 cursor->is_restarted = false; in dma_resv_iter_next()
494 if (!cursor->fences || in dma_resv_iter_next()
495 cursor->index >= cursor->fences->num_fences) in dma_resv_iter_next()
498 dma_resv_list_entry(cursor->fences, cursor->index++, in dma_resv_iter_next()
499 cursor->obj, &fence, &cursor->fence_usage); in dma_resv_iter_next()
500 } while (cursor->fence_usage > cursor->usage); in dma_resv_iter_next()
515 struct dma_resv_iter cursor; in dma_resv_copy_fences() local
523 dma_resv_iter_begin(&cursor, src, DMA_RESV_USAGE_BOOKKEEP); in dma_resv_copy_fences()
524 dma_resv_for_each_fence_unlocked(&cursor, f) { in dma_resv_copy_fences()
526 if (dma_resv_iter_is_restarted(&cursor)) { in dma_resv_copy_fences()
529 list = dma_resv_list_alloc(cursor.num_fences); in dma_resv_copy_fences()
531 dma_resv_iter_end(&cursor); in dma_resv_copy_fences()
539 dma_resv_iter_usage(&cursor)); in dma_resv_copy_fences()
541 dma_resv_iter_end(&cursor); in dma_resv_copy_fences()
564 struct dma_resv_iter cursor; in dma_resv_get_fences() local
570 dma_resv_iter_begin(&cursor, obj, usage); in dma_resv_get_fences()
571 dma_resv_for_each_fence_unlocked(&cursor, fence) { in dma_resv_get_fences()
573 if (dma_resv_iter_is_restarted(&cursor)) { in dma_resv_get_fences()
579 count = cursor.num_fences + 1; in dma_resv_get_fences()
586 dma_resv_iter_end(&cursor); in dma_resv_get_fences()
593 dma_resv_iter_end(&cursor); in dma_resv_get_fences()
669 struct dma_resv_iter cursor; in dma_resv_wait_timeout() local
672 dma_resv_iter_begin(&cursor, obj, usage); in dma_resv_wait_timeout()
673 dma_resv_for_each_fence_unlocked(&cursor, fence) { in dma_resv_wait_timeout()
677 dma_resv_iter_end(&cursor); in dma_resv_wait_timeout()
681 dma_resv_iter_end(&cursor); in dma_resv_wait_timeout()
703 struct dma_resv_iter cursor; in dma_resv_test_signaled() local
706 dma_resv_iter_begin(&cursor, obj, usage); in dma_resv_test_signaled()
707 dma_resv_for_each_fence_unlocked(&cursor, fence) { in dma_resv_test_signaled()
708 dma_resv_iter_end(&cursor); in dma_resv_test_signaled()
711 dma_resv_iter_end(&cursor); in dma_resv_test_signaled()
727 struct dma_resv_iter cursor; in dma_resv_describe() local
730 dma_resv_for_each_fence(&cursor, obj, DMA_RESV_USAGE_READ, fence) { in dma_resv_describe()
732 usage[dma_resv_iter_usage(&cursor)]); in dma_resv_describe()