Lines Matching defs:ib
51 * @ib: IB object returned
59 struct radeon_ib *ib, struct radeon_vm *vm,
64 r = radeon_sa_bo_new(&rdev->ring_tmp_bo, &ib->sa_bo, size, 256);
70 radeon_sync_create(&ib->sync);
72 ib->ring = ring;
73 ib->fence = NULL;
74 ib->ptr = radeon_sa_bo_cpu_addr(ib->sa_bo);
75 ib->vm = vm;
77 /* ib pool is bound at RADEON_VA_IB_OFFSET in virtual address
80 ib->gpu_addr = drm_suballoc_soffset(ib->sa_bo) + RADEON_VA_IB_OFFSET;
82 ib->gpu_addr = radeon_sa_bo_gpu_addr(ib->sa_bo);
84 ib->is_const_ib = false;
93 * @ib: IB object to free
97 void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib *ib)
99 radeon_sync_free(rdev, &ib->sync, ib->fence);
100 radeon_sa_bo_free(&ib->sa_bo, ib->fence);
101 radeon_fence_unref(&ib->fence);
108 * @ib: IB object to schedule
125 int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib,
128 struct radeon_ring *ring = &rdev->ring[ib->ring];
131 if (!ib->length_dw || !ring->ready) {
132 /* TODO: Nothings in the ib we should report. */
133 dev_err(rdev->dev, "couldn't schedule ib\n");
145 if (ib->vm) {
147 vm_id_fence = radeon_vm_grab_id(rdev, ib->vm, ib->ring);
148 radeon_sync_fence(&ib->sync, vm_id_fence);
152 r = radeon_sync_rings(rdev, &ib->sync, ib->ring);
159 if (ib->vm)
160 radeon_vm_flush(rdev, ib->vm, ib->ring,
161 ib->sync.last_vm_update);
167 radeon_ring_ib_execute(rdev, ib->ring, ib);
168 r = radeon_fence_emit(rdev, &ib->fence, ib->ring);
175 const_ib->fence = radeon_fence_ref(ib->fence);
178 if (ib->vm)
179 radeon_vm_fence(rdev, ib->vm, ib->fence);