summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2018-04-13 15:06:43 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2018-07-11 12:30:55 +0100
commitbe9296a1e1e4d288d4baee3aba89480f007dea6c (patch)
tree0846b79aee664a116092bc6f15efedf09729e9da /lib
parent4dc2ce0e362143d98cd2f95eea30b1173b861484 (diff)
lib/dummyload: Control whether or not the batch is preemptible
Sometimes, we do not want to allow control to escape from the spinner, e.g. for when we want to hang the GPU inside the batch. (Split out from the preempt-timeout test case.) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Antonio Argenziano <antonio.argenziano@intel.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/igt_dummyload.c5
-rw-r--r--lib/igt_dummyload.h7
2 files changed, 6 insertions, 6 deletions
diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c
index 7beb6624..2027a4b7 100644
--- a/lib/igt_dummyload.c
+++ b/lib/igt_dummyload.c
@@ -186,7 +186,8 @@ emit_recursive_batch(igt_spin_t *spin,
spin->handle = obj[BATCH].handle;
/* Allow ourselves to be preempted */
- *batch++ = MI_ARB_CHK;
+ if (!(opts->flags & IGT_SPIN_NO_PREEMPTION))
+ *batch++ = MI_ARB_CHK;
/* Pad with a few nops so that we do not completely hog the system.
*
@@ -379,8 +380,6 @@ void igt_spin_batch_end(igt_spin_t *spin)
if (!spin)
return;
- igt_assert(*spin->batch == MI_ARB_CHK ||
- *spin->batch == MI_BATCH_BUFFER_END);
*spin->batch = MI_BATCH_BUFFER_END;
__sync_synchronize();
}
diff --git a/lib/igt_dummyload.h b/lib/igt_dummyload.h
index e80a1245..38bc7682 100644
--- a/lib/igt_dummyload.h
+++ b/lib/igt_dummyload.h
@@ -50,9 +50,10 @@ struct igt_spin_factory {
unsigned int flags;
};
-#define IGT_SPIN_FENCE_OUT (1 << 0)
-#define IGT_SPIN_POLL_RUN (1 << 1)
-#define IGT_SPIN_FAST (1 << 2)
+#define IGT_SPIN_FENCE_OUT (1 << 0)
+#define IGT_SPIN_POLL_RUN (1 << 1)
+#define IGT_SPIN_FAST (1 << 2)
+#define IGT_SPIN_NO_PREEMPTION (1 << 3)
igt_spin_t *
__igt_spin_batch_factory(int fd, const struct igt_spin_factory *opts);