From c2c0efc21acac67a909b5047f9b100853a975ec7 Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Mon, 26 Aug 2013 10:26:00 +0200 Subject: [PATCH] tests/gem_mmap: Convert to subtests I wanted to write a testcase for gtt mmap access restriction checking and only noticed after conversion to subtests that this here is for cpu mmaps ;-) Signed-off-by: Daniel Vetter --- tests/Makefile.am | 2 +- tests/gem_mmap.c | 73 ++++++++++++++++++++++++++--------------------- 2 files changed, 41 insertions(+), 34 deletions(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index 9878a25b..4791625e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -30,6 +30,7 @@ TESTS_progs_M = \ gem_flink \ gem_flink_race \ gem_linear_blits \ + gem_mmap \ gem_mmap_gtt \ gem_partial_pwrite_pread \ gem_pread \ @@ -75,7 +76,6 @@ TESTS_progs = \ gem_hangcheck_forcewake \ gem_largeobject \ gem_lut_handle \ - gem_mmap \ gem_mmap_offset_exhaustion \ gem_pin \ gem_pipe_control_store_loop \ diff --git a/tests/gem_mmap.c b/tests/gem_mmap.c index 900c391a..939fd4c8 100644 --- a/tests/gem_mmap.c +++ b/tests/gem_mmap.c @@ -40,56 +40,63 @@ #include "drmtest.h" #define OBJECT_SIZE 16384 +int fd; +int handle; int main(int argc, char **argv) { - int fd; struct drm_i915_gem_mmap arg; uint8_t expected[OBJECT_SIZE]; uint8_t buf[OBJECT_SIZE]; uint8_t *addr; int ret; - int handle; - fd = drm_open_any(); + igt_subtest_init(argc, argv); - memset(&arg, 0, sizeof(arg)); - arg.handle = 0x10101010; - arg.offset = 0; - arg.size = 4096; - printf("Testing mmaping of bad object.\n"); - ret = ioctl(fd, DRM_IOCTL_I915_GEM_MMAP, &arg); - igt_assert(ret == -1 && errno == ENOENT); + igt_fixture + fd = drm_open_any(); - handle = gem_create(fd, OBJECT_SIZE); + igt_subtest("bad-object") { + memset(&arg, 0, sizeof(arg)); + arg.handle = 0x10101010; + arg.offset = 0; + arg.size = 4096; + ret = ioctl(fd, DRM_IOCTL_I915_GEM_MMAP, &arg); + igt_assert(ret == -1 && errno == ENOENT); + } - printf("Testing mmaping of newly created object.\n"); - arg.handle = handle; - arg.offset = 0; - arg.size = OBJECT_SIZE; - ret = ioctl(fd, DRM_IOCTL_I915_GEM_MMAP, &arg); - igt_assert(ret == 0); - addr = (uint8_t *)(uintptr_t)arg.addr_ptr; + igt_fixture + handle = gem_create(fd, OBJECT_SIZE); - printf("Testing contents of newly created object.\n"); - memset(expected, 0, sizeof(expected)); - igt_assert(memcmp(addr, expected, sizeof(expected)) == 0); + igt_subtest("new-object") { + arg.handle = handle; + arg.offset = 0; + arg.size = OBJECT_SIZE; + ret = ioctl(fd, DRM_IOCTL_I915_GEM_MMAP, &arg); + igt_assert(ret == 0); + addr = (uint8_t *)(uintptr_t)arg.addr_ptr; - printf("Testing coherency of writes and mmap reads.\n"); - memset(buf, 0, sizeof(buf)); - memset(buf + 1024, 0x01, 1024); - memset(expected + 1024, 0x01, 1024); - gem_write(fd, handle, 0, buf, OBJECT_SIZE); - igt_assert(memcmp(buf, addr, sizeof(buf)) == 0); + printf("Testing contents of newly created object.\n"); + memset(expected, 0, sizeof(expected)); + igt_assert(memcmp(addr, expected, sizeof(expected)) == 0); - printf("Testing that mapping stays after close\n"); - gem_close(fd, handle); - igt_assert(memcmp(buf, addr, sizeof(buf)) == 0); + printf("Testing coherency of writes and mmap reads.\n"); + memset(buf, 0, sizeof(buf)); + memset(buf + 1024, 0x01, 1024); + memset(expected + 1024, 0x01, 1024); + gem_write(fd, handle, 0, buf, OBJECT_SIZE); + igt_assert(memcmp(buf, addr, sizeof(buf)) == 0); - printf("Testing unmapping\n"); - munmap(addr, OBJECT_SIZE); + printf("Testing that mapping stays after close\n"); + gem_close(fd, handle); + igt_assert(memcmp(buf, addr, sizeof(buf)) == 0); - close(fd); + printf("Testing unmapping\n"); + munmap(addr, OBJECT_SIZE); + } + + igt_fixture + close(fd); return 0; }