Lines Matching refs:bo
97 struct mgag200_bo *bo; in mgag200_bo_ttm_destroy() local
99 bo = container_of(tbo, struct mgag200_bo, bo); in mgag200_bo_ttm_destroy()
101 drm_gem_object_release(&bo->gem); in mgag200_bo_ttm_destroy()
102 kfree(bo); in mgag200_bo_ttm_destroy()
105 bool mgag200_ttm_bo_is_mgag200_bo(struct ttm_buffer_object *bo) in mgag200_ttm_bo_is_mgag200_bo() argument
107 if (bo->destroy == &mgag200_bo_ttm_destroy) in mgag200_ttm_bo_is_mgag200_bo()
138 mgag200_bo_evict_flags(struct ttm_buffer_object *bo, struct ttm_placement *pl) in mgag200_bo_evict_flags() argument
140 struct mgag200_bo *mgabo = mgag200_bo(bo); in mgag200_bo_evict_flags()
142 if (!mgag200_ttm_bo_is_mgag200_bo(bo)) in mgag200_bo_evict_flags()
149 static int mgag200_bo_verify_access(struct ttm_buffer_object *bo, struct file *filp) in mgag200_bo_verify_access() argument
187 static int mgag200_bo_move(struct ttm_buffer_object *bo, in mgag200_bo_move() argument
193 r = ttm_bo_move_memcpy(bo, evict, no_wait_gpu, new_mem); in mgag200_bo_move()
295 void mgag200_ttm_placement(struct mgag200_bo *bo, int domain) in mgag200_ttm_placement() argument
298 bo->placement.fpfn = 0; in mgag200_ttm_placement()
299 bo->placement.lpfn = 0; in mgag200_ttm_placement()
300 bo->placement.placement = bo->placements; in mgag200_ttm_placement()
301 bo->placement.busy_placement = bo->placements; in mgag200_ttm_placement()
303 bo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_VRAM; in mgag200_ttm_placement()
305 bo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; in mgag200_ttm_placement()
307 bo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; in mgag200_ttm_placement()
308 bo->placement.num_placement = c; in mgag200_ttm_placement()
309 bo->placement.num_busy_placement = c; in mgag200_ttm_placement()
312 int mgag200_bo_reserve(struct mgag200_bo *bo, bool no_wait) in mgag200_bo_reserve() argument
316 ret = ttm_bo_reserve(&bo->bo, true, no_wait, false, 0); in mgag200_bo_reserve()
319 DRM_ERROR("reserve failed %p %d\n", bo, ret); in mgag200_bo_reserve()
325 void mgag200_bo_unreserve(struct mgag200_bo *bo) in mgag200_bo_unreserve() argument
327 ttm_bo_unreserve(&bo->bo); in mgag200_bo_unreserve()
349 mgabo->bo.bdev = &mdev->ttm.bdev; in mgag200_bo_create()
356 ret = ttm_bo_init(&mdev->ttm.bdev, &mgabo->bo, size, in mgag200_bo_create()
367 static inline u64 mgag200_bo_gpu_offset(struct mgag200_bo *bo) in mgag200_bo_gpu_offset() argument
369 return bo->bo.offset; in mgag200_bo_gpu_offset()
372 int mgag200_bo_pin(struct mgag200_bo *bo, u32 pl_flag, u64 *gpu_addr) in mgag200_bo_pin() argument
376 if (bo->pin_count) { in mgag200_bo_pin()
377 bo->pin_count++; in mgag200_bo_pin()
379 *gpu_addr = mgag200_bo_gpu_offset(bo); in mgag200_bo_pin()
382 mgag200_ttm_placement(bo, pl_flag); in mgag200_bo_pin()
383 for (i = 0; i < bo->placement.num_placement; i++) in mgag200_bo_pin()
384 bo->placements[i] |= TTM_PL_FLAG_NO_EVICT; in mgag200_bo_pin()
385 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false); in mgag200_bo_pin()
389 bo->pin_count = 1; in mgag200_bo_pin()
391 *gpu_addr = mgag200_bo_gpu_offset(bo); in mgag200_bo_pin()
395 int mgag200_bo_unpin(struct mgag200_bo *bo) in mgag200_bo_unpin() argument
398 if (!bo->pin_count) { in mgag200_bo_unpin()
399 DRM_ERROR("unpin bad %p\n", bo); in mgag200_bo_unpin()
402 bo->pin_count--; in mgag200_bo_unpin()
403 if (bo->pin_count) in mgag200_bo_unpin()
406 for (i = 0; i < bo->placement.num_placement ; i++) in mgag200_bo_unpin()
407 bo->placements[i] &= ~TTM_PL_FLAG_NO_EVICT; in mgag200_bo_unpin()
408 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false); in mgag200_bo_unpin()
415 int mgag200_bo_push_sysram(struct mgag200_bo *bo) in mgag200_bo_push_sysram() argument
418 if (!bo->pin_count) { in mgag200_bo_push_sysram()
419 DRM_ERROR("unpin bad %p\n", bo); in mgag200_bo_push_sysram()
422 bo->pin_count--; in mgag200_bo_push_sysram()
423 if (bo->pin_count) in mgag200_bo_push_sysram()
426 if (bo->kmap.virtual) in mgag200_bo_push_sysram()
427 ttm_bo_kunmap(&bo->kmap); in mgag200_bo_push_sysram()
429 mgag200_ttm_placement(bo, TTM_PL_FLAG_SYSTEM); in mgag200_bo_push_sysram()
430 for (i = 0; i < bo->placement.num_placement ; i++) in mgag200_bo_push_sysram()
431 bo->placements[i] |= TTM_PL_FLAG_NO_EVICT; in mgag200_bo_push_sysram()
433 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false); in mgag200_bo_push_sysram()