[igt-dev] [PATCH i-g-t] tests/intel/xe_vm : Validate tile mask

janga.rahul.kumar at intel.com janga.rahul.kumar at intel.com
Thu Sep 14 10:21:56 UTC 2023


From: Janga Rahul Kumar <janga.rahul.kumar at intel.com>

Tile mask should be always less than or equal to tile count.

Cc: Stuart Summers <stuart.summers at intel.com>
Cc: Matt Roper <matthew.d.roper at intel.com>
Signed-off-by: Janga Rahul Kumar <janga.rahul.kumar at intel.com>
---
 tests/intel/xe_vm.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tests/intel/xe_vm.c b/tests/intel/xe_vm.c
index 4952ea786..3b11b8a68 100644
--- a/tests/intel/xe_vm.c
+++ b/tests/intel/xe_vm.c
@@ -10,6 +10,7 @@
  */
 
 #include "igt.h"
+#include "igt_sysfs.h"
 #include "lib/igt_syncobj.h"
 #include "lib/intel_reg.h"
 #include "xe_drm.h"
@@ -905,10 +906,11 @@ test_bind_array(int fd, struct drm_xe_engine_class_instance *eci, int n_execs,
 		uint64_t pad;
 		uint32_t data;
 	} *data;
-	int i, b;
+	int i, b, tile_count;
 
 	igt_assert(n_execs <= BIND_ARRAY_MAX_N_EXEC);
 
+	tile_count = xe_sysfs_get_num_tiles(fd);
 	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_ASYNC_BIND_OPS, 0);
 	bo_size = sizeof(*data) * n_execs;
 	bo_size = ALIGN(bo_size + xe_cs_prefetch_size(fd),
@@ -928,6 +930,10 @@ test_bind_array(int fd, struct drm_xe_engine_class_instance *eci, int n_execs,
 		bind_ops[i].range = bo_size;
 		bind_ops[i].addr = addr;
 		bind_ops[i].tile_mask = 0x1 << eci->gt_id;
+
+		if (bind_ops[i].tile_mask >= tile_count)
+			bind_ops[i].tile_mask = tile_count - 1;
+
 		bind_ops[i].op = XE_VM_BIND_OP_MAP | XE_VM_BIND_FLAG_ASYNC;
 		bind_ops[i].region = 0;
 		bind_ops[i].reserved[0] = 0;
-- 
2.25.1



More information about the igt-dev mailing list