#define TEST_SUSPEND (1 << 26)
#define TEST_TS_CONT (1 << 27)
#define TEST_BO_TOOBIG (1 << 28)
+#define TEST_HANG_ONCE (1 << 29)
#define EVENT_FLIP (1 << 0)
#define EVENT_VBLANK (1 << 1)
static unsigned event_loop(struct test_output *o, unsigned duration_ms)
{
unsigned long start, end;
+ uint32_t hang = 0; /* Suppress GCC warning */
+
+ if (o->flags & TEST_HANG_ONCE) {
+ hang = hang_gpu(drm_fd);
+ igt_assert_f(hang, "failed to exercise page flip hang recovery\n");
+ }
start = gettime_us();
end = gettime_us();
+ if (hang)
+ unhang_gpu(drm_fd, hang);
+
/* Flush any remaining events */
if (o->pending_events)
wait_for_events(o);
TEST_CHECK_TS, "flip-vs-blocking-wf-vblank" },
{ 30, TEST_FLIP | TEST_MODESET | TEST_HANG | TEST_NOEVENT, "flip-vs-modeset-vs-hang" },
{ 30, TEST_FLIP | TEST_PAN | TEST_HANG, "flip-vs-panning-vs-hang" },
+ { 30, TEST_VBLANK | TEST_HANG_ONCE, "vblank-vs-hang" },
{ 1, TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING, "flip-vs-bad-tiling" },
{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,