Lines Matching refs:nvbo

38 	struct nouveau_bo *nvbo = nouveau_gem_object(gem);  in nouveau_gem_object_del()  local
39 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); in nouveau_gem_object_del()
40 struct ttm_buffer_object *bo = &nvbo->bo; in nouveau_gem_object_del()
49 drm_prime_gem_destroy(gem, nvbo->bo.sg); in nouveau_gem_object_del()
65 struct nouveau_bo *nvbo = nouveau_gem_object(gem); in nouveau_gem_object_open() local
66 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); in nouveau_gem_object_open()
74 ret = ttm_bo_reserve(&nvbo->bo, false, false, false, NULL); in nouveau_gem_object_open()
78 vma = nouveau_bo_vma_find(nvbo, cli->vm); in nouveau_gem_object_open()
92 ret = nouveau_bo_vma_add(nvbo, cli->vm, vma); in nouveau_gem_object_open()
103 ttm_bo_unreserve(&nvbo->bo); in nouveau_gem_object_open()
117 nouveau_gem_object_unmap(struct nouveau_bo *nvbo, struct nvkm_vma *vma) in nouveau_gem_object_unmap() argument
119 const bool mapped = nvbo->bo.mem.mem_type != TTM_PL_SYSTEM; in nouveau_gem_object_unmap()
120 struct reservation_object *resv = nvbo->bo.resv; in nouveau_gem_object_unmap()
129 ttm_bo_wait(&nvbo->bo, true, false, false); in nouveau_gem_object_unmap()
134 fence = reservation_object_get_excl(nvbo->bo.resv); in nouveau_gem_object_unmap()
150 struct nouveau_bo *nvbo = nouveau_gem_object(gem); in nouveau_gem_object_close() local
151 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); in nouveau_gem_object_close()
159 ret = ttm_bo_reserve(&nvbo->bo, false, false, false, NULL); in nouveau_gem_object_close()
163 vma = nouveau_bo_vma_find(nvbo, cli->vm); in nouveau_gem_object_close()
168 nouveau_gem_object_unmap(nvbo, vma); in nouveau_gem_object_close()
174 ttm_bo_unreserve(&nvbo->bo); in nouveau_gem_object_close()
183 struct nouveau_bo *nvbo; in nouveau_gem_new() local
201 nvbo = *pnvbo; in nouveau_gem_new()
207 nvbo->valid_domains = NOUVEAU_GEM_DOMAIN_VRAM | in nouveau_gem_new()
210 nvbo->valid_domains &= domain; in nouveau_gem_new()
214 ret = drm_gem_object_init(dev, &nvbo->gem, nvbo->bo.mem.size); in nouveau_gem_new()
220 nvbo->bo.persistent_swap_storage = nvbo->gem.filp; in nouveau_gem_new()
229 struct nouveau_bo *nvbo = nouveau_gem_object(gem); in nouveau_gem_info() local
232 if (is_power_of_2(nvbo->valid_domains)) in nouveau_gem_info()
233 rep->domain = nvbo->valid_domains; in nouveau_gem_info()
234 else if (nvbo->bo.mem.mem_type == TTM_PL_TT) in nouveau_gem_info()
238 rep->offset = nvbo->bo.offset; in nouveau_gem_info()
240 vma = nouveau_bo_vma_find(nvbo, cli->vm); in nouveau_gem_info()
247 rep->size = nvbo->bo.mem.num_pages << PAGE_SHIFT; in nouveau_gem_info()
248 rep->map_handle = drm_vma_node_offset_addr(&nvbo->bo.vma_node); in nouveau_gem_info()
249 rep->tile_mode = nvbo->tile_mode; in nouveau_gem_info()
250 rep->tile_flags = nvbo->tile_flags; in nouveau_gem_info()
262 struct nouveau_bo *nvbo = NULL; in nouveau_gem_ioctl_new() local
272 req->info.tile_flags, &nvbo); in nouveau_gem_ioctl_new()
276 ret = drm_gem_handle_create(file_priv, &nvbo->gem, &req->info.handle); in nouveau_gem_ioctl_new()
278 ret = nouveau_gem_info(file_priv, &nvbo->gem, &req->info); in nouveau_gem_ioctl_new()
284 drm_gem_object_unreference_unlocked(&nvbo->gem); in nouveau_gem_ioctl_new()
292 struct nouveau_bo *nvbo = nouveau_gem_object(gem); in nouveau_gem_set_domain() local
293 struct ttm_buffer_object *bo = &nvbo->bo; in nouveau_gem_set_domain()
294 uint32_t domains = valid_domains & nvbo->valid_domains & in nouveau_gem_set_domain()
321 nouveau_bo_placement_set(nvbo, pref_flags, valid_flags); in nouveau_gem_set_domain()
335 struct nouveau_bo *nvbo; in validate_fini_no_ticket() local
339 nvbo = list_entry(op->list.next, struct nouveau_bo, entry); in validate_fini_no_ticket()
340 b = &pbbo[nvbo->pbbo_index]; in validate_fini_no_ticket()
343 nouveau_bo_fence(nvbo, fence, !!b->write_domains); in validate_fini_no_ticket()
345 if (unlikely(nvbo->validate_mapped)) { in validate_fini_no_ticket()
346 ttm_bo_kunmap(&nvbo->kmap); in validate_fini_no_ticket()
347 nvbo->validate_mapped = false; in validate_fini_no_ticket()
350 list_del(&nvbo->entry); in validate_fini_no_ticket()
351 nvbo->reserved_by = NULL; in validate_fini_no_ticket()
352 ttm_bo_unreserve_ticket(&nvbo->bo, &op->ticket); in validate_fini_no_ticket()
353 drm_gem_object_unreference_unlocked(&nvbo->gem); in validate_fini_no_ticket()
389 struct nouveau_bo *nvbo; in validate_init() local
397 nvbo = nouveau_gem_object(gem); in validate_init()
398 if (nvbo == res_bo) { in validate_init()
404 if (nvbo->reserved_by && nvbo->reserved_by == file_priv) { in validate_init()
412 ret = ttm_bo_reserve(&nvbo->bo, true, false, true, &op->ticket); in validate_init()
419 ret = ttm_bo_reserve_slowpath(&nvbo->bo, true, in validate_init()
422 res_bo = nvbo; in validate_init()
431 b->user_priv = (uint64_t)(unsigned long)nvbo; in validate_init()
432 nvbo->reserved_by = file_priv; in validate_init()
433 nvbo->pbbo_index = i; in validate_init()
436 list_add_tail(&nvbo->entry, &both_list); in validate_init()
439 list_add_tail(&nvbo->entry, &vram_list); in validate_init()
442 list_add_tail(&nvbo->entry, &gart_list); in validate_init()
446 list_add_tail(&nvbo->entry, &both_list); in validate_init()
450 if (nvbo == res_bo) in validate_init()
472 struct nouveau_bo *nvbo; in validate_list() local
475 list_for_each_entry(nvbo, list, entry) { in validate_list()
476 struct drm_nouveau_gem_pushbuf_bo *b = &pbbo[nvbo->pbbo_index]; in validate_list()
478 ret = nouveau_gem_set_domain(&nvbo->gem, b->read_domains, in validate_list()
486 ret = nouveau_bo_validate(nvbo, true, false); in validate_list()
493 ret = nouveau_fence_sync(nvbo, chan, !!b->write_domains, true); in validate_list()
501 if (nvbo->bo.offset == b->presumed.offset && in validate_list()
502 ((nvbo->bo.mem.mem_type == TTM_PL_VRAM && in validate_list()
504 (nvbo->bo.mem.mem_type == TTM_PL_TT && in validate_list()
508 if (nvbo->bo.mem.mem_type == TTM_PL_TT) in validate_list()
512 b->presumed.offset = nvbo->bo.offset; in validate_list()
516 if (copy_to_user(&upbbo[nvbo->pbbo_index].presumed, in validate_list()
602 struct nouveau_bo *nvbo; in nouveau_gem_pushbuf_reloc_apply() local
620 nvbo = (void *)(unsigned long)bo[r->reloc_bo_index].user_priv; in nouveau_gem_pushbuf_reloc_apply()
623 nvbo->bo.mem.num_pages << PAGE_SHIFT)) { in nouveau_gem_pushbuf_reloc_apply()
629 if (!nvbo->kmap.virtual) { in nouveau_gem_pushbuf_reloc_apply()
630 ret = ttm_bo_kmap(&nvbo->bo, 0, nvbo->bo.mem.num_pages, in nouveau_gem_pushbuf_reloc_apply()
631 &nvbo->kmap); in nouveau_gem_pushbuf_reloc_apply()
636 nvbo->validate_mapped = true; in nouveau_gem_pushbuf_reloc_apply()
654 ret = ttm_bo_wait(&nvbo->bo, true, false, false); in nouveau_gem_pushbuf_reloc_apply()
660 nouveau_bo_wr32(nvbo, r->reloc_bo_offset >> 2, data); in nouveau_gem_pushbuf_reloc_apply()
764 struct nouveau_bo *nvbo = (void *)(unsigned long) in nouveau_gem_ioctl_pushbuf() local
767 nv50_dma_push(chan, nvbo, push[i].offset, in nouveau_gem_ioctl_pushbuf()
779 struct nouveau_bo *nvbo = (void *)(unsigned long) in nouveau_gem_ioctl_pushbuf() local
782 OUT_RING(chan, (nvbo->bo.offset + push[i].offset) | 2); in nouveau_gem_ioctl_pushbuf()
793 struct nouveau_bo *nvbo = (void *)(unsigned long) in nouveau_gem_ioctl_pushbuf() local
800 if (!nvbo->kmap.virtual) { in nouveau_gem_ioctl_pushbuf()
801 ret = ttm_bo_kmap(&nvbo->bo, 0, in nouveau_gem_ioctl_pushbuf()
802 nvbo->bo.mem. in nouveau_gem_ioctl_pushbuf()
804 &nvbo->kmap); in nouveau_gem_ioctl_pushbuf()
809 nvbo->validate_mapped = true; in nouveau_gem_ioctl_pushbuf()
812 nouveau_bo_wr32(nvbo, (push[i].offset + in nouveau_gem_ioctl_pushbuf()
817 (nvbo->bo.offset + push[i].offset)); in nouveau_gem_ioctl_pushbuf()
862 struct nouveau_bo *nvbo; in nouveau_gem_ioctl_cpu_prep() local
870 nvbo = nouveau_gem_object(gem); in nouveau_gem_ioctl_cpu_prep()
873 ret = reservation_object_test_signaled_rcu(nvbo->bo.resv, write) ? 0 : -EBUSY; in nouveau_gem_ioctl_cpu_prep()
877 lret = reservation_object_wait_timeout_rcu(nvbo->bo.resv, write, true, 30 * HZ); in nouveau_gem_ioctl_cpu_prep()
885 nouveau_bo_sync_for_cpu(nvbo); in nouveau_gem_ioctl_cpu_prep()
897 struct nouveau_bo *nvbo; in nouveau_gem_ioctl_cpu_fini() local
902 nvbo = nouveau_gem_object(gem); in nouveau_gem_ioctl_cpu_fini()
904 nouveau_bo_sync_for_device(nvbo); in nouveau_gem_ioctl_cpu_fini()