Lines Matching refs:sa
52 static void drm_suballoc_remove_locked(struct drm_suballoc *sa);
97 struct drm_suballoc *sa, *tmp; in drm_suballoc_manager_fini() local
108 list_for_each_entry_safe(sa, tmp, &sa_manager->olist, olist) { in drm_suballoc_manager_fini()
109 drm_suballoc_remove_locked(sa); in drm_suballoc_manager_fini()
116 static void drm_suballoc_remove_locked(struct drm_suballoc *sa) in drm_suballoc_remove_locked() argument
118 struct drm_suballoc_manager *sa_manager = sa->manager; in drm_suballoc_remove_locked()
120 if (sa_manager->hole == &sa->olist) in drm_suballoc_remove_locked()
121 sa_manager->hole = sa->olist.prev; in drm_suballoc_remove_locked()
123 list_del_init(&sa->olist); in drm_suballoc_remove_locked()
124 list_del_init(&sa->flist); in drm_suballoc_remove_locked()
125 dma_fence_put(sa->fence); in drm_suballoc_remove_locked()
126 kfree(sa); in drm_suballoc_remove_locked()
131 struct drm_suballoc *sa, *tmp; in drm_suballoc_try_free() local
136 sa = list_entry(sa_manager->hole->next, struct drm_suballoc, olist); in drm_suballoc_try_free()
137 list_for_each_entry_safe_from(sa, tmp, &sa_manager->olist, olist) { in drm_suballoc_try_free()
138 if (!sa->fence || !dma_fence_is_signaled(sa->fence)) in drm_suballoc_try_free()
141 drm_suballoc_remove_locked(sa); in drm_suballoc_try_free()
165 struct drm_suballoc *sa, in drm_suballoc_try_alloc() argument
177 sa->manager = sa_manager; in drm_suballoc_try_alloc()
178 sa->soffset = soffset; in drm_suballoc_try_alloc()
179 sa->eoffset = soffset + size; in drm_suballoc_try_alloc()
180 list_add(&sa->olist, sa_manager->hole); in drm_suballoc_try_alloc()
181 INIT_LIST_HEAD(&sa->flist); in drm_suballoc_try_alloc()
182 sa_manager->hole = &sa->olist; in drm_suballoc_try_alloc()
248 struct drm_suballoc *sa; in drm_suballoc_next_hole() local
255 sa = list_first_entry(&sa_manager->flist[i], in drm_suballoc_next_hole()
258 if (!dma_fence_is_signaled(sa->fence)) { in drm_suballoc_next_hole()
259 fences[i] = sa->fence; in drm_suballoc_next_hole()
267 tmp = sa->soffset; in drm_suballoc_next_hole()
277 best_bo = sa; in drm_suballoc_next_hole()
322 struct drm_suballoc *sa; in drm_suballoc_new() local
332 sa = kmalloc(sizeof(*sa), gfp); in drm_suballoc_new()
333 if (!sa) in drm_suballoc_new()
335 sa->manager = sa_manager; in drm_suballoc_new()
336 sa->fence = NULL; in drm_suballoc_new()
337 INIT_LIST_HEAD(&sa->olist); in drm_suballoc_new()
338 INIT_LIST_HEAD(&sa->flist); in drm_suballoc_new()
348 if (drm_suballoc_try_alloc(sa_manager, sa, in drm_suballoc_new()
351 return sa; in drm_suballoc_new()
388 kfree(sa); in drm_suballoc_new()