STRUCT DRM_NOUVEAU_VM_INIT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’œ struct drm_nouveau_vm_init(9) πŸ’œ

okay bestie, welcome to the Kernel API Manual ✨ today's main character is struct drm_nouveau_vm_init β€” yes that's a mouthful, yes it's iconic, and yes we're gonna get through it together 🫢


🌸 NAME 🌸

struct drm_nouveau_vm_init β€” literally the GPU VA space init structure, that's her whole job πŸ’…


✨ SYNOPSIS ✨

struct drm_nouveau_vm_init {
    __u64 kernel_managed_addr;
    __u64 kernel_managed_size;
 };

look at her. two fields. zero drama. we stan a minimalist queen πŸ‘‘


πŸŽ€ Members πŸŽ€

  • kernel_managed_addr β€” the start address of the kernel managed VA space region. like, where the kernel's lil territory begins πŸ“
  • kernel_managed_size β€” the size of the kernel managed VA space region, and it's in bytes bestie, don't forget the units 😭

πŸ¦‹ Description πŸ¦‹

so the vibe here is: this struct is used to initialize the GPU's VA space for a user client, and it's literally telling the kernel which portion of the VA space is managed by the UMD and which is managed by the kernel respectively. splitting the map, dividing the turf, very divorced parents energy πŸ™ˆ

⚠️ okay this part matters: for the UMD to use the VM_BIND uAPI, this must be called before any BOs or channels are created. if it gets called afterwards, DRM_IOCTL_NOUVEAU_VM_INIT fails with -ENOSYS. not a suggestion, not a soft guideline β€” it just straight up will not work πŸ’€

πŸ‘‘ SEE ALSO πŸ‘‘

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

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

and that's the page, bestie 🌈 mwah πŸ’– signing off from ./include/uapi/drm, dated October 2026, still and forever struct drm_nouveau_vm_init(9) β€” slay, no cap πŸŽ€βœ¨

πŸ“¦ where this page comes from