All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH igt 1/5] lib/dummyload: Avoid assertions in lowlevel spin constructor
@ 2018-02-28 15:51 ` Chris Wilson
  0 siblings, 0 replies; 32+ messages in thread
From: Chris Wilson @ 2018-02-28 15:51 UTC (permalink / raw)
  To: intel-gfx; +Cc: igt-dev

__igt_spin_batch_new() may be used inside a background helper which is
competing against the GPU being reset. As such, we cannot even assert
that the spin->handle is busy immediately after submission as it may
have already been reset by another client writing to i915_wedged.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 lib/igt_dummyload.c | 17 ++++++++++++++---
 tests/pm_rps.c      |  4 +++-
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c
index ddd43451..4b20f23d 100644
--- a/lib/igt_dummyload.c
+++ b/lib/igt_dummyload.c
@@ -25,6 +25,7 @@
 #include <time.h>
 #include <signal.h>
 #include <pthread.h>
+#include <sys/poll.h>
 
 #include <i915_drm.h>
 
@@ -207,7 +208,6 @@ ___igt_spin_batch_new(int fd, uint32_t ctx, unsigned engine, uint32_t dep,
 
 	spin->out_fence = emit_recursive_batch(spin, fd, ctx, engine, dep,
 					       out_fence);
-	igt_assert(gem_bo_busy(fd, spin->handle));
 
 	pthread_mutex_lock(&list_lock);
 	igt_list_add(&spin->link, &spin_list);
@@ -240,9 +240,14 @@ __igt_spin_batch_new(int fd, uint32_t ctx, unsigned engine, uint32_t dep)
 igt_spin_t *
 igt_spin_batch_new(int fd, uint32_t ctx, unsigned engine, uint32_t dep)
 {
+	igt_spin_t *spin;
+
 	igt_require_gem(fd);
 
-	return __igt_spin_batch_new(fd, ctx, engine, dep);
+	spin = __igt_spin_batch_new(fd, ctx, engine, dep);
+	igt_assert(gem_bo_busy(fd, spin->handle));
+
+	return spin;
 }
 
 igt_spin_t *
@@ -269,10 +274,16 @@ __igt_spin_batch_new_fence(int fd, uint32_t ctx, unsigned engine)
 igt_spin_t *
 igt_spin_batch_new_fence(int fd, uint32_t ctx, unsigned engine)
 {
+	igt_spin_t *spin;
+
 	igt_require_gem(fd);
 	igt_require(gem_has_exec_fence(fd));
 
-	return __igt_spin_batch_new_fence(fd, ctx, engine);
+	spin = __igt_spin_batch_new_fence(fd, ctx, engine);
+	igt_assert(gem_bo_busy(fd, spin->handle));
+	igt_assert(poll(&(struct pollfd){spin->out_fence, POLLIN}, 1, 0) == 0);
+
+	return spin;
 }
 
 static void notify(union sigval arg)
diff --git a/tests/pm_rps.c b/tests/pm_rps.c
index f71976ed..006d084b 100644
--- a/tests/pm_rps.c
+++ b/tests/pm_rps.c
@@ -221,6 +221,8 @@ static void load_helper_run(enum load load)
 		return;
 	}
 
+	igt_require_gem(drm_fd);
+
 	lh.exit = false;
 	lh.load = load;
 
@@ -233,7 +235,7 @@ static void load_helper_run(enum load load)
 
 		igt_debug("Applying %s load...\n", lh.load ? "high" : "low");
 
-		spin[0] = igt_spin_batch_new(drm_fd, 0, 0, 0);
+		spin[0] = __igt_spin_batch_new(drm_fd, 0, 0, 0);
 		if (lh.load == HIGH)
 			spin[1] = __igt_spin_batch_new(drm_fd, 0, 0, 0);
 		while (!lh.exit) {
-- 
2.16.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

end of thread, other threads:[~2018-03-05  9:52 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-28 15:51 [PATCH igt 1/5] lib/dummyload: Avoid assertions in lowlevel spin constructor Chris Wilson
2018-02-28 15:51 ` [igt-dev] " Chris Wilson
2018-02-28 15:51 ` [PATCH igt 2/5] igt/gem_spin_batch: Avoid waiting when running concurrently Chris Wilson
2018-02-28 15:51   ` [igt-dev] " Chris Wilson
2018-03-03 10:15   ` Chris Wilson
2018-03-03 10:15     ` [Intel-gfx] " Chris Wilson
2018-03-05  9:52   ` [igt-dev] " Michał Winiarski
2018-03-05  9:52     ` [Intel-gfx] " Michał Winiarski
2018-02-28 15:51 ` [PATCH igt 3/5] igt/gem_ctx_switch: Exercise all engines at once Chris Wilson
2018-02-28 15:51   ` [Intel-gfx] " Chris Wilson
2018-02-28 19:10   ` [igt-dev] " Antonio Argenziano
2018-02-28 19:10     ` Antonio Argenziano
2018-03-01  7:51   ` [PATCH igt v2] " Chris Wilson
2018-03-01  7:51     ` [Intel-gfx] " Chris Wilson
2018-03-01 16:09     ` Antonio Argenziano
2018-03-01 16:09       ` [igt-dev] " Antonio Argenziano
2018-02-28 15:51 ` [PATCH igt 4/5] igt/gem_exec_capture: Exercise readback of userptr Chris Wilson
2018-02-28 15:51   ` [Intel-gfx] " Chris Wilson
2018-03-01 11:21   ` Michał Winiarski
2018-03-01 11:21     ` [igt-dev] [Intel-gfx] " Michał Winiarski
2018-02-28 15:51 ` [PATCH igt 5/5] igt/gem_exec_fence: Exercise merging fences Chris Wilson
2018-02-28 15:51   ` [igt-dev] " Chris Wilson
2018-02-28 22:44   ` Antonio Argenziano
2018-02-28 22:44     ` Antonio Argenziano
2018-03-01  7:12     ` Chris Wilson
2018-03-01  7:12       ` Chris Wilson
2018-02-28 17:14 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [1/5] lib/dummyload: Avoid assertions in lowlevel spin constructor Patchwork
2018-02-28 21:33 ` [igt-dev] ✗ Fi.CI.IGT: warning " Patchwork
2018-03-01  7:28 ` [igt-dev] [PATCH igt 1/5] " Abdiel Janulgue
2018-03-01  7:28   ` Abdiel Janulgue
2018-03-01  8:54 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [1/5] lib/dummyload: Avoid assertions in lowlevel spin constructor (rev2) Patchwork
2018-03-01 10:52 ` [igt-dev] ✗ Fi.CI.IGT: warning " 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.