Lines Matching refs:vm_bo

1125 	struct drm_gpuvm_bo *vm_bo;  in __drm_gpuvm_prepare_objects()  local
1129 for_each_vm_bo_in_list(gpuvm, extobj, &extobjs, vm_bo) { in __drm_gpuvm_prepare_objects()
1130 ret = exec_prepare_obj(exec, vm_bo->obj, num_fences); in __drm_gpuvm_prepare_objects()
1135 drm_gpuvm_bo_put(vm_bo); in __drm_gpuvm_prepare_objects()
1146 struct drm_gpuvm_bo *vm_bo; in drm_gpuvm_prepare_objects_locked() local
1150 list_for_each_entry(vm_bo, &gpuvm->extobj.list, list.entry.extobj) { in drm_gpuvm_prepare_objects_locked()
1151 ret = exec_prepare_obj(exec, vm_bo->obj, num_fences); in drm_gpuvm_prepare_objects_locked()
1155 if (vm_bo->evicted) in drm_gpuvm_prepare_objects_locked()
1156 drm_gpuvm_bo_list_add(vm_bo, evict, false); in drm_gpuvm_prepare_objects_locked()
1367 struct drm_gpuvm_bo *vm_bo; in __drm_gpuvm_validate() local
1371 for_each_vm_bo_in_list(gpuvm, evict, &evict, vm_bo) { in __drm_gpuvm_validate()
1372 ret = ops->vm_bo_validate(vm_bo, exec); in __drm_gpuvm_validate()
1377 drm_gpuvm_bo_put(vm_bo); in __drm_gpuvm_validate()
1387 struct drm_gpuvm_bo *vm_bo, *next; in drm_gpuvm_validate_locked() local
1392 list_for_each_entry_safe(vm_bo, next, &gpuvm->evict.list, in drm_gpuvm_validate_locked()
1394 ret = ops->vm_bo_validate(vm_bo, exec); in drm_gpuvm_validate_locked()
1398 dma_resv_assert_held(vm_bo->obj->resv); in drm_gpuvm_validate_locked()
1399 if (!vm_bo->evicted) in drm_gpuvm_validate_locked()
1400 drm_gpuvm_bo_list_del_init(vm_bo, evict, false); in drm_gpuvm_validate_locked()
1474 struct drm_gpuvm_bo *vm_bo; in drm_gpuvm_bo_create() local
1477 vm_bo = ops->vm_bo_alloc(); in drm_gpuvm_bo_create()
1479 vm_bo = kzalloc(sizeof(*vm_bo), GFP_KERNEL); in drm_gpuvm_bo_create()
1481 if (unlikely(!vm_bo)) in drm_gpuvm_bo_create()
1484 vm_bo->vm = drm_gpuvm_get(gpuvm); in drm_gpuvm_bo_create()
1485 vm_bo->obj = obj; in drm_gpuvm_bo_create()
1488 kref_init(&vm_bo->kref); in drm_gpuvm_bo_create()
1489 INIT_LIST_HEAD(&vm_bo->list.gpuva); in drm_gpuvm_bo_create()
1490 INIT_LIST_HEAD(&vm_bo->list.entry.gem); in drm_gpuvm_bo_create()
1492 INIT_LIST_HEAD(&vm_bo->list.entry.extobj); in drm_gpuvm_bo_create()
1493 INIT_LIST_HEAD(&vm_bo->list.entry.evict); in drm_gpuvm_bo_create()
1495 return vm_bo; in drm_gpuvm_bo_create()
1502 struct drm_gpuvm_bo *vm_bo = container_of(kref, struct drm_gpuvm_bo, in drm_gpuvm_bo_destroy() local
1504 struct drm_gpuvm *gpuvm = vm_bo->vm; in drm_gpuvm_bo_destroy()
1506 struct drm_gem_object *obj = vm_bo->obj; in drm_gpuvm_bo_destroy()
1512 drm_gpuvm_bo_list_del(vm_bo, extobj, lock); in drm_gpuvm_bo_destroy()
1513 drm_gpuvm_bo_list_del(vm_bo, evict, lock); in drm_gpuvm_bo_destroy()
1516 list_del(&vm_bo->list.entry.gem); in drm_gpuvm_bo_destroy()
1519 ops->vm_bo_free(vm_bo); in drm_gpuvm_bo_destroy()
1521 kfree(vm_bo); in drm_gpuvm_bo_destroy()
1543 drm_gpuvm_bo_put(struct drm_gpuvm_bo *vm_bo) in drm_gpuvm_bo_put() argument
1547 if (vm_bo) in drm_gpuvm_bo_put()
1548 return !!kref_put(&vm_bo->kref, drm_gpuvm_bo_destroy); in drm_gpuvm_bo_put()
1558 struct drm_gpuvm_bo *vm_bo; in __drm_gpuvm_bo_find() local
1561 drm_gem_for_each_gpuvm_bo(vm_bo, obj) in __drm_gpuvm_bo_find()
1562 if (vm_bo->vm == gpuvm) in __drm_gpuvm_bo_find()
1563 return vm_bo; in __drm_gpuvm_bo_find()
1584 struct drm_gpuvm_bo *vm_bo = __drm_gpuvm_bo_find(gpuvm, obj); in drm_gpuvm_bo_find() local
1586 return vm_bo ? drm_gpuvm_bo_get(vm_bo) : NULL; in drm_gpuvm_bo_find()
1609 struct drm_gpuvm_bo *vm_bo; in drm_gpuvm_bo_obtain() local
1611 vm_bo = drm_gpuvm_bo_find(gpuvm, obj); in drm_gpuvm_bo_obtain()
1612 if (vm_bo) in drm_gpuvm_bo_obtain()
1613 return vm_bo; in drm_gpuvm_bo_obtain()
1615 vm_bo = drm_gpuvm_bo_create(gpuvm, obj); in drm_gpuvm_bo_obtain()
1616 if (!vm_bo) in drm_gpuvm_bo_obtain()
1620 list_add_tail(&vm_bo->list.entry.gem, &obj->gpuva.list); in drm_gpuvm_bo_obtain()
1622 return vm_bo; in drm_gpuvm_bo_obtain()
1647 struct drm_gpuvm_bo *vm_bo; in drm_gpuvm_bo_obtain_prealloc() local
1649 vm_bo = drm_gpuvm_bo_find(gpuvm, obj); in drm_gpuvm_bo_obtain_prealloc()
1650 if (vm_bo) { in drm_gpuvm_bo_obtain_prealloc()
1652 return vm_bo; in drm_gpuvm_bo_obtain_prealloc()
1672 drm_gpuvm_bo_extobj_add(struct drm_gpuvm_bo *vm_bo) in drm_gpuvm_bo_extobj_add() argument
1674 struct drm_gpuvm *gpuvm = vm_bo->vm; in drm_gpuvm_bo_extobj_add()
1680 if (drm_gpuvm_is_extobj(gpuvm, vm_bo->obj)) in drm_gpuvm_bo_extobj_add()
1681 drm_gpuvm_bo_list_add(vm_bo, extobj, lock); in drm_gpuvm_bo_extobj_add()
1694 drm_gpuvm_bo_evict(struct drm_gpuvm_bo *vm_bo, bool evict) in drm_gpuvm_bo_evict() argument
1696 struct drm_gpuvm *gpuvm = vm_bo->vm; in drm_gpuvm_bo_evict()
1697 struct drm_gem_object *obj = vm_bo->obj; in drm_gpuvm_bo_evict()
1701 vm_bo->evicted = evict; in drm_gpuvm_bo_evict()
1711 drm_gpuvm_bo_list_add(vm_bo, evict, lock); in drm_gpuvm_bo_evict()
1713 drm_gpuvm_bo_list_del_init(vm_bo, evict, lock); in drm_gpuvm_bo_evict()
1831 drm_gpuva_link(struct drm_gpuva *va, struct drm_gpuvm_bo *vm_bo) in drm_gpuva_link() argument
1839 drm_WARN_ON(gpuvm->drm, obj != vm_bo->obj); in drm_gpuva_link()
1841 va->vm_bo = drm_gpuvm_bo_get(vm_bo); in drm_gpuva_link()
1844 list_add_tail(&va->gem.entry, &vm_bo->list.gpuva); in drm_gpuva_link()
1870 struct drm_gpuvm_bo *vm_bo = va->vm_bo; in drm_gpuva_unlink() local
1878 va->vm_bo = NULL; in drm_gpuva_unlink()
1879 drm_gpuvm_bo_put(vm_bo); in drm_gpuva_unlink()
2813 drm_gpuvm_bo_unmap_ops_create(struct drm_gpuvm_bo *vm_bo) in drm_gpuvm_bo_unmap_ops_create() argument
2820 drm_gem_gpuva_assert_lock_held(vm_bo->obj); in drm_gpuvm_bo_unmap_ops_create()
2828 drm_gpuvm_bo_for_each_va(va, vm_bo) { in drm_gpuvm_bo_unmap_ops_create()
2829 op = gpuva_op_alloc(vm_bo->vm); in drm_gpuvm_bo_unmap_ops_create()
2843 drm_gpuva_ops_free(vm_bo->vm, ops); in drm_gpuvm_bo_unmap_ops_create()