[PATCH i-g-t 08/36] tests/gem_busy: Use allocator for no-reloc path
Zbigniew Kempczyński
zbigniew.kempczynski at intel.com
Tue Jun 22 03:46:06 UTC 2021
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
---
tests/i915/gem_busy.c | 35 +++++++++++++++++++++++++++++++----
1 file changed, 31 insertions(+), 4 deletions(-)
diff --git a/tests/i915/gem_busy.c b/tests/i915/gem_busy.c
index dc481f3c5..833f05cce 100644
--- a/tests/i915/gem_busy.c
+++ b/tests/i915/gem_busy.c
@@ -105,6 +105,7 @@ static void semaphore(int fd, const struct intel_execution_engine2 *e)
uint32_t handle[3];
uint32_t read, write;
uint32_t active;
+ uint64_t ahnd = get_reloc_ahnd(fd, 0);
unsigned i;
handle[TEST] = gem_create(fd, 4096);
@@ -114,6 +115,7 @@ static void semaphore(int fd, const struct intel_execution_engine2 *e)
/* Create a long running batch which we can use to hog the GPU */
handle[BUSY] = gem_create(fd, 4096);
spin = igt_spin_new(fd,
+ .ahnd = ahnd,
.engine = e->flags,
.dependency = handle[BUSY]);
@@ -166,8 +168,10 @@ static void one(int fd, const struct intel_execution_engine2 *e, unsigned test_f
struct timespec tv;
igt_spin_t *spin;
int timeout;
+ uint64_t ahnd = get_reloc_ahnd(fd, 0);
spin = igt_spin_new(fd,
+ .ahnd = ahnd,
.engine = e->flags,
.dependency = scratch,
.flags = (test_flags & HANG) ? IGT_SPIN_NO_PREEMPTION : 0);
@@ -219,6 +223,7 @@ static void one(int fd, const struct intel_execution_engine2 *e, unsigned test_f
igt_spin_free(fd, spin);
gem_close(fd, scratch);
+ put_ahnd(ahnd);
}
static void xchg_u32(void *array, unsigned i, unsigned j)
@@ -291,11 +296,13 @@ static void close_race(int fd)
struct sched_param rt = {.sched_priority = 99 };
igt_spin_t *spin[nhandles];
unsigned long count = 0;
+ uint64_t ahnd = get_reloc_ahnd(fd, 0);
igt_assert(sched_setscheduler(getpid(), SCHED_RR, &rt) == 0);
for (i = 0; i < nhandles; i++) {
spin[i] = __igt_spin_new(fd,
+ .ahnd = ahnd,
.engine = engines[rand() % nengine]);
handles[i] = spin[i]->handle;
}
@@ -304,6 +311,7 @@ static void close_race(int fd)
for (i = 0; i < nhandles; i++) {
igt_spin_free(fd, spin[i]);
spin[i] = __igt_spin_new(fd,
+ .ahnd = ahnd,
.engine = engines[rand() % nengine]);
handles[i] = spin[i]->handle;
__sync_synchronize();
@@ -315,6 +323,7 @@ static void close_race(int fd)
for (i = 0; i < nhandles; i++)
igt_spin_free(fd, spin[i]);
+ put_ahnd(ahnd);
}
igt_waitchildren();
@@ -346,19 +355,23 @@ static bool has_semaphores(int fd)
static bool has_extended_busy_ioctl(int fd)
{
- igt_spin_t *spin = igt_spin_new(fd, .engine = I915_EXEC_DEFAULT);
+ uint64_t ahnd = get_reloc_ahnd(fd, 0);
+ igt_spin_t *spin = igt_spin_new(fd, .ahnd = ahnd, .engine = I915_EXEC_DEFAULT);
uint32_t read, write;
__gem_busy(fd, spin->handle, &read, &write);
igt_spin_free(fd, spin);
+ put_ahnd(ahnd);
return read != 0;
}
static void basic(int fd, const struct intel_execution_engine2 *e, unsigned flags)
{
+ uint64_t ahnd = get_reloc_ahnd(fd, 0);
igt_spin_t *spin =
igt_spin_new(fd,
+ .ahnd = ahnd,
.engine = e->flags,
.flags = flags & HANG ?
IGT_SPIN_NO_PREEMPTION | IGT_SPIN_INVALID_CS : 0);
@@ -383,6 +396,7 @@ static void basic(int fd, const struct intel_execution_engine2 *e, unsigned flag
}
igt_spin_free(fd, spin);
+ put_ahnd(ahnd);
}
static void all(int i915)
@@ -415,6 +429,7 @@ igt_main
igt_subtest_group {
igt_fixture {
+ intel_allocator_multiprocess_start();
igt_fork_hang_detector(fd);
}
@@ -432,6 +447,21 @@ igt_main
}
}
+ igt_subtest("close-race")
+ close_race(fd);
+
+ igt_fixture {
+ igt_stop_hang_detector();
+ intel_allocator_multiprocess_stop();
+ }
+ }
+
+
+ igt_subtest_group {
+ igt_fixture {
+ igt_fork_hang_detector(fd);
+ }
+
igt_subtest_group {
igt_fixture {
igt_require(has_extended_busy_ioctl(fd));
@@ -464,9 +494,6 @@ igt_main
}
}
- igt_subtest("close-race")
- close_race(fd);
-
igt_fixture {
igt_stop_hang_detector();
}
--
2.26.0
More information about the Intel-gfx-trybot
mailing list