Lines Matching refs:bo

97 	struct cirrus_bo *bo;  in cirrus_bo_ttm_destroy()  local
99 bo = container_of(tbo, struct cirrus_bo, bo); in cirrus_bo_ttm_destroy()
101 drm_gem_object_release(&bo->gem); in cirrus_bo_ttm_destroy()
102 kfree(bo); in cirrus_bo_ttm_destroy()
105 static bool cirrus_ttm_bo_is_cirrus_bo(struct ttm_buffer_object *bo) in cirrus_ttm_bo_is_cirrus_bo() argument
107 if (bo->destroy == &cirrus_bo_ttm_destroy) in cirrus_ttm_bo_is_cirrus_bo()
138 cirrus_bo_evict_flags(struct ttm_buffer_object *bo, struct ttm_placement *pl) in cirrus_bo_evict_flags() argument
140 struct cirrus_bo *cirrusbo = cirrus_bo(bo); in cirrus_bo_evict_flags()
142 if (!cirrus_ttm_bo_is_cirrus_bo(bo)) in cirrus_bo_evict_flags()
149 static int cirrus_bo_verify_access(struct ttm_buffer_object *bo, struct file *filp) in cirrus_bo_verify_access() argument
151 struct cirrus_bo *cirrusbo = cirrus_bo(bo); in cirrus_bo_verify_access()
189 static int cirrus_bo_move(struct ttm_buffer_object *bo, in cirrus_bo_move() argument
195 r = ttm_bo_move_memcpy(bo, evict, no_wait_gpu, new_mem); in cirrus_bo_move()
298 void cirrus_ttm_placement(struct cirrus_bo *bo, int domain) in cirrus_ttm_placement() argument
302 bo->placement.placement = bo->placements; in cirrus_ttm_placement()
303 bo->placement.busy_placement = bo->placements; in cirrus_ttm_placement()
305 bo->placements[c++].flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_VRAM; in cirrus_ttm_placement()
307 bo->placements[c++].flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; in cirrus_ttm_placement()
309 bo->placements[c++].flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; in cirrus_ttm_placement()
310 bo->placement.num_placement = c; in cirrus_ttm_placement()
311 bo->placement.num_busy_placement = c; in cirrus_ttm_placement()
313 bo->placements[i].fpfn = 0; in cirrus_ttm_placement()
314 bo->placements[i].lpfn = 0; in cirrus_ttm_placement()
336 cirrusbo->bo.bdev = &cirrus->ttm.bdev; in cirrus_bo_create()
343 ret = ttm_bo_init(&cirrus->ttm.bdev, &cirrusbo->bo, size, in cirrus_bo_create()
354 static inline u64 cirrus_bo_gpu_offset(struct cirrus_bo *bo) in cirrus_bo_gpu_offset() argument
356 return bo->bo.offset; in cirrus_bo_gpu_offset()
359 int cirrus_bo_pin(struct cirrus_bo *bo, u32 pl_flag, u64 *gpu_addr) in cirrus_bo_pin() argument
363 if (bo->pin_count) { in cirrus_bo_pin()
364 bo->pin_count++; in cirrus_bo_pin()
366 *gpu_addr = cirrus_bo_gpu_offset(bo); in cirrus_bo_pin()
369 cirrus_ttm_placement(bo, pl_flag); in cirrus_bo_pin()
370 for (i = 0; i < bo->placement.num_placement; i++) in cirrus_bo_pin()
371 bo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT; in cirrus_bo_pin()
372 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false); in cirrus_bo_pin()
376 bo->pin_count = 1; in cirrus_bo_pin()
378 *gpu_addr = cirrus_bo_gpu_offset(bo); in cirrus_bo_pin()
382 int cirrus_bo_push_sysram(struct cirrus_bo *bo) in cirrus_bo_push_sysram() argument
385 if (!bo->pin_count) { in cirrus_bo_push_sysram()
386 DRM_ERROR("unpin bad %p\n", bo); in cirrus_bo_push_sysram()
389 bo->pin_count--; in cirrus_bo_push_sysram()
390 if (bo->pin_count) in cirrus_bo_push_sysram()
393 if (bo->kmap.virtual) in cirrus_bo_push_sysram()
394 ttm_bo_kunmap(&bo->kmap); in cirrus_bo_push_sysram()
396 cirrus_ttm_placement(bo, TTM_PL_FLAG_SYSTEM); in cirrus_bo_push_sysram()
397 for (i = 0; i < bo->placement.num_placement ; i++) in cirrus_bo_push_sysram()
398 bo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT; in cirrus_bo_push_sysram()
400 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false); in cirrus_bo_push_sysram()