<dec f='src/src/sys/external/bsd/drm2/dist/include/drm/ttm/ttm_execbuf_util.h' l='97' type='int ttm_eu_reserve_buffers(struct ww_acquire_ctx * ticket, struct list_head * list)'/>
<doc f='src/src/sys/external/bsd/drm2/dist/include/drm/ttm/ttm_execbuf_util.h' l='70'>/**
 * function ttm_eu_reserve_buffers
 *
 * @ticket:  [out] ww_acquire_ctx filled in by call, or NULL if only
 *           non-blocking reserves should be tried.
 * @list:    thread private list of ttm_validate_buffer structs.
 *
 * Tries to reserve bos pointed to by the list entries for validation.
 * If the function returns 0, all buffers are marked as &quot;unfenced&quot;,
 * taken off the lru lists and are not synced for write CPU usage.
 *
 * If the function detects a deadlock due to multiple threads trying to
 * reserve the same buffers in reverse order, all threads except one will
 * back off and retry. This function may sleep while waiting for
 * CPU write reservations to be cleared, and for other threads to
 * unreserve their buffers.
 *
 * This function may return -ERESTART or -EAGAIN if the calling process
 * receives a signal while waiting. In that case, no buffers on the list
 * will be reserved upon return.
 *
 * Buffers reserved by this function should be unreserved by
 * a call to either ttm_eu_backoff_reservation() or
 * ttm_eu_fence_buffer_objects() when command submission is complete or
 * has failed.
 */</doc>
<use f='src/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_object.c' l='453' u='c' c='radeon_bo_list_validate'/>
<use f='src/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_uvd.c' l='639' u='c' c='radeon_uvd_send_msg'/>
<use f='src/src/sys/external/bsd/drm2/dist/drm/radeon/radeon_vm.c' l='367' u='c' c='radeon_vm_clear_bo'/>
<def f='src/src/sys/external/bsd/drm2/dist/drm/ttm/ttm_execbuf_util.c' l='115' ll='200' type='int ttm_eu_reserve_buffers(struct ww_acquire_ctx * ticket, struct list_head * list)'/>
<doc f='src/src/sys/external/bsd/drm2/dist/drm/ttm/ttm_execbuf_util.c' l='103'>/*
 * Reserve buffers for validation.
 *
 * If a buffer in the list is marked for CPU access, we back off and
 * wait for that buffer to become free for GPU access.
 *
 * If a buffer is reserved for another validation, the validator with
 * the highest validation sequence backs off and waits for that buffer
 * to become unreserved. This prevents deadlocks when validating multiple
 * buffers in different orders.
 */</doc>
