diff options
author | Adam Miszczak <adam.miszczak@linux.intel.com> | 2022-07-01 16:05:43 -0700 |
---|---|---|
committer | Andi Shyti <andi.shyti@linux.intel.com> | 2022-07-09 02:43:54 +0200 |
commit | 790c1b18ca0815ca14b320e3b4d9e262fe46f1a4 (patch) | |
tree | 3f76796393633f04cbebf4a83ec155b268f05439 /lib/i915/intel_memory_region.c | |
parent | 4382731875fe01cd86c7f7725f6070c2215c732c (diff) |
lib/vm_bind: Add interface to support VM_BIND
Add required library interfaces to support VM_BIND
functionality.
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Diffstat (limited to 'lib/i915/intel_memory_region.c')
-rw-r--r-- | lib/i915/intel_memory_region.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/i915/intel_memory_region.c b/lib/i915/intel_memory_region.c index 93a18982..74a4fda6 100644 --- a/lib/i915/intel_memory_region.c +++ b/lib/i915/intel_memory_region.c @@ -197,10 +197,14 @@ bool gem_has_lmem(int fd) /* A version of gem_create_in_memory_region_list which can be allowed to fail so that the object creation can be retried */ -int __gem_create_in_memory_region_list(int fd, uint32_t *handle, uint64_t *size, uint32_t flags, +int __gem_create_in_memory_region_list(int fd, uint32_t *handle, uint64_t *size, uint32_t flags, uint32_t vm_id, struct drm_i915_gem_memory_class_instance *mem_regions, int num_regions) { + struct drm_i915_gem_create_ext_vm_private vm_priv = { + .base = { .name = I915_GEM_CREATE_EXT_VM_PRIVATE }, + .vm_id = vm_id, + }; struct drm_i915_gem_create_ext_memory_regions ext_regions = { .base = { .name = I915_GEM_CREATE_EXT_MEMORY_REGIONS }, .num_regions = num_regions, @@ -208,6 +212,9 @@ int __gem_create_in_memory_region_list(int fd, uint32_t *handle, uint64_t *size, }; int ret; + if (vm_id) + ext_regions.base.next_extension = to_user_pointer(&vm_priv.base); + ret = __gem_create_ext(fd, size, flags, handle, &ext_regions.base); if (flags && ret == -EINVAL) ret = __gem_create_ext(fd, size, 0, handle, &ext_regions.base); @@ -230,15 +237,16 @@ int __gem_create_in_memory_region_list(int fd, uint32_t *handle, uint64_t *size, /* gem_create_in_memory_region_list: * @fd: opened i915 drm file descriptor * @size: requested size of the buffer + * @vm_id: vm_id for VM private Objects. 0 for non-private Objects. * @mem_regions: memory regions array (priority list) * @num_regions: @mem_regions length */ -uint32_t gem_create_in_memory_region_list(int fd, uint64_t size, uint32_t flags, +uint32_t gem_create_in_memory_region_list(int fd, uint64_t size, uint32_t flags, uint32_t vm_id, struct drm_i915_gem_memory_class_instance *mem_regions, int num_regions) { uint32_t handle; - int ret = __gem_create_in_memory_region_list(fd, &handle, &size, flags, + int ret = __gem_create_in_memory_region_list(fd, &handle, &size, flags, vm_id, mem_regions, num_regions); igt_assert_eq(ret, 0); return handle; |