drm_gpuvm_bo_obtain_locked(9)
π drm_gpuvm_bo_obtain_locked(9) π
hiii bestie π welcome to the Kernel API Manual page for drm_gpuvm_bo_obtain_locked(9). this one is lowkey a little matchmaker for a drm_gpuvm and a drm_gem_object, and it's giving βfind or create the right drm_gpuvm_boβ energy. no cap. π
β¨ NAME β¨
drm_gpuvm_bo_obtain_locked β obtains an instance of the &drm_gpuvm_bo for the given &drm_gpuvm and &drm_gem_object. π«Ά
πΈ SYNOPSIS πΈ
struct drm_gpuvm_bo * drm_gpuvm_bo_obtain_locked (struct drm_gpuvm
*gpuvm , struct drm_gem_object *obj );
π ARGUMENTS π
gpuvmβ thedrm_gpuvmthatobjis mapped in.objβ thedrm_gem_objectthat's being mapped in thegpuvm.
π¦ DESCRIPTION π¦
okay so here's the vibe: this function finds the drm_gpuvm_bo that represents the combination of the given drm_gpuvm and drm_gem_object. if it finds one, it increases the reference count of that drm_gpuvm_bo accordingly. if it doesn't find one, it allocates a new drm_gpuvm_bo. literally matchmade in kernel space. π
β οΈ bestie, this requires the lock for the GEMs gpuva list. don't skip that, fr fr.
a new drm_gpuvm_bo is added to the GEMs gpuva list. π«Ά
π RETURN π
on success, you get a pointer to the drm_gpuvm_bo; on failure, you get an ERR_PTR. that's it, that's the tea. π
π SEE ALSO π
bestie, the whole squad is here:
- Kernel file
./drivers/gpu/drm/drm_gpuvm.cOverview(9) Split and Merge(9)Madvise Logic - Splitting and Traversal(9)Locking(9)Examples(9)get_next_vm_bo_from_list(9)for_each_vm_bo_in_list(9)restore_vm_bo_list(9)drm_gpuvm_bo_is_zombie(9)drm_gpuvm_bo_list_add(9)drm_gpuvm_bo_list_del_init(9)drm_gpuvm_bo_list_del(9)drm_gpuvm_range_valid(9)drm_gpuvm_resv_object_alloc(9)drm_gpuvm_init(9)drm_gpuvm_put(9)drm_gpuvm_prepare_vm(9)drm_gpuvm_prepare_objects(9)drm_gpuvm_prepare_range(9)drm_gpuvm_exec_lock(9)drm_gpuvm_exec_lock_array(9)drm_gpuvm_exec_lock_range(9)drm_gpuvm_validate(9)drm_gpuvm_resv_add_fence(9)drm_gpuvm_bo_create(9)drm_gpuvm_bo_put(9)drm_gpuvm_bo_put_deferred(9)drm_gpuvm_bo_deferred_cleanup(9)drm_gpuvm_bo_find(9)drm_gpuvm_bo_obtain_prealloc(9)drm_gpuvm_bo_extobj_add(9)drm_gpuvm_bo_evict(9)drm_gpuva_insert(9)drm_gpuva_remove(9)drm_gpuva_link(9)drm_gpuva_unlink(9)drm_gpuva_unlink_defer(9)drm_gpuva_find_first(9)drm_gpuva_find(9)drm_gpuvm_interval_empty(9)drm_gpuva_map(9)drm_gpuva_remap(9)drm_gpuva_unmap(9)drm_gpuvm_sm_map(9)drm_gpuvm_sm_unmap(9)drm_gpuvm_sm_map_exec_lock(9)drm_gpuvm_sm_unmap_exec_lock(9)drm_gpuvm_sm_map_ops_create(9)drm_gpuvm_madvise_ops_create(9)drm_gpuvm_sm_unmap_ops_create(9)drm_gpuvm_prefetch_ops_create(9)drm_gpuvm_bo_unmap_ops_create(9)drm_gpuva_ops_free(9)
okay that's the page, bestie π footer tea: source/version line ./drivers/gpu/drm; date October 2026; and the page itself is drm_gpuvm_bo_obtain_locked(9). slay. π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms