@@ -199,7 +199,8 @@ emit_recursive_batch(igt_spin_t *spin,
* between function calls, that appears enough to keep SNB out of
* trouble. See https://bugs.freedesktop.org/show_bug.cgi?id=102262
*/
- batch += 1000;
+ if (!(opts->flags & IGT_SPIN_FAST))
+ batch += 1000;
/* recurse */
r = &relocs[obj[BATCH].relocation_count++];
@@ -52,6 +52,7 @@ struct igt_spin_factory {
#define IGT_SPIN_FENCE_OUT (1 << 0)
#define IGT_SPIN_POLL_RUN (1 << 1)
+#define IGT_SPIN_FAST (1 << 2)
igt_spin_t *
__igt_spin_batch_factory(int fd, const struct igt_spin_factory *opts);
@@ -560,6 +560,7 @@ static void inject_reset_context(int fd, unsigned int engine)
struct igt_spin_factory opts = {
.ctx = gem_context_create(fd),
.engine = engine,
+ .flags = IGT_SPIN_FAST,
};
igt_spin_t *spin;
@@ -160,6 +160,7 @@ static igt_spin_t * __spin_poll(int fd, uint32_t ctx, unsigned long flags)
struct igt_spin_factory opts = {
.ctx = ctx,
.engine = flags,
+ .flags = IGT_SPIN_FAST,
};
if (gem_can_store_dword(fd, opts.engine))
@@ -65,7 +65,7 @@ poll_ring(int fd, unsigned ring, const char *name)
{
const struct igt_spin_factory opts = {
.engine = ring,
- .flags = IGT_SPIN_POLL_RUN,
+ .flags = IGT_SPIN_POLL_RUN | IGT_SPIN_FAST,
};
struct timespec tv = {};
unsigned long cycles;
@@ -464,7 +464,7 @@ rthog_latency_on_ring(int fd, unsigned int engine, const char *name, unsigned in
#define MMAP_SZ (64 << 10)
const struct igt_spin_factory opts = {
.engine = engine,
- .flags = IGT_SPIN_POLL_RUN,
+ .flags = IGT_SPIN_POLL_RUN | IGT_SPIN_FAST,
};
struct rt_pkt *results;
unsigned int engines[16];