All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip.
@ 2018-01-04 14:12 Maarten Lankhorst
  2018-01-04 14:12 ` [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
                   ` (10 more replies)
  0 siblings, 11 replies; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
  To: intel-gfx

kms_flip is meant for finding issues with page flip, but was used for
finding bugs in the vblank ioctl too. Move over some tests from kms_flip
to kms_vblank, and reduce their runtime to a minimum.

Changes since v1:
- Rebase on top of current head so the changes to kms_flip apply.
- Move hang test moving until after kms_vblank reorganization, for clarity.

Maarten Lankhorst (6):
  tests/kms_flip: Remove blt/rcs flip tests.
  kms_vblank: Reorganize subtests by pipe
  tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2.
  kms_vblank: Add tests implemented in kms_flip
  kms_flip: Remove redundant vblank tests.
  kms_vblank: Remove teardown code from cleanup_crtc

 tests/kms_flip.c   |  58 +--------------
 tests/kms_vblank.c | 205 +++++++++++++++++++++++++++++++++++++++--------------
 2 files changed, 152 insertions(+), 111 deletions(-)

-- 
2.15.1

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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests.
  2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
  2018-01-10  8:50   ` Daniel Vetter
  2018-01-04 14:12 ` [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe Maarten Lankhorst
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
  To: intel-gfx

With the removal of mmio flips, blt and rcs flips are no longer
different from doing busy testing in kms_busy.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 tests/kms_flip.c | 40 +---------------------------------------
 1 file changed, 1 insertion(+), 39 deletions(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 2899f20e6c73..7689e65b521a 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -45,8 +45,7 @@
 #include "igt_stats.h"
 
 #define TEST_DPMS		(1 << 0)
-#define TEST_WITH_DUMMY_BCS	(1 << 1)
-#define TEST_WITH_DUMMY_RCS	(1 << 2)
+
 #define TEST_PAN		(1 << 3)
 #define TEST_MODESET		(1 << 4)
 #define TEST_CHECK_TS		(1 << 5)
@@ -668,8 +667,6 @@ static unsigned int run_test_step(struct test_output *o)
 	struct vblank_reply vbl_reply;
 	unsigned int target_seq;
 	igt_hang_t hang;
-	igt_spin_t *spin_rcs = 0;
-	igt_spin_t *spin_bcs = 0;
 
 	target_seq = o->vblank_state.seq_step;
 	/* Absolute waits only works once we have a frame counter. */
@@ -691,20 +688,6 @@ 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) {
-		spin_bcs = __igt_spin_batch_new(drm_fd, 0, I915_EXEC_BLT,
-						o->fb_info[o->current_fb_id].gem_handle);
-		igt_spin_batch_set_timeout(spin_bcs,
-					   NSEC_PER_SEC);
-	}
-
-	if (o->flags & TEST_WITH_DUMMY_RCS) {
-		spin_rcs = __igt_spin_batch_new(drm_fd, 0, I915_EXEC_RENDER,
-						o->fb_info[o->current_fb_id].gem_handle);
-		igt_spin_batch_set_timeout(spin_rcs,
-					   NSEC_PER_SEC);
-	}
-
 	if (o->flags & TEST_FB_RECREATE)
 		recreate_fb(o);
 	new_fb_id = o->fb_ids[o->current_fb_id];
@@ -809,10 +792,6 @@ static unsigned int run_test_step(struct test_output *o)
 			completed_events = EVENT_VBLANK;
 		}
 	}
-	if (spin_rcs)
-		igt_spin_batch_free(drm_fd, spin_rcs);
-	if (spin_bcs)
-		igt_spin_batch_free(drm_fd, spin_bcs);
 
 	if (do_flip && (o->flags & TEST_EBUSY))
 		igt_assert(do_page_flip(o, new_fb_id, true) == -EBUSY);
@@ -1065,10 +1044,6 @@ static unsigned int wait_for_events(struct test_output *o)
 	evctx.vblank_handler = vblank_handler;
 	evctx.page_flip_handler = page_flip_handler;
 
-	/* make timeout lax with the dummy load */
-	if (o->flags & (TEST_WITH_DUMMY_BCS | TEST_WITH_DUMMY_RCS))
-		timeout.tv_sec *= 60;
-
 	FD_ZERO(&fds);
 	FD_SET(drm_fd, &fds);
 	do {
@@ -1099,9 +1074,6 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
 	igt_hang_t hang;
 	int count = 0;
 
-	if (o->flags & (TEST_WITH_DUMMY_BCS | TEST_WITH_DUMMY_RCS))
-		igt_require_gem(drm_fd);
-
 	memset(&hang, 0, sizeof(hang));
 	if (o->flags & TEST_HANG_ONCE)
 		hang = hang_gpu(drm_fd);
@@ -1571,15 +1543,7 @@ int main(int argc, char **argv)
 		{ 30,  TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
 					"blocking-absolute-wf_vblank" },
 		{ 60,  TEST_VBLANK | TEST_DPMS | TEST_EINVAL, "wf_vblank-vs-dpms" },
-		{ 60,  TEST_VBLANK | TEST_DPMS | TEST_WITH_DUMMY_BCS,
-					"blt-wf_vblank-vs-dpms" },
-		{ 60,  TEST_VBLANK | TEST_DPMS | TEST_WITH_DUMMY_RCS,
-					"rcs-wf_vblank-vs-dpms" },
 		{ 60,  TEST_VBLANK | TEST_MODESET | TEST_EINVAL, "wf_vblank-vs-modeset" },
-		{ 60,  TEST_VBLANK | TEST_MODESET | TEST_WITH_DUMMY_BCS,
-					"blt-wf_vblank-vs-modeset" },
-		{ 60,  TEST_VBLANK | TEST_MODESET | TEST_WITH_DUMMY_RCS,
-					"rcs-wf_vblank-vs-modeset" },
 		{ 10, TEST_FLIP | TEST_BASIC, "plain-flip" },
 		{ 30, TEST_FLIP | TEST_EBUSY , "busy-flip" },
 		{ 30, TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
@@ -1589,8 +1553,6 @@ int main(int argc, char **argv)
 		{ 30, TEST_FLIP | TEST_RMFB | TEST_MODESET , "flip-vs-rmfb" },
 		{ 20, TEST_FLIP | TEST_DPMS | TEST_EINVAL | TEST_BASIC, "flip-vs-dpms" },
 		{ 30,  TEST_FLIP | TEST_PAN, "flip-vs-panning" },
-		{ 60, TEST_FLIP | TEST_PAN | TEST_WITH_DUMMY_BCS, "blt-flip-vs-panning" },
-		{ 60, TEST_FLIP | TEST_PAN | TEST_WITH_DUMMY_RCS, "render-flip-vs-panning" },
 		{ 20, TEST_FLIP | TEST_MODESET | TEST_EINVAL | TEST_BASIC, "flip-vs-modeset" },
 		{ 30,  TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
 					"flip-vs-expired-vblank" },
-- 
2.15.1

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

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe
  2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
  2018-01-04 14:12 ` [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
  2018-01-10  8:57   ` Daniel Vetter
  2018-01-04 14:12 ` [PATCH i-g-t v2 3/6] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2 Maarten Lankhorst
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
  To: intel-gfx

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 tests/kms_vblank.c | 93 ++++++++++++++++++++++++++++--------------------------
 1 file changed, 49 insertions(+), 44 deletions(-)

diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 342e4ef23b97..e51e96c7f061 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -118,49 +118,41 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
 	int nchildren =
 		data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
 	igt_display_t *display = &data->display;
-	igt_output_t *output;
-	enum pipe p;
+	igt_output_t *output = data->output;
 
-	for_each_pipe_with_valid_output(display, p, output) {
-		data->pipe = p;
-		prepare_crtc(data, fd, output);
+	prepare_crtc(data, fd, output);
 
-		igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
-			 igt_subtest_name(),
-			 kmstest_pipe_name(data->pipe),
-			 igt_output_name(output),
-			 nchildren);
-
-		if (data->flags & BUSY) {
-			union drm_wait_vblank vbl;
-
-			memset(&vbl, 0, sizeof(vbl));
-			vbl.request.type =
-				DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
-			vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
-			vbl.request.sequence = 120 + 12;
-			igt_assert_eq(wait_vblank(fd, &vbl), 0);
-		}
+	igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
+		 igt_subtest_name(), kmstest_pipe_name(data->pipe),
+		 igt_output_name(output), nchildren);
 
-		igt_fork(child, nchildren)
-			testfunc(data, fd, nchildren);
-		igt_waitchildren();
-
-		if (data->flags & BUSY) {
-			struct drm_event_vblank buf;
-			igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
-		}
+	if (data->flags & BUSY) {
+		union drm_wait_vblank vbl;
 
-		igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
+		memset(&vbl, 0, sizeof(vbl));
+		vbl.request.type =
+			DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
+		vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
+		vbl.request.sequence = 120 + 12;
+		igt_assert_eq(wait_vblank(fd, &vbl), 0);
+	}
 
-		igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
-			 igt_subtest_name(),
-			 kmstest_pipe_name(data->pipe),
-			 igt_output_name(output));
+	igt_fork(child, nchildren)
+		testfunc(data, fd, nchildren);
+	igt_waitchildren();
 
-		/* cleanup what prepare_crtc() has done */
-		cleanup_crtc(data, fd, output);
+	if (data->flags & BUSY) {
+		struct drm_event_vblank buf;
+		igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
 	}
+
+	igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
+
+	igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
+		 igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
+
+	/* cleanup what prepare_crtc() has done */
+	cleanup_crtc(data, fd, output);
 }
 
 static void crtc_id_subtest(data_t *data, int fd)
@@ -329,6 +321,8 @@ igt_main
 		{ "wait", vblank_wait, IDLE | FORKED | BUSY },
 		{ }
 	}, *f;
+	enum pipe p;
+
 	const struct {
 		const char *name;
 		unsigned int flags;
@@ -352,14 +346,25 @@ igt_main
 	igt_subtest("crtc-id")
 		crtc_id_subtest(&data, fd);
 
-	for (f = funcs; f->name; f++) {
-		for (m = modes; m->name; m++) {
-			if (m->flags & ~f->valid)
-				continue;
-
-			igt_subtest_f("%s-%s", f->name, m->name) {
-				data.flags = m->flags;
-				run_test(&data, fd, f->func);
+	for_each_pipe_static(p) igt_subtest_group {
+		igt_fixture
+			igt_display_require_output_on_pipe(&data.display, p);
+
+		data.pipe = p;
+
+		for (f = funcs; f->name; f++) {
+			for (m = modes; m->name; m++) {
+				if (m->flags & ~f->valid)
+					continue;
+
+				igt_subtest_f("pipe-%s-%s-%s",
+					      kmstest_pipe_name(data.pipe),
+					      f->name, m->name) {
+					for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
+						data.flags = m->flags;
+						run_test(&data, fd, f->func);
+					}
+				}
 			}
 		}
 	}
-- 
2.15.1

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

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH i-g-t v2 3/6] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2.
  2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
  2018-01-04 14:12 ` [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
  2018-01-04 14:12 ` [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
  2018-01-08 10:23   ` [PATCH v3 i-g-t] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v3 Maarten Lankhorst
  2018-01-04 14:12 ` [PATCH i-g-t v2 4/6] kms_vblank: Add tests implemented in kms_flip Maarten Lankhorst
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
  To: intel-gfx

There's no need to test this more than once. Add a NOHANG
flag which can be used to specify that a subtest can not
be run when hanging. If it's set on either the subtest or
the mode, the -hang test for this combination will not be
generated.

Changes since v1:
- Merge the patch that renamed HANG to NOHANG.
- Rebase after 'reorganize subtests by type'.
- Allow subtests to specify NOHANG too.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 tests/kms_flip.c   | 10 +---------
 tests/kms_vblank.c | 23 ++++++++++++++++++++++-
 2 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 7689e65b521a..50c16b0debbf 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -72,7 +72,7 @@
 #define TEST_SUSPEND		(1 << 26)
 #define TEST_TS_CONT		(1 << 27)
 #define TEST_BO_TOOBIG		(1 << 28)
-#define TEST_HANG_ONCE		(1 << 29)
+
 #define TEST_BASIC		(1 << 30)
 
 #define EVENT_FLIP		(1 << 0)
@@ -1071,13 +1071,8 @@ static unsigned int wait_for_events(struct test_output *o)
 static unsigned event_loop(struct test_output *o, unsigned duration_ms)
 {
 	unsigned long start, end;
-	igt_hang_t hang;
 	int count = 0;
 
-	memset(&hang, 0, sizeof(hang));
-	if (o->flags & TEST_HANG_ONCE)
-		hang = hang_gpu(drm_fd);
-
 	start = gettime_us();
 
 	while (1) {
@@ -1097,8 +1092,6 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
 
 	end = gettime_us();
 
-	unhang_gpu(drm_fd, hang);
-
 	/* Flush any remaining events */
 	if (o->pending_events)
 		wait_for_events(o);
@@ -1565,7 +1558,6 @@ int main(int argc, char **argv)
 			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,
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index e51e96c7f061..959ba46ca30f 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -54,6 +54,7 @@ typedef struct {
 #define IDLE 1
 #define BUSY 2
 #define FORKED 4
+#define NOHANG 8
 } data_t;
 
 static double elapsed(const struct timespec *start,
@@ -119,6 +120,7 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
 		data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
 	igt_display_t *display = &data->display;
 	igt_output_t *output = data->output;
+	igt_hang_t hang;
 
 	prepare_crtc(data, fd, output);
 
@@ -126,6 +128,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
 		 igt_subtest_name(), kmstest_pipe_name(data->pipe),
 		 igt_output_name(output), nchildren);
 
+	if (!(data->flags & NOHANG))
+		hang = igt_hang_ring(display->drm_fd, I915_EXEC_DEFAULT);
+
 	if (data->flags & BUSY) {
 		union drm_wait_vblank vbl;
 
@@ -148,6 +153,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
 
 	igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
 
+	if (!(data->flags & NOHANG))
+		igt_post_hang_ring(fd, hang);
+
 	igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
 		 igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
 
@@ -354,12 +362,25 @@ igt_main
 
 		for (f = funcs; f->name; f++) {
 			for (m = modes; m->name; m++) {
-				if (m->flags & ~f->valid)
+				if (m->flags & ~(f->valid | NOHANG))
 					continue;
 
 				igt_subtest_f("pipe-%s-%s-%s",
 					      kmstest_pipe_name(data.pipe),
 					      f->name, m->name) {
+					for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
+						data.flags = m->flags | NOHANG;
+						run_test(&data, fd, f->func);
+					}
+				}
+
+				/* Skip the -hang version if NOHANG flag is set */
+				if (f->valid & NOHANG || m->flags & NOHANG)
+					continue;
+
+				igt_subtest_f("pipe-%s-%s-%s-hang",
+					      kmstest_pipe_name(data.pipe),
+					      f->name, m->name) {
 					for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
 						data.flags = m->flags;
 						run_test(&data, fd, f->func);
-- 
2.15.1

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

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH i-g-t v2 4/6] kms_vblank: Add tests implemented in kms_flip
  2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (2 preceding siblings ...)
  2018-01-04 14:12 ` [PATCH i-g-t v2 3/6] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2 Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
  2018-01-04 14:12 ` [PATCH i-g-t v2 5/6] kms_flip: Remove redundant vblank tests Maarten Lankhorst
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
  To: intel-gfx

In kms_flip there are some tests for testing whether the
vblank counter is monotonically increasing. Add these subtests
to kms_vblank, where they belong.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 tests/kms_vblank.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 80 insertions(+), 4 deletions(-)

diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 959ba46ca30f..362221c03677 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -51,10 +51,14 @@ typedef struct {
 	igt_output_t *output;
 	enum pipe pipe;
 	unsigned int flags;
-#define IDLE 1
-#define BUSY 2
-#define FORKED 4
-#define NOHANG 8
+#define IDLE	0x1
+#define BUSY	0x2
+#define FORKED	0x4
+#define NOHANG	0x8
+#define MODESET 0x10
+#define DPMS	0x20
+#define SUSPEND 0x40
+#define RPM	0x80
 } data_t;
 
 static double elapsed(const struct timespec *start,
@@ -124,6 +128,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
 
 	prepare_crtc(data, fd, output);
 
+	if (data->flags & RPM)
+		igt_require(igt_setup_runtime_pm());
+
 	igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
 		 igt_subtest_name(), kmstest_pipe_name(data->pipe),
 		 igt_output_name(output), nchildren);
@@ -315,6 +322,69 @@ static void vblank_wait(data_t *data, int fd, int nchildren)
 		 elapsed(&start, &end, count));
 }
 
+static int get_vblank(int fd, enum pipe pipe, unsigned flags)
+{
+	union drm_wait_vblank vbl;
+
+	memset(&vbl, 0, sizeof(vbl));
+	vbl.request.type = DRM_VBLANK_RELATIVE | kmstest_get_vbl_flag(pipe) | flags;
+	do_or_die(igt_ioctl(fd, DRM_IOCTL_WAIT_VBLANK, &vbl));
+
+	return vbl.reply.sequence;
+}
+
+static void vblank_ts_cont(data_t *data, int fd, int nchildren)
+{
+	igt_display_t *display = &data->display;
+	igt_output_t *output = data->output;
+	int seq1, seq2;
+	union drm_wait_vblank vbl;
+
+	seq1 = get_vblank(fd, data->pipe, 0);
+
+	if (data->flags & DPMS) {
+		igt_output_set_prop_value(output, IGT_CONNECTOR_DPMS, DRM_MODE_DPMS_OFF);
+		igt_display_commit(display);
+	}
+
+	if (data->flags & MODESET) {
+		igt_output_set_pipe(output, PIPE_NONE);
+		igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
+	}
+
+	if (data->flags & RPM)
+		igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+
+	if (data->flags & SUSPEND)
+		igt_system_suspend_autoresume(SUSPEND_STATE_MEM,
+					      SUSPEND_TEST_NONE);
+
+	if (data->flags & (MODESET | DPMS)) {
+		/* Attempting to do a vblank while disabled should return -EINVAL */
+		memset(&vbl, 0, sizeof(vbl));
+		vbl.request.type = DRM_VBLANK_RELATIVE;
+		vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
+		igt_assert_eq(wait_vblank(fd, &vbl), -EINVAL);
+	}
+
+	if (data->flags & DPMS) {
+		igt_output_set_prop_value(output, IGT_CONNECTOR_DPMS, DRM_MODE_DPMS_ON);
+		igt_display_commit(display);
+	}
+
+	if (data->flags & MODESET) {
+		igt_output_set_pipe(output, data->pipe);
+		igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
+	}
+
+	seq2 = get_vblank(fd, data->pipe, 0);
+
+	igt_debug("testing ts continuity: Current frame %u, old frame %u\n", seq2, seq1);
+
+	igt_assert_f(seq2 - seq1 >= 0, "unexpected vblank seq %u, should be >= %u\n", seq2, seq1);
+	igt_assert_f(seq2 - seq1 <= 150, "unexpected vblank seq %u, should be < %u\n", seq2, seq1 + 150);
+}
+
 igt_main
 {
 	int fd;
@@ -327,6 +397,7 @@ igt_main
 		{ "accuracy", accuracy, IDLE },
 		{ "query", vblank_query, IDLE | FORKED | BUSY },
 		{ "wait", vblank_wait, IDLE | FORKED | BUSY },
+		{ "ts-continuation", vblank_ts_cont, IDLE | SUSPEND | MODESET | DPMS | RPM },
 		{ }
 	}, *f;
 	enum pipe p;
@@ -339,6 +410,11 @@ igt_main
 		{ "forked", IDLE | FORKED },
 		{ "busy", BUSY },
 		{ "forked-busy", BUSY | FORKED },
+		{ "dpms-rpm", DPMS | RPM | NOHANG },
+		{ "dpms-suspend", DPMS | SUSPEND | NOHANG},
+		{ "suspend", SUSPEND | NOHANG },
+		{ "modeset", MODESET },
+		{ "modeset-rpm", MODESET | RPM | NOHANG},
 		{ }
 	}, *m;
 
-- 
2.15.1

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

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH i-g-t v2 5/6] kms_flip: Remove redundant vblank tests.
  2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (3 preceding siblings ...)
  2018-01-04 14:12 ` [PATCH i-g-t v2 4/6] kms_vblank: Add tests implemented in kms_flip Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
  2018-01-04 14:12 ` [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc Maarten Lankhorst
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
  To: intel-gfx

wf_vblank is redundant with wf_vblank-ts-check, which also performs
a check but runs in the same way.

The -EINVAL vblank tests are reproduced in kms_vblank, as are the
vblank-vs-* tests.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 tests/kms_flip.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 50c16b0debbf..710ea52b4a8a 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -1527,7 +1527,6 @@ int main(int argc, char **argv)
 		int flags;
 		const char *name;
 	} tests[] = {
-		{ 30, TEST_VBLANK, "wf_vblank" },
 		{ 30, TEST_VBLANK | TEST_CHECK_TS, "wf_vblank-ts-check" },
 		{ 30, TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_CHECK_TS,
 					"blocking-wf_vblank" },
@@ -1535,8 +1534,6 @@ int main(int argc, char **argv)
 					"absolute-wf_vblank" },
 		{ 30,  TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
 					"blocking-absolute-wf_vblank" },
-		{ 60,  TEST_VBLANK | TEST_DPMS | TEST_EINVAL, "wf_vblank-vs-dpms" },
-		{ 60,  TEST_VBLANK | TEST_MODESET | TEST_EINVAL, "wf_vblank-vs-modeset" },
 		{ 10, TEST_FLIP | TEST_BASIC, "plain-flip" },
 		{ 30, TEST_FLIP | TEST_EBUSY , "busy-flip" },
 		{ 30, TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
@@ -1568,11 +1565,6 @@ int main(int argc, char **argv)
 		{ 0, TEST_ENOENT | TEST_NOEVENT, "nonexisting-fb" },
 		{ 10, TEST_DPMS_OFF | TEST_DPMS | TEST_VBLANK_RACE, "dpms-vs-vblank-race" },
 		{ 10, TEST_MODESET | TEST_VBLANK_RACE, "modeset-vs-vblank-race" },
-		{ 10, TEST_VBLANK | TEST_DPMS | TEST_RPM | TEST_TS_CONT, "vblank-vs-dpms-rpm" },
-		{ 10, TEST_VBLANK | TEST_MODESET | TEST_RPM | TEST_TS_CONT, "vblank-vs-modeset-rpm" },
-		{ 0, TEST_VBLANK | TEST_DPMS | TEST_SUSPEND | TEST_TS_CONT, "vblank-vs-dpms-suspend" },
-		{ 0, TEST_VBLANK | TEST_MODESET | TEST_SUSPEND | TEST_TS_CONT, "vblank-vs-modeset-suspend" },
-		{ 0, TEST_VBLANK | TEST_SUSPEND | TEST_TS_CONT, "vblank-vs-suspend" },
 		{ 0, TEST_BO_TOOBIG | TEST_NO_2X_OUTPUT, "bo-too-big" },
 	};
 	int i;
-- 
2.15.1

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

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc
  2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (4 preceding siblings ...)
  2018-01-04 14:12 ` [PATCH i-g-t v2 5/6] kms_flip: Remove redundant vblank tests Maarten Lankhorst
@ 2018-01-04 14:12 ` Maarten Lankhorst
  2018-01-10  9:32   ` Daniel Vetter
  2018-01-04 14:49 ` ✓ Fi.CI.BAT: success for kms_vblank: Move tests over from kms_flip. (rev2) Patchwork
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 14:12 UTC (permalink / raw)
  To: intel-gfx

New way of doing things is calling igt_display_reset() before any
setup code. This way if the configuration stays the same, the initial
modeset will be a noop.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 tests/kms_vblank.c | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 362221c03677..d2154f1c7605 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -74,6 +74,8 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
 	igt_display_t *display = &data->display;
 	igt_plane_t *primary;
 
+	igt_display_reset(display);
+
 	/* select the pipe we want to use */
 	igt_output_set_pipe(output, data->pipe);
 
@@ -95,16 +97,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
 
 static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
 {
-	igt_display_t *display = &data->display;
-	igt_plane_t *primary;
-
 	igt_remove_fb(fd, &data->primary_fb);
-
-	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
-	igt_plane_set_fb(primary, NULL);
-
-	igt_output_set_pipe(output, PIPE_ANY);
-	igt_display_commit(display);
 }
 
 static int wait_vblank(int fd, union drm_wait_vblank *vbl)
-- 
2.15.1

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

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* ✓ Fi.CI.BAT: success for kms_vblank: Move tests over from kms_flip. (rev2)
  2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (5 preceding siblings ...)
  2018-01-04 14:12 ` [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc Maarten Lankhorst
@ 2018-01-04 14:49 ` Patchwork
  2018-01-04 16:52 ` ✓ Fi.CI.IGT: " Patchwork
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-01-04 14:49 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

== Series Details ==

Series: kms_vblank: Move tests over from kms_flip. (rev2)
URL   : https://patchwork.freedesktop.org/series/36006/
State : success

== Summary ==

IGT patchset tested on top of latest successful build
6db24416fdcdf5571125f9005089241cc6ba2652 lib/gem: Reset the global seqno at the start of each test

with latest DRM-Tip kernel build CI_DRM_3598
eb3dae33ff20 drm-tip: 2018y-01m-04d-13h-53m-17s UTC integration manifest

Testlist changes:
+++ 156 lines
--- 65 lines

Test debugfs_test:
        Subgroup read_all_entries:
                dmesg-warn -> DMESG-FAIL (fi-elk-e7500) fdo#103989
Test gem_mmap_gtt:
        Subgroup basic-small-bo-tiledx:
                pass       -> FAIL       (fi-gdg-551) fdo#102575
Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-a:
                pass       -> DMESG-WARN (fi-kbl-r) fdo#104172 +1
        Subgroup suspend-read-crc-pipe-b:
                pass       -> INCOMPLETE (fi-snb-2520m) fdo#103713
Test kms_psr_sink_crc:
        Subgroup psr_basic:
                pass       -> DMESG-WARN (fi-skl-6700hq) fdo#104260

fdo#103989 https://bugs.freedesktop.org/show_bug.cgi?id=103989
fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575
fdo#104172 https://bugs.freedesktop.org/show_bug.cgi?id=104172
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fdo#104260 https://bugs.freedesktop.org/show_bug.cgi?id=104260

fi-bdw-5557u     total:288  pass:267  dwarn:0   dfail:0   fail:0   skip:21  time:422s
fi-bdw-gvtdvm    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:432s
fi-blb-e6850     total:288  pass:223  dwarn:1   dfail:0   fail:0   skip:64  time:372s
fi-bsw-n3050     total:288  pass:242  dwarn:0   dfail:0   fail:0   skip:46  time:485s
fi-bwr-2160      total:288  pass:183  dwarn:0   dfail:0   fail:0   skip:105 time:278s
fi-bxt-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:480s
fi-bxt-j4205     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:486s
fi-byt-j1900     total:288  pass:253  dwarn:0   dfail:0   fail:0   skip:35  time:477s
fi-byt-n2820     total:288  pass:249  dwarn:0   dfail:0   fail:0   skip:39  time:459s
fi-elk-e7500     total:224  pass:168  dwarn:9   dfail:1   fail:0   skip:45 
fi-gdg-551       total:288  pass:179  dwarn:0   dfail:0   fail:1   skip:108 time:264s
fi-glk-1         total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:513s
fi-hsw-4770      total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:393s
fi-hsw-4770r     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:406s
fi-ilk-650       total:288  pass:228  dwarn:0   dfail:0   fail:0   skip:60  time:412s
fi-ivb-3520m     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:449s
fi-ivb-3770      total:288  pass:255  dwarn:0   dfail:0   fail:0   skip:33  time:414s
fi-kbl-7500u     total:288  pass:263  dwarn:1   dfail:0   fail:0   skip:24  time:461s
fi-kbl-7560u     total:288  pass:268  dwarn:1   dfail:0   fail:0   skip:19  time:498s
fi-kbl-7567u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:451s
fi-kbl-r         total:288  pass:260  dwarn:1   dfail:0   fail:0   skip:27  time:504s
fi-pnv-d510      total:288  pass:222  dwarn:1   dfail:0   fail:0   skip:65  time:577s
fi-skl-6260u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:432s
fi-skl-6600u     total:288  pass:260  dwarn:1   dfail:0   fail:0   skip:27  time:517s
fi-skl-6700hq    total:288  pass:261  dwarn:1   dfail:0   fail:0   skip:26  time:525s
fi-skl-6700k2    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:496s
fi-skl-6770hq    total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:485s
fi-skl-gvtdvm    total:288  pass:265  dwarn:0   dfail:0   fail:0   skip:23  time:434s
fi-snb-2520m     total:245  pass:211  dwarn:0   dfail:0   fail:0   skip:33 
fi-snb-2600      total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:401s
Blacklisted hosts:
fi-cfl-s2        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:562s
fi-cnl-y         total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:609s
fi-glk-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:475s

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_746/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✓ Fi.CI.IGT: success for kms_vblank: Move tests over from kms_flip. (rev2)
  2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (6 preceding siblings ...)
  2018-01-04 14:49 ` ✓ Fi.CI.BAT: success for kms_vblank: Move tests over from kms_flip. (rev2) Patchwork
@ 2018-01-04 16:52 ` Patchwork
  2018-01-08 13:50 ` ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip. (rev3) Patchwork
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-01-04 16:52 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

== Series Details ==

Series: kms_vblank: Move tests over from kms_flip. (rev2)
URL   : https://patchwork.freedesktop.org/series/36006/
State : success

== Summary ==

Test kms_flip:
        Subgroup modeset-vs-vblank-race-interruptible:
                fail       -> PASS       (shard-hsw) fdo#103060
Test kms_frontbuffer_tracking:
        Subgroup fbc-1p-offscren-pri-shrfb-draw-render:
                fail       -> PASS       (shard-snb) fdo#101623
        Subgroup fbc-1p-primscrn-pri-shrfb-draw-render:
                fail       -> PASS       (shard-hsw) fdo#103167
Test perf:
        Subgroup polling:
                pass       -> FAIL       (shard-hsw) fdo#102252

fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
fdo#101623 https://bugs.freedesktop.org/show_bug.cgi?id=101623
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252

shard-hsw        total:2804 pass:1576 dwarn:1   dfail:0   fail:11  skip:1216 time:7620s
shard-snb        total:2804 pass:1321 dwarn:1   dfail:0   fail:13  skip:1469 time:6530s

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_746/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v3 i-g-t] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v3.
  2018-01-04 14:12 ` [PATCH i-g-t v2 3/6] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2 Maarten Lankhorst
@ 2018-01-08 10:23   ` Maarten Lankhorst
  2018-01-10  9:30     ` Daniel Vetter
  0 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-08 10:23 UTC (permalink / raw)
  To: intel-gfx

There's no need to test this more than once. Add a NOHANG
flag which can be used to specify that a subtest can not
be run when hanging. If it's set on either the subtest or
the mode, the -hang test for this combination will not be
generated.

Changes since v1:
- Merge the patch that renamed HANG to NOHANG.
- Rebase after 'reorganize subtests by type'.
- Allow subtests to specify NOHANG too.
Changes since v2:
- Mark accuracy test with NOHANG, gpu reset disables interrupts,
  causing the test to fail.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 tests/kms_flip.c   | 10 +---------
 tests/kms_vblank.c | 25 +++++++++++++++++++++++--
 2 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 7689e65b521a..50c16b0debbf 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -72,7 +72,7 @@
 #define TEST_SUSPEND		(1 << 26)
 #define TEST_TS_CONT		(1 << 27)
 #define TEST_BO_TOOBIG		(1 << 28)
-#define TEST_HANG_ONCE		(1 << 29)
+
 #define TEST_BASIC		(1 << 30)
 
 #define EVENT_FLIP		(1 << 0)
@@ -1071,13 +1071,8 @@ static unsigned int wait_for_events(struct test_output *o)
 static unsigned event_loop(struct test_output *o, unsigned duration_ms)
 {
 	unsigned long start, end;
-	igt_hang_t hang;
 	int count = 0;
 
-	memset(&hang, 0, sizeof(hang));
-	if (o->flags & TEST_HANG_ONCE)
-		hang = hang_gpu(drm_fd);
-
 	start = gettime_us();
 
 	while (1) {
@@ -1097,8 +1092,6 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
 
 	end = gettime_us();
 
-	unhang_gpu(drm_fd, hang);
-
 	/* Flush any remaining events */
 	if (o->pending_events)
 		wait_for_events(o);
@@ -1565,7 +1558,6 @@ int main(int argc, char **argv)
 			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,
diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index e51e96c7f061..c56b82033b75 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -54,6 +54,7 @@ typedef struct {
 #define IDLE 1
 #define BUSY 2
 #define FORKED 4
+#define NOHANG 8
 } data_t;
 
 static double elapsed(const struct timespec *start,
@@ -119,6 +120,7 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
 		data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
 	igt_display_t *display = &data->display;
 	igt_output_t *output = data->output;
+	igt_hang_t hang;
 
 	prepare_crtc(data, fd, output);
 
@@ -126,6 +128,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
 		 igt_subtest_name(), kmstest_pipe_name(data->pipe),
 		 igt_output_name(output), nchildren);
 
+	if (!(data->flags & NOHANG))
+		hang = igt_hang_ring(display->drm_fd, I915_EXEC_DEFAULT);
+
 	if (data->flags & BUSY) {
 		union drm_wait_vblank vbl;
 
@@ -148,6 +153,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
 
 	igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
 
+	if (!(data->flags & NOHANG))
+		igt_post_hang_ring(fd, hang);
+
 	igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
 		 igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
 
@@ -316,7 +324,7 @@ igt_main
 		void (*func)(data_t *, int, int);
 		unsigned int valid;
 	} funcs[] = {
-		{ "accuracy", accuracy, IDLE },
+		{ "accuracy", accuracy, IDLE | NOHANG },
 		{ "query", vblank_query, IDLE | FORKED | BUSY },
 		{ "wait", vblank_wait, IDLE | FORKED | BUSY },
 		{ }
@@ -354,12 +362,25 @@ igt_main
 
 		for (f = funcs; f->name; f++) {
 			for (m = modes; m->name; m++) {
-				if (m->flags & ~f->valid)
+				if (m->flags & ~(f->valid | NOHANG))
 					continue;
 
 				igt_subtest_f("pipe-%s-%s-%s",
 					      kmstest_pipe_name(data.pipe),
 					      f->name, m->name) {
+					for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
+						data.flags = m->flags | NOHANG;
+						run_test(&data, fd, f->func);
+					}
+				}
+
+				/* Skip the -hang version if NOHANG flag is set */
+				if (f->valid & NOHANG || m->flags & NOHANG)
+					continue;
+
+				igt_subtest_f("pipe-%s-%s-%s-hang",
+					      kmstest_pipe_name(data.pipe),
+					      f->name, m->name) {
 					for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
 						data.flags = m->flags;
 						run_test(&data, fd, f->func);
-- 
2.15.1

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

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip. (rev3)
  2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (7 preceding siblings ...)
  2018-01-04 16:52 ` ✓ Fi.CI.IGT: " Patchwork
@ 2018-01-08 13:50 ` Patchwork
  2018-01-08 15:08 ` ✓ Fi.CI.BAT: success " Patchwork
  2018-01-08 20:00 ` ✗ Fi.CI.IGT: warning " Patchwork
  10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-01-08 13:50 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

== Series Details ==

Series: kms_vblank: Move tests over from kms_flip. (rev3)
URL   : https://patchwork.freedesktop.org/series/36006/
State : failure

== Summary ==

IGT patchset tested on top of latest successful build
d5e51a60e5cbb807bcacd2655bd4ffe90a686bbb scripts/trace.pl: Optimize event parsing and processing

with latest DRM-Tip kernel build CI_DRM_3606
d8bf435a0cf9 drm-tip: 2018y-01m-08d-09h-58m-24s UTC integration manifest

Testlist changes:
+++ 150 lines
--- 65 lines

Test gem_mmap_gtt:
        Subgroup basic-small-bo-tiledx:
                pass       -> FAIL       (fi-gdg-551) fdo#102575
Test kms_pipe_crc_basic:
        Subgroup read-crc-pipe-c-frame-sequence:
                pass       -> FAIL       (fi-skl-6700k2)
        Subgroup suspend-read-crc-pipe-a:
                pass       -> DMESG-WARN (fi-kbl-r) fdo#104172 +1
        Subgroup suspend-read-crc-pipe-b:
                incomplete -> PASS       (fi-snb-2520m) fdo#103713

fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575
fdo#104172 https://bugs.freedesktop.org/show_bug.cgi?id=104172
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713

fi-bdw-5557u     total:288  pass:267  dwarn:0   dfail:0   fail:0   skip:21  time:420s
fi-bdw-gvtdvm    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:429s
fi-blb-e6850     total:288  pass:223  dwarn:1   dfail:0   fail:0   skip:64  time:373s
fi-bsw-n3050     total:288  pass:242  dwarn:0   dfail:0   fail:0   skip:46  time:488s
fi-bwr-2160      total:288  pass:183  dwarn:0   dfail:0   fail:0   skip:105 time:283s
fi-bxt-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:487s
fi-bxt-j4205     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:489s
fi-byt-j1900     total:288  pass:253  dwarn:0   dfail:0   fail:0   skip:35  time:474s
fi-byt-n2820     total:288  pass:249  dwarn:0   dfail:0   fail:0   skip:39  time:464s
fi-elk-e7500     total:224  pass:168  dwarn:10  dfail:0   fail:0   skip:45 
fi-gdg-551       total:288  pass:179  dwarn:0   dfail:0   fail:1   skip:108 time:277s
fi-glk-1         total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:517s
fi-hsw-4770      total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:394s
fi-hsw-4770r     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:406s
fi-ilk-650       total:288  pass:228  dwarn:0   dfail:0   fail:0   skip:60  time:414s
fi-ivb-3520m     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:463s
fi-ivb-3770      total:288  pass:255  dwarn:0   dfail:0   fail:0   skip:33  time:416s
fi-kbl-7500u     total:288  pass:263  dwarn:1   dfail:0   fail:0   skip:24  time:466s
fi-kbl-7560u     total:288  pass:269  dwarn:0   dfail:0   fail:0   skip:19  time:501s
fi-kbl-7567u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:453s
fi-kbl-r         total:288  pass:260  dwarn:1   dfail:0   fail:0   skip:27  time:500s
fi-pnv-d510      total:288  pass:222  dwarn:1   dfail:0   fail:0   skip:65  time:587s
fi-skl-6260u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:433s
fi-skl-6600u     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:518s
fi-skl-6700hq    total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:530s
fi-skl-6700k2    total:288  pass:263  dwarn:0   dfail:0   fail:1   skip:24  time:494s
fi-skl-6770hq    total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:477s
fi-skl-gvtdvm    total:288  pass:265  dwarn:0   dfail:0   fail:0   skip:23  time:431s
fi-snb-2520m     total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:522s
fi-snb-2600      total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:402s
Blacklisted hosts:
fi-cfl-s2        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:569s
fi-cnl-y         total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:608s

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_752/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✓ Fi.CI.BAT: success for kms_vblank: Move tests over from kms_flip. (rev3)
  2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (8 preceding siblings ...)
  2018-01-08 13:50 ` ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip. (rev3) Patchwork
@ 2018-01-08 15:08 ` Patchwork
  2018-01-08 20:00 ` ✗ Fi.CI.IGT: warning " Patchwork
  10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-01-08 15:08 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

== Series Details ==

Series: kms_vblank: Move tests over from kms_flip. (rev3)
URL   : https://patchwork.freedesktop.org/series/36006/
State : success

== Summary ==

IGT patchset tested on top of latest successful build
d5e51a60e5cbb807bcacd2655bd4ffe90a686bbb scripts/trace.pl: Optimize event parsing and processing

with latest DRM-Tip kernel build CI_DRM_3607
70afdd6e5dfe drm-tip: 2018y-01m-08d-13h-41m-31s UTC integration manifest

Testlist changes:
+++ 150 lines
--- 65 lines

Test debugfs_test:
        Subgroup read_all_entries:
                dmesg-warn -> DMESG-FAIL (fi-elk-e7500) fdo#103989
Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-a:
                dmesg-warn -> PASS       (fi-kbl-r) fdo#104172 +1

fdo#103989 https://bugs.freedesktop.org/show_bug.cgi?id=103989
fdo#104172 https://bugs.freedesktop.org/show_bug.cgi?id=104172

fi-bdw-5557u     total:288  pass:267  dwarn:0   dfail:0   fail:0   skip:21  time:423s
fi-bdw-gvtdvm    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:428s
fi-blb-e6850     total:288  pass:223  dwarn:1   dfail:0   fail:0   skip:64  time:375s
fi-bsw-n3050     total:288  pass:242  dwarn:0   dfail:0   fail:0   skip:46  time:498s
fi-bwr-2160      total:288  pass:183  dwarn:0   dfail:0   fail:0   skip:105 time:282s
fi-bxt-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:490s
fi-bxt-j4205     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:491s
fi-byt-j1900     total:288  pass:253  dwarn:0   dfail:0   fail:0   skip:35  time:480s
fi-byt-n2820     total:288  pass:249  dwarn:0   dfail:0   fail:0   skip:39  time:471s
fi-elk-e7500     total:224  pass:168  dwarn:9   dfail:1   fail:0   skip:45 
fi-gdg-551       total:288  pass:179  dwarn:0   dfail:0   fail:1   skip:108 time:276s
fi-glk-1         total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:510s
fi-hsw-4770      total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:393s
fi-hsw-4770r     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:403s
fi-ilk-650       total:288  pass:228  dwarn:0   dfail:0   fail:0   skip:60  time:417s
fi-ivb-3520m     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:458s
fi-ivb-3770      total:288  pass:255  dwarn:0   dfail:0   fail:0   skip:33  time:415s
fi-kbl-7500u     total:288  pass:263  dwarn:1   dfail:0   fail:0   skip:24  time:471s
fi-kbl-7560u     total:288  pass:269  dwarn:0   dfail:0   fail:0   skip:19  time:498s
fi-kbl-7567u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:456s
fi-kbl-r         total:288  pass:260  dwarn:1   dfail:0   fail:0   skip:27  time:502s
fi-pnv-d510      total:288  pass:222  dwarn:1   dfail:0   fail:0   skip:65  time:581s
fi-skl-6260u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:434s
fi-skl-6600u     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:512s
fi-skl-6700hq    total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:529s
fi-skl-6700k2    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:492s
fi-skl-6770hq    total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:492s
fi-skl-gvtdvm    total:288  pass:265  dwarn:0   dfail:0   fail:0   skip:23  time:432s
fi-snb-2520m     total:3    pass:2    dwarn:0   dfail:0   fail:0   skip:0  
fi-snb-2600      total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:399s
Blacklisted hosts:
fi-cfl-s2        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:566s
fi-glk-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:474s

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_754/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.IGT: warning for kms_vblank: Move tests over from kms_flip. (rev3)
  2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (9 preceding siblings ...)
  2018-01-08 15:08 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2018-01-08 20:00 ` Patchwork
  10 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-01-08 20:00 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

== Series Details ==

Series: kms_vblank: Move tests over from kms_flip. (rev3)
URL   : https://patchwork.freedesktop.org/series/36006/
State : warning

== Summary ==

Test drv_suspend:
        Subgroup sysfs-reader-hibernate:
                fail       -> SKIP       (shard-snb) fdo#103375 +1
Test kms_frontbuffer_tracking:
        Subgroup fbc-1p-offscren-pri-shrfb-draw-render:
                pass       -> FAIL       (shard-snb) fdo#101623 +1
Test kms_flip:
        Subgroup modeset-vs-vblank-race-interruptible:
                fail       -> PASS       (shard-hsw) fdo#103060
Test kms_setmode:
        Subgroup basic:
                fail       -> PASS       (shard-hsw) fdo#99912
Test kms_render:
        Subgroup gpu-blit:
                pass       -> WARN       (shard-hsw)
Test gem_tiled_swapping:
        Subgroup non-threaded:
                incomplete -> PASS       (shard-hsw) fdo#104218
Test gem_eio:
        Subgroup in-flight-contexts:
                dmesg-warn -> PASS       (shard-snb) fdo#104058

fdo#103375 https://bugs.freedesktop.org/show_bug.cgi?id=103375
fdo#101623 https://bugs.freedesktop.org/show_bug.cgi?id=101623
fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
fdo#104218 https://bugs.freedesktop.org/show_bug.cgi?id=104218
fdo#104058 https://bugs.freedesktop.org/show_bug.cgi?id=104058

shard-hsw        total:2798 pass:1574 dwarn:1   dfail:0   fail:9   skip:1213 time:7564s
shard-snb        total:2798 pass:1319 dwarn:1   dfail:0   fail:10  skip:1468 time:6582s

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_754/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests.
  2018-01-04 14:12 ` [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
@ 2018-01-10  8:50   ` Daniel Vetter
  0 siblings, 0 replies; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10  8:50 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

On Thu, Jan 04, 2018 at 03:12:38PM +0100, Maarten Lankhorst wrote:
> With the removal of mmio flips, blt and rcs flips are no longer
> different from doing busy testing in kms_busy.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> ---
>  tests/kms_flip.c | 40 +---------------------------------------
>  1 file changed, 1 insertion(+), 39 deletions(-)
> 
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index 2899f20e6c73..7689e65b521a 100644
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -45,8 +45,7 @@
>  #include "igt_stats.h"
>  
>  #define TEST_DPMS		(1 << 0)
> -#define TEST_WITH_DUMMY_BCS	(1 << 1)
> -#define TEST_WITH_DUMMY_RCS	(1 << 2)
> +
>  #define TEST_PAN		(1 << 3)
>  #define TEST_MODESET		(1 << 4)
>  #define TEST_CHECK_TS		(1 << 5)
> @@ -668,8 +667,6 @@ static unsigned int run_test_step(struct test_output *o)
>  	struct vblank_reply vbl_reply;
>  	unsigned int target_seq;
>  	igt_hang_t hang;
> -	igt_spin_t *spin_rcs = 0;
> -	igt_spin_t *spin_bcs = 0;
>  
>  	target_seq = o->vblank_state.seq_step;
>  	/* Absolute waits only works once we have a frame counter. */
> @@ -691,20 +688,6 @@ 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) {
> -		spin_bcs = __igt_spin_batch_new(drm_fd, 0, I915_EXEC_BLT,
> -						o->fb_info[o->current_fb_id].gem_handle);
> -		igt_spin_batch_set_timeout(spin_bcs,
> -					   NSEC_PER_SEC);
> -	}
> -
> -	if (o->flags & TEST_WITH_DUMMY_RCS) {
> -		spin_rcs = __igt_spin_batch_new(drm_fd, 0, I915_EXEC_RENDER,
> -						o->fb_info[o->current_fb_id].gem_handle);
> -		igt_spin_batch_set_timeout(spin_rcs,
> -					   NSEC_PER_SEC);
> -	}
> -
>  	if (o->flags & TEST_FB_RECREATE)
>  		recreate_fb(o);
>  	new_fb_id = o->fb_ids[o->current_fb_id];
> @@ -809,10 +792,6 @@ static unsigned int run_test_step(struct test_output *o)
>  			completed_events = EVENT_VBLANK;
>  		}
>  	}
> -	if (spin_rcs)
> -		igt_spin_batch_free(drm_fd, spin_rcs);
> -	if (spin_bcs)
> -		igt_spin_batch_free(drm_fd, spin_bcs);
>  
>  	if (do_flip && (o->flags & TEST_EBUSY))
>  		igt_assert(do_page_flip(o, new_fb_id, true) == -EBUSY);
> @@ -1065,10 +1044,6 @@ static unsigned int wait_for_events(struct test_output *o)
>  	evctx.vblank_handler = vblank_handler;
>  	evctx.page_flip_handler = page_flip_handler;
>  
> -	/* make timeout lax with the dummy load */
> -	if (o->flags & (TEST_WITH_DUMMY_BCS | TEST_WITH_DUMMY_RCS))
> -		timeout.tv_sec *= 60;
> -
>  	FD_ZERO(&fds);
>  	FD_SET(drm_fd, &fds);
>  	do {
> @@ -1099,9 +1074,6 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
>  	igt_hang_t hang;
>  	int count = 0;
>  
> -	if (o->flags & (TEST_WITH_DUMMY_BCS | TEST_WITH_DUMMY_RCS))
> -		igt_require_gem(drm_fd);
> -
>  	memset(&hang, 0, sizeof(hang));
>  	if (o->flags & TEST_HANG_ONCE)
>  		hang = hang_gpu(drm_fd);
> @@ -1571,15 +1543,7 @@ int main(int argc, char **argv)
>  		{ 30,  TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
>  					"blocking-absolute-wf_vblank" },
>  		{ 60,  TEST_VBLANK | TEST_DPMS | TEST_EINVAL, "wf_vblank-vs-dpms" },
> -		{ 60,  TEST_VBLANK | TEST_DPMS | TEST_WITH_DUMMY_BCS,
> -					"blt-wf_vblank-vs-dpms" },
> -		{ 60,  TEST_VBLANK | TEST_DPMS | TEST_WITH_DUMMY_RCS,
> -					"rcs-wf_vblank-vs-dpms" },
>  		{ 60,  TEST_VBLANK | TEST_MODESET | TEST_EINVAL, "wf_vblank-vs-modeset" },
> -		{ 60,  TEST_VBLANK | TEST_MODESET | TEST_WITH_DUMMY_BCS,
> -					"blt-wf_vblank-vs-modeset" },
> -		{ 60,  TEST_VBLANK | TEST_MODESET | TEST_WITH_DUMMY_RCS,
> -					"rcs-wf_vblank-vs-modeset" },
>  		{ 10, TEST_FLIP | TEST_BASIC, "plain-flip" },
>  		{ 30, TEST_FLIP | TEST_EBUSY , "busy-flip" },
>  		{ 30, TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
> @@ -1589,8 +1553,6 @@ int main(int argc, char **argv)
>  		{ 30, TEST_FLIP | TEST_RMFB | TEST_MODESET , "flip-vs-rmfb" },
>  		{ 20, TEST_FLIP | TEST_DPMS | TEST_EINVAL | TEST_BASIC, "flip-vs-dpms" },
>  		{ 30,  TEST_FLIP | TEST_PAN, "flip-vs-panning" },
> -		{ 60, TEST_FLIP | TEST_PAN | TEST_WITH_DUMMY_BCS, "blt-flip-vs-panning" },
> -		{ 60, TEST_FLIP | TEST_PAN | TEST_WITH_DUMMY_RCS, "render-flip-vs-panning" },
>  		{ 20, TEST_FLIP | TEST_MODESET | TEST_EINVAL | TEST_BASIC, "flip-vs-modeset" },
>  		{ 30,  TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
>  					"flip-vs-expired-vblank" },
> -- 
> 2.15.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe
  2018-01-04 14:12 ` [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe Maarten Lankhorst
@ 2018-01-10  8:57   ` Daniel Vetter
  2018-01-10  9:04     ` Daniel Vetter
  0 siblings, 1 reply; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10  8:57 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

On Thu, Jan 04, 2018 at 03:12:39PM +0100, Maarten Lankhorst wrote:
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
>  tests/kms_vblank.c | 93 ++++++++++++++++++++++++++++--------------------------
>  1 file changed, 49 insertions(+), 44 deletions(-)
> 
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index 342e4ef23b97..e51e96c7f061 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -118,49 +118,41 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
>  	int nchildren =
>  		data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
>  	igt_display_t *display = &data->display;
> -	igt_output_t *output;
> -	enum pipe p;
> +	igt_output_t *output = data->output;
>  
> -	for_each_pipe_with_valid_output(display, p, output) {
> -		data->pipe = p;
> -		prepare_crtc(data, fd, output);
> +	prepare_crtc(data, fd, output);
>  
> -		igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> -			 igt_subtest_name(),
> -			 kmstest_pipe_name(data->pipe),
> -			 igt_output_name(output),
> -			 nchildren);
> -
> -		if (data->flags & BUSY) {
> -			union drm_wait_vblank vbl;
> -
> -			memset(&vbl, 0, sizeof(vbl));
> -			vbl.request.type =
> -				DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> -			vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> -			vbl.request.sequence = 120 + 12;
> -			igt_assert_eq(wait_vblank(fd, &vbl), 0);
> -		}
> +	igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> +		 igt_subtest_name(), kmstest_pipe_name(data->pipe),
> +		 igt_output_name(output), nchildren);
>  
> -		igt_fork(child, nchildren)
> -			testfunc(data, fd, nchildren);
> -		igt_waitchildren();
> -
> -		if (data->flags & BUSY) {
> -			struct drm_event_vblank buf;
> -			igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
> -		}
> +	if (data->flags & BUSY) {
> +		union drm_wait_vblank vbl;
>  
> -		igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> +		memset(&vbl, 0, sizeof(vbl));
> +		vbl.request.type =
> +			DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> +		vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> +		vbl.request.sequence = 120 + 12;
> +		igt_assert_eq(wait_vblank(fd, &vbl), 0);
> +	}
>  
> -		igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> -			 igt_subtest_name(),
> -			 kmstest_pipe_name(data->pipe),
> -			 igt_output_name(output));
> +	igt_fork(child, nchildren)
> +		testfunc(data, fd, nchildren);
> +	igt_waitchildren();
>  
> -		/* cleanup what prepare_crtc() has done */
> -		cleanup_crtc(data, fd, output);
> +	if (data->flags & BUSY) {
> +		struct drm_event_vblank buf;
> +		igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
>  	}
> +
> +	igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> +
> +	igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> +		 igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
> +
> +	/* cleanup what prepare_crtc() has done */
> +	cleanup_crtc(data, fd, output);
>  }
>  
>  static void crtc_id_subtest(data_t *data, int fd)
> @@ -329,6 +321,8 @@ igt_main
>  		{ "wait", vblank_wait, IDLE | FORKED | BUSY },
>  		{ }
>  	}, *f;
> +	enum pipe p;
> +
>  	const struct {
>  		const char *name;
>  		unsigned int flags;
> @@ -352,14 +346,25 @@ igt_main
>  	igt_subtest("crtc-id")
>  		crtc_id_subtest(&data, fd);
>  
> -	for (f = funcs; f->name; f++) {
> -		for (m = modes; m->name; m++) {
> -			if (m->flags & ~f->valid)
> -				continue;
> -
> -			igt_subtest_f("%s-%s", f->name, m->name) {
> -				data.flags = m->flags;
> -				run_test(&data, fd, f->func);
> +	for_each_pipe_static(p) igt_subtest_group {

Imo newline and {} and more indent, I was confused for a bit looking where
you have the igt_subtest_group :-)

Also we need to give the cibuglog folks a headups before pushing ofc.

With the bikeshed addressed:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>


> +		igt_fixture
> +			igt_display_require_output_on_pipe(&data.display, p);
> +
> +		data.pipe = p;
> +
> +		for (f = funcs; f->name; f++) {
> +			for (m = modes; m->name; m++) {
> +				if (m->flags & ~f->valid)
> +					continue;
> +
> +				igt_subtest_f("pipe-%s-%s-%s",
> +					      kmstest_pipe_name(data.pipe),
> +					      f->name, m->name) {
> +					for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> +						data.flags = m->flags;
> +						run_test(&data, fd, f->func);
> +					}
> +				}
>  			}
>  		}
>  	}
> -- 
> 2.15.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe
  2018-01-10  8:57   ` Daniel Vetter
@ 2018-01-10  9:04     ` Daniel Vetter
  2018-01-10 10:59       ` Maarten Lankhorst
  0 siblings, 1 reply; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10  9:04 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

On Wed, Jan 10, 2018 at 09:57:47AM +0100, Daniel Vetter wrote:
> On Thu, Jan 04, 2018 at 03:12:39PM +0100, Maarten Lankhorst wrote:
> > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > ---
> >  tests/kms_vblank.c | 93 ++++++++++++++++++++++++++++--------------------------
> >  1 file changed, 49 insertions(+), 44 deletions(-)
> > 
> > diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> > index 342e4ef23b97..e51e96c7f061 100644
> > --- a/tests/kms_vblank.c
> > +++ b/tests/kms_vblank.c
> > @@ -118,49 +118,41 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
> >  	int nchildren =
> >  		data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
> >  	igt_display_t *display = &data->display;
> > -	igt_output_t *output;
> > -	enum pipe p;
> > +	igt_output_t *output = data->output;
> >  
> > -	for_each_pipe_with_valid_output(display, p, output) {
> > -		data->pipe = p;
> > -		prepare_crtc(data, fd, output);
> > +	prepare_crtc(data, fd, output);
> >  
> > -		igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> > -			 igt_subtest_name(),
> > -			 kmstest_pipe_name(data->pipe),
> > -			 igt_output_name(output),
> > -			 nchildren);
> > -
> > -		if (data->flags & BUSY) {
> > -			union drm_wait_vblank vbl;
> > -
> > -			memset(&vbl, 0, sizeof(vbl));
> > -			vbl.request.type =
> > -				DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> > -			vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> > -			vbl.request.sequence = 120 + 12;
> > -			igt_assert_eq(wait_vblank(fd, &vbl), 0);
> > -		}
> > +	igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> > +		 igt_subtest_name(), kmstest_pipe_name(data->pipe),
> > +		 igt_output_name(output), nchildren);
> >  
> > -		igt_fork(child, nchildren)
> > -			testfunc(data, fd, nchildren);
> > -		igt_waitchildren();
> > -
> > -		if (data->flags & BUSY) {
> > -			struct drm_event_vblank buf;
> > -			igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
> > -		}
> > +	if (data->flags & BUSY) {
> > +		union drm_wait_vblank vbl;
> >  
> > -		igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> > +		memset(&vbl, 0, sizeof(vbl));
> > +		vbl.request.type =
> > +			DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> > +		vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> > +		vbl.request.sequence = 120 + 12;
> > +		igt_assert_eq(wait_vblank(fd, &vbl), 0);
> > +	}
> >  
> > -		igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> > -			 igt_subtest_name(),
> > -			 kmstest_pipe_name(data->pipe),
> > -			 igt_output_name(output));
> > +	igt_fork(child, nchildren)
> > +		testfunc(data, fd, nchildren);
> > +	igt_waitchildren();
> >  
> > -		/* cleanup what prepare_crtc() has done */
> > -		cleanup_crtc(data, fd, output);
> > +	if (data->flags & BUSY) {
> > +		struct drm_event_vblank buf;
> > +		igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
> >  	}
> > +
> > +	igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> > +
> > +	igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> > +		 igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
> > +
> > +	/* cleanup what prepare_crtc() has done */
> > +	cleanup_crtc(data, fd, output);
> >  }
> >  
> >  static void crtc_id_subtest(data_t *data, int fd)
> > @@ -329,6 +321,8 @@ igt_main
> >  		{ "wait", vblank_wait, IDLE | FORKED | BUSY },
> >  		{ }
> >  	}, *f;
> > +	enum pipe p;
> > +
> >  	const struct {
> >  		const char *name;
> >  		unsigned int flags;
> > @@ -352,14 +346,25 @@ igt_main
> >  	igt_subtest("crtc-id")
> >  		crtc_id_subtest(&data, fd);
> >  
> > -	for (f = funcs; f->name; f++) {
> > -		for (m = modes; m->name; m++) {
> > -			if (m->flags & ~f->valid)
> > -				continue;
> > -
> > -			igt_subtest_f("%s-%s", f->name, m->name) {
> > -				data.flags = m->flags;
> > -				run_test(&data, fd, f->func);
> > +	for_each_pipe_static(p) igt_subtest_group {
> 
> Imo newline and {} and more indent, I was confused for a bit looking where
> you have the igt_subtest_group :-)
> 
> Also we need to give the cibuglog folks a headups before pushing ofc.
> 
> With the bikeshed addressed:
> 
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> 
> 
> > +		igt_fixture
> > +			igt_display_require_output_on_pipe(&data.display, p);
> > +
> > +		data.pipe = p;
> > +
> > +		for (f = funcs; f->name; f++) {
> > +			for (m = modes; m->name; m++) {
> > +				if (m->flags & ~f->valid)
> > +					continue;
> > +
> > +				igt_subtest_f("pipe-%s-%s-%s",
> > +					      kmstest_pipe_name(data.pipe),
> > +					      f->name, m->name) {
> > +					for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> > +						data.flags = m->flags;
> > +						run_test(&data, fd, f->func);
> > +					}

Ok I totally overlooked this one - looping over all output combos still
means tons of modesets within each subtest. How does that make stuff
faster/better?
-Daniel

> > +				}
> >  			}
> >  		}
> >  	}
> > -- 
> > 2.15.1
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 i-g-t] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v3.
  2018-01-08 10:23   ` [PATCH v3 i-g-t] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v3 Maarten Lankhorst
@ 2018-01-10  9:30     ` Daniel Vetter
  0 siblings, 0 replies; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10  9:30 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

On Mon, Jan 08, 2018 at 11:23:14AM +0100, Maarten Lankhorst wrote:
> There's no need to test this more than once. Add a NOHANG
> flag which can be used to specify that a subtest can not
> be run when hanging. If it's set on either the subtest or
> the mode, the -hang test for this combination will not be
> generated.
> 
> Changes since v1:
> - Merge the patch that renamed HANG to NOHANG.
> - Rebase after 'reorganize subtests by type'.
> - Allow subtests to specify NOHANG too.
> Changes since v2:
> - Mark accuracy test with NOHANG, gpu reset disables interrupts,
>   causing the test to fail.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
>  tests/kms_flip.c   | 10 +---------
>  tests/kms_vblank.c | 25 +++++++++++++++++++++++--
>  2 files changed, 24 insertions(+), 11 deletions(-)
> 
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index 7689e65b521a..50c16b0debbf 100644
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -72,7 +72,7 @@
>  #define TEST_SUSPEND		(1 << 26)
>  #define TEST_TS_CONT		(1 << 27)
>  #define TEST_BO_TOOBIG		(1 << 28)
> -#define TEST_HANG_ONCE		(1 << 29)
> +
>  #define TEST_BASIC		(1 << 30)
>  
>  #define EVENT_FLIP		(1 << 0)
> @@ -1071,13 +1071,8 @@ static unsigned int wait_for_events(struct test_output *o)
>  static unsigned event_loop(struct test_output *o, unsigned duration_ms)
>  {
>  	unsigned long start, end;
> -	igt_hang_t hang;
>  	int count = 0;
>  
> -	memset(&hang, 0, sizeof(hang));
> -	if (o->flags & TEST_HANG_ONCE)
> -		hang = hang_gpu(drm_fd);
> -
>  	start = gettime_us();
>  
>  	while (1) {
> @@ -1097,8 +1092,6 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
>  
>  	end = gettime_us();
>  
> -	unhang_gpu(drm_fd, hang);
> -
>  	/* Flush any remaining events */
>  	if (o->pending_events)
>  		wait_for_events(o);
> @@ -1565,7 +1558,6 @@ int main(int argc, char **argv)
>  			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,
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index e51e96c7f061..c56b82033b75 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -54,6 +54,7 @@ typedef struct {
>  #define IDLE 1
>  #define BUSY 2
>  #define FORKED 4
> +#define NOHANG 8
>  } data_t;
>  
>  static double elapsed(const struct timespec *start,
> @@ -119,6 +120,7 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
>  		data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
>  	igt_display_t *display = &data->display;
>  	igt_output_t *output = data->output;
> +	igt_hang_t hang;
>  
>  	prepare_crtc(data, fd, output);
>  
> @@ -126,6 +128,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
>  		 igt_subtest_name(), kmstest_pipe_name(data->pipe),
>  		 igt_output_name(output), nchildren);
>  
> +	if (!(data->flags & NOHANG))
> +		hang = igt_hang_ring(display->drm_fd, I915_EXEC_DEFAULT);
> +
>  	if (data->flags & BUSY) {
>  		union drm_wait_vblank vbl;
>  
> @@ -148,6 +153,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
>  
>  	igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
>  
> +	if (!(data->flags & NOHANG))
> +		igt_post_hang_ring(fd, hang);
> +
>  	igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
>  		 igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
>  
> @@ -316,7 +324,7 @@ igt_main
>  		void (*func)(data_t *, int, int);
>  		unsigned int valid;
>  	} funcs[] = {
> -		{ "accuracy", accuracy, IDLE },
> +		{ "accuracy", accuracy, IDLE | NOHANG },

Maybe a comment here that gpu hangs can block the vblank query for too
long and so affect accuracy? Documenting the reasons for why we have
NOHANG is always good.

>  		{ "query", vblank_query, IDLE | FORKED | BUSY },
>  		{ "wait", vblank_wait, IDLE | FORKED | BUSY },
>  		{ }
> @@ -354,12 +362,25 @@ igt_main
>  
>  		for (f = funcs; f->name; f++) {
>  			for (m = modes; m->name; m++) {
> -				if (m->flags & ~f->valid)
> +				if (m->flags & ~(f->valid | NOHANG))
>  					continue;
>  
>  				igt_subtest_f("pipe-%s-%s-%s",
>  					      kmstest_pipe_name(data.pipe),
>  					      f->name, m->name) {
> +					for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> +						data.flags = m->flags | NOHANG;
> +						run_test(&data, fd, f->func);
> +					}
> +				}
> +
> +				/* Skip the -hang version if NOHANG flag is set */
> +				if (f->valid & NOHANG || m->flags & NOHANG)
> +					continue;
> +
> +				igt_subtest_f("pipe-%s-%s-%s-hang",
> +					      kmstest_pipe_name(data.pipe),
> +					      f->name, m->name) {
>  					for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
>  						data.flags = m->flags;
>  						run_test(&data, fd, f->func);

Imo extract this into a helper, it nests way too deeply. But bikeshed for
another patch.

With the NOHANG comment added:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

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

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc
  2018-01-04 14:12 ` [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc Maarten Lankhorst
@ 2018-01-10  9:32   ` Daniel Vetter
  0 siblings, 0 replies; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10  9:32 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

On Thu, Jan 04, 2018 at 03:12:43PM +0100, Maarten Lankhorst wrote:
> New way of doing things is calling igt_display_reset() before any
> setup code. This way if the configuration stays the same, the initial
> modeset will be a noop.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

Also for the remaining patches:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> ---
>  tests/kms_vblank.c | 11 ++---------
>  1 file changed, 2 insertions(+), 9 deletions(-)
> 
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index 362221c03677..d2154f1c7605 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -74,6 +74,8 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
>  	igt_display_t *display = &data->display;
>  	igt_plane_t *primary;
>  
> +	igt_display_reset(display);
> +
>  	/* select the pipe we want to use */
>  	igt_output_set_pipe(output, data->pipe);
>  
> @@ -95,16 +97,7 @@ static void prepare_crtc(data_t *data, int fd, igt_output_t *output)
>  
>  static void cleanup_crtc(data_t *data, int fd, igt_output_t *output)
>  {
> -	igt_display_t *display = &data->display;
> -	igt_plane_t *primary;
> -
>  	igt_remove_fb(fd, &data->primary_fb);
> -
> -	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> -	igt_plane_set_fb(primary, NULL);
> -
> -	igt_output_set_pipe(output, PIPE_ANY);
> -	igt_display_commit(display);
>  }
>  
>  static int wait_vblank(int fd, union drm_wait_vblank *vbl)
> -- 
> 2.15.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe
  2018-01-10  9:04     ` Daniel Vetter
@ 2018-01-10 10:59       ` Maarten Lankhorst
  2018-01-10 12:57         ` Daniel Vetter
  0 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-01-10 10:59 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx

Op 10-01-18 om 10:04 schreef Daniel Vetter:
> On Wed, Jan 10, 2018 at 09:57:47AM +0100, Daniel Vetter wrote:
>> On Thu, Jan 04, 2018 at 03:12:39PM +0100, Maarten Lankhorst wrote:
>>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>>> ---
>>>  tests/kms_vblank.c | 93 ++++++++++++++++++++++++++++--------------------------
>>>  1 file changed, 49 insertions(+), 44 deletions(-)
>>>
>>> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
>>> index 342e4ef23b97..e51e96c7f061 100644
>>> --- a/tests/kms_vblank.c
>>> +++ b/tests/kms_vblank.c
>>> @@ -118,49 +118,41 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
>>>  	int nchildren =
>>>  		data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
>>>  	igt_display_t *display = &data->display;
>>> -	igt_output_t *output;
>>> -	enum pipe p;
>>> +	igt_output_t *output = data->output;
>>>  
>>> -	for_each_pipe_with_valid_output(display, p, output) {
>>> -		data->pipe = p;
>>> -		prepare_crtc(data, fd, output);
>>> +	prepare_crtc(data, fd, output);
>>>  
>>> -		igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
>>> -			 igt_subtest_name(),
>>> -			 kmstest_pipe_name(data->pipe),
>>> -			 igt_output_name(output),
>>> -			 nchildren);
>>> -
>>> -		if (data->flags & BUSY) {
>>> -			union drm_wait_vblank vbl;
>>> -
>>> -			memset(&vbl, 0, sizeof(vbl));
>>> -			vbl.request.type =
>>> -				DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
>>> -			vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
>>> -			vbl.request.sequence = 120 + 12;
>>> -			igt_assert_eq(wait_vblank(fd, &vbl), 0);
>>> -		}
>>> +	igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
>>> +		 igt_subtest_name(), kmstest_pipe_name(data->pipe),
>>> +		 igt_output_name(output), nchildren);
>>>  
>>> -		igt_fork(child, nchildren)
>>> -			testfunc(data, fd, nchildren);
>>> -		igt_waitchildren();
>>> -
>>> -		if (data->flags & BUSY) {
>>> -			struct drm_event_vblank buf;
>>> -			igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
>>> -		}
>>> +	if (data->flags & BUSY) {
>>> +		union drm_wait_vblank vbl;
>>>  
>>> -		igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
>>> +		memset(&vbl, 0, sizeof(vbl));
>>> +		vbl.request.type =
>>> +			DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
>>> +		vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
>>> +		vbl.request.sequence = 120 + 12;
>>> +		igt_assert_eq(wait_vblank(fd, &vbl), 0);
>>> +	}
>>>  
>>> -		igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
>>> -			 igt_subtest_name(),
>>> -			 kmstest_pipe_name(data->pipe),
>>> -			 igt_output_name(output));
>>> +	igt_fork(child, nchildren)
>>> +		testfunc(data, fd, nchildren);
>>> +	igt_waitchildren();
>>>  
>>> -		/* cleanup what prepare_crtc() has done */
>>> -		cleanup_crtc(data, fd, output);
>>> +	if (data->flags & BUSY) {
>>> +		struct drm_event_vblank buf;
>>> +		igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
>>>  	}
>>> +
>>> +	igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
>>> +
>>> +	igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
>>> +		 igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
>>> +
>>> +	/* cleanup what prepare_crtc() has done */
>>> +	cleanup_crtc(data, fd, output);
>>>  }
>>>  
>>>  static void crtc_id_subtest(data_t *data, int fd)
>>> @@ -329,6 +321,8 @@ igt_main
>>>  		{ "wait", vblank_wait, IDLE | FORKED | BUSY },
>>>  		{ }
>>>  	}, *f;
>>> +	enum pipe p;
>>> +
>>>  	const struct {
>>>  		const char *name;
>>>  		unsigned int flags;
>>> @@ -352,14 +346,25 @@ igt_main
>>>  	igt_subtest("crtc-id")
>>>  		crtc_id_subtest(&data, fd);
>>>  
>>> -	for (f = funcs; f->name; f++) {
>>> -		for (m = modes; m->name; m++) {
>>> -			if (m->flags & ~f->valid)
>>> -				continue;
>>> -
>>> -			igt_subtest_f("%s-%s", f->name, m->name) {
>>> -				data.flags = m->flags;
>>> -				run_test(&data, fd, f->func);
>>> +	for_each_pipe_static(p) igt_subtest_group {
>> Imo newline and {} and more indent, I was confused for a bit looking where
>> you have the igt_subtest_group :-)
>>
>> Also we need to give the cibuglog folks a headups before pushing ofc.
>>
>> With the bikeshed addressed:
>>
>> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>>
>>
>>> +		igt_fixture
>>> +			igt_display_require_output_on_pipe(&data.display, p);
>>> +
>>> +		data.pipe = p;
>>> +
>>> +		for (f = funcs; f->name; f++) {
>>> +			for (m = modes; m->name; m++) {
>>> +				if (m->flags & ~f->valid)
>>> +					continue;
>>> +
>>> +				igt_subtest_f("pipe-%s-%s-%s",
>>> +					      kmstest_pipe_name(data.pipe),
>>> +					      f->name, m->name) {
>>> +					for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
>>> +						data.flags = m->flags;
>>> +						run_test(&data, fd, f->func);
>>> +					}
> Ok I totally overlooked this one - looping over all output combos still
> means tons of modesets within each subtest. How does that make stuff
> faster/better?
> -Daniel
This is a temporary problem, we will need to add a for_single_valid_output_on_pipe macro in the future and then convert each caller over to it.

It's still better than running the test for a fixed amount of time, multiple times, which is what kms_flip did..

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

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe
  2018-01-10 10:59       ` Maarten Lankhorst
@ 2018-01-10 12:57         ` Daniel Vetter
  0 siblings, 0 replies; 20+ messages in thread
From: Daniel Vetter @ 2018-01-10 12:57 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

On Wed, Jan 10, 2018 at 11:59:34AM +0100, Maarten Lankhorst wrote:
> Op 10-01-18 om 10:04 schreef Daniel Vetter:
> > On Wed, Jan 10, 2018 at 09:57:47AM +0100, Daniel Vetter wrote:
> >> On Thu, Jan 04, 2018 at 03:12:39PM +0100, Maarten Lankhorst wrote:
> >>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> >>> ---
> >>>  tests/kms_vblank.c | 93 ++++++++++++++++++++++++++++--------------------------
> >>>  1 file changed, 49 insertions(+), 44 deletions(-)
> >>>
> >>> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> >>> index 342e4ef23b97..e51e96c7f061 100644
> >>> --- a/tests/kms_vblank.c
> >>> +++ b/tests/kms_vblank.c
> >>> @@ -118,49 +118,41 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
> >>>  	int nchildren =
> >>>  		data->flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
> >>>  	igt_display_t *display = &data->display;
> >>> -	igt_output_t *output;
> >>> -	enum pipe p;
> >>> +	igt_output_t *output = data->output;
> >>>  
> >>> -	for_each_pipe_with_valid_output(display, p, output) {
> >>> -		data->pipe = p;
> >>> -		prepare_crtc(data, fd, output);
> >>> +	prepare_crtc(data, fd, output);
> >>>  
> >>> -		igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> >>> -			 igt_subtest_name(),
> >>> -			 kmstest_pipe_name(data->pipe),
> >>> -			 igt_output_name(output),
> >>> -			 nchildren);
> >>> -
> >>> -		if (data->flags & BUSY) {
> >>> -			union drm_wait_vblank vbl;
> >>> -
> >>> -			memset(&vbl, 0, sizeof(vbl));
> >>> -			vbl.request.type =
> >>> -				DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> >>> -			vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> >>> -			vbl.request.sequence = 120 + 12;
> >>> -			igt_assert_eq(wait_vblank(fd, &vbl), 0);
> >>> -		}
> >>> +	igt_info("Beginning %s on pipe %s, connector %s (%d threads)\n",
> >>> +		 igt_subtest_name(), kmstest_pipe_name(data->pipe),
> >>> +		 igt_output_name(output), nchildren);
> >>>  
> >>> -		igt_fork(child, nchildren)
> >>> -			testfunc(data, fd, nchildren);
> >>> -		igt_waitchildren();
> >>> -
> >>> -		if (data->flags & BUSY) {
> >>> -			struct drm_event_vblank buf;
> >>> -			igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
> >>> -		}
> >>> +	if (data->flags & BUSY) {
> >>> +		union drm_wait_vblank vbl;
> >>>  
> >>> -		igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> >>> +		memset(&vbl, 0, sizeof(vbl));
> >>> +		vbl.request.type =
> >>> +			DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT;
> >>> +		vbl.request.type |= kmstest_get_vbl_flag(data->pipe);
> >>> +		vbl.request.sequence = 120 + 12;
> >>> +		igt_assert_eq(wait_vblank(fd, &vbl), 0);
> >>> +	}
> >>>  
> >>> -		igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> >>> -			 igt_subtest_name(),
> >>> -			 kmstest_pipe_name(data->pipe),
> >>> -			 igt_output_name(output));
> >>> +	igt_fork(child, nchildren)
> >>> +		testfunc(data, fd, nchildren);
> >>> +	igt_waitchildren();
> >>>  
> >>> -		/* cleanup what prepare_crtc() has done */
> >>> -		cleanup_crtc(data, fd, output);
> >>> +	if (data->flags & BUSY) {
> >>> +		struct drm_event_vblank buf;
> >>> +		igt_assert_eq(read(fd, &buf, sizeof(buf)), sizeof(buf));
> >>>  	}
> >>> +
> >>> +	igt_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
> >>> +
> >>> +	igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
> >>> +		 igt_subtest_name(), kmstest_pipe_name(data->pipe), igt_output_name(output));
> >>> +
> >>> +	/* cleanup what prepare_crtc() has done */
> >>> +	cleanup_crtc(data, fd, output);
> >>>  }
> >>>  
> >>>  static void crtc_id_subtest(data_t *data, int fd)
> >>> @@ -329,6 +321,8 @@ igt_main
> >>>  		{ "wait", vblank_wait, IDLE | FORKED | BUSY },
> >>>  		{ }
> >>>  	}, *f;
> >>> +	enum pipe p;
> >>> +
> >>>  	const struct {
> >>>  		const char *name;
> >>>  		unsigned int flags;
> >>> @@ -352,14 +346,25 @@ igt_main
> >>>  	igt_subtest("crtc-id")
> >>>  		crtc_id_subtest(&data, fd);
> >>>  
> >>> -	for (f = funcs; f->name; f++) {
> >>> -		for (m = modes; m->name; m++) {
> >>> -			if (m->flags & ~f->valid)
> >>> -				continue;
> >>> -
> >>> -			igt_subtest_f("%s-%s", f->name, m->name) {
> >>> -				data.flags = m->flags;
> >>> -				run_test(&data, fd, f->func);
> >>> +	for_each_pipe_static(p) igt_subtest_group {
> >> Imo newline and {} and more indent, I was confused for a bit looking where
> >> you have the igt_subtest_group :-)
> >>
> >> Also we need to give the cibuglog folks a headups before pushing ofc.
> >>
> >> With the bikeshed addressed:
> >>
> >> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> >>
> >>
> >>> +		igt_fixture
> >>> +			igt_display_require_output_on_pipe(&data.display, p);
> >>> +
> >>> +		data.pipe = p;
> >>> +
> >>> +		for (f = funcs; f->name; f++) {
> >>> +			for (m = modes; m->name; m++) {
> >>> +				if (m->flags & ~f->valid)
> >>> +					continue;
> >>> +
> >>> +				igt_subtest_f("pipe-%s-%s-%s",
> >>> +					      kmstest_pipe_name(data.pipe),
> >>> +					      f->name, m->name) {
> >>> +					for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> >>> +						data.flags = m->flags;
> >>> +						run_test(&data, fd, f->func);
> >>> +					}
> > Ok I totally overlooked this one - looping over all output combos still
> > means tons of modesets within each subtest. How does that make stuff
> > faster/better?
> > -Daniel
> This is a temporary problem, we will need to add a
> for_single_valid_output_on_pipe macro in the future and then convert
> each caller over to it.
> 
> It's still better than running the test for a fixed amount of time,
> multiple times, which is what kms_flip did..

Well for vblank timing that actually changes depending upon mode and
output (somewhat). But maybe we just need to have 1 (and really only 1)
mode timing tests which goes through all the outputs and every mode and
makes sure the timing is accurate. But then maybe not over all the pipes.

I think kms_setmode was the start for that once, but kinda didn't go that
far.

Either way, different issue.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2018-01-10 12:57 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-04 14:12 [PATCH i-g-t v2 0/6] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 1/6] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
2018-01-10  8:50   ` Daniel Vetter
2018-01-04 14:12 ` [PATCH i-g-t v2 2/6] kms_vblank: Reorganize subtests by pipe Maarten Lankhorst
2018-01-10  8:57   ` Daniel Vetter
2018-01-10  9:04     ` Daniel Vetter
2018-01-10 10:59       ` Maarten Lankhorst
2018-01-10 12:57         ` Daniel Vetter
2018-01-04 14:12 ` [PATCH i-g-t v2 3/6] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v2 Maarten Lankhorst
2018-01-08 10:23   ` [PATCH v3 i-g-t] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank, v3 Maarten Lankhorst
2018-01-10  9:30     ` Daniel Vetter
2018-01-04 14:12 ` [PATCH i-g-t v2 4/6] kms_vblank: Add tests implemented in kms_flip Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 5/6] kms_flip: Remove redundant vblank tests Maarten Lankhorst
2018-01-04 14:12 ` [PATCH i-g-t v2 6/6] kms_vblank: Remove teardown code from cleanup_crtc Maarten Lankhorst
2018-01-10  9:32   ` Daniel Vetter
2018-01-04 14:49 ` ✓ Fi.CI.BAT: success for kms_vblank: Move tests over from kms_flip. (rev2) Patchwork
2018-01-04 16:52 ` ✓ Fi.CI.IGT: " Patchwork
2018-01-08 13:50 ` ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip. (rev3) Patchwork
2018-01-08 15:08 ` ✓ Fi.CI.BAT: success " Patchwork
2018-01-08 20:00 ` ✗ Fi.CI.IGT: warning " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.