ENUM DRM_GPUVM_FLAGS(9)
π enum drm_gpuvm_flags(9) β the group-chat rundown π
okay so bestie, this is a page from the Kernel API Manual (that's the manual name, iykyk β¨) and it's literally all about the flags you can slap on a struct drm_gpuvm. yes. flags. for GPU virtual memory. we're doing this. π¦
β¨ NAME β¨
enum drm_gpuvm_flags β the flags you use with struct drm_gpuvm π
πΈ SYNOPSIS πΈ
here's the exact shape of it, no cap:
enum drm_gpuvm_flags {
DRM_GPUVM_RESV_PROTECTED ,
DRM_GPUVM_IMMEDIATE_MODE ,
DRM_GPUVM_USERBITS
};
look at her. three members. main character energy. π
β Constants β
okay so here's what each one actually means, fr fr:
DRM_GPUVM_RESV_PROTECTEDβ this GPUVM is protected externally by the GPUVM's owndma_resvlock π (yes, externally, that's the whole vibe)DRM_GPUVM_IMMEDIATE_MODEβ this one uses the locking scheme for GEMs that's designed for modifying the GPUVM during the fence signalling path π§
like, when it's set, gpuva.lock is the thing protecting gpuva.list in all GEM objects associated with this GPUVM. but when it's not set? then the GEMs dma-resv gets used instead. two totally different lock situations, don't mix them up bestie π
DRM_GPUVM_USERBITSβ user defined bits π«Ά (they're yours, do what you want, that's the whole point)
π¦ SEE ALSO π¦
okay this list is long and I'm obsessed, go read all of these:
Kernel file ./include/drm/drm_gpuvm.h
enum drm_gpuva_flags(9)struct drm_gpuva(9)drm_gpuva_invalidate(9)drm_gpuva_invalidated(9)struct drm_gpuvm(9)drm_gpuvm_get(9)drm_gpuvm_resv_protected(9)drm_gpuvm_immediate_mode(9)drm_gpuvm_resv(9)drm_gpuvm_resv_obj(9)drm_gpuvm_is_extobj(9)drm_gpuvm_for_each_va_range(9)drm_gpuvm_for_each_va_range_safe(9)drm_gpuvm_for_each_va(9)drm_gpuvm_for_each_va_safe(9)struct drm_gpuvm_exec(9)drm_gpuvm_exec_unlock(9)drm_gpuvm_exec_resv_add_fence(9)drm_gpuvm_exec_validate(9)struct drm_gpuvm_bo(9)drm_gpuvm_bo_get(9)drm_gpuvm_bo_gem_evict(9)drm_gpuvm_bo_for_each_va(9)drm_gpuvm_bo_for_each_va_safe(9)enum drm_gpuva_op_type(9)struct drm_gpuva_op_map(9)struct drm_gpuva_op_unmap(9)struct drm_gpuva_op_remap(9)struct drm_gpuva_op_prefetch(9)struct drm_gpuva_op(9)struct drm_gpuva_ops(9)drm_gpuva_for_each_op(9)drm_gpuva_for_each_op_safe(9)drm_gpuva_for_each_op_from_reverse(9)drm_gpuva_for_each_op_reverse(9)drm_gpuva_first_op(9)drm_gpuva_last_op(9)drm_gpuva_prev_op(9)drm_gpuva_next_op(9)struct drm_gpuvm_map_req(9)struct drm_gpuvm_ops(9)drm_gpuva_op_remap_to_unmap_range(9)
π tiny disclaimer bestie: this is kernel API stuff, so read the actual header before you go poking at it. the flags are real, the vibes are mine. π
and that's the whole page!! π source livin' in ./include/drm, dated October 2026 β slay, see you in the next release, mwah ππ«Άβ¨
π¦ 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