Exercise the gtt mmap revocation for a reset on a busy object.

Signed-off-by: Chris Wilson <[email protected]>
---
 tests/i915/gem_mmap_gtt.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
index 3cce19e9a..2a0f2311f 100644
--- a/tests/i915/gem_mmap_gtt.c
+++ b/tests/i915/gem_mmap_gtt.c
@@ -45,6 +45,7 @@
 #include "igt.h"
 #include "igt_sysfs.h"
 #include "igt_x86.h"
+#include "sw_sync.h"
 
 #ifndef PAGE_SIZE
 #define PAGE_SIZE 4096
@@ -729,6 +730,38 @@ test_hang(int fd)
        igt_disallow_hang(fd, hang);
 }
 
+static void
+test_hang_busy(int i915)
+{
+       igt_spin_t *spin;
+       igt_hang_t hang;
+       uint32_t *ptr, *x;
+
+       hang = igt_allow_hang(i915, 0, 0);
+       igt_require(igt_params_set(i915, "reset", "1")); /* global */
+
+       spin = igt_spin_new(i915, .flags = IGT_SPIN_POLL_RUN | 
IGT_SPIN_FENCE_OUT);
+       igt_spin_busywait_until_started(spin);
+
+       /* Fault in the busy object */
+       ptr = gem_mmap__gtt(i915, spin->handle, 4096, PROT_READ);
+       x = ptr + ((uintptr_t)spin->condition & 4095) / sizeof(*ptr);
+       igt_assert_eq_u32(*x, spin->cmd_precondition);
+
+       igt_assert(gem_bo_busy(i915, spin->handle));
+       igt_force_gpu_reset(i915);
+
+       /* Check we reset the busy mmap */
+       gem_sync(i915, spin->handle);
+       igt_assert_eq(sync_fence_status(spin->out_fence), -5);
+
+       igt_assert_eq_u32(*x, spin->cmd_precondition);
+       munmap(ptr, 4096);
+
+       igt_spin_free(i915, spin);
+       igt_disallow_hang(i915, hang);
+}
+
 static int min_tile_width(uint32_t devid, int tiling)
 {
        if (tiling < 0) {
@@ -1183,6 +1216,8 @@ igt_main
                test_clflush(fd);
        igt_subtest("hang")
                test_hang(fd);
+       igt_subtest("hang-busy")
+               test_hang_busy(fd);
        igt_subtest("basic-read-write")
                test_read_write(fd, READ_BEFORE_WRITE);
        igt_subtest("basic-write-read")
-- 
2.29.2

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to