[igt-dev] [PATCH i-g-t] tests/i915/gem_exec_faulting_reloc: Use a coherent mapping

Antonio Argenziano antonio.argenziano at intel.com
Sat Feb 1 00:11:35 UTC 2020


With mappable aperture not being available on some platforms, use a
different mapping. While this is changing a portion of the test, it
should keep intact the spirit of the same by submitting relocations to
faulting addresses.

Signed-off-by: Antonio Argenziano <antonio.argenziano at intel.com>
Cc: Chris Wilson <chris at chris-wilson.co.uk>
---
 tests/i915/gem_exec_faulting_reloc.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/tests/i915/gem_exec_faulting_reloc.c b/tests/i915/gem_exec_faulting_reloc.c
index c2aea039..82d67a68 100644
--- a/tests/i915/gem_exec_faulting_reloc.c
+++ b/tests/i915/gem_exec_faulting_reloc.c
@@ -39,12 +39,11 @@
 #include <sys/time.h>
 #include "drm.h"
 
-/* Testcase: Submit patches with relocations in memory that will fault
+/* Testcase: Submit batches with relocations in memory that will fault
  *
- * To be really evil, use a gtt mmap for them.
  */
 
-IGT_TEST_DESCRIPTION("Submit patches with relocations in memory that will"
+IGT_TEST_DESCRIPTION("Submit batches with relocations in memory that will"
 		     " fault.");
 
 #define OBJECT_SIZE 16384
@@ -111,7 +110,7 @@ static int gem_linear_blt(uint32_t *batch,
 			b += 8;
 		length -= height * 16*1024;
 	}
-	
+
 	if (length) {
 		int i = 0;
 		b[i++] = COPY_BLT_CMD_NOLEN | BLT_WRITE_ALPHA | BLT_WRITE_RGB;
@@ -167,7 +166,7 @@ static void run(int object_size)
 	struct drm_i915_gem_relocation_entry reloc[4];
 	uint32_t buf[40];
 	uint32_t handle, handle_relocs, src, dst;
-	void *gtt_relocs;
+	void *relocs;
 	int fd, len;
 	int ring;
 
@@ -203,7 +202,7 @@ static void run(int object_size)
 
 	handle_relocs = gem_create(fd, 4096);
 	gem_write(fd, handle_relocs, 0, reloc, sizeof(reloc));
-	gtt_relocs = gem_mmap__gtt(fd, handle_relocs, 4096,
+	relocs = gem_mmap__device_coherent(fd, handle_relocs, 0, 4096,
 				   PROT_READ | PROT_WRITE);
 
 	exec[2].handle = handle;
@@ -212,7 +211,7 @@ static void run(int object_size)
 	else
 		exec[2].relocation_count = len > 40 ? 4 : 2;
 	/* A newly mmap gtt bo will fault on first access. */
-	exec[2].relocs_ptr = to_user_pointer(gtt_relocs);
+	exec[2].relocs_ptr = to_user_pointer(relocs);
 	exec[2].alignment = 0;
 	exec[2].offset = 0;
 	exec[2].flags = 0;
-- 
2.21.0



More information about the igt-dev mailing list