[Intel-gfx] [PATCH igt] igt/gem_evict_(alignment, everything): Limit to low 4G

Chris Wilson chris at chris-wilson.co.uk
Tue Aug 15 10:34:30 UTC 2017


These tests do not tell the kernel they can use the upper 48bits of
aperture space, and cause eviction on the low 4G just as effectively
exercising the evict code.

Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
 tests/gem_evict_alignment.c  | 35 +++++++++++++++++++++++++++++------
 tests/gem_evict_everything.c | 33 +++++++++++++++++++++++++++------
 2 files changed, 56 insertions(+), 12 deletions(-)

diff --git a/tests/gem_evict_alignment.c b/tests/gem_evict_alignment.c
index a5dfd0d9..8e6180bb 100644
--- a/tests/gem_evict_alignment.c
+++ b/tests/gem_evict_alignment.c
@@ -196,29 +196,46 @@ igt_main
 	igt_fixture {
 		fd = drm_open_driver(DRIVER_INTEL);
 		igt_require_gem(fd);
+		igt_fork_hang_detector(fd);
 	}
 
 	igt_subtest("minor-normal") {
 		size = 1024 * 1024;
-		count = 3*gem_aperture_size(fd) / size / 4;
+		count = gem_aperture_size(fd);
+		if (count >> 32)
+			count = 1 << 32;
+		count = 3 * count / size / 4;
 		minor_evictions(fd, size, count);
 	}
 
 	igt_subtest("major-normal") {
-		size = 3*gem_aperture_size(fd) / 4;
+		size = gem_aperture_size(fd);
+		if (size >> 32)
+			size = 1 << 32;
+		size = 3 * size / 4;
 		count = 4;
 		major_evictions(fd, size, count);
 	}
 
+	igt_fixture {
+		igt_stop_hang_detector();
+	}
+
 	igt_fork_signal_helper();
 	igt_subtest("minor-interruptible") {
 		size = 1024 * 1024;
-		count = 3*gem_aperture_size(fd) / size / 4;
+		count = gem_aperture_size(fd);
+		if (count >> 32)
+			count = 1 << 32;
+		count = 3 * count / size / 4;
 		minor_evictions(fd, size, count);
 	}
 
 	igt_subtest("major-interruptible") {
-		size = 3*gem_aperture_size(fd) / 4;
+		size = gem_aperture_size(fd);
+		if (size >> 32)
+			size = 1 << 32;
+		size = 3 * size / 4;
 		count = 4;
 		major_evictions(fd, size, count);
 	}
@@ -226,12 +243,18 @@ igt_main
 	igt_subtest("minor-hang") {
 		igt_fork_hang_helper();
 		size = 1024 * 1024;
-		count = 3*gem_aperture_size(fd) / size / 4;
+		count = gem_aperture_size(fd);
+		if (count >> 32)
+			count = 1 << 32;
+		count = 3 * count / size / 4;
 		minor_evictions(fd, size, count);
 	}
 
 	igt_subtest("major-hang") {
-		size = 3*gem_aperture_size(fd) / 4;
+		size = gem_aperture_size(fd);
+		if (size >> 32)
+			size = 1 << 32;
+		size = 3 * size / 4;
 		count = 4;
 		major_evictions(fd, size, count);
 	}
diff --git a/tests/gem_evict_everything.c b/tests/gem_evict_everything.c
index 2f93cde1..6aec7c18 100644
--- a/tests/gem_evict_everything.c
+++ b/tests/gem_evict_everything.c
@@ -185,7 +185,12 @@ igt_main
 		igt_require_gem(fd);
 
 		size = 1024 * 1024;
-		count = 3*gem_aperture_size(fd) / size / 4;
+		count = gem_aperture_size(fd);
+		if (count >> 32)
+			count = 1 << 32;
+		count = 3 * count / size / 4;
+
+		igt_fork_hang_detector(fd);
 	}
 
 	for (unsigned flags = 0; flags < ALL_FORKING_EVICTIONS + 1; flags++) {
@@ -210,14 +215,20 @@ igt_main
 		test_minor_evictions(fd, size, count);
 
 	igt_subtest("major-normal") {
-		size = 3*gem_aperture_size(fd) / 4;
+		size = gem_aperture_size(fd);
+		if (size >> 32)
+			size = 1 << 32;
+		size = 3 * size / 4;
 		count = 4;
 		test_major_evictions(fd, size, count);
 	}
 
 	igt_fixture {
 		size = 1024 * 1024;
-		count = 3*gem_aperture_size(fd) / size / 4;
+		count = gem_aperture_size(fd);
+		if (count >> 32)
+			count = 1 << 32;
+		count = 3 * count / size / 4;
 	}
 
 	igt_fork_signal_helper();
@@ -232,16 +243,23 @@ igt_main
 		test_minor_evictions(fd, size, count);
 
 	igt_subtest("major-interruptible") {
-		size = 3*gem_aperture_size(fd) / 4;
+		size = gem_aperture_size(fd);
+		if (size >> 32)
+			size = 1 << 32;
+		size = 3 * size / 4;
 		count = 4;
 		test_major_evictions(fd, size, count);
 	}
 
 	igt_fixture {
+		igt_stop_hang_detector();
 		igt_fork_hang_helper();
 
 		size = 1024 * 1024;
-		count = 3*gem_aperture_size(fd) / size / 4;
+		count = gem_aperture_size(fd);
+		if (count >> 32)
+			count = 1 << 32;
+		count = 3 * count / size / 4;
 	}
 
 	igt_subtest("mlocked-hang")
@@ -254,7 +272,10 @@ igt_main
 		test_minor_evictions(fd, size, count);
 
 	igt_subtest("major-hang") {
-		size = 3*gem_aperture_size(fd) / 4;
+		size = gem_aperture_size(fd);
+		if (size >> 32)
+			size = 1 << 32;
+		size = 3 * size / 4;
 		count = 4;
 		test_major_evictions(fd, size, count);
 	}
-- 
2.13.3



More information about the Intel-gfx mailing list