get_next_vm_bo_from_list(9)
π get_next_vm_bo_from_list π
okay bestie, this page is from the Kernel API Manual, and itβs giving βtiny helper, huge lockless-iteration energyβ β¨
β¨ NAME β¨
get_next_vm_bo_from_list β get the next vm_bo element π
π SYNOPSIS π
get_next_vm_bo_from_list (__gpuvm , __list_name , __local_list ,
__prev_vm_bo );
πΈ ARGUMENTS πΈ
__gpuvmβ thedrm_gpuvm__list_nameβ the name of the list weβre iterating on__local_listβ a pointer to the local list used to store already iterated items__prev_vm_boβ the previous element we got fromget_next_vm_bo_from_list
π¦ DESCRIPTION π¦
This helper exists to give you lockless list iteration. βLocklessβ here means the iterator releases the lock immediately after picking the first element from the list β so list insertion and deletion can happen concurrently. No cap.
Elements popped from the original list are kept in a local list, so removal and is_empty checks can still happen while weβre iterating the list. Iconic behavior, honestly.
π SEE ALSO π
Kernel file ./drivers/gpu/drm/drm_gpuvm.c β and yes, the whole squad is here:
Overview(9)Split and Merge(9)Madvise Logic - Splitting and Traversal(9)Locking(9)Examples(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_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)
bye bestie β source/version is ./drivers/gpu/drm, and the date on this one is October 2026 πβ¨
π¦ 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