summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Niemiec <krzysztof.niemiec@intel.com>2024-08-12 14:31:02 +0200
committerAndi Shyti <andi.shyti@linux.intel.com>2024-08-12 16:01:57 +0200
commit6fd88db39801f83dfa12e6d3a8a60bdbd1dc9e64 (patch)
tree86dc0b78306c1b29afbdb9ea132fe0d72b935902
parentab5a857165a38212120c9c551b885663583dc5db (diff)
tests/intel/gem_mmap_offset: Introduce mmap-boundaries test
Introduce the mmap-boundaries test, which checks if mmap() correctly calculates memory boundaries during the mapping. Signed-off-by: Krzysztof Niemiec <krzysztof.niemiec@intel.com>
-rw-r--r--tests/intel/gem_mmap_offset.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/intel/gem_mmap_offset.c b/tests/intel/gem_mmap_offset.c
index 80ac8dc01..3eecc79de 100644
--- a/tests/intel/gem_mmap_offset.c
+++ b/tests/intel/gem_mmap_offset.c
@@ -63,6 +63,7 @@
* SUBTEST: perf
* SUBTEST: pf-nonblock
* SUBTEST: ptrace
+ * SUBTEST: mmap-boundaries
*
*/
@@ -989,6 +990,30 @@ static void partial_remap(int i915, struct gem_memory_region *r)
gem_close(i915, handle);
}
+/* This test's failure is detected by checking the dmesg. */
+
+static void test_mmap_boundaries(int i915)
+{
+ const uint64_t map_size = SZ_128M - SZ_512K;
+ uint32_t handle;
+ uint8_t *map;
+
+ handle = gem_create(i915, SZ_2G);
+
+ for_each_mmap_offset_type(i915, t) {
+ map = __mmap_offset(i915, handle, 0, map_size,
+ PROT_READ | PROT_WRITE, t->type);
+
+ igt_assert_f(map != NULL, "Failed to map\n");
+
+ memset(map + map_size - SZ_1K, 0xab, SZ_1K);
+ for (uint64_t i = 0; i < SZ_1K; i++)
+ igt_assert_eq(map[map_size - SZ_1K + i], 0xab);
+
+ munmap(map, map_size);
+ }
+}
+
static int mmap_gtt_version(int i915)
{
int gtt_version = -1;
@@ -1082,6 +1107,10 @@ igt_main
igt_subtest_f("blt-coherency")
blt_coherency(i915);
+ igt_describe("Check for proper boundary calculation during mmap");
+ igt_subtest("mmap-boundaries")
+ test_mmap_boundaries(i915);
+
igt_fixture {
drm_close_driver(i915);
}