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 static 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
151 struct mgag200_bo *mgabo = mgag200_bo(bo); in mgag200_bo_verify_access()
189 static int mgag200_bo_move(struct ttm_buffer_object *bo, in mgag200_bo_move() argument
195 r = ttm_bo_move_memcpy(bo, evict, no_wait_gpu, new_mem); in mgag200_bo_move()
293 void mgag200_ttm_placement(struct mgag200_bo *bo, int domain) in mgag200_ttm_placement() argument
298 bo->placement.placement = bo->placements; in mgag200_ttm_placement()
299 bo->placement.busy_placement = bo->placements; in mgag200_ttm_placement()
301 bo->placements[c++].flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_VRAM; in mgag200_ttm_placement()
303 bo->placements[c++].flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; in mgag200_ttm_placement()
305 bo->placements[c++].flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; in mgag200_ttm_placement()
306 bo->placement.num_placement = c; in mgag200_ttm_placement()
307 bo->placement.num_busy_placement = c; in mgag200_ttm_placement()
309 bo->placements[i].fpfn = 0; in mgag200_ttm_placement()
310 bo->placements[i].lpfn = 0; in mgag200_ttm_placement()
332 mgabo->bo.bdev = &mdev->ttm.bdev; in mgag200_bo_create()
339 ret = ttm_bo_init(&mdev->ttm.bdev, &mgabo->bo, size, in mgag200_bo_create()
350 static inline u64 mgag200_bo_gpu_offset(struct mgag200_bo *bo) in mgag200_bo_gpu_offset() argument
352 return bo->bo.offset; in mgag200_bo_gpu_offset()
355 int mgag200_bo_pin(struct mgag200_bo *bo, u32 pl_flag, u64 *gpu_addr) in mgag200_bo_pin() argument
359 if (bo->pin_count) { in mgag200_bo_pin()
360 bo->pin_count++; in mgag200_bo_pin()
362 *gpu_addr = mgag200_bo_gpu_offset(bo); in mgag200_bo_pin()
366 mgag200_ttm_placement(bo, pl_flag); in mgag200_bo_pin()
367 for (i = 0; i < bo->placement.num_placement; i++) in mgag200_bo_pin()
368 bo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT; in mgag200_bo_pin()
369 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false); in mgag200_bo_pin()
373 bo->pin_count = 1; in mgag200_bo_pin()
375 *gpu_addr = mgag200_bo_gpu_offset(bo); in mgag200_bo_pin()
379 int mgag200_bo_unpin(struct mgag200_bo *bo) in mgag200_bo_unpin() argument
382 if (!bo->pin_count) { in mgag200_bo_unpin()
383 DRM_ERROR("unpin bad %p\n", bo); in mgag200_bo_unpin()
386 bo->pin_count--; in mgag200_bo_unpin()
387 if (bo->pin_count) in mgag200_bo_unpin()
390 for (i = 0; i < bo->placement.num_placement ; i++) in mgag200_bo_unpin()
391 bo->placements[i].flags &= ~TTM_PL_FLAG_NO_EVICT; in mgag200_bo_unpin()
392 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false); in mgag200_bo_unpin()
399 int mgag200_bo_push_sysram(struct mgag200_bo *bo) in mgag200_bo_push_sysram() argument
402 if (!bo->pin_count) { in mgag200_bo_push_sysram()
403 DRM_ERROR("unpin bad %p\n", bo); in mgag200_bo_push_sysram()
406 bo->pin_count--; in mgag200_bo_push_sysram()
407 if (bo->pin_count) in mgag200_bo_push_sysram()
410 if (bo->kmap.virtual) in mgag200_bo_push_sysram()
411 ttm_bo_kunmap(&bo->kmap); in mgag200_bo_push_sysram()
413 mgag200_ttm_placement(bo, TTM_PL_FLAG_SYSTEM); in mgag200_bo_push_sysram()
414 for (i = 0; i < bo->placement.num_placement ; i++) in mgag200_bo_push_sysram()
415 bo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT; in mgag200_bo_push_sysram()
417 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false); in mgag200_bo_push_sysram()