[igt-dev] [PATCH i-g-t] i915/gem_mmap_gtt: Check that the initial pagefault is non-blocking
Chris Wilson
chris at chris-wilson.co.uk
Mon Mar 18 08:58:15 UTC 2019
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
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 107218864..fa25912bf 100644
--- a/tests/i915/gem_mmap_gtt.c
+++ b/tests/i915/gem_mmap_gtt.c
@@ -289,6 +289,39 @@ test_wc(int fd)
5*gtt_writes/256., 5*cpu_writes/256.);
}
+static int mmap_gtt_version(int i915)
+{
+ int val = 0;
+ struct drm_i915_getparam gp = {
+ gp.param = 40, /* MMAP_GTT_VERSION */
+ gp.value = &val,
+ };
+
+ ioctl(i915, DRM_IOCTL_I915_GETPARAM, &gp);
+ return val;
+}
+
+static void
+test_pf_nonblock(int i915)
+{
+ igt_spin_t *spin;
+ uint32_t *ptr;
+
+ //igt_require(mmap_gtt_version(i915) >= 3);
+
+ spin = igt_spin_batch_new(i915);
+
+ igt_set_timeout(1, "initial pagefaulting did not complete within 1s");
+
+ ptr = gem_mmap__gtt(i915, spin->handle, 4096, PROT_WRITE);
+ ptr[256] = 0;
+ munmap(ptr, 4096);
+
+ igt_reset_timeout();
+
+ igt_spin_batch_free(i915, spin);
+}
+
static void
test_write_gtt(int fd)
{
@@ -962,6 +995,8 @@ igt_main
test_write_cpu_read_gtt(fd);
igt_subtest("basic-wc")
test_wc(fd);
+ igt_subtest("pf-nonblock")
+ test_pf_nonblock(fd);
igt_subtest("basic-small-bo")
test_huge_bo(fd, -1, I915_TILING_NONE);
--
2.20.1
More information about the igt-dev
mailing list