/linux-4.4.14/drivers/gpu/drm/nouveau/ |
H A D | nouveau_prime.c | 33 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 D | nouveau_gem.c | 38 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 D | nouveau_bo.c | 133 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 D | nouveau_gem.h | 9 #define nouveau_bo_tile_layout(nvbo) \ 10 ((nvbo)->tile_flags & NOUVEAU_GEM_TILE_LAYOUT_MASK)
|
H A D | nouveau_bo.h | 87 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 D | nouveau_fbcon.c | 344 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 D | nouveau_display.c | 224 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 D | nouveau_crtc.h | 56 struct nouveau_bo *nvbo; member in struct:nouveau_crtc::__anon4365 66 struct nouveau_bo *nvbo; member in struct:nouveau_crtc::__anon4366
|
H A D | nouveau_ttm.c | 83 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 D | nv50_display.c | 668 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 D | nouveau_display.h | 10 struct nouveau_bo *nvbo; member in struct:nouveau_framebuffer
|
H A D | nouveau_fence.c | 390 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 D | overlay.c | 130 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 D | crtc.c | 617 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()
|