Lines Matching refs:bo

124     struct vbox_bo *bo;
126 bo = container_of(tbo, struct vbox_bo, bo);
128 drm_gem_object_release(&bo->gem);
129 kfree(bo);
132 bool vbox_ttm_bo_is_vbox_bo(struct ttm_buffer_object *bo)
134 if (bo->destroy == &vbox_bo_ttm_destroy)
166 vbox_bo_evict_flags(struct ttm_buffer_object *bo, struct ttm_placement *pl)
168 struct vbox_bo *vboxbo = vbox_bo(bo);
170 if (!vbox_ttm_bo_is_vbox_bo(bo))
177 static int vbox_bo_verify_access(struct ttm_buffer_object *bo, struct file *filp)
216 static int vbox_bo_move(struct ttm_buffer_object *bo,
222 r = ttm_bo_move_memcpy(bo, evict, no_wait_gpu, new_mem);
300 DRM_ERROR("Error initialising bo driver; %d\n", ret);
344 void vbox_ttm_placement(struct vbox_bo *bo, int domain)
347 bo->placement.fpfn = 0;
348 bo->placement.lpfn = 0;
349 bo->placement.placement = bo->placements;
350 bo->placement.busy_placement = bo->placements;
352 bo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_VRAM;
354 bo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
356 bo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
357 bo->placement.num_placement = c;
358 bo->placement.num_busy_placement = c;
361 int vbox_bo_reserve(struct vbox_bo *bo, bool no_wait)
365 ret = ttm_bo_reserve(&bo->bo, true, no_wait, false, 0);
369 DRM_ERROR("reserve failed %p\n", bo);
375 void vbox_bo_unreserve(struct vbox_bo *bo)
377 ttm_bo_unreserve(&bo->bo);
399 vboxbo->bo.bdev = &vbox->ttm.bdev;
401 vboxbo->bo.bdev->dev_mapping = dev->dev_mapping;
409 ret = ttm_bo_init(&vbox->ttm.bdev, &vboxbo->bo, size,
420 static inline u64 vbox_bo_gpu_offset(struct vbox_bo *bo)
422 return bo->bo.offset;
425 int vbox_bo_pin(struct vbox_bo *bo, u32 pl_flag, u64 *gpu_addr)
429 if (bo->pin_count)
431 bo->pin_count++;
433 *gpu_addr = vbox_bo_gpu_offset(bo);
437 vbox_ttm_placement(bo, pl_flag);
438 for (i = 0; i < bo->placement.num_placement; i++)
439 bo->placements[i] |= TTM_PL_FLAG_NO_EVICT;
440 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);
444 bo->pin_count = 1;
446 *gpu_addr = vbox_bo_gpu_offset(bo);
450 int vbox_bo_unpin(struct vbox_bo *bo)
453 if (!bo->pin_count)
455 DRM_ERROR("unpin bad %p\n", bo);
458 bo->pin_count--;
459 if (bo->pin_count)
462 for (i = 0; i < bo->placement.num_placement ; i++)
463 bo->placements[i] &= ~TTM_PL_FLAG_NO_EVICT;
464 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);
474 int vbox_bo_push_sysram(struct vbox_bo *bo)
477 if (!bo->pin_count)
479 DRM_ERROR("unpin bad %p\n", bo);
482 bo->pin_count--;
483 if (bo->pin_count)
486 if (bo->kmap.virtual)
487 ttm_bo_kunmap(&bo->kmap);
489 vbox_ttm_placement(bo, TTM_PL_FLAG_SYSTEM);
490 for (i = 0; i < bo->placement.num_placement ; i++)
491 bo->placements[i] |= TTM_PL_FLAG_NO_EVICT;
493 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);