diff options
author | Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> | 2020-01-28 10:00:22 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2020-01-29 10:18:15 +0000 |
commit | 5e7f677dac9c01906f43360fc2023b036ccef9d8 (patch) | |
tree | 9bfb3bf9ac830898e74594d1c32356f76e0f89a7 /tests/i915/gem_tiled_wc.c | |
parent | 0f6ca73e0efd7b4ebd054be47a27807c25c8df14 (diff) |
tests/i915/gem_tiled_wc: skip on platforms without GGTT
On platforms without aperture ensure test is skipped. Localize
GEM_MMAP ioctl() to make sure this interface is tested.
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'tests/i915/gem_tiled_wc.c')
-rw-r--r-- | tests/i915/gem_tiled_wc.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/tests/i915/gem_tiled_wc.c b/tests/i915/gem_tiled_wc.c index 845ec228..bbfc1568 100644 --- a/tests/i915/gem_tiled_wc.c +++ b/tests/i915/gem_tiled_wc.c @@ -54,6 +54,37 @@ static int tile_width; static int tile_height; static int tile_size; +static int mmap_ioctl(int i915, struct drm_i915_gem_mmap *arg) +{ + int err = 0; + + if (igt_ioctl(i915, DRM_IOCTL_I915_GEM_MMAP, arg)) { + err = -errno; + igt_assume(err); + } + + errno = 0; + return err; +} + +static void * +local_gem_mmap__wc(int fd, uint32_t handle, uint64_t offset, uint64_t size, + unsigned prot) +{ + struct drm_i915_gem_mmap arg = { + .handle = handle, + .offset = offset, + .size = size, + .flags = I915_MMAP_WC, + }; + (void) prot; //currently not used + + igt_assert_eq(mmap_ioctl(fd, &arg), 0); + igt_assert(arg.addr_ptr); + + return from_user_pointer(arg.addr_ptr); +} + static uint32_t create_bo(int fd) { @@ -114,6 +145,7 @@ igt_simple_main fd = drm_open_driver(DRIVER_INTEL); gem_require_mmap_wc(fd); + gem_require_mappable_ggtt(fd); handle = create_bo(fd); igt_require(gem_get_tiling(fd, handle, &tiling, &swizzle)); @@ -153,7 +185,8 @@ igt_simple_main first_page = offset & -PAGE_SIZE; last_page = (offset + len + PAGE_SIZE - 1) & -PAGE_SIZE; - linear = gem_mmap__wc(fd, handle, first_page, last_page - first_page, PROT_READ); + linear = local_gem_mmap__wc(fd, handle, first_page, + last_page - first_page, PROT_READ); /* Translate from offsets in the read buffer to the swizzled * address that it corresponds to. This is the opposite of |