Lines Matching defs:lbo

47 static void lsdc_bo_set_placement(struct lsdc_bo *lbo, u32 domain)
53 if (lbo->tbo.base.size <= PAGE_SIZE)
56 lbo->placement.placement = lbo->placements;
59 lbo->placements[c].mem_type = TTM_PL_VRAM;
60 lbo->placements[c++].flags = pflags;
64 lbo->placements[c].mem_type = TTM_PL_TT;
65 lbo->placements[c++].flags = pflags;
69 lbo->placements[c].mem_type = TTM_PL_SYSTEM;
70 lbo->placements[c++].flags = 0;
74 lbo->placements[c].mem_type = TTM_PL_SYSTEM;
75 lbo->placements[c++].flags = 0;
78 lbo->placement.num_placement = c;
81 lbo->placements[i].fpfn = 0;
82 lbo->placements[i].lpfn = 0;
143 struct lsdc_bo *lbo = to_lsdc_bo(tbo);
147 lsdc_bo_set_placement(lbo, LSDC_GEM_DOMAIN_GTT);
151 lsdc_bo_set_placement(lbo, LSDC_GEM_DOMAIN_SYSTEM);
155 *tplacement = lbo->placement;
166 struct lsdc_bo *lbo = to_lsdc_bo(tbo);
180 lbo, lsdc_mem_type_to_str(new_mem->mem_type),
181 lsdc_bo_size(lbo));
189 lbo, lsdc_bo_size(lbo));
196 lbo, lsdc_bo_size(lbo));
204 lbo, lsdc_bo_size(lbo));
211 lbo,
214 lsdc_bo_size(lbo));
252 u64 lsdc_bo_gpu_offset(struct lsdc_bo *lbo)
254 struct ttm_buffer_object *tbo = &lbo->tbo;
269 size_t lsdc_bo_size(struct lsdc_bo *lbo)
271 struct ttm_buffer_object *tbo = &lbo->tbo;
276 int lsdc_bo_reserve(struct lsdc_bo *lbo)
278 return ttm_bo_reserve(&lbo->tbo, true, false, NULL);
281 void lsdc_bo_unreserve(struct lsdc_bo *lbo)
283 return ttm_bo_unreserve(&lbo->tbo);
286 int lsdc_bo_pin(struct lsdc_bo *lbo, u32 domain, u64 *gpu_addr)
289 struct ttm_buffer_object *tbo = &lbo->tbo;
296 if (lbo->sharing_count && domain == LSDC_GEM_DOMAIN_VRAM)
300 lsdc_bo_set_placement(lbo, domain);
302 ret = ttm_bo_validate(tbo, &lbo->placement, &ctx);
304 drm_err(&ldev->base, "%p validate failed: %d\n", lbo, ret);
309 ldev->vram_pinned_size += lsdc_bo_size(lbo);
311 ldev->gtt_pinned_size += lsdc_bo_size(lbo);
317 *gpu_addr = lsdc_bo_gpu_offset(lbo);
322 void lsdc_bo_unpin(struct lsdc_bo *lbo)
324 struct ttm_buffer_object *tbo = &lbo->tbo;
328 drm_dbg(&ldev->base, "%p unpin is not necessary\n", lbo);
336 ldev->vram_pinned_size -= lsdc_bo_size(lbo);
338 ldev->gtt_pinned_size -= lsdc_bo_size(lbo);
342 void lsdc_bo_ref(struct lsdc_bo *lbo)
344 struct ttm_buffer_object *tbo = &lbo->tbo;
349 void lsdc_bo_unref(struct lsdc_bo *lbo)
351 struct ttm_buffer_object *tbo = &lbo->tbo;
356 int lsdc_bo_kmap(struct lsdc_bo *lbo)
358 struct ttm_buffer_object *tbo = &lbo->tbo;
371 if (lbo->kptr)
374 err = ttm_bo_kmap(tbo, 0, PFN_UP(lsdc_bo_size(lbo)), &lbo->kmap);
376 drm_err(ddev, "kmap %p failed: %d\n", lbo, err);
380 lbo->kptr = ttm_kmap_obj_virtual(&lbo->kmap, &lbo->is_iomem);
385 void lsdc_bo_kunmap(struct lsdc_bo *lbo)
387 if (!lbo->kptr)
390 lbo->kptr = NULL;
391 ttm_bo_kunmap(&lbo->kmap);
394 void lsdc_bo_clear(struct lsdc_bo *lbo)
396 lsdc_bo_kmap(lbo);
398 if (lbo->is_iomem)
399 memset_io((void __iomem *)lbo->kptr, 0, lbo->size);
401 memset(lbo->kptr, 0, lbo->size);
403 lsdc_bo_kunmap(lbo);
422 struct lsdc_bo *lbo = to_lsdc_bo(tbo);
425 list_del_init(&lbo->list);
430 kfree(lbo);
443 struct lsdc_bo *lbo;
447 lbo = kzalloc(sizeof(*lbo), GFP_KERNEL);
448 if (!lbo)
451 INIT_LIST_HEAD(&lbo->list);
453 lbo->initial_domain = domain & (LSDC_GEM_DOMAIN_VRAM |
457 tbo = &lbo->tbo;
463 kfree(lbo);
476 lsdc_bo_set_placement(lbo, domain);
477 lbo->size = size;
479 ret = ttm_bo_init_validate(bdev, tbo, bo_type, &lbo->placement, 0,
482 kfree(lbo);
486 return lbo;
493 struct lsdc_bo *lbo;
496 lbo = lsdc_bo_create(ddev, domain, size, true, NULL, NULL);
497 if (IS_ERR(lbo))
498 return ERR_CAST(lbo);
500 ret = lsdc_bo_reserve(lbo);
502 lsdc_bo_unref(lbo);
506 ret = lsdc_bo_pin(lbo, domain, NULL);
507 lsdc_bo_unreserve(lbo);
509 lsdc_bo_unref(lbo);
513 return lbo;
516 void lsdc_bo_free_kernel_pinned(struct lsdc_bo *lbo)
520 ret = lsdc_bo_reserve(lbo);
524 lsdc_bo_unpin(lbo);
525 lsdc_bo_unreserve(lbo);
527 lsdc_bo_unref(lbo);