From 790c1b18ca0815ca14b320e3b4d9e262fe46f1a4 Mon Sep 17 00:00:00 2001 From: Adam Miszczak Date: Fri, 1 Jul 2022 16:05:43 -0700 Subject: lib/vm_bind: Add interface to support VM_BIND Add required library interfaces to support VM_BIND functionality. Signed-off-by: Niranjana Vishwanathapura --- lib/i915/intel_memory_region.h | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'lib/i915/intel_memory_region.h') diff --git a/lib/i915/intel_memory_region.h b/lib/i915/intel_memory_region.h index e1bfe0ca..421c2ecf 100644 --- a/lib/i915/intel_memory_region.h +++ b/lib/i915/intel_memory_region.h @@ -64,11 +64,11 @@ unsigned int gem_get_lmem_region_count(int fd); bool gem_has_lmem(int fd); -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); -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); @@ -84,7 +84,7 @@ uint32_t gem_create_in_memory_region_list(int fd, uint64_t size, uint32_t flags, arr_query__[i__].memory_class = MEMORY_TYPE_FROM_REGION(arr__[i__]); \ arr_query__[i__].memory_instance = MEMORY_INSTANCE_FROM_REGION(arr__[i__]); \ } \ - __gem_create_in_memory_region_list(fd, handle, size, 0, arr_query__, ARRAY_SIZE(arr_query__)); \ + __gem_create_in_memory_region_list(fd, handle, size, 0, 0, arr_query__, ARRAY_SIZE(arr_query__)); \ }) #define gem_create_in_memory_regions(fd, size, regions...) ({ \ unsigned int arr__[] = { regions }; \ @@ -93,7 +93,7 @@ uint32_t gem_create_in_memory_region_list(int fd, uint64_t size, uint32_t flags, arr_query__[i__].memory_class = MEMORY_TYPE_FROM_REGION(arr__[i__]); \ arr_query__[i__].memory_instance = MEMORY_INSTANCE_FROM_REGION(arr__[i__]); \ } \ - gem_create_in_memory_region_list(fd, size, 0, arr_query__, ARRAY_SIZE(arr_query__)); \ + gem_create_in_memory_region_list(fd, size, 0, 0, arr_query__, ARRAY_SIZE(arr_query__)); \ }) /* @@ -131,7 +131,7 @@ uint32_t gem_create_in_memory_region_list(int fd, uint64_t size, uint32_t flags, arr_query__[i__].memory_instance = 0; \ arr_query_size__++; \ } \ - __gem_create_in_memory_region_list(fd, handle, size, ext_flags__, arr_query__, arr_query_size__); \ + __gem_create_in_memory_region_list(fd, handle, size, ext_flags__, 0, arr_query__, arr_query_size__); \ }) #define gem_create_with_cpu_access_in_memory_regions(fd, size, regions...) ({ \ unsigned int arr__[] = { regions }; \ @@ -152,7 +152,16 @@ uint32_t gem_create_in_memory_region_list(int fd, uint64_t size, uint32_t flags, arr_query__[i__].memory_instance = 0; \ arr_query_size__++; \ } \ - gem_create_in_memory_region_list(fd, size, ext_flags__, arr_query__, arr_query_size__); \ + gem_create_in_memory_region_list(fd, size, ext_flags__, 0, arr_query__, arr_query_size__); \ +}) +#define gem_create_vm_private_in_memory_regions(fd, size, vm_id, regions...) ({ \ + unsigned int arr__[] = { regions }; \ + struct drm_i915_gem_memory_class_instance arr_query__[ARRAY_SIZE(arr__)]; \ + for (int i__ = 0; i__ < ARRAY_SIZE(arr_query__); ++i__) { \ + arr_query__[i__].memory_class = MEMORY_TYPE_FROM_REGION(arr__[i__]); \ + arr_query__[i__].memory_instance = MEMORY_INSTANCE_FROM_REGION(arr__[i__]); \ + } \ + gem_create_in_memory_region_list(fd, size, 0, vm_id, arr_query__, ARRAY_SIZE(arr_query__)); \ }) struct igt_collection * -- cgit v1.2.3