Lines Matching refs:ref
262 struct ttm_ref_object *ref; in ttm_ref_object_add() local
275 ref = drm_hash_entry(hash, struct ttm_ref_object, hash); in ttm_ref_object_add()
276 refcount_acquire(&ref->kref); in ttm_ref_object_add()
282 ret = ttm_mem_global_alloc(mem_glob, sizeof(*ref), in ttm_ref_object_add()
286 ref = malloc(sizeof(*ref), M_TTM_OBJ_REF, M_WAITOK); in ttm_ref_object_add()
287 if (unlikely(ref == NULL)) { in ttm_ref_object_add()
288 ttm_mem_global_free(mem_glob, sizeof(*ref)); in ttm_ref_object_add()
292 ref->hash.key = base->hash.key; in ttm_ref_object_add()
293 ref->obj = base; in ttm_ref_object_add()
294 ref->tfile = tfile; in ttm_ref_object_add()
295 ref->ref_type = ref_type; in ttm_ref_object_add()
296 refcount_init(&ref->kref, 1); in ttm_ref_object_add()
299 ret = drm_ht_insert_item(ht, &ref->hash); in ttm_ref_object_add()
302 list_add_tail(&ref->head, &tfile->ref_list); in ttm_ref_object_add()
313 ttm_mem_global_free(mem_glob, sizeof(*ref)); in ttm_ref_object_add()
314 free(ref, M_TTM_OBJ_REF); in ttm_ref_object_add()
320 static void ttm_ref_object_release(struct ttm_ref_object *ref) in ttm_ref_object_release() argument
322 struct ttm_base_object *base = ref->obj; in ttm_ref_object_release()
323 struct ttm_object_file *tfile = ref->tfile; in ttm_ref_object_release()
327 ht = &tfile->ref_hash[ref->ref_type]; in ttm_ref_object_release()
328 (void)drm_ht_remove_item(ht, &ref->hash); in ttm_ref_object_release()
329 list_del(&ref->head); in ttm_ref_object_release()
332 if (ref->ref_type != TTM_REF_USAGE && base->ref_obj_release) in ttm_ref_object_release()
333 base->ref_obj_release(base, ref->ref_type); in ttm_ref_object_release()
335 ttm_base_object_unref(&ref->obj); in ttm_ref_object_release()
336 ttm_mem_global_free(mem_glob, sizeof(*ref)); in ttm_ref_object_release()
337 free(ref, M_TTM_OBJ_REF); in ttm_ref_object_release()
345 struct ttm_ref_object *ref; in ttm_ref_object_base_unref() local
355 ref = drm_hash_entry(hash, struct ttm_ref_object, hash); in ttm_ref_object_base_unref()
356 if (refcount_release(&ref->kref)) in ttm_ref_object_base_unref()
357 ttm_ref_object_release(ref); in ttm_ref_object_base_unref()
364 struct ttm_ref_object *ref; in ttm_object_file_release() local
379 ref = list_entry(list, struct ttm_ref_object, head); in ttm_object_file_release()
380 ttm_ref_object_release(ref); in ttm_object_file_release()