summaryrefslogtreecommitdiff
path: root/tests/i915/gem_tiled_wc.c
diff options
context:
space:
mode:
authorZbigniew Kempczyński <zbigniew.kempczynski@intel.com>2020-01-28 10:00:22 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2020-01-29 10:18:15 +0000
commit5e7f677dac9c01906f43360fc2023b036ccef9d8 (patch)
tree9bfb3bf9ac830898e74594d1c32356f76e0f89a7 /tests/i915/gem_tiled_wc.c
parent0f6ca73e0efd7b4ebd054be47a27807c25c8df14 (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.c35
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