STRUCT DRM_NOUVEAU_VM_BIND_OP(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct drm_nouveau_vm_bind_op(9) πŸ’…

okay so this is from the Kernel API Manual bestie, and it's literally all about one (1) VM_BIND operation. buckle up πŸŽ€


✨ NAME ✨

struct drm_nouveau_vm_bind_op β€” a VM_BIND operation, that's the whole vibe πŸ’«


🌸 SYNOPSIS 🌸

struct drm_nouveau_vm_bind_op {
    __u32 op;
  #define DRM_NOUVEAU_VM_BIND_OP_MAP 0x0;
  #define DRM_NOUVEAU_VM_BIND_OP_UNMAP 0x1;
    __u32 flags;
  #define DRM_NOUVEAU_VM_BIND_SPARSE (1 << 8);
    __u32 handle;
    __u32 pad;
    __u64 addr;
    __u64 bo_offset;
    __u64 range;
 };

like, that's the whole struct. she's not huge but she IS important 🫢


πŸ‘‘ Members πŸ‘‘

  • op β€” the operation type, aka what are we even doing here

Supported values:

  • DRM_NOUVEAU_VM_BIND_OP_MAP β€” map a GEM object to the GPU's VA space. optionally you can pass the DRM_NOUVEAU_VM_BIND_SPARSE flag to tell the kernel "hey bestie, make sparse mappings for this range" ✨
  • DRM_NOUVEAU_VM_BIND_OP_UNMAP β€” unmap an existing mapping in the GPU's VA space. and listen, if the region the mapping lives in is a sparse region, new sparse mappings get created right where the unmapped (memory backed) mapping used to be. and if you actually want to remove a sparse region? you gotta set DRM_NOUVEAU_VM_BIND_SPARSE. no flag, no removal, iykyk πŸ’…
  • flags β€” the flags for a drm_nouveau_vm_bind_op

Supported values:

  • DRM_NOUVEAU_VM_BIND_SPARSE β€” indicates that an allocated VA space region should be sparse 🌈
  • handle β€” the handle of the DRM GEM object to map πŸŽ€
  • pad β€” 32 bit padding, should be 0. like literally keep it zero, it's not deep πŸ™ˆ
  • addr β€” the address the VA space region or (memory backed) mapping should be mapped to πŸ“
  • bo_offset β€” the offset within the BO backing the mapping πŸ¦‹
  • range β€” the size of the requested mapping in bytes πŸ“

πŸ’– Description πŸ’–

so this structure represents a single VM_BIND operation. one. singular. iconic. ✨

UMDs should pass an array of this structure via struct drm_nouveau_vm_bind's op_ptr field β€” yes, an array, because one operation is never enough, main character energy only πŸ’€


πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./include/uapi/drm/nouveau_drm.h plus the whole friend group:

  • struct drm_nouveau_sync(9)
  • struct drm_nouveau_vm_init(9)
  • struct drm_nouveau_vm_bind(9)
  • struct drm_nouveau_exec_push(9)
  • struct drm_nouveau_exec(9)

ngl this page is short but she ate. go map some GEM objects, bestie πŸ§šπŸ’œ

okay bye ily, this came straight out of ./include/uapi/drm, dated October 2026, and the page itself is struct drm_...u_vm_bind_op(9) in case you need to cite your sources πŸ’–πŸŒΈπŸ“

πŸ“¦ where this page comes from