1*99c0b3ceSNiranjana Vishwanathapura /* SPDX-License-Identifier: MIT */ 2*99c0b3ceSNiranjana Vishwanathapura /* 3*99c0b3ceSNiranjana Vishwanathapura * Copyright © 2022 Intel Corporation 4*99c0b3ceSNiranjana Vishwanathapura */ 5*99c0b3ceSNiranjana Vishwanathapura 6*99c0b3ceSNiranjana Vishwanathapura /** 7*99c0b3ceSNiranjana Vishwanathapura * DOC: I915_PARAM_VM_BIND_VERSION 8*99c0b3ceSNiranjana Vishwanathapura * 9*99c0b3ceSNiranjana Vishwanathapura * VM_BIND feature version supported. 10*99c0b3ceSNiranjana Vishwanathapura * See typedef drm_i915_getparam_t param. 11*99c0b3ceSNiranjana Vishwanathapura * 12*99c0b3ceSNiranjana Vishwanathapura * Specifies the VM_BIND feature version supported. 13*99c0b3ceSNiranjana Vishwanathapura * The following versions of VM_BIND have been defined: 14*99c0b3ceSNiranjana Vishwanathapura * 15*99c0b3ceSNiranjana Vishwanathapura * 0: No VM_BIND support. 16*99c0b3ceSNiranjana Vishwanathapura * 17*99c0b3ceSNiranjana Vishwanathapura * 1: In VM_UNBIND calls, the UMD must specify the exact mappings created 18*99c0b3ceSNiranjana Vishwanathapura * previously with VM_BIND, the ioctl will not support unbinding multiple 19*99c0b3ceSNiranjana Vishwanathapura * mappings or splitting them. Similarly, VM_BIND calls will not replace 20*99c0b3ceSNiranjana Vishwanathapura * any existing mappings. 21*99c0b3ceSNiranjana Vishwanathapura * 22*99c0b3ceSNiranjana Vishwanathapura * 2: The restrictions on unbinding partial or multiple mappings is 23*99c0b3ceSNiranjana Vishwanathapura * lifted, Similarly, binding will replace any mappings in the given range. 24*99c0b3ceSNiranjana Vishwanathapura * 25*99c0b3ceSNiranjana Vishwanathapura * See struct drm_i915_gem_vm_bind and struct drm_i915_gem_vm_unbind. 26*99c0b3ceSNiranjana Vishwanathapura */ 27*99c0b3ceSNiranjana Vishwanathapura #define I915_PARAM_VM_BIND_VERSION 57 28*99c0b3ceSNiranjana Vishwanathapura 29*99c0b3ceSNiranjana Vishwanathapura /** 30*99c0b3ceSNiranjana Vishwanathapura * DOC: I915_VM_CREATE_FLAGS_USE_VM_BIND 31*99c0b3ceSNiranjana Vishwanathapura * 32*99c0b3ceSNiranjana Vishwanathapura * Flag to opt-in for VM_BIND mode of binding during VM creation. 33*99c0b3ceSNiranjana Vishwanathapura * See struct drm_i915_gem_vm_control flags. 34*99c0b3ceSNiranjana Vishwanathapura * 35*99c0b3ceSNiranjana Vishwanathapura * The older execbuf2 ioctl will not support VM_BIND mode of operation. 36*99c0b3ceSNiranjana Vishwanathapura * For VM_BIND mode, we have new execbuf3 ioctl which will not accept any 37*99c0b3ceSNiranjana Vishwanathapura * execlist (See struct drm_i915_gem_execbuffer3 for more details). 38*99c0b3ceSNiranjana Vishwanathapura */ 39*99c0b3ceSNiranjana Vishwanathapura #define I915_VM_CREATE_FLAGS_USE_VM_BIND (1 << 0) 40*99c0b3ceSNiranjana Vishwanathapura 41*99c0b3ceSNiranjana Vishwanathapura /* VM_BIND related ioctls */ 42*99c0b3ceSNiranjana Vishwanathapura #define DRM_I915_GEM_VM_BIND 0x3d 43*99c0b3ceSNiranjana Vishwanathapura #define DRM_I915_GEM_VM_UNBIND 0x3e 44*99c0b3ceSNiranjana Vishwanathapura #define DRM_I915_GEM_EXECBUFFER3 0x3f 45*99c0b3ceSNiranjana Vishwanathapura 46*99c0b3ceSNiranjana Vishwanathapura #define DRM_IOCTL_I915_GEM_VM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_VM_BIND, struct drm_i915_gem_vm_bind) 47*99c0b3ceSNiranjana Vishwanathapura #define DRM_IOCTL_I915_GEM_VM_UNBIND DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_VM_UNBIND, struct drm_i915_gem_vm_bind) 48*99c0b3ceSNiranjana Vishwanathapura #define DRM_IOCTL_I915_GEM_EXECBUFFER3 DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER3, struct drm_i915_gem_execbuffer3) 49*99c0b3ceSNiranjana Vishwanathapura 50*99c0b3ceSNiranjana Vishwanathapura /** 51*99c0b3ceSNiranjana Vishwanathapura * struct drm_i915_gem_timeline_fence - An input or output timeline fence. 52*99c0b3ceSNiranjana Vishwanathapura * 53*99c0b3ceSNiranjana Vishwanathapura * The operation will wait for input fence to signal. 54*99c0b3ceSNiranjana Vishwanathapura * 55*99c0b3ceSNiranjana Vishwanathapura * The returned output fence will be signaled after the completion of the 56*99c0b3ceSNiranjana Vishwanathapura * operation. 57*99c0b3ceSNiranjana Vishwanathapura */ 58*99c0b3ceSNiranjana Vishwanathapura struct drm_i915_gem_timeline_fence { 59*99c0b3ceSNiranjana Vishwanathapura /** @handle: User's handle for a drm_syncobj to wait on or signal. */ 60*99c0b3ceSNiranjana Vishwanathapura __u32 handle; 61*99c0b3ceSNiranjana Vishwanathapura 62*99c0b3ceSNiranjana Vishwanathapura /** 63*99c0b3ceSNiranjana Vishwanathapura * @flags: Supported flags are: 64*99c0b3ceSNiranjana Vishwanathapura * 65*99c0b3ceSNiranjana Vishwanathapura * I915_TIMELINE_FENCE_WAIT: 66*99c0b3ceSNiranjana Vishwanathapura * Wait for the input fence before the operation. 67*99c0b3ceSNiranjana Vishwanathapura * 68*99c0b3ceSNiranjana Vishwanathapura * I915_TIMELINE_FENCE_SIGNAL: 69*99c0b3ceSNiranjana Vishwanathapura * Return operation completion fence as output. 70*99c0b3ceSNiranjana Vishwanathapura */ 71*99c0b3ceSNiranjana Vishwanathapura __u32 flags; 72*99c0b3ceSNiranjana Vishwanathapura #define I915_TIMELINE_FENCE_WAIT (1 << 0) 73*99c0b3ceSNiranjana Vishwanathapura #define I915_TIMELINE_FENCE_SIGNAL (1 << 1) 74*99c0b3ceSNiranjana Vishwanathapura #define __I915_TIMELINE_FENCE_UNKNOWN_FLAGS (-(I915_TIMELINE_FENCE_SIGNAL << 1)) 75*99c0b3ceSNiranjana Vishwanathapura 76*99c0b3ceSNiranjana Vishwanathapura /** 77*99c0b3ceSNiranjana Vishwanathapura * @value: A point in the timeline. 78*99c0b3ceSNiranjana Vishwanathapura * Value must be 0 for a binary drm_syncobj. A Value of 0 for a 79*99c0b3ceSNiranjana Vishwanathapura * timeline drm_syncobj is invalid as it turns a drm_syncobj into a 80*99c0b3ceSNiranjana Vishwanathapura * binary one. 81*99c0b3ceSNiranjana Vishwanathapura */ 82*99c0b3ceSNiranjana Vishwanathapura __u64 value; 83*99c0b3ceSNiranjana Vishwanathapura }; 84*99c0b3ceSNiranjana Vishwanathapura 85*99c0b3ceSNiranjana Vishwanathapura /** 86*99c0b3ceSNiranjana Vishwanathapura * struct drm_i915_gem_vm_bind - VA to object mapping to bind. 87*99c0b3ceSNiranjana Vishwanathapura * 88*99c0b3ceSNiranjana Vishwanathapura * This structure is passed to VM_BIND ioctl and specifies the mapping of GPU 89*99c0b3ceSNiranjana Vishwanathapura * virtual address (VA) range to the section of an object that should be bound 90*99c0b3ceSNiranjana Vishwanathapura * in the device page table of the specified address space (VM). 91*99c0b3ceSNiranjana Vishwanathapura * The VA range specified must be unique (ie., not currently bound) and can 92*99c0b3ceSNiranjana Vishwanathapura * be mapped to whole object or a section of the object (partial binding). 93*99c0b3ceSNiranjana Vishwanathapura * Multiple VA mappings can be created to the same section of the object 94*99c0b3ceSNiranjana Vishwanathapura * (aliasing). 95*99c0b3ceSNiranjana Vishwanathapura * 96*99c0b3ceSNiranjana Vishwanathapura * The @start, @offset and @length must be 4K page aligned. However the DG2 97*99c0b3ceSNiranjana Vishwanathapura * and XEHPSDV has 64K page size for device local memory and has compact page 98*99c0b3ceSNiranjana Vishwanathapura * table. On those platforms, for binding device local-memory objects, the 99*99c0b3ceSNiranjana Vishwanathapura * @start, @offset and @length must be 64K aligned. Also, UMDs should not mix 100*99c0b3ceSNiranjana Vishwanathapura * the local memory 64K page and the system memory 4K page bindings in the same 101*99c0b3ceSNiranjana Vishwanathapura * 2M range. 102*99c0b3ceSNiranjana Vishwanathapura * 103*99c0b3ceSNiranjana Vishwanathapura * Error code -EINVAL will be returned if @start, @offset and @length are not 104*99c0b3ceSNiranjana Vishwanathapura * properly aligned. In version 1 (See I915_PARAM_VM_BIND_VERSION), error code 105*99c0b3ceSNiranjana Vishwanathapura * -ENOSPC will be returned if the VA range specified can't be reserved. 106*99c0b3ceSNiranjana Vishwanathapura * 107*99c0b3ceSNiranjana Vishwanathapura * VM_BIND/UNBIND ioctl calls executed on different CPU threads concurrently 108*99c0b3ceSNiranjana Vishwanathapura * are not ordered. Furthermore, parts of the VM_BIND operation can be done 109*99c0b3ceSNiranjana Vishwanathapura * asynchronously, if valid @fence is specified. 110*99c0b3ceSNiranjana Vishwanathapura */ 111*99c0b3ceSNiranjana Vishwanathapura struct drm_i915_gem_vm_bind { 112*99c0b3ceSNiranjana Vishwanathapura /** @vm_id: VM (address space) id to bind */ 113*99c0b3ceSNiranjana Vishwanathapura __u32 vm_id; 114*99c0b3ceSNiranjana Vishwanathapura 115*99c0b3ceSNiranjana Vishwanathapura /** @handle: Object handle */ 116*99c0b3ceSNiranjana Vishwanathapura __u32 handle; 117*99c0b3ceSNiranjana Vishwanathapura 118*99c0b3ceSNiranjana Vishwanathapura /** @start: Virtual Address start to bind */ 119*99c0b3ceSNiranjana Vishwanathapura __u64 start; 120*99c0b3ceSNiranjana Vishwanathapura 121*99c0b3ceSNiranjana Vishwanathapura /** @offset: Offset in object to bind */ 122*99c0b3ceSNiranjana Vishwanathapura __u64 offset; 123*99c0b3ceSNiranjana Vishwanathapura 124*99c0b3ceSNiranjana Vishwanathapura /** @length: Length of mapping to bind */ 125*99c0b3ceSNiranjana Vishwanathapura __u64 length; 126*99c0b3ceSNiranjana Vishwanathapura 127*99c0b3ceSNiranjana Vishwanathapura /** 128*99c0b3ceSNiranjana Vishwanathapura * @flags: Supported flags are: 129*99c0b3ceSNiranjana Vishwanathapura * 130*99c0b3ceSNiranjana Vishwanathapura * I915_GEM_VM_BIND_CAPTURE: 131*99c0b3ceSNiranjana Vishwanathapura * Capture this mapping in the dump upon GPU error. 132*99c0b3ceSNiranjana Vishwanathapura * 133*99c0b3ceSNiranjana Vishwanathapura * Note that @fence carries its own flags. 134*99c0b3ceSNiranjana Vishwanathapura */ 135*99c0b3ceSNiranjana Vishwanathapura __u64 flags; 136*99c0b3ceSNiranjana Vishwanathapura #define I915_GEM_VM_BIND_CAPTURE (1 << 0) 137*99c0b3ceSNiranjana Vishwanathapura 138*99c0b3ceSNiranjana Vishwanathapura /** 139*99c0b3ceSNiranjana Vishwanathapura * @fence: Timeline fence for bind completion signaling. 140*99c0b3ceSNiranjana Vishwanathapura * 141*99c0b3ceSNiranjana Vishwanathapura * Timeline fence is of format struct drm_i915_gem_timeline_fence. 142*99c0b3ceSNiranjana Vishwanathapura * 143*99c0b3ceSNiranjana Vishwanathapura * It is an out fence, hence using I915_TIMELINE_FENCE_WAIT flag 144*99c0b3ceSNiranjana Vishwanathapura * is invalid, and an error will be returned. 145*99c0b3ceSNiranjana Vishwanathapura * 146*99c0b3ceSNiranjana Vishwanathapura * If I915_TIMELINE_FENCE_SIGNAL flag is not set, then out fence 147*99c0b3ceSNiranjana Vishwanathapura * is not requested and binding is completed synchronously. 148*99c0b3ceSNiranjana Vishwanathapura */ 149*99c0b3ceSNiranjana Vishwanathapura struct drm_i915_gem_timeline_fence fence; 150*99c0b3ceSNiranjana Vishwanathapura 151*99c0b3ceSNiranjana Vishwanathapura /** 152*99c0b3ceSNiranjana Vishwanathapura * @extensions: Zero-terminated chain of extensions. 153*99c0b3ceSNiranjana Vishwanathapura * 154*99c0b3ceSNiranjana Vishwanathapura * For future extensions. See struct i915_user_extension. 155*99c0b3ceSNiranjana Vishwanathapura */ 156*99c0b3ceSNiranjana Vishwanathapura __u64 extensions; 157*99c0b3ceSNiranjana Vishwanathapura }; 158*99c0b3ceSNiranjana Vishwanathapura 159*99c0b3ceSNiranjana Vishwanathapura /** 160*99c0b3ceSNiranjana Vishwanathapura * struct drm_i915_gem_vm_unbind - VA to object mapping to unbind. 161*99c0b3ceSNiranjana Vishwanathapura * 162*99c0b3ceSNiranjana Vishwanathapura * This structure is passed to VM_UNBIND ioctl and specifies the GPU virtual 163*99c0b3ceSNiranjana Vishwanathapura * address (VA) range that should be unbound from the device page table of the 164*99c0b3ceSNiranjana Vishwanathapura * specified address space (VM). VM_UNBIND will force unbind the specified 165*99c0b3ceSNiranjana Vishwanathapura * range from device page table without waiting for any GPU job to complete. 166*99c0b3ceSNiranjana Vishwanathapura * It is UMDs responsibility to ensure the mapping is no longer in use before 167*99c0b3ceSNiranjana Vishwanathapura * calling VM_UNBIND. 168*99c0b3ceSNiranjana Vishwanathapura * 169*99c0b3ceSNiranjana Vishwanathapura * If the specified mapping is not found, the ioctl will simply return without 170*99c0b3ceSNiranjana Vishwanathapura * any error. 171*99c0b3ceSNiranjana Vishwanathapura * 172*99c0b3ceSNiranjana Vishwanathapura * VM_BIND/UNBIND ioctl calls executed on different CPU threads concurrently 173*99c0b3ceSNiranjana Vishwanathapura * are not ordered. Furthermore, parts of the VM_UNBIND operation can be done 174*99c0b3ceSNiranjana Vishwanathapura * asynchronously, if valid @fence is specified. 175*99c0b3ceSNiranjana Vishwanathapura */ 176*99c0b3ceSNiranjana Vishwanathapura struct drm_i915_gem_vm_unbind { 177*99c0b3ceSNiranjana Vishwanathapura /** @vm_id: VM (address space) id to bind */ 178*99c0b3ceSNiranjana Vishwanathapura __u32 vm_id; 179*99c0b3ceSNiranjana Vishwanathapura 180*99c0b3ceSNiranjana Vishwanathapura /** @rsvd: Reserved, MBZ */ 181*99c0b3ceSNiranjana Vishwanathapura __u32 rsvd; 182*99c0b3ceSNiranjana Vishwanathapura 183*99c0b3ceSNiranjana Vishwanathapura /** @start: Virtual Address start to unbind */ 184*99c0b3ceSNiranjana Vishwanathapura __u64 start; 185*99c0b3ceSNiranjana Vishwanathapura 186*99c0b3ceSNiranjana Vishwanathapura /** @length: Length of mapping to unbind */ 187*99c0b3ceSNiranjana Vishwanathapura __u64 length; 188*99c0b3ceSNiranjana Vishwanathapura 189*99c0b3ceSNiranjana Vishwanathapura /** 190*99c0b3ceSNiranjana Vishwanathapura * @flags: Currently reserved, MBZ. 191*99c0b3ceSNiranjana Vishwanathapura * 192*99c0b3ceSNiranjana Vishwanathapura * Note that @fence carries its own flags. 193*99c0b3ceSNiranjana Vishwanathapura */ 194*99c0b3ceSNiranjana Vishwanathapura __u64 flags; 195*99c0b3ceSNiranjana Vishwanathapura 196*99c0b3ceSNiranjana Vishwanathapura /** 197*99c0b3ceSNiranjana Vishwanathapura * @fence: Timeline fence for unbind completion signaling. 198*99c0b3ceSNiranjana Vishwanathapura * 199*99c0b3ceSNiranjana Vishwanathapura * Timeline fence is of format struct drm_i915_gem_timeline_fence. 200*99c0b3ceSNiranjana Vishwanathapura * 201*99c0b3ceSNiranjana Vishwanathapura * It is an out fence, hence using I915_TIMELINE_FENCE_WAIT flag 202*99c0b3ceSNiranjana Vishwanathapura * is invalid, and an error will be returned. 203*99c0b3ceSNiranjana Vishwanathapura * 204*99c0b3ceSNiranjana Vishwanathapura * If I915_TIMELINE_FENCE_SIGNAL flag is not set, then out fence 205*99c0b3ceSNiranjana Vishwanathapura * is not requested and unbinding is completed synchronously. 206*99c0b3ceSNiranjana Vishwanathapura */ 207*99c0b3ceSNiranjana Vishwanathapura struct drm_i915_gem_timeline_fence fence; 208*99c0b3ceSNiranjana Vishwanathapura 209*99c0b3ceSNiranjana Vishwanathapura /** 210*99c0b3ceSNiranjana Vishwanathapura * @extensions: Zero-terminated chain of extensions. 211*99c0b3ceSNiranjana Vishwanathapura * 212*99c0b3ceSNiranjana Vishwanathapura * For future extensions. See struct i915_user_extension. 213*99c0b3ceSNiranjana Vishwanathapura */ 214*99c0b3ceSNiranjana Vishwanathapura __u64 extensions; 215*99c0b3ceSNiranjana Vishwanathapura }; 216*99c0b3ceSNiranjana Vishwanathapura 217*99c0b3ceSNiranjana Vishwanathapura /** 218*99c0b3ceSNiranjana Vishwanathapura * struct drm_i915_gem_execbuffer3 - Structure for DRM_I915_GEM_EXECBUFFER3 219*99c0b3ceSNiranjana Vishwanathapura * ioctl. 220*99c0b3ceSNiranjana Vishwanathapura * 221*99c0b3ceSNiranjana Vishwanathapura * DRM_I915_GEM_EXECBUFFER3 ioctl only works in VM_BIND mode and VM_BIND mode 222*99c0b3ceSNiranjana Vishwanathapura * only works with this ioctl for submission. 223*99c0b3ceSNiranjana Vishwanathapura * See I915_VM_CREATE_FLAGS_USE_VM_BIND. 224*99c0b3ceSNiranjana Vishwanathapura */ 225*99c0b3ceSNiranjana Vishwanathapura struct drm_i915_gem_execbuffer3 { 226*99c0b3ceSNiranjana Vishwanathapura /** 227*99c0b3ceSNiranjana Vishwanathapura * @ctx_id: Context id 228*99c0b3ceSNiranjana Vishwanathapura * 229*99c0b3ceSNiranjana Vishwanathapura * Only contexts with user engine map are allowed. 230*99c0b3ceSNiranjana Vishwanathapura */ 231*99c0b3ceSNiranjana Vishwanathapura __u32 ctx_id; 232*99c0b3ceSNiranjana Vishwanathapura 233*99c0b3ceSNiranjana Vishwanathapura /** 234*99c0b3ceSNiranjana Vishwanathapura * @engine_idx: Engine index 235*99c0b3ceSNiranjana Vishwanathapura * 236*99c0b3ceSNiranjana Vishwanathapura * An index in the user engine map of the context specified by @ctx_id. 237*99c0b3ceSNiranjana Vishwanathapura */ 238*99c0b3ceSNiranjana Vishwanathapura __u32 engine_idx; 239*99c0b3ceSNiranjana Vishwanathapura 240*99c0b3ceSNiranjana Vishwanathapura /** 241*99c0b3ceSNiranjana Vishwanathapura * @batch_address: Batch gpu virtual address/es. 242*99c0b3ceSNiranjana Vishwanathapura * 243*99c0b3ceSNiranjana Vishwanathapura * For normal submission, it is the gpu virtual address of the batch 244*99c0b3ceSNiranjana Vishwanathapura * buffer. For parallel submission, it is a pointer to an array of 245*99c0b3ceSNiranjana Vishwanathapura * batch buffer gpu virtual addresses with array size equal to the 246*99c0b3ceSNiranjana Vishwanathapura * number of (parallel) engines involved in that submission (See 247*99c0b3ceSNiranjana Vishwanathapura * struct i915_context_engines_parallel_submit). 248*99c0b3ceSNiranjana Vishwanathapura */ 249*99c0b3ceSNiranjana Vishwanathapura __u64 batch_address; 250*99c0b3ceSNiranjana Vishwanathapura 251*99c0b3ceSNiranjana Vishwanathapura /** @flags: Currently reserved, MBZ */ 252*99c0b3ceSNiranjana Vishwanathapura __u64 flags; 253*99c0b3ceSNiranjana Vishwanathapura 254*99c0b3ceSNiranjana Vishwanathapura /** @rsvd1: Reserved, MBZ */ 255*99c0b3ceSNiranjana Vishwanathapura __u32 rsvd1; 256*99c0b3ceSNiranjana Vishwanathapura 257*99c0b3ceSNiranjana Vishwanathapura /** @fence_count: Number of fences in @timeline_fences array. */ 258*99c0b3ceSNiranjana Vishwanathapura __u32 fence_count; 259*99c0b3ceSNiranjana Vishwanathapura 260*99c0b3ceSNiranjana Vishwanathapura /** 261*99c0b3ceSNiranjana Vishwanathapura * @timeline_fences: Pointer to an array of timeline fences. 262*99c0b3ceSNiranjana Vishwanathapura * 263*99c0b3ceSNiranjana Vishwanathapura * Timeline fences are of format struct drm_i915_gem_timeline_fence. 264*99c0b3ceSNiranjana Vishwanathapura */ 265*99c0b3ceSNiranjana Vishwanathapura __u64 timeline_fences; 266*99c0b3ceSNiranjana Vishwanathapura 267*99c0b3ceSNiranjana Vishwanathapura /** @rsvd2: Reserved, MBZ */ 268*99c0b3ceSNiranjana Vishwanathapura __u64 rsvd2; 269*99c0b3ceSNiranjana Vishwanathapura 270*99c0b3ceSNiranjana Vishwanathapura /** 271*99c0b3ceSNiranjana Vishwanathapura * @extensions: Zero-terminated chain of extensions. 272*99c0b3ceSNiranjana Vishwanathapura * 273*99c0b3ceSNiranjana Vishwanathapura * For future extensions. See struct i915_user_extension. 274*99c0b3ceSNiranjana Vishwanathapura */ 275*99c0b3ceSNiranjana Vishwanathapura __u64 extensions; 276*99c0b3ceSNiranjana Vishwanathapura }; 277*99c0b3ceSNiranjana Vishwanathapura 278*99c0b3ceSNiranjana Vishwanathapura /** 279*99c0b3ceSNiranjana Vishwanathapura * struct drm_i915_gem_create_ext_vm_private - Extension to make the object 280*99c0b3ceSNiranjana Vishwanathapura * private to the specified VM. 281*99c0b3ceSNiranjana Vishwanathapura * 282*99c0b3ceSNiranjana Vishwanathapura * See struct drm_i915_gem_create_ext. 283*99c0b3ceSNiranjana Vishwanathapura */ 284*99c0b3ceSNiranjana Vishwanathapura struct drm_i915_gem_create_ext_vm_private { 285*99c0b3ceSNiranjana Vishwanathapura #define I915_GEM_CREATE_EXT_VM_PRIVATE 2 286*99c0b3ceSNiranjana Vishwanathapura /** @base: Extension link. See struct i915_user_extension. */ 287*99c0b3ceSNiranjana Vishwanathapura struct i915_user_extension base; 288*99c0b3ceSNiranjana Vishwanathapura 289*99c0b3ceSNiranjana Vishwanathapura /** @vm_id: Id of the VM to which the object is private */ 290*99c0b3ceSNiranjana Vishwanathapura __u32 vm_id; 291*99c0b3ceSNiranjana Vishwanathapura }; 292