}
                        count++;
 
-                       if (8 * watcher[1].rq->ring->emit >
-                           3 * watcher[1].rq->ring->size) {
-                               i915_request_put(rq);
-                               break;
-                       }
-
                        /* Flush the timeline before manually wrapping again */
                        if (i915_request_wait(rq,
                                              I915_WAIT_INTERRUPTIBLE,
                                i915_request_put(rq);
                                goto out;
                        }
-
                        retire_requests(tl);
                        i915_request_put(rq);
+
+                       /* Single requests are limited to half a ring at most */
+                       if (8 * watcher[1].rq->ring->emit >
+                           3 * watcher[1].rq->ring->size)
+                               break;
+
                } while (!__igt_timeout(end_time, NULL));
                WRITE_ONCE(*(u32 *)tl->hwsp_seqno, 0xdeadbeef);