[PATCH igt 09/10] igt/gem_userptr_blits: Errors from gup are permanent

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



After triggering an error (such as trying to use userptr on a GTT
mmaping), we store the EFAULT on the object permanently. So to test the
error, we must sacrifice the object and recreate the userptr handle.
We restrict the error to just one of the overlapping userptr handles to
check the object independence.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100596
Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
---
 tests/gem_userptr_blits.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tests/gem_userptr_blits.c b/tests/gem_userptr_blits.c
index 7767c0ca..849054ad 100644
--- a/tests/gem_userptr_blits.c
+++ b/tests/gem_userptr_blits.c
@@ -681,12 +681,17 @@ static int test_map_fixed_invalidate(int fd, uint32_t flags)
 		gem_set_tiling(fd, mmap_gtt.handle, I915_TILING_NONE, 0);
 		*map = 0xdead;
 
-		if (flags & MAP_FIXED_INVALIDATE_GET_PAGES)
+		if (flags & MAP_FIXED_INVALIDATE_GET_PAGES) {
 			igt_assert_eq(__gem_set_domain(fd, handle[0],
 						       I915_GEM_DOMAIN_GTT,
 						       I915_GEM_DOMAIN_GTT),
 				      -EFAULT);
 
+			/* Errors are permanent, so we have to recreate */
+			gem_close(fd, handle[0]);
+			handle[0] = create_userptr(fd, 0, ptr + PAGE_SIZE/sizeof(*ptr));
+		}
+
 		gem_set_tiling(fd, mmap_gtt.handle, I915_TILING_Y, 512 * 4);
 		*(uint32_t*)map = 0xbeef;
 
-- 
2.13.3

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux