The goal of these subtests was just to delay a kms operation a little
bit. The goal wasn't to
- spin until the operation was completed. That results in a gpu hang,
  and gpu hangs need igt_hang for safety.
- complete it before the operation. That's just pointless.

Fix it by using the timeout support.

This was all broken in the initial conversation:

commit 96ec8cb3b5ec1fc2927d6cff8e09930082301d7e
Author: Abdiel Janulgue <abdiel.janul...@linux.intel.com>
Date:   Sat Oct 29 01:01:05 2016 +0300

    igt/kms_flip: Use new igt_spin_batch

Note that part of the damage was removed already in

commit b0081ea9cb7d39234fd0fcc64dd56ed4f5d50b05
Author: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
Date:   Wed Aug 9 11:11:52 2017 +0200

    tests/kms_flip: Remove $engine-flip-vs-dpms/modeset

Cc: Tomeu Vizoso <tomeu.viz...@collabora.com>
Cc: Abdiel Janulgue <abdiel.janul...@linux.intel.com>
Cc: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vet...@ffwll.ch>
---
 tests/kms_flip.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index ea860e191a67..6d315b3793a8 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -693,13 +693,19 @@ static unsigned int run_test_step(struct test_output *o)
        if (!(o->flags & TEST_SINGLE_BUFFER))
                o->current_fb_id = !o->current_fb_id;
 
-       if (o->flags & TEST_WITH_DUMMY_BCS)
+       if (o->flags & TEST_WITH_DUMMY_BCS) {
                spin_bcs = igt_spin_batch_new(drm_fd, I915_EXEC_BLT,
                                              
o->fb_info[o->current_fb_id].gem_handle);
+               igt_spin_batch_set_timeout(spin_bcs,
+                                          1000*1000*1000);
+       }
 
-       if (o->flags & TEST_WITH_DUMMY_RCS)
+       if (o->flags & TEST_WITH_DUMMY_RCS) {
                spin_rcs = igt_spin_batch_new(drm_fd, I915_EXEC_RENDER,
                                              
o->fb_info[o->current_fb_id].gem_handle);
+               igt_spin_batch_set_timeout(spin_rcs,
+                                          1000*1000*1000);
+       }
 
        if (o->flags & TEST_FB_RECREATE)
                recreate_fb(o);
@@ -789,13 +795,8 @@ static unsigned int run_test_step(struct test_output *o)
                igt_assert(__wait_for_vblank(TEST_VBLANK_BLOCK, o->pipe, 1, 0, 
&reply) == 0);
        }
 
-       if (do_flip) {
+       if (do_flip)
                do_or_die(do_page_flip(o, new_fb_id, !(o->flags & 
TEST_NOEVENT)));
-               if (spin_rcs)
-                       igt_spin_batch_end(spin_rcs);
-               if (spin_bcs)
-                       igt_spin_batch_end(spin_bcs);
-       }
 
        if (o->flags & TEST_FENCE_STRESS)
                emit_fence_stress(o);
@@ -809,10 +810,6 @@ static unsigned int run_test_step(struct test_output *o)
                                      vbl_reply.ts.tv_usec);
                        completed_events = EVENT_VBLANK;
                }
-               if (spin_rcs)
-                       igt_spin_batch_end(spin_rcs);
-               if (spin_bcs)
-                       igt_spin_batch_end(spin_bcs);
        }
        if (spin_rcs)
                igt_spin_batch_free(drm_fd, spin_rcs);
-- 
2.5.5

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

Reply via email to