drm_gpuvm_exec_lock_array(9)
β¨ drm_gpuvm_exec_lock_array(9) β¨
okay so bestie, welcome to the Kernel API Manual π this one lives in the kernel chapter, and it's literally the "lock everything at once" girlie. let's get into it π«Ά
πΈ NAME πΈ
drm_gpuvm_exec_lock_array β lock all dma-resv of all associated BOs π
like, all of them. every single one. no cap.
π SYNOPSIS π
int drm_gpuvm_exec_lock_array (struct drm_gpuvm_exec *vm_exec ,
struct drm_gem_object **objs ,
unsigned int num_objs );
three args, one int back, that's the whole vibe β¨
π¦ ARGUMENTS π¦
vm_execβ thedrm_gpuvm_execwrapper, aka the main character of this whole operation πobjsβ additionaldrm_gem_objectsto lock, like the plus-ones you're bringing to the lock party πnum_objsβ the number of additionaldrm_gem_objectsto lock, i.e. how many plus-ones π
π DESCRIPTION π
so what does it actually do? it acquires all dma-resv locks of all drm_gem_objects that the given drm_gpuvm contains mappings of β plus the ones you handed it through objs. π―
it's giving "collect the whole squad and lock them all" energy, and honestly? iconic. the way that it doesn't miss a single one of the gpuvm's mapped objects, fr fr. π₯
β RETURN β
0on success π (slay)- negative error code on failure π (not slay, go check your error handling bestie)
π SEE ALSO π
okay this list is long β the kernel doc girlies really said "link everything" and honestly we respect it. all of these live in the kernel file ./drivers/gpu/drm/drm_gpuvm.c π
Overview(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_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_locked(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)
and that's the whole page, bestie π before you go: this one's from ./drivers/gpu/drm, dated October 2026 β so like, mark your calendars ποΈβ¨ mwah, go lock those resvs responsibly π§ββοΈπ
π¦ 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