public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH i-g-t 0/7] kms_vblank: Move tests over from kms_flip.
@ 2018-01-04 13:15 Maarten Lankhorst
  2018-01-04 13:15 ` [PATCH i-g-t 1/7] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 13:15 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.

Maarten Lankhorst (7):
  tests/kms_flip: Remove blt/rcs flip tests.
  tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank
  kms_vblank: Reorganize subtests by pipe
  kms_vblank: Make the -hang tests work as intended
  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   |  55 +--------------
 tests/kms_vblank.c | 204 +++++++++++++++++++++++++++++++++++++++--------------
 2 files changed, 152 insertions(+), 107 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] 9+ messages in thread

* [PATCH i-g-t 1/7] tests/kms_flip: Remove blt/rcs flip tests.
  2018-01-04 13:15 [PATCH i-g-t 0/7] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
@ 2018-01-04 13:15 ` Maarten Lankhorst
  2018-01-04 13:15 ` [PATCH i-g-t 2/7] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank Maarten Lankhorst
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 13:15 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 | 37 +------------------------------------
 1 file changed, 1 insertion(+), 36 deletions(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 39ee68d233e5..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 {
@@ -1568,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" },
@@ -1586,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] 9+ messages in thread

* [PATCH i-g-t 2/7] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank
  2018-01-04 13:15 [PATCH i-g-t 0/7] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
  2018-01-04 13:15 ` [PATCH i-g-t 1/7] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
@ 2018-01-04 13:15 ` Maarten Lankhorst
  2018-01-04 13:15 ` [PATCH i-g-t 3/7] kms_vblank: Reorganize subtests by pipe Maarten Lankhorst
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 13:15 UTC (permalink / raw)
  To: intel-gfx

There's no need to test this more than once.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 tests/kms_flip.c   | 10 +---------
 tests/kms_vblank.c | 18 ++++++++++++++----
 2 files changed, 15 insertions(+), 13 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 342e4ef23b97..9a5a98743fa6 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 HANG 8
 } data_t;
 
 static double elapsed(const struct timespec *start,
@@ -122,6 +123,8 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
 	enum pipe p;
 
 	for_each_pipe_with_valid_output(display, p, output) {
+		igt_hang_t hang;
+
 		data->pipe = p;
 		prepare_crtc(data, fd, output);
 
@@ -131,6 +134,9 @@ static void run_test(data_t *data, int fd, void (*testfunc)(data_t *, int, int))
 			 igt_output_name(output),
 			 nchildren);
 
+		if (data->flags & HANG)
+			hang = igt_hang_ring(display->drm_fd, I915_EXEC_DEFAULT);
+
 		if (data->flags & BUSY) {
 			union drm_wait_vblank vbl;
 
@@ -153,6 +159,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 & HANG)
+			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),
@@ -324,9 +333,9 @@ igt_main
 		void (*func)(data_t *, int, int);
 		unsigned int valid;
 	} funcs[] = {
-		{ "accuracy", accuracy, IDLE },
-		{ "query", vblank_query, IDLE | FORKED | BUSY },
-		{ "wait", vblank_wait, IDLE | FORKED | BUSY },
+		{ "accuracy", accuracy, IDLE | HANG },
+		{ "query", vblank_query, IDLE | FORKED | BUSY | HANG },
+		{ "wait", vblank_wait, IDLE | FORKED | BUSY | HANG },
 		{ }
 	}, *f;
 	const struct {
@@ -357,7 +366,8 @@ igt_main
 			if (m->flags & ~f->valid)
 				continue;
 
-			igt_subtest_f("%s-%s", f->name, m->name) {
+			igt_subtest_f("%s-%s%s", f->name, m->name,
+				      m->flags & HANG ? "-hang" : "") {
 				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] 9+ messages in thread

* [PATCH i-g-t 3/7] kms_vblank: Reorganize subtests by pipe
  2018-01-04 13:15 [PATCH i-g-t 0/7] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
  2018-01-04 13:15 ` [PATCH i-g-t 1/7] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
  2018-01-04 13:15 ` [PATCH i-g-t 2/7] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank Maarten Lankhorst
@ 2018-01-04 13:15 ` Maarten Lankhorst
  2018-01-04 13:15 ` [PATCH i-g-t 4/7] kms_vblank: Make the -hang tests work as intended Maarten Lankhorst
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 13:15 UTC (permalink / raw)
  To: intel-gfx

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

diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 9a5a98743fa6..a83500635976 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -119,57 +119,48 @@ 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;
-
-	for_each_pipe_with_valid_output(display, p, output) {
-		igt_hang_t hang;
+	igt_output_t *output = data->output;
+	igt_hang_t hang;
 
-		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);
+	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 & HANG)
-			hang = igt_hang_ring(display->drm_fd, I915_EXEC_DEFAULT);
+	if (data->flags & HANG)
+		hang = igt_hang_ring(display->drm_fd, I915_EXEC_DEFAULT);
 
-		if (data->flags & BUSY) {
-			union drm_wait_vblank vbl;
+	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);
-		}
+		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_fork(child, nchildren)
-			testfunc(data, fd, nchildren);
-		igt_waitchildren();
+	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) {
+		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_assert(poll(&(struct pollfd){fd, POLLIN}, 1, 0) == 0);
 
-		if (data->flags & HANG)
-			igt_post_hang_ring(fd, hang);
+	if (data->flags & HANG)
+		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));
+	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);
-	}
+	/* cleanup what prepare_crtc() has done */
+	cleanup_crtc(data, fd, output);
 }
 
 static void crtc_id_subtest(data_t *data, int fd)
@@ -338,6 +329,8 @@ igt_main
 		{ "wait", vblank_wait, IDLE | FORKED | BUSY | HANG },
 		{ }
 	}, *f;
+	enum pipe p;
+
 	const struct {
 		const char *name;
 		unsigned int flags;
@@ -361,15 +354,26 @@ 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%s", f->name, m->name,
-				      m->flags & HANG ? "-hang" : "") {
-				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%s",
+					      kmstest_pipe_name(data.pipe),
+					      f->name, m->name,
+					      m->flags & HANG ? "-hang" : "") {
+					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] 9+ messages in thread

* [PATCH i-g-t 4/7] kms_vblank: Make the -hang tests work as intended
  2018-01-04 13:15 [PATCH i-g-t 0/7] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (2 preceding siblings ...)
  2018-01-04 13:15 ` [PATCH i-g-t 3/7] kms_vblank: Reorganize subtests by pipe Maarten Lankhorst
@ 2018-01-04 13:15 ` Maarten Lankhorst
  2018-01-04 13:15 ` [PATCH i-g-t 5/7] kms_vblank: Add tests implemented in kms_flip Maarten Lankhorst
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 13:15 UTC (permalink / raw)
  To: intel-gfx

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

diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index a83500635976..45301ca5110f 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -54,7 +54,7 @@ typedef struct {
 #define IDLE 1
 #define BUSY 2
 #define FORKED 4
-#define HANG 8
+#define NOHANG 8
 } data_t;
 
 static double elapsed(const struct timespec *start,
@@ -128,7 +128,7 @@ 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 & HANG)
+	if (!(data->flags & NOHANG))
 		hang = igt_hang_ring(display->drm_fd, I915_EXEC_DEFAULT);
 
 	if (data->flags & BUSY) {
@@ -153,7 +153,7 @@ 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 & HANG)
+	if (!(data->flags & NOHANG))
 		igt_post_hang_ring(fd, hang);
 
 	igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
@@ -324,9 +324,9 @@ igt_main
 		void (*func)(data_t *, int, int);
 		unsigned int valid;
 	} funcs[] = {
-		{ "accuracy", accuracy, IDLE | HANG },
-		{ "query", vblank_query, IDLE | FORKED | BUSY | HANG },
-		{ "wait", vblank_wait, IDLE | FORKED | BUSY | HANG },
+		{ "accuracy", accuracy, IDLE },
+		{ "query", vblank_query, IDLE | FORKED | BUSY },
+		{ "wait", vblank_wait, IDLE | FORKED | BUSY },
 		{ }
 	}, *f;
 	enum pipe p;
@@ -365,15 +365,28 @@ igt_main
 				if (m->flags & ~f->valid)
 					continue;
 
-				igt_subtest_f("pipe-%s-%s-%s%s",
+				igt_subtest_f("pipe-%s-%s-%s",
 					      kmstest_pipe_name(data.pipe),
-					      f->name, m->name,
-					      m->flags & HANG ? "-hang" : "") {
+					      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)
+					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] 9+ messages in thread

* [PATCH i-g-t 5/7] kms_vblank: Add tests implemented in kms_flip
  2018-01-04 13:15 [PATCH i-g-t 0/7] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (3 preceding siblings ...)
  2018-01-04 13:15 ` [PATCH i-g-t 4/7] kms_vblank: Make the -hang tests work as intended Maarten Lankhorst
@ 2018-01-04 13:15 ` Maarten Lankhorst
  2018-01-04 13:15 ` [PATCH i-g-t 6/7] kms_flip: Remove redundant vblank tests Maarten Lankhorst
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 13:15 UTC (permalink / raw)
  To: intel-gfx

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

diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index 45301ca5110f..f2fa11523d50 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 },
+		{ "dpms-suspend", DPMS | SUSPEND },
+		{ "suspend", SUSPEND },
+		{ "modeset", MODESET },
+		{ "modeset-rpm", MODESET | RPM },
 		{ }
 	}, *m;
 
@@ -374,8 +450,8 @@ igt_main
 					}
 				}
 
-				/* Skip the -hang version if NOHANG flag is set */
-				if (f->valid & NOHANG)
+				/* Skip the -hang version if NOHANG or RPM flag is set */
+				if (f->valid & (NOHANG | RPM))
 					continue;
 
 				igt_subtest_f("pipe-%s-%s-%s-hang",
-- 
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] 9+ messages in thread

* [PATCH i-g-t 6/7] kms_flip: Remove redundant vblank tests.
  2018-01-04 13:15 [PATCH i-g-t 0/7] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (4 preceding siblings ...)
  2018-01-04 13:15 ` [PATCH i-g-t 5/7] kms_vblank: Add tests implemented in kms_flip Maarten Lankhorst
@ 2018-01-04 13:15 ` Maarten Lankhorst
  2018-01-04 13:15 ` [PATCH i-g-t 7/7] kms_vblank: Remove teardown code from cleanup_crtc Maarten Lankhorst
  2018-01-04 13:36 ` ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip Patchwork
  7 siblings, 0 replies; 9+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 13:15 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] 9+ messages in thread

* [PATCH i-g-t 7/7] kms_vblank: Remove teardown code from cleanup_crtc
  2018-01-04 13:15 [PATCH i-g-t 0/7] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (5 preceding siblings ...)
  2018-01-04 13:15 ` [PATCH i-g-t 6/7] kms_flip: Remove redundant vblank tests Maarten Lankhorst
@ 2018-01-04 13:15 ` Maarten Lankhorst
  2018-01-04 13:36 ` ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip Patchwork
  7 siblings, 0 replies; 9+ messages in thread
From: Maarten Lankhorst @ 2018-01-04 13:15 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 f2fa11523d50..3d8004ef6c3f 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] 9+ messages in thread

* ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip.
  2018-01-04 13:15 [PATCH i-g-t 0/7] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
                   ` (6 preceding siblings ...)
  2018-01-04 13:15 ` [PATCH i-g-t 7/7] kms_vblank: Remove teardown code from cleanup_crtc Maarten Lankhorst
@ 2018-01-04 13:36 ` Patchwork
  7 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2018-01-04 13:36 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

== Series Details ==

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

== Summary ==

Applying: tests/kms_flip: Remove blt/rcs flip tests.
Using index info to reconstruct a base tree...
M	tests/kms_flip.c
Falling back to patching base and 3-way merge...
Auto-merging tests/kms_flip.c
CONFLICT (content): Merge conflict in tests/kms_flip.c
Patch failed at 0001 tests/kms_flip: Remove blt/rcs flip tests.
The copy of the patch that failed is found in: .git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

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

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

end of thread, other threads:[~2018-01-04 13:36 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-04 13:15 [PATCH i-g-t 0/7] kms_vblank: Move tests over from kms_flip Maarten Lankhorst
2018-01-04 13:15 ` [PATCH i-g-t 1/7] tests/kms_flip: Remove blt/rcs flip tests Maarten Lankhorst
2018-01-04 13:15 ` [PATCH i-g-t 2/7] tests/kms_flip: Move kms_flip.vblank-vs-hang to kms_vblank Maarten Lankhorst
2018-01-04 13:15 ` [PATCH i-g-t 3/7] kms_vblank: Reorganize subtests by pipe Maarten Lankhorst
2018-01-04 13:15 ` [PATCH i-g-t 4/7] kms_vblank: Make the -hang tests work as intended Maarten Lankhorst
2018-01-04 13:15 ` [PATCH i-g-t 5/7] kms_vblank: Add tests implemented in kms_flip Maarten Lankhorst
2018-01-04 13:15 ` [PATCH i-g-t 6/7] kms_flip: Remove redundant vblank tests Maarten Lankhorst
2018-01-04 13:15 ` [PATCH i-g-t 7/7] kms_vblank: Remove teardown code from cleanup_crtc Maarten Lankhorst
2018-01-04 13:36 ` ✗ Fi.CI.BAT: failure for kms_vblank: Move tests over from kms_flip Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox