summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndi Shyti <andi.shyti@linux.intel.com>2024-08-12 14:31:04 +0200
committerAndi Shyti <andi.shyti@linux.intel.com>2024-08-12 16:01:57 +0200
commit8622359f1f5b7583212edc69ed5b62c7bed73703 (patch)
tree1bceab21946559be205999fdaabcb5b267e90e90
parent41367d214adf986208487d35b5087afe115b2858 (diff)
intel/gem_mmap_offset: Partial remap testmmap
Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com> Signed-off-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
-rw-r--r--tests/intel/gem_mmap_offset.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/intel/gem_mmap_offset.c b/tests/intel/gem_mmap_offset.c
index ef605fa0c..dcfff2ee8 100644
--- a/tests/intel/gem_mmap_offset.c
+++ b/tests/intel/gem_mmap_offset.c
@@ -60,6 +60,7 @@
* SUBTEST: partial-mmap
* SUBTEST: partial-unmap
* SUBTEST: partial-remap
+ * SUBTEST: partial-remap2
* SUBTEST: perf
* SUBTEST: pf-nonblock
* SUBTEST: ptrace
@@ -991,6 +992,37 @@ static void partial_remap(int i915, struct gem_memory_region *r)
gem_close(i915, handle);
}
+static void partial_remap2(int i915)
+{
+ uint32_t handle;
+
+ handle = gem_create(i915, 0x12000);
+
+ for_each_mmap_offset_type(i915, t) {
+ uint8_t *ptr;
+ int err;
+
+ /* mmap the same GEM BO twice */
+ ptr = __mmap_offset(i915, handle, 0, 0x12000,
+ PROT_READ | PROT_WRITE, t->type);
+ if (!ptr)
+ continue;
+
+ /* unmap the first mapping but the last 4k */
+ munmap(ptr, 0x11000);
+
+ ptr = mremap(ptr, 0x1000, 0x1000, 0, 0x10000);
+ err = errno;
+ errno = 0;
+ igt_assert(ptr != MAP_FAILED);
+ igt_assert(!err);
+
+ munmap(ptr, 0x1000);
+ }
+
+ gem_close(i915, handle);
+}
+
/* This test's failure is detected by checking the dmesg. */
static void test_mmap_boundaries(int i915)
@@ -1191,6 +1223,9 @@ igt_main
}
}
+ igt_subtest_f("partial-remap2")
+ partial_remap2(i915);
+
igt_subtest_with_dynamic("clear") {
for_each_memory_region(r, i915) {
igt_dynamic_f("%s", r->name)