drm_gpuvm_sm...ap_exec_lock(9)
π drm_gpuvm_sm_unmap_exec_lock(9) β a Kernel API Manual moment
okay bestie, sit down, because this is a kernel API manual page and the name up top is drm_gpuvm_sm_unmap_exec_lock(9) β yes, the manpage header is out here getting cropped like drm_gpuvm_sm...ap_exec_lock(9), we don't know her full government name in the title bar but we do know it, and it's giving "locking, but make it unmap."
β¨ NAME β¨
drm_gpuvm_sm_unmap_exec_lock β locks the objects touched by drm_gpuvm_sm_unmap()
like literally that's the whole job. she locks. that's it. that's the girl. π
π¦ SYNOPSIS π¦
int drm_gpuvm_sm_unmap_exec_lock (struct drm_gpuvm *gpuvm , struct
drm_exec *exec , u64 req_addr , u64 req_range );
she returns an int, she takes four args, no cap. π«Ά
π ARGUMENTS π
gpuvmβ thestruct drm_gpuvmthat's out here representing the GPU VA space. main character energy, honestly.execβ thestruct drm_execlocking context. this is the vibe check container, basically.req_addrβ the start address of the range you're about to unmap.u64, because addresses are long and so is this week.req_rangeβ the range of the mappings to unmap. alsou64. also slay.
πΈ DESCRIPTION πΈ
so what does she do. this function locks β specifically via drm_exec_lock_obj β the objects that will be unmapped/remapped by drm_gpuvm_sm_unmap. that's it, that's the tea π
and if you're sitting there like "okay but how am i supposed to use this," the page is literally pointing you at your other bestie: see drm_gpuvm_sm_map_exec_lock for expected usage. iykyk π§
β RETURN β
0 on success β¨ β or a negative error code π
that's the whole return value situation. no notes.
π₯ SEE ALSO π₯
the kernel file lives at ./drivers/gpu/drm/drm_gpuvm.c, and she brought her entire friend group. every single one, no gatekeeping:
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_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_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_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)
like... the whole roster. π she said "you WILL know my friends."
lowkey reminder bestie: this is the locking half, not the map/unmap itself. drm_gpuvm_sm_unmap() is the one doing the unmapping β this one is backstage holding the objects down. π«Ά
and that's the page!! π sourced from ./drivers/gpu/drm, dated October 2026, part of the Kernel API Manual β mwah, go lock some objects responsibly, ily, bye πβ¨
π¦ 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