summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2015-12-13 06:58:40 +0200
committerVille Syrjälä <ville.syrjala@linux.intel.com>2016-01-08 19:57:33 +0200
commit7ff8223d44b875e0eec02f32b9fce8baeca689a3 (patch)
treeee4050d4f6625b69f9b57650f934b9e4a7b7ddbb /tests
parent21022f076d4047348f377a1938079c046de13f42 (diff)
tests/gem_mmap_gtt: Make the small-bo tiling tests work on old platforms
Several factors conspire against us when trying to execute the tiled small-bo tests: - pre-gen4 require power of two fences, with natural alignment - the entire gtt may be mappable - we put a guard page at the end of gtt What all that means is that when we try to use a tiled object half the size of the mappable area, we can only fit it in the first half of the gtt. That leads to a SIGBUS when we try to fault in the object when there's already something (eg. fbdev) occupying the first half of gtt. So in order to make the tests run on old machines, let's further halve the object size when things look too tight. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/gem_mmap_gtt.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/gem_mmap_gtt.c b/tests/gem_mmap_gtt.c
index 57492d8b..7f3ca68d 100644
--- a/tests/gem_mmap_gtt.c
+++ b/tests/gem_mmap_gtt.c
@@ -357,6 +357,18 @@ test_huge_bo(int fd, int huge, int tiling)
switch (huge) {
case -1:
size = gem_mappable_aperture_size() / 2;
+
+ /* Power of two fence size, natural fence
+ * alignment, and the guard page at the end
+ * gtt means that if the entire gtt is
+ * mappable, we can't usually fit in a tiled
+ * object half the size of the gtt. Let's use
+ * a quarter size one instead.
+ */
+ if (tiling &&
+ intel_gen(intel_get_drm_devid(fd)) < 4 &&
+ size >= gem_aperture_size(fd) / 2)
+ size /= 2;
break;
case 0:
size = gem_mappable_aperture_size() + PAGE_SIZE;