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@xxxxxxxxxxxxxxx> --- 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 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx