On Fri, Jan 02, 2015 at 04:33:34PM +0530, akash.goel@xxxxxxxxx wrote: > From: Akash Goel <akash.goel@xxxxxxxxx> > > A new subtest added to validate the new version of gem_mmap ioctl, > for creating the wc mappings, on yet to be supported flags. > > v2: Removed the flags checking for older kernels (Daniel) > > Signed-off-by: Akash Goel <akash.goel@xxxxxxxxx> > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > --- > tests/gem_mmap_wc.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 52 insertions(+) > > diff --git a/tests/gem_mmap_wc.c b/tests/gem_mmap_wc.c > index 87140ff..4881ab7 100644 > --- a/tests/gem_mmap_wc.c > +++ b/tests/gem_mmap_wc.c > @@ -41,6 +41,17 @@ > #include "drmtest.h" > #include "igt_debugfs.h" > > +struct local_i915_gem_mmap_v2 { > + uint32_t handle; > + uint32_t pad; > + uint64_t offset; > + uint64_t size; > + uint64_t addr_ptr; > + uint64_t flags; > +#define I915_MMAP_WC 0x1 > +}; > +#define LOCAL_IOCTL_I915_GEM_MMAP_v2 DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP, struct local_i915_gem_mmap_v2) > + > static int OBJECT_SIZE = 16*1024*1024; > > static void set_domain(int fd, uint32_t handle) > @@ -76,6 +87,45 @@ create_pointer(int fd) > } > > static void > +test_invalid_flags(int fd) > +{ > + struct drm_i915_getparam gp; > + struct local_i915_gem_mmap_v2 arg; > + uint64_t flag = I915_MMAP_WC; > + int val = -1; > + > + memset(&arg, 0, sizeof(arg)); > + arg.handle = gem_create(fd, 4096); > + arg.offset = 0; > + arg.size = 4096; > + > + memset(&gp, 0, sizeof(gp)); > + gp.param = 30; /* MMAP_VERSION */ > + gp.value = &val; > + > + /* Do we have the new mmap_ioctl? */ > + do_ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp); > + > + if (val >= 1) { > + /* > + * Only MMAP_WC flag is supported in version 1, so any other > + * flag should be rejected. > + */ > + flag <<= 1; > + while (flag) { > + arg.flags = flag; > + igt_assert(drmIoctl(fd, > + LOCAL_IOCTL_I915_GEM_MMAP_v2, > + &arg) == -1); > + igt_assert_eq(errno, EINVAL); > + flag <<= 1; > + } > + } > + > + gem_close(fd, arg.handle); > +} > + > +static void > test_copy(int fd) > { > void *src, *dst; > @@ -336,6 +386,8 @@ igt_main > igt_fixture > fd = drm_open_any(); > > + igt_subtest("invalid flags") subtest names shouldn't have spaces (it might confuse our tooling). We use a dash instead. I've fixed that up while applying. Thanks for the patches, all merged. -Daniel > + test_invalid_flags(fd); > igt_subtest("copy") > test_copy(fd); > igt_subtest("read") > -- > 1.9.2 > -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx