Lines Matching refs:bo

40 void ttm_bo_free_old_node(struct ttm_buffer_object *bo)
42 ttm_bo_mem_put(bo, &bo->mem);
45 int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
49 struct ttm_tt *ttm = bo->ttm;
50 struct ttm_mem_reg *old_mem = &bo->mem;
55 ttm_bo_free_old_node(bo);
100 struct ttm_buffer_object *bo;
105 bo = list_first_entry(&man->io_reserve_lru,
108 list_del_init(&bo->io_reserve_lru);
109 ttm_bo_unmap_virtual_locked(bo);
153 int ttm_mem_io_reserve_vm(struct ttm_buffer_object *bo)
155 struct ttm_mem_reg *mem = &bo->mem;
160 &bo->bdev->man[mem->mem_type];
162 ret = ttm_mem_io_reserve(bo->bdev, mem);
167 list_add_tail(&bo->io_reserve_lru,
173 void ttm_mem_io_free_vm(struct ttm_buffer_object *bo)
175 struct ttm_mem_reg *mem = &bo->mem;
179 list_del_init(&bo->io_reserve_lru);
180 ttm_mem_io_free(bo->bdev, mem);
316 int ttm_bo_move_memcpy(struct ttm_buffer_object *bo,
320 struct ttm_bo_device *bdev = bo->bdev;
322 struct ttm_tt *ttm = bo->ttm;
323 struct ttm_mem_reg *old_mem = &bo->mem;
386 bo->ttm = NULL;
393 ttm_bo_mem_put(bo, &old_copy);
398 static void ttm_transfered_destroy(struct ttm_buffer_object *bo)
400 kfree(bo);
406 * @bo: A pointer to a struct ttm_buffer_object.
408 * holding the data of @bo with the old placement.
418 static int ttm_buffer_object_transfer(struct ttm_buffer_object *bo,
422 struct ttm_bo_device *bdev = bo->bdev;
429 *fbo = *bo;
444 fbo->sync_obj = driver->sync_obj_ref(bo->sync_obj);
483 static int ttm_bo_ioremap(struct ttm_buffer_object *bo,
488 struct ttm_mem_reg *mem = &bo->mem;
490 if (bo->mem.bus.addr) {
492 map->virtual = (void *)(((u8 *)bo->mem.bus.addr) + offset);
496 map->virtual = ioremap_wc(bo->mem.bus.base + bo->mem.bus.offset + offset,
499 map->virtual = ioremap_nocache(bo->mem.bus.base + bo->mem.bus.offset + offset,
505 static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo,
510 struct ttm_mem_reg *mem = &bo->mem; pgprot_t prot;
511 struct ttm_tt *ttm = bo->ttm;
525 * page protection is consistent with the bo.
546 int ttm_bo_kmap(struct ttm_buffer_object *bo,
551 &bo->bdev->man[bo->mem.mem_type];
555 BUG_ON(!list_empty(&bo->swap));
557 map->bo = bo;
558 if (num_pages > bo->num_pages)
560 if (start_page > bo->num_pages)
567 ret = ttm_mem_io_reserve(bo->bdev, &bo->mem);
571 if (!bo->mem.bus.is_iomem) {
572 return ttm_bo_kmap_ttm(bo, start_page, num_pages, map);
576 return ttm_bo_ioremap(bo, offset, size, map);
583 struct ttm_buffer_object *bo = map->bo;
585 &bo->bdev->man[bo->mem.mem_type];
605 ttm_mem_io_free(map->bo->bdev, &map->bo->mem);
612 int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo,
619 struct ttm_bo_device *bdev = bo->bdev;
622 struct ttm_mem_reg *old_mem = &bo->mem;
628 if (bo->sync_obj) {
629 tmp_obj = bo->sync_obj;
630 bo->sync_obj = NULL;
632 bo->sync_obj = driver->sync_obj_ref(sync_obj);
633 bo->sync_obj_arg = sync_obj_arg;
635 ret = ttm_bo_wait(bo, false, false, false);
643 (bo->ttm != NULL)) {
644 ttm_tt_unbind(bo->ttm);
645 ttm_tt_destroy(bo->ttm);
646 bo->ttm = NULL;
648 ttm_bo_free_old_node(bo);
658 set_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags);
663 ret = ttm_buffer_object_transfer(bo, &ghost_obj);
670 * bo to be unbound and destroyed.
676 bo->ttm = NULL;