All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] i915/gem_eio: 64 batches may be too many for some devices!
@ 2019-01-30 13:12 ` Chris Wilson
  0 siblings, 0 replies; 14+ messages in thread
From: Chris Wilson @ 2019-01-30 13:12 UTC (permalink / raw)
  To: intel-gfx; +Cc: igt-dev, Mika Kuoppala

Actually measure how many batches we can fit into a ring before
blocking, or else we may end up hanging the device earlier than
expected!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
---
 tests/i915/gem_eio.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c
index 09059c311..534bd1899 100644
--- a/tests/i915/gem_eio.c
+++ b/tests/i915/gem_eio.c
@@ -44,6 +44,7 @@
 #include "igt_device.h"
 #include "igt_sysfs.h"
 #include "sw_sync.h"
+#include "i915/gem_ring.h"
 
 IGT_TEST_DESCRIPTION("Test that specific ioctls report a wedged GPU (EIO).");
 
@@ -358,10 +359,15 @@ static void test_inflight(int fd, unsigned int wait)
 {
 	int parent_fd = fd;
 	unsigned int engine;
+	int max;
 
 	igt_require_gem(fd);
 	igt_require(gem_has_exec_fence(fd));
 
+	max = gem_measure_ring_inflight(fd, -1, 0);
+	igt_require(max > 1);
+	max = min(max - 1, 64);
+
 	for_each_engine(parent_fd, engine) {
 		const uint32_t bbe = MI_BATCH_BUFFER_END;
 		struct drm_i915_gem_exec_object2 obj[2];
@@ -389,7 +395,7 @@ static void test_inflight(int fd, unsigned int wait)
 		execbuf.buffer_count = 2;
 		execbuf.flags = engine | I915_EXEC_FENCE_OUT;
 
-		for (unsigned int n = 0; n < ARRAY_SIZE(fence); n++) {
+		for (unsigned int n = 0; n < max; n++) {
 			gem_execbuf_wr(fd, &execbuf);
 			fence[n] = execbuf.rsvd2 >> 32;
 			igt_assert(fence[n] != -1);
@@ -397,7 +403,7 @@ static void test_inflight(int fd, unsigned int wait)
 
 		check_wait(fd, obj[1].handle, wait);
 
-		for (unsigned int n = 0; n < ARRAY_SIZE(fence); n++) {
+		for (unsigned int n = 0; n < max; n++) {
 			igt_assert_eq(sync_fence_status(fence[n]), -EIO);
 			close(fence[n]);
 		}
@@ -418,6 +424,11 @@ static void test_inflight_suspend(int fd)
 	uint32_t bbe = MI_BATCH_BUFFER_END;
 	int fence[64]; /* conservative estimate of ring size */
 	igt_spin_t *hang;
+	int max;
+
+	max = gem_measure_ring_inflight(fd, -1, 0);
+	igt_require(max > 1);
+	max = min(max - 1, 64);
 
 	fd = gem_reopen_driver(fd);
 	igt_require_gem(fd);
@@ -437,7 +448,7 @@ static void test_inflight_suspend(int fd)
 	execbuf.buffer_count = 2;
 	execbuf.flags = I915_EXEC_FENCE_OUT;
 
-	for (unsigned int n = 0; n < ARRAY_SIZE(fence); n++) {
+	for (unsigned int n = 0; n < max; n++) {
 		gem_execbuf_wr(fd, &execbuf);
 		fence[n] = execbuf.rsvd2 >> 32;
 		igt_assert(fence[n] != -1);
@@ -448,7 +459,7 @@ static void test_inflight_suspend(int fd)
 
 	check_wait(fd, obj[1].handle, 10);
 
-	for (unsigned int n = 0; n < ARRAY_SIZE(fence); n++) {
+	for (unsigned int n = 0; n < max; n++) {
 		igt_assert_eq(sync_fence_status(fence[n]), -EIO);
 		close(fence[n]);
 	}
-- 
2.20.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2019-01-30 17:35 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-30 13:12 [igt-dev] [PATCH i-g-t] i915/gem_eio: 64 batches may be too many for some devices! Chris Wilson
2019-01-30 13:12 ` Chris Wilson
2019-01-30 14:10 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2019-01-30 14:13 ` [igt-dev] [Intel-gfx] [PATCH i-g-t] " Mika Kuoppala
2019-01-30 14:13   ` Mika Kuoppala
2019-01-30 14:18   ` [igt-dev] [Intel-gfx] " Chris Wilson
2019-01-30 14:18     ` Chris Wilson
2019-01-30 14:21 ` [igt-dev] " Chris Wilson
2019-01-30 14:21   ` Chris Wilson
2019-01-30 14:27   ` [igt-dev] [Intel-gfx] " Mika Kuoppala
2019-01-30 14:27     ` Mika Kuoppala
2019-01-30 15:00 ` [igt-dev] ✓ Fi.CI.BAT: success for i915/gem_eio: 64 batches may be too many for some devices! (rev2) Patchwork
2019-01-30 16:24 ` [igt-dev] ✓ Fi.CI.IGT: success for i915/gem_eio: 64 batches may be too many for some devices! Patchwork
2019-01-30 17:35 ` [igt-dev] ✓ Fi.CI.IGT: success for i915/gem_eio: 64 batches may be too many for some devices! (rev2) Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.