• Home
  • Raw
  • Download

Lines Matching refs:sa_bo

47 static void amdgpu_sa_bo_remove_locked(struct amdgpu_sa_bo *sa_bo);
79 struct amdgpu_sa_bo *sa_bo, *tmp; in amdgpu_sa_bo_manager_fini() local
88 list_for_each_entry_safe(sa_bo, tmp, &sa_manager->olist, olist) { in amdgpu_sa_bo_manager_fini()
89 amdgpu_sa_bo_remove_locked(sa_bo); in amdgpu_sa_bo_manager_fini()
142 static void amdgpu_sa_bo_remove_locked(struct amdgpu_sa_bo *sa_bo) in amdgpu_sa_bo_remove_locked() argument
144 struct amdgpu_sa_manager *sa_manager = sa_bo->manager; in amdgpu_sa_bo_remove_locked()
145 if (sa_manager->hole == &sa_bo->olist) { in amdgpu_sa_bo_remove_locked()
146 sa_manager->hole = sa_bo->olist.prev; in amdgpu_sa_bo_remove_locked()
148 list_del_init(&sa_bo->olist); in amdgpu_sa_bo_remove_locked()
149 list_del_init(&sa_bo->flist); in amdgpu_sa_bo_remove_locked()
150 dma_fence_put(sa_bo->fence); in amdgpu_sa_bo_remove_locked()
151 kfree(sa_bo); in amdgpu_sa_bo_remove_locked()
156 struct amdgpu_sa_bo *sa_bo, *tmp; in amdgpu_sa_bo_try_free() local
161 sa_bo = list_entry(sa_manager->hole->next, struct amdgpu_sa_bo, olist); in amdgpu_sa_bo_try_free()
162 list_for_each_entry_safe_from(sa_bo, tmp, &sa_manager->olist, olist) { in amdgpu_sa_bo_try_free()
163 if (sa_bo->fence == NULL || in amdgpu_sa_bo_try_free()
164 !dma_fence_is_signaled(sa_bo->fence)) { in amdgpu_sa_bo_try_free()
167 amdgpu_sa_bo_remove_locked(sa_bo); in amdgpu_sa_bo_try_free()
192 struct amdgpu_sa_bo *sa_bo, in amdgpu_sa_bo_try_alloc() argument
204 sa_bo->manager = sa_manager; in amdgpu_sa_bo_try_alloc()
205 sa_bo->soffset = soffset; in amdgpu_sa_bo_try_alloc()
206 sa_bo->eoffset = soffset + size; in amdgpu_sa_bo_try_alloc()
207 list_add(&sa_bo->olist, sa_manager->hole); in amdgpu_sa_bo_try_alloc()
208 INIT_LIST_HEAD(&sa_bo->flist); in amdgpu_sa_bo_try_alloc()
209 sa_manager->hole = &sa_bo->olist; in amdgpu_sa_bo_try_alloc()
267 struct amdgpu_sa_bo *sa_bo; in amdgpu_sa_bo_next_hole() local
272 sa_bo = list_first_entry(&sa_manager->flist[i], in amdgpu_sa_bo_next_hole()
275 if (!dma_fence_is_signaled(sa_bo->fence)) { in amdgpu_sa_bo_next_hole()
276 fences[i] = sa_bo->fence; in amdgpu_sa_bo_next_hole()
285 tmp = sa_bo->soffset; in amdgpu_sa_bo_next_hole()
294 best_bo = sa_bo; in amdgpu_sa_bo_next_hole()
314 struct amdgpu_sa_bo **sa_bo, in amdgpu_sa_bo_new() argument
329 *sa_bo = kmalloc(sizeof(struct amdgpu_sa_bo), GFP_KERNEL); in amdgpu_sa_bo_new()
330 if (!(*sa_bo)) in amdgpu_sa_bo_new()
332 (*sa_bo)->manager = sa_manager; in amdgpu_sa_bo_new()
333 (*sa_bo)->fence = NULL; in amdgpu_sa_bo_new()
334 INIT_LIST_HEAD(&(*sa_bo)->olist); in amdgpu_sa_bo_new()
335 INIT_LIST_HEAD(&(*sa_bo)->flist); in amdgpu_sa_bo_new()
347 if (amdgpu_sa_bo_try_alloc(sa_manager, *sa_bo, in amdgpu_sa_bo_new()
381 kfree(*sa_bo); in amdgpu_sa_bo_new()
382 *sa_bo = NULL; in amdgpu_sa_bo_new()
386 void amdgpu_sa_bo_free(struct amdgpu_device *adev, struct amdgpu_sa_bo **sa_bo, in amdgpu_sa_bo_free() argument
391 if (sa_bo == NULL || *sa_bo == NULL) { in amdgpu_sa_bo_free()
395 sa_manager = (*sa_bo)->manager; in amdgpu_sa_bo_free()
400 (*sa_bo)->fence = dma_fence_get(fence); in amdgpu_sa_bo_free()
402 list_add_tail(&(*sa_bo)->flist, &sa_manager->flist[idx]); in amdgpu_sa_bo_free()
404 amdgpu_sa_bo_remove_locked(*sa_bo); in amdgpu_sa_bo_free()
408 *sa_bo = NULL; in amdgpu_sa_bo_free()