[Intel-gfx] [PATCH i-g-t] tests/kms_atomic_transition: Make tests pass

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Fri Oct 20 13:24:15 UTC 2017


kms_atomic_transition was updating already disabled planes and committing
them nonblockingly. This results in sporadic -EBUSY failures because
planes that are unbound have their own timeline.

The solution is not unbinding already unbound planes, making the test
pass. There is also a related kernel bug causing failures in the same
way, but that will get fixed soon.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102671
Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
---
 tests/kms_atomic_transition.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 7ddb65cea183..4c295125a8a7 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -134,7 +134,8 @@ wm_setup_plane(igt_display_t *display, enum pipe pipe,
 		int i = plane->index;
 
 		if (!((1 << plane->index) & mask)) {
-			igt_plane_set_fb(plane, NULL);
+			if (plane->values[IGT_PLANE_FB_ID])
+				igt_plane_set_fb(plane, NULL);
 			continue;
 		}
 
@@ -388,11 +389,13 @@ static void wait_for_transition(igt_display_t *display, enum pipe pipe, bool non
 	if (fencing) {
 		int fence_fd = display->pipes[pipe].out_fence_fd;
 
-		igt_assert_neq(fd_completed(fence_fd), nonblocking);
+		if (!nonblocking)
+			igt_assert(fd_completed(fence_fd));
 
 		igt_assert(sync_fence_wait(fence_fd, 30000) == 0);
 	} else {
-		igt_assert_neq(fd_completed(display->drm_fd), nonblocking);
+		if (!nonblocking)
+			igt_assert(fd_completed(display->drm_fd));
 
 		drmHandleEvent(display->drm_fd, &drm_events);
 	}
-- 
2.14.1



More information about the Intel-gfx mailing list