Lines Matching refs:vm_bo
1124 struct drm_gpuvm_bo *vm_bo; in __drm_gpuvm_prepare_objects() local
1128 for_each_vm_bo_in_list(gpuvm, extobj, &extobjs, vm_bo) { in __drm_gpuvm_prepare_objects()
1129 ret = exec_prepare_obj(exec, vm_bo->obj, num_fences); in __drm_gpuvm_prepare_objects()
1134 drm_gpuvm_bo_put(vm_bo); in __drm_gpuvm_prepare_objects()
1145 struct drm_gpuvm_bo *vm_bo; in drm_gpuvm_prepare_objects_locked() local
1149 list_for_each_entry(vm_bo, &gpuvm->extobj.list, list.entry.extobj) { in drm_gpuvm_prepare_objects_locked()
1150 ret = exec_prepare_obj(exec, vm_bo->obj, num_fences); in drm_gpuvm_prepare_objects_locked()
1154 if (vm_bo->evicted) in drm_gpuvm_prepare_objects_locked()
1155 drm_gpuvm_bo_list_add(vm_bo, evict, false); in drm_gpuvm_prepare_objects_locked()
1366 struct drm_gpuvm_bo *vm_bo; in __drm_gpuvm_validate() local
1370 for_each_vm_bo_in_list(gpuvm, evict, &evict, vm_bo) { in __drm_gpuvm_validate()
1371 ret = ops->vm_bo_validate(vm_bo, exec); in __drm_gpuvm_validate()
1376 drm_gpuvm_bo_put(vm_bo); in __drm_gpuvm_validate()
1386 struct drm_gpuvm_bo *vm_bo, *next; in drm_gpuvm_validate_locked() local
1391 list_for_each_entry_safe(vm_bo, next, &gpuvm->evict.list, in drm_gpuvm_validate_locked()
1393 ret = ops->vm_bo_validate(vm_bo, exec); in drm_gpuvm_validate_locked()
1397 dma_resv_assert_held(vm_bo->obj->resv); in drm_gpuvm_validate_locked()
1398 if (!vm_bo->evicted) in drm_gpuvm_validate_locked()
1399 drm_gpuvm_bo_list_del_init(vm_bo, evict, false); in drm_gpuvm_validate_locked()
1473 struct drm_gpuvm_bo *vm_bo; in drm_gpuvm_bo_create() local
1476 vm_bo = ops->vm_bo_alloc(); in drm_gpuvm_bo_create()
1478 vm_bo = kzalloc(sizeof(*vm_bo), GFP_KERNEL); in drm_gpuvm_bo_create()
1480 if (unlikely(!vm_bo)) in drm_gpuvm_bo_create()
1483 vm_bo->vm = drm_gpuvm_get(gpuvm); in drm_gpuvm_bo_create()
1484 vm_bo->obj = obj; in drm_gpuvm_bo_create()
1487 kref_init(&vm_bo->kref); in drm_gpuvm_bo_create()
1488 INIT_LIST_HEAD(&vm_bo->list.gpuva); in drm_gpuvm_bo_create()
1489 INIT_LIST_HEAD(&vm_bo->list.entry.gem); in drm_gpuvm_bo_create()
1491 INIT_LIST_HEAD(&vm_bo->list.entry.extobj); in drm_gpuvm_bo_create()
1492 INIT_LIST_HEAD(&vm_bo->list.entry.evict); in drm_gpuvm_bo_create()
1494 return vm_bo; in drm_gpuvm_bo_create()
1501 struct drm_gpuvm_bo *vm_bo = container_of(kref, struct drm_gpuvm_bo, in drm_gpuvm_bo_destroy() local
1503 struct drm_gpuvm *gpuvm = vm_bo->vm; in drm_gpuvm_bo_destroy()
1505 struct drm_gem_object *obj = vm_bo->obj; in drm_gpuvm_bo_destroy()
1511 drm_gpuvm_bo_list_del(vm_bo, extobj, lock); in drm_gpuvm_bo_destroy()
1512 drm_gpuvm_bo_list_del(vm_bo, evict, lock); in drm_gpuvm_bo_destroy()
1515 list_del(&vm_bo->list.entry.gem); in drm_gpuvm_bo_destroy()
1518 ops->vm_bo_free(vm_bo); in drm_gpuvm_bo_destroy()
1520 kfree(vm_bo); in drm_gpuvm_bo_destroy()
1542 drm_gpuvm_bo_put(struct drm_gpuvm_bo *vm_bo) in drm_gpuvm_bo_put() argument
1546 if (vm_bo) in drm_gpuvm_bo_put()
1547 return !!kref_put(&vm_bo->kref, drm_gpuvm_bo_destroy); in drm_gpuvm_bo_put()
1557 struct drm_gpuvm_bo *vm_bo; in __drm_gpuvm_bo_find() local
1560 drm_gem_for_each_gpuvm_bo(vm_bo, obj) in __drm_gpuvm_bo_find()
1561 if (vm_bo->vm == gpuvm) in __drm_gpuvm_bo_find()
1562 return vm_bo; in __drm_gpuvm_bo_find()
1583 struct drm_gpuvm_bo *vm_bo = __drm_gpuvm_bo_find(gpuvm, obj); in drm_gpuvm_bo_find() local
1585 return vm_bo ? drm_gpuvm_bo_get(vm_bo) : NULL; in drm_gpuvm_bo_find()
1608 struct drm_gpuvm_bo *vm_bo; in drm_gpuvm_bo_obtain() local
1610 vm_bo = drm_gpuvm_bo_find(gpuvm, obj); in drm_gpuvm_bo_obtain()
1611 if (vm_bo) in drm_gpuvm_bo_obtain()
1612 return vm_bo; in drm_gpuvm_bo_obtain()
1614 vm_bo = drm_gpuvm_bo_create(gpuvm, obj); in drm_gpuvm_bo_obtain()
1615 if (!vm_bo) in drm_gpuvm_bo_obtain()
1619 list_add_tail(&vm_bo->list.entry.gem, &obj->gpuva.list); in drm_gpuvm_bo_obtain()
1621 return vm_bo; in drm_gpuvm_bo_obtain()
1646 struct drm_gpuvm_bo *vm_bo; in drm_gpuvm_bo_obtain_prealloc() local
1648 vm_bo = drm_gpuvm_bo_find(gpuvm, obj); in drm_gpuvm_bo_obtain_prealloc()
1649 if (vm_bo) { in drm_gpuvm_bo_obtain_prealloc()
1651 return vm_bo; in drm_gpuvm_bo_obtain_prealloc()
1671 drm_gpuvm_bo_extobj_add(struct drm_gpuvm_bo *vm_bo) in drm_gpuvm_bo_extobj_add() argument
1673 struct drm_gpuvm *gpuvm = vm_bo->vm; in drm_gpuvm_bo_extobj_add()
1679 if (drm_gpuvm_is_extobj(gpuvm, vm_bo->obj)) in drm_gpuvm_bo_extobj_add()
1680 drm_gpuvm_bo_list_add(vm_bo, extobj, lock); in drm_gpuvm_bo_extobj_add()
1693 drm_gpuvm_bo_evict(struct drm_gpuvm_bo *vm_bo, bool evict) in drm_gpuvm_bo_evict() argument
1695 struct drm_gpuvm *gpuvm = vm_bo->vm; in drm_gpuvm_bo_evict()
1696 struct drm_gem_object *obj = vm_bo->obj; in drm_gpuvm_bo_evict()
1700 vm_bo->evicted = evict; in drm_gpuvm_bo_evict()
1710 drm_gpuvm_bo_list_add(vm_bo, evict, lock); in drm_gpuvm_bo_evict()
1712 drm_gpuvm_bo_list_del_init(vm_bo, evict, lock); in drm_gpuvm_bo_evict()
1830 drm_gpuva_link(struct drm_gpuva *va, struct drm_gpuvm_bo *vm_bo) in drm_gpuva_link() argument
1838 drm_WARN_ON(gpuvm->drm, obj != vm_bo->obj); in drm_gpuva_link()
1840 va->vm_bo = drm_gpuvm_bo_get(vm_bo); in drm_gpuva_link()
1843 list_add_tail(&va->gem.entry, &vm_bo->list.gpuva); in drm_gpuva_link()
1869 struct drm_gpuvm_bo *vm_bo = va->vm_bo; in drm_gpuva_unlink() local
1877 va->vm_bo = NULL; in drm_gpuva_unlink()
1878 drm_gpuvm_bo_put(vm_bo); in drm_gpuva_unlink()
2686 drm_gpuvm_bo_unmap_ops_create(struct drm_gpuvm_bo *vm_bo) in drm_gpuvm_bo_unmap_ops_create() argument
2693 drm_gem_gpuva_assert_lock_held(vm_bo->obj); in drm_gpuvm_bo_unmap_ops_create()
2701 drm_gpuvm_bo_for_each_va(va, vm_bo) { in drm_gpuvm_bo_unmap_ops_create()
2702 op = gpuva_op_alloc(vm_bo->vm); in drm_gpuvm_bo_unmap_ops_create()
2716 drm_gpuva_ops_free(vm_bo->vm, ops); in drm_gpuvm_bo_unmap_ops_create()