Searched refs:nvbo (Results 1 - 14 of 14) sorted by relevance

/linux-4.4.14/drivers/gpu/drm/nouveau/
H A Dnouveau_prime.c33 struct nouveau_bo *nvbo = nouveau_gem_object(obj); nouveau_gem_prime_get_sg_table() local
34 int npages = nvbo->bo.num_pages; nouveau_gem_prime_get_sg_table()
36 return drm_prime_pages_to_sg(nvbo->bo.ttm->pages, npages); nouveau_gem_prime_get_sg_table()
41 struct nouveau_bo *nvbo = nouveau_gem_object(obj); nouveau_gem_prime_vmap() local
44 ret = ttm_bo_kmap(&nvbo->bo, 0, nvbo->bo.num_pages, nouveau_gem_prime_vmap()
45 &nvbo->dma_buf_vmap); nouveau_gem_prime_vmap()
49 return nvbo->dma_buf_vmap.virtual; nouveau_gem_prime_vmap()
54 struct nouveau_bo *nvbo = nouveau_gem_object(obj); nouveau_gem_prime_vunmap() local
56 ttm_bo_kunmap(&nvbo->dma_buf_vmap); nouveau_gem_prime_vunmap()
63 struct nouveau_bo *nvbo; nouveau_gem_prime_import_sg_table() local
72 sg, robj, &nvbo); nouveau_gem_prime_import_sg_table()
77 nvbo->valid_domains = NOUVEAU_GEM_DOMAIN_GART; nouveau_gem_prime_import_sg_table()
81 ret = drm_gem_object_init(dev, &nvbo->gem, nvbo->bo.mem.size); nouveau_gem_prime_import_sg_table()
83 nouveau_bo_ref(NULL, &nvbo); nouveau_gem_prime_import_sg_table()
87 return &nvbo->gem; nouveau_gem_prime_import_sg_table()
92 struct nouveau_bo *nvbo = nouveau_gem_object(obj); nouveau_gem_prime_pin() local
96 ret = nouveau_bo_pin(nvbo, TTM_PL_FLAG_TT, false); nouveau_gem_prime_pin()
105 struct nouveau_bo *nvbo = nouveau_gem_object(obj); nouveau_gem_prime_unpin() local
107 nouveau_bo_unpin(nvbo); nouveau_gem_prime_unpin()
112 struct nouveau_bo *nvbo = nouveau_gem_object(obj); nouveau_gem_prime_res_obj() local
114 return nvbo->bo.resv; nouveau_gem_prime_res_obj()
H A Dnouveau_gem.c38 struct nouveau_bo *nvbo = nouveau_gem_object(gem); nouveau_gem_object_del() local
39 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); nouveau_gem_object_del()
40 struct ttm_buffer_object *bo = &nvbo->bo; nouveau_gem_object_del()
49 drm_prime_gem_destroy(gem, nvbo->bo.sg); nouveau_gem_object_del()
65 struct nouveau_bo *nvbo = nouveau_gem_object(gem); nouveau_gem_object_open() local
66 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); nouveau_gem_object_open()
74 ret = ttm_bo_reserve(&nvbo->bo, false, false, false, NULL); nouveau_gem_object_open()
78 vma = nouveau_bo_vma_find(nvbo, cli->vm); nouveau_gem_object_open()
92 ret = nouveau_bo_vma_add(nvbo, cli->vm, vma); nouveau_gem_object_open()
103 ttm_bo_unreserve(&nvbo->bo); nouveau_gem_object_open()
117 nouveau_gem_object_unmap(struct nouveau_bo *nvbo, struct nvkm_vma *vma) nouveau_gem_object_unmap() argument
119 const bool mapped = nvbo->bo.mem.mem_type != TTM_PL_SYSTEM; nouveau_gem_object_unmap()
120 struct reservation_object *resv = nvbo->bo.resv; nouveau_gem_object_unmap()
129 ttm_bo_wait(&nvbo->bo, true, false, false); nouveau_gem_object_unmap()
134 fence = reservation_object_get_excl(nvbo->bo.resv); nouveau_gem_object_unmap()
150 struct nouveau_bo *nvbo = nouveau_gem_object(gem); nouveau_gem_object_close() local
151 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); nouveau_gem_object_close()
159 ret = ttm_bo_reserve(&nvbo->bo, false, false, false, NULL); nouveau_gem_object_close()
163 vma = nouveau_bo_vma_find(nvbo, cli->vm); nouveau_gem_object_close()
168 nouveau_gem_object_unmap(nvbo, vma); nouveau_gem_object_close()
174 ttm_bo_unreserve(&nvbo->bo); nouveau_gem_object_close()
183 struct nouveau_bo *nvbo; nouveau_gem_new() local
201 nvbo = *pnvbo; nouveau_gem_new()
207 nvbo->valid_domains = NOUVEAU_GEM_DOMAIN_VRAM | nouveau_gem_new()
210 nvbo->valid_domains &= domain; nouveau_gem_new()
214 ret = drm_gem_object_init(dev, &nvbo->gem, nvbo->bo.mem.size); nouveau_gem_new()
220 nvbo->bo.persistent_swap_storage = nvbo->gem.filp; nouveau_gem_new()
229 struct nouveau_bo *nvbo = nouveau_gem_object(gem); nouveau_gem_info() local
232 if (is_power_of_2(nvbo->valid_domains)) nouveau_gem_info()
233 rep->domain = nvbo->valid_domains; nouveau_gem_info()
234 else if (nvbo->bo.mem.mem_type == TTM_PL_TT) nouveau_gem_info()
238 rep->offset = nvbo->bo.offset; nouveau_gem_info()
240 vma = nouveau_bo_vma_find(nvbo, cli->vm); nouveau_gem_info()
247 rep->size = nvbo->bo.mem.num_pages << PAGE_SHIFT; nouveau_gem_info()
248 rep->map_handle = drm_vma_node_offset_addr(&nvbo->bo.vma_node); nouveau_gem_info()
249 rep->tile_mode = nvbo->tile_mode; nouveau_gem_info()
250 rep->tile_flags = nvbo->tile_flags; nouveau_gem_info()
262 struct nouveau_bo *nvbo = NULL; nouveau_gem_ioctl_new() local
272 req->info.tile_flags, &nvbo); nouveau_gem_ioctl_new()
276 ret = drm_gem_handle_create(file_priv, &nvbo->gem, &req->info.handle); nouveau_gem_ioctl_new()
278 ret = nouveau_gem_info(file_priv, &nvbo->gem, &req->info); nouveau_gem_ioctl_new()
284 drm_gem_object_unreference_unlocked(&nvbo->gem); nouveau_gem_ioctl_new()
292 struct nouveau_bo *nvbo = nouveau_gem_object(gem); nouveau_gem_set_domain() local
293 struct ttm_buffer_object *bo = &nvbo->bo; nouveau_gem_set_domain()
294 uint32_t domains = valid_domains & nvbo->valid_domains & nouveau_gem_set_domain()
321 nouveau_bo_placement_set(nvbo, pref_flags, valid_flags); nouveau_gem_set_domain()
335 struct nouveau_bo *nvbo; validate_fini_no_ticket() local
339 nvbo = list_entry(op->list.next, struct nouveau_bo, entry); validate_fini_no_ticket()
340 b = &pbbo[nvbo->pbbo_index]; validate_fini_no_ticket()
343 nouveau_bo_fence(nvbo, fence, !!b->write_domains); validate_fini_no_ticket()
345 if (unlikely(nvbo->validate_mapped)) { validate_fini_no_ticket()
346 ttm_bo_kunmap(&nvbo->kmap); validate_fini_no_ticket()
347 nvbo->validate_mapped = false; validate_fini_no_ticket()
350 list_del(&nvbo->entry); validate_fini_no_ticket()
351 nvbo->reserved_by = NULL; validate_fini_no_ticket()
352 ttm_bo_unreserve_ticket(&nvbo->bo, &op->ticket); validate_fini_no_ticket()
353 drm_gem_object_unreference_unlocked(&nvbo->gem); validate_fini_no_ticket()
389 struct nouveau_bo *nvbo; validate_init() local
397 nvbo = nouveau_gem_object(gem); validate_init()
398 if (nvbo == res_bo) { validate_init()
404 if (nvbo->reserved_by && nvbo->reserved_by == file_priv) { validate_init()
412 ret = ttm_bo_reserve(&nvbo->bo, true, false, true, &op->ticket); validate_init()
419 ret = ttm_bo_reserve_slowpath(&nvbo->bo, true, validate_init()
422 res_bo = nvbo; validate_init()
431 b->user_priv = (uint64_t)(unsigned long)nvbo; validate_init()
432 nvbo->reserved_by = file_priv; validate_init()
433 nvbo->pbbo_index = i; validate_init()
436 list_add_tail(&nvbo->entry, &both_list); validate_init()
439 list_add_tail(&nvbo->entry, &vram_list); validate_init()
442 list_add_tail(&nvbo->entry, &gart_list); validate_init()
446 list_add_tail(&nvbo->entry, &both_list); validate_init()
450 if (nvbo == res_bo) validate_init()
472 struct nouveau_bo *nvbo; validate_list() local
475 list_for_each_entry(nvbo, list, entry) { list_for_each_entry()
476 struct drm_nouveau_gem_pushbuf_bo *b = &pbbo[nvbo->pbbo_index]; list_for_each_entry()
478 ret = nouveau_gem_set_domain(&nvbo->gem, b->read_domains, list_for_each_entry()
486 ret = nouveau_bo_validate(nvbo, true, false); list_for_each_entry()
493 ret = nouveau_fence_sync(nvbo, chan, !!b->write_domains, true); list_for_each_entry()
501 if (nvbo->bo.offset == b->presumed.offset && list_for_each_entry()
502 ((nvbo->bo.mem.mem_type == TTM_PL_VRAM && list_for_each_entry()
504 (nvbo->bo.mem.mem_type == TTM_PL_TT && list_for_each_entry()
508 if (nvbo->bo.mem.mem_type == TTM_PL_TT) list_for_each_entry()
512 b->presumed.offset = nvbo->bo.offset; list_for_each_entry()
516 if (copy_to_user(&upbbo[nvbo->pbbo_index].presumed, list_for_each_entry()
602 struct nouveau_bo *nvbo; nouveau_gem_pushbuf_reloc_apply() local
620 nvbo = (void *)(unsigned long)bo[r->reloc_bo_index].user_priv; nouveau_gem_pushbuf_reloc_apply()
623 nvbo->bo.mem.num_pages << PAGE_SHIFT)) { nouveau_gem_pushbuf_reloc_apply()
629 if (!nvbo->kmap.virtual) { nouveau_gem_pushbuf_reloc_apply()
630 ret = ttm_bo_kmap(&nvbo->bo, 0, nvbo->bo.mem.num_pages, nouveau_gem_pushbuf_reloc_apply()
631 &nvbo->kmap); nouveau_gem_pushbuf_reloc_apply()
636 nvbo->validate_mapped = true; nouveau_gem_pushbuf_reloc_apply()
654 ret = ttm_bo_wait(&nvbo->bo, true, false, false); nouveau_gem_pushbuf_reloc_apply()
660 nouveau_bo_wr32(nvbo, r->reloc_bo_offset >> 2, data); nouveau_gem_pushbuf_reloc_apply()
764 struct nouveau_bo *nvbo = (void *)(unsigned long) nouveau_gem_ioctl_pushbuf() local
767 nv50_dma_push(chan, nvbo, push[i].offset, nouveau_gem_ioctl_pushbuf()
779 struct nouveau_bo *nvbo = (void *)(unsigned long) nouveau_gem_ioctl_pushbuf() local
782 OUT_RING(chan, (nvbo->bo.offset + push[i].offset) | 2); nouveau_gem_ioctl_pushbuf()
793 struct nouveau_bo *nvbo = (void *)(unsigned long) nouveau_gem_ioctl_pushbuf() local
800 if (!nvbo->kmap.virtual) { nouveau_gem_ioctl_pushbuf()
801 ret = ttm_bo_kmap(&nvbo->bo, 0, nouveau_gem_ioctl_pushbuf()
802 nvbo->bo.mem. nouveau_gem_ioctl_pushbuf()
804 &nvbo->kmap); nouveau_gem_ioctl_pushbuf()
809 nvbo->validate_mapped = true; nouveau_gem_ioctl_pushbuf()
812 nouveau_bo_wr32(nvbo, (push[i].offset + nouveau_gem_ioctl_pushbuf()
817 (nvbo->bo.offset + push[i].offset)); nouveau_gem_ioctl_pushbuf()
862 struct nouveau_bo *nvbo; nouveau_gem_ioctl_cpu_prep() local
870 nvbo = nouveau_gem_object(gem); nouveau_gem_ioctl_cpu_prep()
873 ret = reservation_object_test_signaled_rcu(nvbo->bo.resv, write) ? 0 : -EBUSY; nouveau_gem_ioctl_cpu_prep()
877 lret = reservation_object_wait_timeout_rcu(nvbo->bo.resv, write, true, 30 * HZ); nouveau_gem_ioctl_cpu_prep()
885 nouveau_bo_sync_for_cpu(nvbo); nouveau_gem_ioctl_cpu_prep()
897 struct nouveau_bo *nvbo; nouveau_gem_ioctl_cpu_fini() local
902 nvbo = nouveau_gem_object(gem); nouveau_gem_ioctl_cpu_fini()
904 nouveau_bo_sync_for_device(nvbo); nouveau_gem_ioctl_cpu_fini()
H A Dnouveau_bo.c133 struct nouveau_bo *nvbo = nouveau_bo(bo); nouveau_bo_del_ttm() local
135 if (unlikely(nvbo->gem.filp)) nouveau_bo_del_ttm()
137 WARN_ON(nvbo->pin_refcnt > 0); nouveau_bo_del_ttm()
138 nv10_bo_put_tile_region(dev, nvbo->tile, NULL); nouveau_bo_del_ttm()
139 kfree(nvbo); nouveau_bo_del_ttm()
143 nouveau_bo_fixup_align(struct nouveau_bo *nvbo, u32 flags, nouveau_bo_fixup_align() argument
146 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); nouveau_bo_fixup_align()
150 if (nvbo->tile_mode) { nouveau_bo_fixup_align()
153 *size = roundup(*size, 64 * nvbo->tile_mode); nouveau_bo_fixup_align()
157 *size = roundup(*size, 64 * nvbo->tile_mode); nouveau_bo_fixup_align()
161 *size = roundup(*size, 64 * nvbo->tile_mode); nouveau_bo_fixup_align()
165 *size = roundup(*size, 32 * nvbo->tile_mode); nouveau_bo_fixup_align()
169 *size = roundup(*size, (1 << nvbo->page_shift)); nouveau_bo_fixup_align()
170 *align = max((1 << nvbo->page_shift), *align); nouveau_bo_fixup_align()
183 struct nouveau_bo *nvbo; nouveau_bo_new() local
202 nvbo = kzalloc(sizeof(struct nouveau_bo), GFP_KERNEL); nouveau_bo_new()
203 if (!nvbo) nouveau_bo_new()
205 INIT_LIST_HEAD(&nvbo->head); nouveau_bo_new()
206 INIT_LIST_HEAD(&nvbo->entry); nouveau_bo_new()
207 INIT_LIST_HEAD(&nvbo->vma_list); nouveau_bo_new()
208 nvbo->tile_mode = tile_mode; nouveau_bo_new()
209 nvbo->tile_flags = tile_flags; nouveau_bo_new()
210 nvbo->bo.bdev = &drm->ttm.bdev; nouveau_bo_new()
213 nvbo->force_coherent = flags & TTM_PL_FLAG_UNCACHED; nouveau_bo_new()
215 nvbo->page_shift = 12; nouveau_bo_new()
218 nvbo->page_shift = drm->client.vm->mmu->lpg_shift; nouveau_bo_new()
221 nouveau_bo_fixup_align(nvbo, flags, &align, &size); nouveau_bo_new()
222 nvbo->bo.mem.num_pages = size >> PAGE_SHIFT; nouveau_bo_new()
223 nouveau_bo_placement_set(nvbo, flags, 0); nouveau_bo_new()
228 ret = ttm_bo_init(&drm->ttm.bdev, &nvbo->bo, size, nouveau_bo_new()
229 type, &nvbo->placement, nouveau_bo_new()
237 *pnvbo = nvbo; nouveau_bo_new()
255 set_placement_range(struct nouveau_bo *nvbo, uint32_t type) set_placement_range() argument
257 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); set_placement_range()
262 nvbo->tile_mode && (type & TTM_PL_FLAG_VRAM) && set_placement_range()
263 nvbo->bo.mem.num_pages < vram_pages / 4) { set_placement_range()
270 if (nvbo->tile_flags & NOUVEAU_GEM_TILE_ZETA) { set_placement_range()
277 for (i = 0; i < nvbo->placement.num_placement; ++i) { set_placement_range()
278 nvbo->placements[i].fpfn = fpfn; set_placement_range()
279 nvbo->placements[i].lpfn = lpfn; set_placement_range()
281 for (i = 0; i < nvbo->placement.num_busy_placement; ++i) { set_placement_range()
282 nvbo->busy_placements[i].fpfn = fpfn; set_placement_range()
283 nvbo->busy_placements[i].lpfn = lpfn; set_placement_range()
289 nouveau_bo_placement_set(struct nouveau_bo *nvbo, uint32_t type, uint32_t busy) nouveau_bo_placement_set() argument
291 struct ttm_placement *pl = &nvbo->placement; nouveau_bo_placement_set()
292 uint32_t flags = (nvbo->force_coherent ? TTM_PL_FLAG_UNCACHED : nouveau_bo_placement_set()
294 (nvbo->pin_refcnt ? TTM_PL_FLAG_NO_EVICT : 0); nouveau_bo_placement_set()
296 pl->placement = nvbo->placements; nouveau_bo_placement_set()
297 set_placement_list(nvbo->placements, &pl->num_placement, nouveau_bo_placement_set()
300 pl->busy_placement = nvbo->busy_placements; nouveau_bo_placement_set()
301 set_placement_list(nvbo->busy_placements, &pl->num_busy_placement, nouveau_bo_placement_set()
304 set_placement_range(nvbo, type); nouveau_bo_placement_set()
308 nouveau_bo_pin(struct nouveau_bo *nvbo, uint32_t memtype, bool contig) nouveau_bo_pin() argument
310 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); nouveau_bo_pin()
311 struct ttm_buffer_object *bo = &nvbo->bo; nouveau_bo_pin()
321 if (nvbo->tile_flags & NOUVEAU_GEM_TILE_NONCONTIG) { nouveau_bo_pin()
327 nvbo->tile_flags &= ~NOUVEAU_GEM_TILE_NONCONTIG; nouveau_bo_pin()
332 if (nvbo->pin_refcnt) { nouveau_bo_pin()
339 nvbo->pin_refcnt++; nouveau_bo_pin()
344 nouveau_bo_placement_set(nvbo, TTM_PL_FLAG_TT, 0); nouveau_bo_pin()
345 ret = nouveau_bo_validate(nvbo, false, false); nouveau_bo_pin()
350 nvbo->pin_refcnt++; nouveau_bo_pin()
351 nouveau_bo_placement_set(nvbo, memtype, 0); nouveau_bo_pin()
357 nvbo->pin_refcnt--; nouveau_bo_pin()
358 ret = nouveau_bo_validate(nvbo, false, false); nouveau_bo_pin()
361 nvbo->pin_refcnt++; nouveau_bo_pin()
376 nvbo->tile_flags |= NOUVEAU_GEM_TILE_NONCONTIG; nouveau_bo_pin()
382 nouveau_bo_unpin(struct nouveau_bo *nvbo) nouveau_bo_unpin() argument
384 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); nouveau_bo_unpin()
385 struct ttm_buffer_object *bo = &nvbo->bo; nouveau_bo_unpin()
392 ref = --nvbo->pin_refcnt; nouveau_bo_unpin()
397 nouveau_bo_placement_set(nvbo, bo->mem.placement, 0); nouveau_bo_unpin()
399 ret = nouveau_bo_validate(nvbo, false, false); nouveau_bo_unpin()
419 nouveau_bo_map(struct nouveau_bo *nvbo) nouveau_bo_map() argument
423 ret = ttm_bo_reserve(&nvbo->bo, false, false, false, NULL); nouveau_bo_map()
431 if (!nvbo->force_coherent) nouveau_bo_map()
432 ret = ttm_bo_kmap(&nvbo->bo, 0, nvbo->bo.mem.num_pages, nouveau_bo_map()
433 &nvbo->kmap); nouveau_bo_map()
435 ttm_bo_unreserve(&nvbo->bo); nouveau_bo_map()
440 nouveau_bo_unmap(struct nouveau_bo *nvbo) nouveau_bo_unmap() argument
442 if (!nvbo) nouveau_bo_unmap()
449 if (!nvbo->force_coherent) nouveau_bo_unmap()
450 ttm_bo_kunmap(&nvbo->kmap); nouveau_bo_unmap()
454 nouveau_bo_sync_for_device(struct nouveau_bo *nvbo) nouveau_bo_sync_for_device() argument
456 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); nouveau_bo_sync_for_device()
458 struct ttm_dma_tt *ttm_dma = (struct ttm_dma_tt *)nvbo->bo.ttm; nouveau_bo_sync_for_device()
465 if (nvbo->force_coherent) nouveau_bo_sync_for_device()
474 nouveau_bo_sync_for_cpu(struct nouveau_bo *nvbo) nouveau_bo_sync_for_cpu() argument
476 struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev); nouveau_bo_sync_for_cpu()
478 struct ttm_dma_tt *ttm_dma = (struct ttm_dma_tt *)nvbo->bo.ttm; nouveau_bo_sync_for_cpu()
485 if (nvbo->force_coherent) nouveau_bo_sync_for_cpu()
494 nouveau_bo_validate(struct nouveau_bo *nvbo, bool interruptible, nouveau_bo_validate() argument
499 ret = ttm_bo_validate(&nvbo->bo, &nvbo->placement, nouveau_bo_validate()
504 nouveau_bo_sync_for_device(nvbo); nouveau_bo_validate()
510 _nouveau_bo_mem_index(struct nouveau_bo *nvbo, unsigned index, void *mem, u8 sz) _nouveau_bo_mem_index() argument
522 dma_tt = (struct ttm_dma_tt *)nvbo->bo.ttm; _nouveau_bo_mem_index()
532 nouveau_bo_wr16(struct nouveau_bo *nvbo, unsigned index, u16 val) nouveau_bo_wr16() argument
535 u16 *mem = ttm_kmap_obj_virtual(&nvbo->kmap, &is_iomem); nouveau_bo_wr16()
537 mem = nouveau_bo_mem_index(nvbo, index, mem); nouveau_bo_wr16()
546 nouveau_bo_rd32(struct nouveau_bo *nvbo, unsigned index) nouveau_bo_rd32() argument
549 u32 *mem = ttm_kmap_obj_virtual(&nvbo->kmap, &is_iomem); nouveau_bo_rd32()
551 mem = nouveau_bo_mem_index(nvbo, index, mem); nouveau_bo_rd32()
560 nouveau_bo_wr32(struct nouveau_bo *nvbo, unsigned index, u32 val) nouveau_bo_wr32() argument
563 u32 *mem = ttm_kmap_obj_virtual(&nvbo->kmap, &is_iomem); nouveau_bo_wr32()
565 mem = nouveau_bo_mem_index(nvbo, index, mem); nouveau_bo_wr32()
660 struct nouveau_bo *nvbo = nouveau_bo(bo); nouveau_bo_evict_flags() local
664 nouveau_bo_placement_set(nvbo, TTM_PL_FLAG_TT, nouveau_bo_evict_flags()
668 nouveau_bo_placement_set(nvbo, TTM_PL_FLAG_SYSTEM, 0); nouveau_bo_evict_flags()
672 *pl = nvbo->placement; nouveau_bo_evict_flags()
1229 struct nouveau_bo *nvbo = nouveau_bo(bo); nouveau_bo_move_ntfy() local
1236 list_for_each_entry(vma, &nvbo->vma_list, head) { nouveau_bo_move_ntfy()
1239 nvbo->page_shift != vma->vm->mmu->lpg_shift)) { nouveau_bo_move_ntfy()
1253 struct nouveau_bo *nvbo = nouveau_bo(bo); nouveau_bo_vm_bind() local
1262 nvbo->tile_mode, nouveau_bo_vm_bind()
1263 nvbo->tile_flags); nouveau_bo_vm_bind()
1287 struct nouveau_bo *nvbo = nouveau_bo(bo); nouveau_bo_move() local
1292 if (nvbo->pin_refcnt) nouveau_bo_move()
1293 NV_WARN(drm, "Moving pinned object %p!\n", nvbo); nouveau_bo_move()
1334 nouveau_bo_vm_cleanup(bo, new_tile, &nvbo->tile); nouveau_bo_move()
1343 struct nouveau_bo *nvbo = nouveau_bo(bo); nouveau_bo_verify_access() local
1345 return drm_vma_node_verify_access(&nvbo->gem.vma_node, filp); nouveau_bo_verify_access()
1421 struct nouveau_bo *nvbo = nouveau_bo(bo); nouveau_ttm_fault_reserve_notify() local
1431 !nouveau_bo_tile_layout(nvbo)) nouveau_ttm_fault_reserve_notify()
1435 nouveau_bo_placement_set(nvbo, TTM_PL_TT, 0); nouveau_ttm_fault_reserve_notify()
1437 ret = nouveau_bo_validate(nvbo, false, false); nouveau_ttm_fault_reserve_notify()
1449 for (i = 0; i < nvbo->placement.num_placement; ++i) { nouveau_ttm_fault_reserve_notify()
1450 nvbo->placements[i].fpfn = 0; nouveau_ttm_fault_reserve_notify()
1451 nvbo->placements[i].lpfn = mappable; nouveau_ttm_fault_reserve_notify()
1454 for (i = 0; i < nvbo->placement.num_busy_placement; ++i) { nouveau_ttm_fault_reserve_notify()
1455 nvbo->busy_placements[i].fpfn = 0; nouveau_ttm_fault_reserve_notify()
1456 nvbo->busy_placements[i].lpfn = mappable; nouveau_ttm_fault_reserve_notify()
1459 nouveau_bo_placement_set(nvbo, TTM_PL_FLAG_VRAM, 0); nouveau_ttm_fault_reserve_notify()
1460 return nouveau_bo_validate(nvbo, false, false); nouveau_ttm_fault_reserve_notify()
1591 nouveau_bo_fence(struct nouveau_bo *nvbo, struct nouveau_fence *fence, bool exclusive) nouveau_bo_fence() argument
1593 struct reservation_object *resv = nvbo->bo.resv; nouveau_bo_fence()
1617 nouveau_bo_vma_find(struct nouveau_bo *nvbo, struct nvkm_vm *vm) nouveau_bo_vma_find() argument
1620 list_for_each_entry(vma, &nvbo->vma_list, head) { nouveau_bo_vma_find()
1629 nouveau_bo_vma_add(struct nouveau_bo *nvbo, struct nvkm_vm *vm, nouveau_bo_vma_add() argument
1632 const u32 size = nvbo->bo.mem.num_pages << PAGE_SHIFT; nouveau_bo_vma_add()
1635 ret = nvkm_vm_get(vm, size, nvbo->page_shift, nouveau_bo_vma_add()
1640 if ( nvbo->bo.mem.mem_type != TTM_PL_SYSTEM && nouveau_bo_vma_add()
1641 (nvbo->bo.mem.mem_type == TTM_PL_VRAM || nouveau_bo_vma_add()
1642 nvbo->page_shift != vma->vm->mmu->lpg_shift)) nouveau_bo_vma_add()
1643 nvkm_vm_map(vma, nvbo->bo.mem.mm_node); nouveau_bo_vma_add()
1645 list_add_tail(&vma->head, &nvbo->vma_list); nouveau_bo_vma_add()
1651 nouveau_bo_vma_del(struct nouveau_bo *nvbo, struct nvkm_vma *vma) nouveau_bo_vma_del() argument
1654 if (nvbo->bo.mem.mem_type != TTM_PL_SYSTEM) nouveau_bo_vma_del()
H A Dnouveau_gem.h9 #define nouveau_bo_tile_layout(nvbo) \
10 ((nvbo)->tile_flags & NOUVEAU_GEM_TILE_LAYOUT_MASK)
H A Dnouveau_bo.h87 void nouveau_bo_sync_for_device(struct nouveau_bo *nvbo);
88 void nouveau_bo_sync_for_cpu(struct nouveau_bo *nvbo);
99 nvbo_kmap_obj_iovirtual(struct nouveau_bo *nvbo) nvbo_kmap_obj_iovirtual() argument
103 &nvbo->kmap, &is_iomem); nvbo_kmap_obj_iovirtual()
H A Dnouveau_fbcon.c344 struct nouveau_bo *nvbo; nouveau_fbcon_create() local
361 0, 0x0000, &nvbo); nouveau_fbcon_create()
367 ret = nouveau_bo_pin(nvbo, TTM_PL_FLAG_VRAM, false); nouveau_fbcon_create()
373 ret = nouveau_bo_map(nvbo); nouveau_fbcon_create()
381 ret = nouveau_bo_vma_add(nvbo, drm->client.vm, nouveau_fbcon_create()
400 nouveau_framebuffer_init(dev, &fbcon->nouveau_fb, &mode_cmd, nvbo); nouveau_fbcon_create()
417 info->fix.smem_start = nvbo->bo.mem.bus.base + nouveau_fbcon_create()
418 nvbo->bo.mem.bus.offset; nouveau_fbcon_create()
421 info->screen_base = nvbo_kmap_obj_iovirtual(nouveau_fb->nvbo); nouveau_fbcon_create()
438 nvbo->bo.offset, nvbo); nouveau_fbcon_create()
446 nouveau_bo_vma_del(nvbo, &fbcon->nouveau_fb.vma); nouveau_fbcon_create()
447 nouveau_bo_unmap(nvbo); nouveau_fbcon_create()
449 nouveau_bo_unpin(nvbo); nouveau_fbcon_create()
451 nouveau_bo_ref(NULL, &nvbo); nouveau_fbcon_create()
472 if (nouveau_fb->nvbo) { nouveau_fbcon_destroy()
473 nouveau_bo_unmap(nouveau_fb->nvbo); nouveau_fbcon_destroy()
474 nouveau_bo_vma_del(nouveau_fb->nvbo, &nouveau_fb->vma); nouveau_fbcon_destroy()
475 nouveau_bo_unpin(nouveau_fb->nvbo); nouveau_fbcon_destroy()
476 drm_gem_object_unreference_unlocked(&nouveau_fb->nvbo->gem); nouveau_fbcon_destroy()
477 nouveau_fb->nvbo = NULL; nouveau_fbcon_destroy()
H A Dnouveau_display.c224 if (fb->nvbo) nouveau_user_framebuffer_destroy()
225 drm_gem_object_unreference_unlocked(&fb->nvbo->gem); nouveau_user_framebuffer_destroy()
238 return drm_gem_handle_create(file_priv, &fb->nvbo->gem, handle); nouveau_user_framebuffer_create_handle()
250 struct nouveau_bo *nvbo) nouveau_framebuffer_init()
257 nv_fb->nvbo = nvbo; nouveau_framebuffer_init()
578 if (!nouveau_fb || !nouveau_fb->nvbo) nouveau_display_suspend()
581 nouveau_bo_unpin(nouveau_fb->nvbo); nouveau_display_suspend()
586 if (nv_crtc->cursor.nvbo) { nouveau_display_suspend()
588 nouveau_bo_unmap(nv_crtc->cursor.nvbo); nouveau_display_suspend()
589 nouveau_bo_unpin(nv_crtc->cursor.nvbo); nouveau_display_suspend()
608 if (!nouveau_fb || !nouveau_fb->nvbo) nouveau_display_resume()
611 ret = nouveau_bo_pin(nouveau_fb->nvbo, TTM_PL_FLAG_VRAM, true); nouveau_display_resume()
618 if (!nv_crtc->cursor.nvbo) nouveau_display_resume()
621 ret = nouveau_bo_pin(nv_crtc->cursor.nvbo, TTM_PL_FLAG_VRAM, true); nouveau_display_resume()
623 ret = nouveau_bo_map(nv_crtc->cursor.nvbo); nouveau_display_resume()
653 if (!nv_crtc->cursor.nvbo) nouveau_display_resume()
657 nv_crtc->cursor.set_offset(nv_crtc, nv_crtc->cursor.nvbo->bo.offset); nouveau_display_resume()
717 struct nouveau_bo *old_bo = nouveau_framebuffer(crtc->primary->fb)->nvbo; nouveau_crtc_page_flip()
718 struct nouveau_bo *new_bo = nouveau_framebuffer(fb)->nvbo; nouveau_crtc_page_flip()
247 nouveau_framebuffer_init(struct drm_device *dev, struct nouveau_framebuffer *nv_fb, struct drm_mode_fb_cmd2 *mode_cmd, struct nouveau_bo *nvbo) nouveau_framebuffer_init() argument
H A Dnouveau_crtc.h56 struct nouveau_bo *nvbo; member in struct:nouveau_crtc::__anon4365
66 struct nouveau_bo *nvbo; member in struct:nouveau_crtc::__anon4366
H A Dnouveau_ttm.c83 struct nouveau_bo *nvbo = nouveau_bo(bo); nouveau_vram_manager_new() local
91 if (nvbo->tile_flags & NOUVEAU_GEM_TILE_NONCONTIG) nouveau_vram_manager_new()
92 size_nc = 1 << nvbo->page_shift; nouveau_vram_manager_new()
96 (nvbo->tile_flags >> 8) & 0x3ff, &node); nouveau_vram_manager_new()
102 node->page_shift = nvbo->page_shift; nouveau_vram_manager_new()
144 struct nouveau_bo *nvbo = nouveau_bo(bo); nouveau_gart_manager_new() local
162 node->memtype = (nvbo->tile_flags & 0x7f00) >> 8; nouveau_gart_manager_new()
167 node->memtype = (nvbo->tile_flags & 0xff00) >> 8; nouveau_gart_manager_new()
H A Dnv50_display.c668 evo_data(push, nv_fb->nvbo->bo.offset >> 8); nv50_display_flip_next()
675 evo_data(push, nv_fb->nvbo->bo.offset >> 8); nv50_display_flip_next()
685 nouveau_bo_ref(nv_fb->nvbo, &head->image); nv50_display_flip_next()
907 evo_data(push, nvfb->nvbo->bo.offset >> 8); nv50_crtc_set_image()
920 evo_data(push, nvfb->nvbo->bo.offset >> 8); nv50_crtc_set_image()
950 evo_data(push, nv_crtc->cursor.nvbo->bo.offset >> 8); nv50_crtc_cursor_show()
955 evo_data(push, nv_crtc->cursor.nvbo->bo.offset >> 8); nv50_crtc_cursor_show()
961 evo_data(push, nv_crtc->cursor.nvbo->bo.offset >> 8); nv50_crtc_cursor_show()
1001 if (show && nv_crtc->cursor.nvbo && nv_crtc->base.enabled) nv50_crtc_cursor_show_hide()
1074 evo_data(push, nv_crtc->lut.nvbo->bo.offset >> 8); nv50_crtc_commit()
1081 evo_data(push, nv_crtc->lut.nvbo->bo.offset >> 8); nv50_crtc_commit()
1089 evo_data(push, nv_crtc->lut.nvbo->bo.offset >> 8); nv50_crtc_commit()
1120 ret = nouveau_bo_pin(nvfb->nvbo, TTM_PL_FLAG_VRAM, true); nv50_crtc_swap_fbs()
1124 nouveau_bo_ref(nvfb->nvbo, &head->image); nv50_crtc_swap_fbs()
1266 void __iomem *lut = nvbo_kmap_obj_iovirtual(nv_crtc->lut.nvbo); nv50_crtc_lut_load()
1303 struct nouveau_bo *nvbo = NULL; nv50_crtc_cursor_set() local
1313 nvbo = nouveau_gem_object(gem); nv50_crtc_cursor_set()
1315 ret = nouveau_bo_pin(nvbo, TTM_PL_FLAG_VRAM, true); nv50_crtc_cursor_set()
1319 if (nv_crtc->cursor.nvbo) nv50_crtc_cursor_set()
1320 nouveau_bo_unpin(nv_crtc->cursor.nvbo); nv50_crtc_cursor_set()
1321 nouveau_bo_ref(nvbo, &nv_crtc->cursor.nvbo); nv50_crtc_cursor_set()
1393 if (nv_crtc->cursor.nvbo) nv50_crtc_destroy()
1394 nouveau_bo_unpin(nv_crtc->cursor.nvbo); nv50_crtc_destroy()
1395 nouveau_bo_ref(NULL, &nv_crtc->cursor.nvbo); nv50_crtc_destroy()
1397 nouveau_bo_unmap(nv_crtc->lut.nvbo); nv50_crtc_destroy()
1398 if (nv_crtc->lut.nvbo) nv50_crtc_destroy()
1399 nouveau_bo_unpin(nv_crtc->lut.nvbo); nv50_crtc_destroy()
1400 nouveau_bo_ref(NULL, &nv_crtc->lut.nvbo); nv50_crtc_destroy()
1460 0, 0x0000, NULL, NULL, &head->base.lut.nvbo); nv50_crtc_create()
1462 ret = nouveau_bo_pin(head->base.lut.nvbo, TTM_PL_FLAG_VRAM, true); nv50_crtc_create()
1464 ret = nouveau_bo_map(head->base.lut.nvbo); nv50_crtc_create()
1466 nouveau_bo_unpin(head->base.lut.nvbo); nv50_crtc_create()
1469 nouveau_bo_ref(NULL, &head->base.lut.nvbo); nv50_crtc_create()
2413 struct nouveau_bo *nvbo = nv_fb->nvbo; nv50_fb_ctor() local
2415 u8 kind = nouveau_bo_tile_layout(nvbo) >> 8; nv50_fb_ctor()
2416 u8 tile = nvbo->tile_mode; nv50_fb_ctor()
H A Dnouveau_display.h10 struct nouveau_bo *nvbo; member in struct:nouveau_framebuffer
H A Dnouveau_fence.c390 nouveau_fence_sync(struct nouveau_bo *nvbo, struct nouveau_channel *chan, bool exclusive, bool intr) nouveau_fence_sync() argument
394 struct reservation_object *resv = nvbo->bo.resv; nouveau_fence_sync()
/linux-4.4.14/drivers/gpu/drm/nouveau/dispnv04/
H A Doverlay.c130 ret = nouveau_bo_pin(nv_fb->nvbo, TTM_PL_FLAG_VRAM, false); nv10_update_plane()
134 nv_plane->cur = nv_fb->nvbo; nv10_update_plane()
140 nvif_wr32(dev, NV_PVIDEO_OFFSET_BUFF(flip), nv_fb->nvbo->bo.offset); nv10_update_plane()
160 nv_fb->nvbo->bo.offset + fb->offsets[1]); nv10_update_plane()
377 ret = nouveau_bo_pin(nv_fb->nvbo, TTM_PL_FLAG_VRAM, false); nv04_update_plane()
381 nv_plane->cur = nv_fb->nvbo; nv04_update_plane()
389 nv_fb->nvbo->bo.offset); nv04_update_plane()
H A Dcrtc.c617 ret = nouveau_bo_pin(nvfb->nvbo, TTM_PL_FLAG_VRAM, false); nv_crtc_swap_fbs()
621 nouveau_bo_ref(nvfb->nvbo, &disp->image[nv_crtc->index]); nv_crtc_swap_fbs()
760 nouveau_bo_unmap(nv_crtc->cursor.nvbo); nv_crtc_destroy()
761 nouveau_bo_unpin(nv_crtc->cursor.nvbo); nv_crtc_destroy()
762 nouveau_bo_ref(NULL, &nv_crtc->cursor.nvbo); nv_crtc_destroy()
852 nv_crtc->fb.offset = fb->nvbo->bo.offset; nv04_crtc_do_mode_set_base()
1015 nv11_cursor_upload(dev, cursor, nv_crtc->cursor.nvbo); nv04_crtc_cursor_set()
1017 nv04_cursor_upload(dev, cursor, nv_crtc->cursor.nvbo); nv04_crtc_cursor_set()
1020 nv_crtc->cursor.offset = nv_crtc->cursor.nvbo->bo.offset; nv04_crtc_cursor_set()
1131 0, 0x0000, NULL, NULL, &nv_crtc->cursor.nvbo); nv04_crtc_create()
1133 ret = nouveau_bo_pin(nv_crtc->cursor.nvbo, TTM_PL_FLAG_VRAM, false); nv04_crtc_create()
1135 ret = nouveau_bo_map(nv_crtc->cursor.nvbo); nv04_crtc_create()
1137 nouveau_bo_unpin(nv_crtc->cursor.nvbo); nv04_crtc_create()
1140 nouveau_bo_ref(NULL, &nv_crtc->cursor.nvbo); nv04_crtc_create()

Completed in 388 milliseconds