STRUCT DRM_I915_GEM_VM_BIND(9)
okay so bestie, welcome to the Kernel API Manual page for struct drm_i915_gem_vm_bind(9) β this is the VM_BIND struct and itβs giving address-space main character energy. π«Άβ¨
π NAME π
struct drm_i915_gem_vm_bind β VA to object mapping to bind. π
β¨ SYNOPSIS β¨
Hereβs the struct, copied exactly, no cap:
struct drm_i915_gem_vm_bind {
__u32 vm_id;
__u32 handle;
__u64 start;
__u64 offset;
__u64 length;
__u64 flags;
#define I915_GEM_VM_BIND_CAPTURE (1 << 0);
struct drm_i915_gem_timeline_fence fence;
__u64 extensions;
};
π Members π
vm_idβ VM (address space) id to bind. π§handleβ Object handle. πstartβ Virtual Address start to bind. πoffsetβ Offset in object to bind. πlengthβ Length of mapping to bind. πflagsβ Supported flags are:I915_GEM_VM_BIND_CAPTURE: Capture this mapping in the dump upon GPU error. π₯
π Note that fence carries its own flags.
fenceβ Timeline fence for bind completion signaling. β±οΈ Timeline fence is of formatstruct drm_i915_gem_timeline_fence. It is an out fence, hence usingI915_TIMELINE_FENCE_WAITflag is invalid, and an error will be returned. IfI915_TIMELINE_FENCE_SIGNALflag is not set, then out fence is not requested and binding is completed synchronously.extensionsβ Zero-terminated chain of extensions. π For future extensions. Seestruct i915_user_extension.
π Description π
This structure is passed to the VM_BIND ioctl and specifies the mapping of a GPU virtual address (VA) range to the section of an object that should be bound in the device page table of the specified address space (VM). The VA range specified must be unique (ie., not currently bound) and can be mapped to the whole object or a section of the object (partial binding). Multiple VA mappings can be created to the same section of the object (aliasing). π
The start, offset and length must be 4K page aligned. However the DG2 has 64K page size for device local memory and has compact page table. On that platform, for binding device local-memory objects, the start, offset and length must be 64K aligned. Also, UMDs should not mix the local memory 64K page and the system memory 4K page bindings in the same 2M range. π§ β¨
Error code -EINVAL will be returned if start, offset and length are not properly aligned. In version 1 (See I915_PARAM_VM_BIND_VERSION), error code -ENOSPC will be returned if the VA range specified can't be reserved. π
VM_BIND/UNBIND ioctl calls executed on different CPU threads concurrently are not ordered. Furthermore, parts of the VM_BIND operation can be done asynchronously, if valid fence is specified. β‘
π SEE ALSO π
- Kernel file
./Documentation/gpu/rfc/i915_vm_bind.h I915_PARAM_VM_BIND_VERSION(9)I915_VM_CREATE_FLAGS_USE_VM_BIND(9)struct drm_i915_gem_timeline_fence(9)struct drm_i915_gem_vm_unbind(9)struct drm_i915_gem_execbuffer3(9)struct drm_i915_gem_create_ext_vm_private(9)
okay thatβs the whole page, mwah π β source/version ./Documentation/gpu/rfc, dated October 2026, all about struct drm_i915_gem_vm_bind(9). ππΈ
π¦ 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