Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v2 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-06-12 11:19 [igt-dev] [PATCH i-g-t 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
@ 2018-06-13 11:30 ` Mika Kahola
  2018-06-13 12:07   ` Chris Wilson
  0 siblings, 1 reply; 10+ messages in thread
From: Mika Kahola @ 2018-06-13 11:30 UTC (permalink / raw)
  To: igt-dev

To reduce the execution time of kms_flip test on CI, let's move subtest
duration parameter as command line option. The default subtest duration
is 0 seconds meaning that the subtest is run only once.

The patch reduces the kms_flip binary mode execution time on Geminilake from
1189 seconds down to 307 seconds with default subtest duration.

No functional changes on subtests.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 tests/kms_flip.c | 113 +++++++++++++++++++++++++++++++++++++------------------
 1 file changed, 77 insertions(+), 36 deletions(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 3d6fe94..09aaac2 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -82,6 +82,8 @@
 #define DRM_CAP_TIMESTAMP_MONOTONIC 6
 #endif
 
+#define MAX_DURATION            60
+
 drmModeRes *resources;
 int drm_fd;
 static drm_intel_bufmgr *bufmgr;
@@ -95,6 +97,13 @@ static drmModeConnector *last_connector;
 
 uint32_t *fb_ptr;
 
+/* Command line parameters. */
+struct {
+	int duration;
+} opt = {
+	.duration = 0,
+};
+
 struct type_name {
 	int type;
 	const char *name;
@@ -1518,56 +1527,89 @@ static void test_nonblocking_read(int in)
 	close(fd);
 }
 
+static int opt_handler(int option, int option_index, void *input)
+{
+	switch (option) {
+	case 'd':
+		opt.duration = strtol(optarg, NULL, 0);
+
+		if (opt.duration > MAX_DURATION) {
+			igt_debug("limiting test duration from %ds to %ds\n",
+				  opt.duration, MAX_DURATION);
+			opt.duration = MAX_DURATION;
+		}
+
+		if (opt.duration < 0) {
+			igt_debug("limiting test duration from %ds to %ds\n",
+				  opt.duration, 0);
+			opt.duration = 0;
+		}
+		break;
+	default:
+		igt_assert(false);
+	}
+
+	return 0;
+}
+
+const char *help_str =
+	"  --duration test duration in seconds (default 0s)\n";
+
 int main(int argc, char **argv)
 {
+	struct option long_options[] = {
+		{ "duration", required_argument, NULL, 'd'},
+		{ 0, 0, 0, 0 }
+	};
+
 	struct {
-		int duration;
 		int flags;
 		const char *name;
 	} tests[] = {
-		{ 30, TEST_VBLANK | TEST_CHECK_TS, "wf_vblank-ts-check" },
-		{ 30, TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_CHECK_TS,
+		{ TEST_VBLANK | TEST_CHECK_TS, "wf_vblank-ts-check" },
+		{ TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_CHECK_TS,
 					"blocking-wf_vblank" },
-		{ 30,  TEST_VBLANK | TEST_VBLANK_ABSOLUTE,
+		{ TEST_VBLANK | TEST_VBLANK_ABSOLUTE,
 					"absolute-wf_vblank" },
-		{ 30,  TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
+		{ TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
 					"blocking-absolute-wf_vblank" },
-		{ 10, TEST_FLIP | TEST_BASIC, "plain-flip" },
-		{ 30, TEST_FLIP | TEST_EBUSY , "busy-flip" },
-		{ 30, TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
-		{ 30, TEST_FLIP | TEST_CHECK_TS, "plain-flip-ts-check" },
-		{ 30, TEST_FLIP | TEST_CHECK_TS | TEST_FB_RECREATE,
+		{ TEST_FLIP | TEST_BASIC, "plain-flip" },
+		{ TEST_FLIP | TEST_EBUSY , "busy-flip" },
+		{ TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
+		{ TEST_FLIP | TEST_CHECK_TS, "plain-flip-ts-check" },
+		{ TEST_FLIP | TEST_CHECK_TS | TEST_FB_RECREATE,
 			"plain-flip-fb-recreate" },
-		{ 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" },
-		{ 20, TEST_FLIP | TEST_MODESET | TEST_EINVAL | TEST_BASIC, "flip-vs-modeset" },
-		{ 30,  TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
+		{ TEST_FLIP | TEST_RMFB | TEST_MODESET , "flip-vs-rmfb" },
+		{ TEST_FLIP | TEST_DPMS | TEST_EINVAL | TEST_BASIC, "flip-vs-dpms" },
+		{ TEST_FLIP | TEST_PAN, "flip-vs-panning" },
+		{ TEST_FLIP | TEST_MODESET | TEST_EINVAL | TEST_BASIC, "flip-vs-modeset" },
+		{ TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
 					"flip-vs-expired-vblank" },
 
-		{ 30, TEST_FLIP | TEST_VBLANK | TEST_VBLANK_ABSOLUTE |
-		      TEST_CHECK_TS, "flip-vs-absolute-wf_vblank" },
-		{ 10, TEST_FLIP | TEST_VBLANK | TEST_CHECK_TS | TEST_BASIC,
+		{ TEST_FLIP | TEST_VBLANK | TEST_VBLANK_ABSOLUTE |
+		  TEST_CHECK_TS, "flip-vs-absolute-wf_vblank" },
+		{ TEST_FLIP | TEST_VBLANK | TEST_CHECK_TS | TEST_BASIC,
 					"flip-vs-wf_vblank" },
-		{ 30, TEST_FLIP | TEST_VBLANK | TEST_VBLANK_BLOCK |
-			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" },
-		{ 1, TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING, "flip-vs-bad-tiling" },
+		{ TEST_FLIP | TEST_VBLANK | TEST_VBLANK_BLOCK |
+		  TEST_CHECK_TS, "flip-vs-blocking-wf-vblank" },
+		{ TEST_FLIP | TEST_MODESET | TEST_HANG | TEST_NOEVENT, "flip-vs-modeset-vs-hang" },
+		{ TEST_FLIP | TEST_PAN | TEST_HANG, "flip-vs-panning-vs-hang" },
+		{ TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING, "flip-vs-bad-tiling" },
 
-		{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
+		{ TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
 					"flip-vs-dpms-off-vs-modeset" },
-		{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP | TEST_SINGLE_BUFFER,
+		{ TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP | TEST_SINGLE_BUFFER,
 					"single-buffer-flip-vs-dpms-off-vs-modeset" },
-		{ 30, TEST_FLIP | TEST_NO_2X_OUTPUT | TEST_DPMS_OFF_OTHERS , "dpms-off-confusion" },
-		{ 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" },
-		{ 0, TEST_BO_TOOBIG | TEST_NO_2X_OUTPUT, "bo-too-big" },
+		{ TEST_FLIP | TEST_NO_2X_OUTPUT | TEST_DPMS_OFF_OTHERS , "dpms-off-confusion" },
+		{ TEST_ENOENT | TEST_NOEVENT, "nonexisting-fb" },
+		{ TEST_DPMS_OFF | TEST_DPMS | TEST_VBLANK_RACE, "dpms-vs-vblank-race" },
+		{ TEST_MODESET | TEST_VBLANK_RACE, "modeset-vs-vblank-race" },
+		{ TEST_BO_TOOBIG | TEST_NO_2X_OUTPUT, "bo-too-big" },
 	};
 	int i;
 
-	igt_subtest_init(argc, argv);
+	igt_subtest_init_parse_opts(&argc, argv, "", long_options, help_str,
+				    opt_handler, NULL);
 
 	igt_fixture {
 		drm_fd = drm_open_driver_master(DRIVER_ANY);
@@ -1592,7 +1634,7 @@ int main(int argc, char **argv)
 		igt_subtest_f("%s%s",
 			      tests[i].flags & TEST_BASIC ? "basic-" : "",
 			      tests[i].name)
-			run_test(tests[i].duration, tests[i].flags);
+			run_test(opt.duration, tests[i].flags);
 
 		if (tests[i].flags & TEST_NO_2X_OUTPUT)
 			continue;
@@ -1602,7 +1644,7 @@ int main(int argc, char **argv)
 			continue;
 
 		igt_subtest_f( "2x-%s", tests[i].name)
-			run_pair(tests[i].duration, tests[i].flags);
+			run_pair(opt.duration, tests[i].flags);
 	}
 
 	igt_fork_signal_helper();
@@ -1614,7 +1656,7 @@ int main(int argc, char **argv)
 			continue;
 
 		igt_subtest_f( "%s-interruptible", tests[i].name)
-			run_test(tests[i].duration, tests[i].flags);
+			run_test(opt.duration, tests[i].flags);
 
 		if (tests[i].flags & TEST_NO_2X_OUTPUT)
 			continue;
@@ -1624,7 +1666,7 @@ int main(int argc, char **argv)
 			continue;
 
 		igt_subtest_f( "2x-%s-interruptible", tests[i].name)
-			run_pair(tests[i].duration, tests[i].flags);
+			run_pair(opt.duration, tests[i].flags);
 	}
 	igt_stop_signal_helper();
 
@@ -1632,6 +1674,5 @@ int main(int argc, char **argv)
 	 * Let drm_fd leak, since it's needed by the dpms restore
 	 * exit_handler and igt_exit() won't return.
 	 */
-
 	igt_exit();
 }
-- 
2.7.4

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH i-g-t v2 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-06-13 11:30 ` [igt-dev] [PATCH i-g-t v2 " Mika Kahola
@ 2018-06-13 12:07   ` Chris Wilson
  2018-06-13 12:49     ` Mika Kahola
  0 siblings, 1 reply; 10+ messages in thread
From: Chris Wilson @ 2018-06-13 12:07 UTC (permalink / raw)
  To: Mika Kahola, igt-dev

Quoting Mika Kahola (2018-06-13 12:30:37)
> To reduce the execution time of kms_flip test on CI, let's move subtest
> duration parameter as command line option. The default subtest duration
> is 0 seconds meaning that the subtest is run only once.
> 
> The patch reduces the kms_flip binary mode execution time on Geminilake from
> 1189 seconds down to 307 seconds with default subtest duration.
> 
> No functional changes on subtests.

That's a bold claim, since you change the very essence of the test.
Going from a few commits to one is a big change, a supplementary set of
tests but not a replacement.
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH i-g-t v2 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-06-13 12:07   ` Chris Wilson
@ 2018-06-13 12:49     ` Mika Kahola
  0 siblings, 0 replies; 10+ messages in thread
From: Mika Kahola @ 2018-06-13 12:49 UTC (permalink / raw)
  To: Chris Wilson, igt-dev

On Wed, 2018-06-13 at 13:07 +0100, Chris Wilson wrote:
> Quoting Mika Kahola (2018-06-13 12:30:37)
> > 
> > To reduce the execution time of kms_flip test on CI, let's move
> > subtest
> > duration parameter as command line option. The default subtest
> > duration
> > is 0 seconds meaning that the subtest is run only once.
> > 
> > The patch reduces the kms_flip binary mode execution time on
> > Geminilake from
> > 1189 seconds down to 307 seconds with default subtest duration.
> > 
> > No functional changes on subtests.
> That's a bold claim, since you change the very essence of the test.
> Going from a few commits to one is a big change, a supplementary set
> of
> tests but not a replacement.
What I meant to say by this statement was that I didn't change any
functionality of the subtests itself. The patch introduces a command
line option to set the duration of the subtest instead of hardcoded
one. In that sense, I didn't considered it such a big change as you
still have the option to set the test duration.

> -Chris
-- 
Mika Kahola - Intel OTC

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] [PATCH i-g-t v2 0/2] tests/kms_flip: Binary mode optimizations
@ 2018-06-13 12:58 Mika Kahola
  2018-06-13 12:58 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Mika Kahola @ 2018-06-13 12:58 UTC (permalink / raw)
  To: igt-dev

kms_flip in binary mode takes considerable amount of time to complete.
These couple of patches introduces optimizations to the test. The first
patch sets the subtest duration to be a configurable command line parameter.
The second patch suggests the change in execution order so that all basic
subtests are executed first and after that move on to execute 2X tests.

For VIZ-14324

Mika Kahola (2):
  tests/kms_flip: Set duration for subtest from command line
  tests/kms_flip: Change 2x tests execution order

 tests/kms_flip.c | 122 ++++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 85 insertions(+), 37 deletions(-)

-- 
2.7.4

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] [PATCH i-g-t v2 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-06-13 12:58 [igt-dev] [PATCH i-g-t v2 0/2] tests/kms_flip: Binary mode optimizations Mika Kahola
@ 2018-06-13 12:58 ` Mika Kahola
  2018-06-13 13:57   ` Ville Syrjälä
  2018-06-13 12:58 ` [igt-dev] [PATCH i-g-t v2 2/2] tests/kms_flip: Change 2x tests execution order Mika Kahola
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Mika Kahola @ 2018-06-13 12:58 UTC (permalink / raw)
  To: igt-dev

To reduce the execution time of kms_flip test on CI, let's move subtest
duration parameter as command line option. The default subtest duration
is 0 seconds meaning that the subtest is run only once.

The patch reduces the kms_flip binary mode execution time on Geminilake from
1189 seconds down to 307 seconds with default subtest duration.

No functional changes on subtests.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 tests/kms_flip.c | 113 +++++++++++++++++++++++++++++++++++++------------------
 1 file changed, 77 insertions(+), 36 deletions(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 3d6fe94..09aaac2 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -82,6 +82,8 @@
 #define DRM_CAP_TIMESTAMP_MONOTONIC 6
 #endif
 
+#define MAX_DURATION            60
+
 drmModeRes *resources;
 int drm_fd;
 static drm_intel_bufmgr *bufmgr;
@@ -95,6 +97,13 @@ static drmModeConnector *last_connector;
 
 uint32_t *fb_ptr;
 
+/* Command line parameters. */
+struct {
+	int duration;
+} opt = {
+	.duration = 0,
+};
+
 struct type_name {
 	int type;
 	const char *name;
@@ -1518,56 +1527,89 @@ static void test_nonblocking_read(int in)
 	close(fd);
 }
 
+static int opt_handler(int option, int option_index, void *input)
+{
+	switch (option) {
+	case 'd':
+		opt.duration = strtol(optarg, NULL, 0);
+
+		if (opt.duration > MAX_DURATION) {
+			igt_debug("limiting test duration from %ds to %ds\n",
+				  opt.duration, MAX_DURATION);
+			opt.duration = MAX_DURATION;
+		}
+
+		if (opt.duration < 0) {
+			igt_debug("limiting test duration from %ds to %ds\n",
+				  opt.duration, 0);
+			opt.duration = 0;
+		}
+		break;
+	default:
+		igt_assert(false);
+	}
+
+	return 0;
+}
+
+const char *help_str =
+	"  --duration test duration in seconds (default 0s)\n";
+
 int main(int argc, char **argv)
 {
+	struct option long_options[] = {
+		{ "duration", required_argument, NULL, 'd'},
+		{ 0, 0, 0, 0 }
+	};
+
 	struct {
-		int duration;
 		int flags;
 		const char *name;
 	} tests[] = {
-		{ 30, TEST_VBLANK | TEST_CHECK_TS, "wf_vblank-ts-check" },
-		{ 30, TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_CHECK_TS,
+		{ TEST_VBLANK | TEST_CHECK_TS, "wf_vblank-ts-check" },
+		{ TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_CHECK_TS,
 					"blocking-wf_vblank" },
-		{ 30,  TEST_VBLANK | TEST_VBLANK_ABSOLUTE,
+		{ TEST_VBLANK | TEST_VBLANK_ABSOLUTE,
 					"absolute-wf_vblank" },
-		{ 30,  TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
+		{ TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
 					"blocking-absolute-wf_vblank" },
-		{ 10, TEST_FLIP | TEST_BASIC, "plain-flip" },
-		{ 30, TEST_FLIP | TEST_EBUSY , "busy-flip" },
-		{ 30, TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
-		{ 30, TEST_FLIP | TEST_CHECK_TS, "plain-flip-ts-check" },
-		{ 30, TEST_FLIP | TEST_CHECK_TS | TEST_FB_RECREATE,
+		{ TEST_FLIP | TEST_BASIC, "plain-flip" },
+		{ TEST_FLIP | TEST_EBUSY , "busy-flip" },
+		{ TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
+		{ TEST_FLIP | TEST_CHECK_TS, "plain-flip-ts-check" },
+		{ TEST_FLIP | TEST_CHECK_TS | TEST_FB_RECREATE,
 			"plain-flip-fb-recreate" },
-		{ 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" },
-		{ 20, TEST_FLIP | TEST_MODESET | TEST_EINVAL | TEST_BASIC, "flip-vs-modeset" },
-		{ 30,  TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
+		{ TEST_FLIP | TEST_RMFB | TEST_MODESET , "flip-vs-rmfb" },
+		{ TEST_FLIP | TEST_DPMS | TEST_EINVAL | TEST_BASIC, "flip-vs-dpms" },
+		{ TEST_FLIP | TEST_PAN, "flip-vs-panning" },
+		{ TEST_FLIP | TEST_MODESET | TEST_EINVAL | TEST_BASIC, "flip-vs-modeset" },
+		{ TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
 					"flip-vs-expired-vblank" },
 
-		{ 30, TEST_FLIP | TEST_VBLANK | TEST_VBLANK_ABSOLUTE |
-		      TEST_CHECK_TS, "flip-vs-absolute-wf_vblank" },
-		{ 10, TEST_FLIP | TEST_VBLANK | TEST_CHECK_TS | TEST_BASIC,
+		{ TEST_FLIP | TEST_VBLANK | TEST_VBLANK_ABSOLUTE |
+		  TEST_CHECK_TS, "flip-vs-absolute-wf_vblank" },
+		{ TEST_FLIP | TEST_VBLANK | TEST_CHECK_TS | TEST_BASIC,
 					"flip-vs-wf_vblank" },
-		{ 30, TEST_FLIP | TEST_VBLANK | TEST_VBLANK_BLOCK |
-			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" },
-		{ 1, TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING, "flip-vs-bad-tiling" },
+		{ TEST_FLIP | TEST_VBLANK | TEST_VBLANK_BLOCK |
+		  TEST_CHECK_TS, "flip-vs-blocking-wf-vblank" },
+		{ TEST_FLIP | TEST_MODESET | TEST_HANG | TEST_NOEVENT, "flip-vs-modeset-vs-hang" },
+		{ TEST_FLIP | TEST_PAN | TEST_HANG, "flip-vs-panning-vs-hang" },
+		{ TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING, "flip-vs-bad-tiling" },
 
-		{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
+		{ TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
 					"flip-vs-dpms-off-vs-modeset" },
-		{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP | TEST_SINGLE_BUFFER,
+		{ TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP | TEST_SINGLE_BUFFER,
 					"single-buffer-flip-vs-dpms-off-vs-modeset" },
-		{ 30, TEST_FLIP | TEST_NO_2X_OUTPUT | TEST_DPMS_OFF_OTHERS , "dpms-off-confusion" },
-		{ 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" },
-		{ 0, TEST_BO_TOOBIG | TEST_NO_2X_OUTPUT, "bo-too-big" },
+		{ TEST_FLIP | TEST_NO_2X_OUTPUT | TEST_DPMS_OFF_OTHERS , "dpms-off-confusion" },
+		{ TEST_ENOENT | TEST_NOEVENT, "nonexisting-fb" },
+		{ TEST_DPMS_OFF | TEST_DPMS | TEST_VBLANK_RACE, "dpms-vs-vblank-race" },
+		{ TEST_MODESET | TEST_VBLANK_RACE, "modeset-vs-vblank-race" },
+		{ TEST_BO_TOOBIG | TEST_NO_2X_OUTPUT, "bo-too-big" },
 	};
 	int i;
 
-	igt_subtest_init(argc, argv);
+	igt_subtest_init_parse_opts(&argc, argv, "", long_options, help_str,
+				    opt_handler, NULL);
 
 	igt_fixture {
 		drm_fd = drm_open_driver_master(DRIVER_ANY);
@@ -1592,7 +1634,7 @@ int main(int argc, char **argv)
 		igt_subtest_f("%s%s",
 			      tests[i].flags & TEST_BASIC ? "basic-" : "",
 			      tests[i].name)
-			run_test(tests[i].duration, tests[i].flags);
+			run_test(opt.duration, tests[i].flags);
 
 		if (tests[i].flags & TEST_NO_2X_OUTPUT)
 			continue;
@@ -1602,7 +1644,7 @@ int main(int argc, char **argv)
 			continue;
 
 		igt_subtest_f( "2x-%s", tests[i].name)
-			run_pair(tests[i].duration, tests[i].flags);
+			run_pair(opt.duration, tests[i].flags);
 	}
 
 	igt_fork_signal_helper();
@@ -1614,7 +1656,7 @@ int main(int argc, char **argv)
 			continue;
 
 		igt_subtest_f( "%s-interruptible", tests[i].name)
-			run_test(tests[i].duration, tests[i].flags);
+			run_test(opt.duration, tests[i].flags);
 
 		if (tests[i].flags & TEST_NO_2X_OUTPUT)
 			continue;
@@ -1624,7 +1666,7 @@ int main(int argc, char **argv)
 			continue;
 
 		igt_subtest_f( "2x-%s-interruptible", tests[i].name)
-			run_pair(tests[i].duration, tests[i].flags);
+			run_pair(opt.duration, tests[i].flags);
 	}
 	igt_stop_signal_helper();
 
@@ -1632,6 +1674,5 @@ int main(int argc, char **argv)
 	 * Let drm_fd leak, since it's needed by the dpms restore
 	 * exit_handler and igt_exit() won't return.
 	 */
-
 	igt_exit();
 }
-- 
2.7.4

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] [PATCH i-g-t v2 2/2] tests/kms_flip: Change 2x tests execution order
  2018-06-13 12:58 [igt-dev] [PATCH i-g-t v2 0/2] tests/kms_flip: Binary mode optimizations Mika Kahola
  2018-06-13 12:58 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
@ 2018-06-13 12:58 ` Mika Kahola
  2018-06-13 15:55 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Binary mode optimizations (rev3) Patchwork
  2018-06-13 19:43 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  3 siblings, 0 replies; 10+ messages in thread
From: Mika Kahola @ 2018-06-13 12:58 UTC (permalink / raw)
  To: igt-dev

In order to optimize execution of kms_flip binary mode tests, let's change
the execution order so that 2x tests will be executed after basic tests.

On GLK platform with 1 display, the patch reduced the execution time by
2 seconds on average (2X tests were skipped). As these 2X tests are meant
to run with 2 display configuration the expected reduction in time on test
execution will be higher.

v2: update commit message (Petri)

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 tests/kms_flip.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 09aaac2..511ed8c 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -1635,7 +1635,9 @@ int main(int argc, char **argv)
 			      tests[i].flags & TEST_BASIC ? "basic-" : "",
 			      tests[i].name)
 			run_test(opt.duration, tests[i].flags);
+	}
 
+	for (i = 0; i < sizeof(tests) / sizeof (tests[0]); i++) {
 		if (tests[i].flags & TEST_NO_2X_OUTPUT)
 			continue;
 
@@ -1657,8 +1659,13 @@ int main(int argc, char **argv)
 
 		igt_subtest_f( "%s-interruptible", tests[i].name)
 			run_test(opt.duration, tests[i].flags);
+	}
 
-		if (tests[i].flags & TEST_NO_2X_OUTPUT)
+	for (i = 0; i < sizeof(tests) / sizeof (tests[0]); i++) {
+		/* relative blocking vblank waits that get constantly interrupt
+		 * take forver. So don't do them. */
+		if ((tests[i].flags & TEST_VBLANK_BLOCK) &&
+		    !(tests[i].flags & TEST_VBLANK_ABSOLUTE))
 			continue;
 
 		/* code doesn't disable all crtcs, so skip rpm tests */
-- 
2.7.4

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH i-g-t v2 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-06-13 12:58 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
@ 2018-06-13 13:57   ` Ville Syrjälä
  2018-06-14 10:40     ` Mika Kahola
  0 siblings, 1 reply; 10+ messages in thread
From: Ville Syrjälä @ 2018-06-13 13:57 UTC (permalink / raw)
  To: Mika Kahola; +Cc: igt-dev

On Wed, Jun 13, 2018 at 03:58:33PM +0300, Mika Kahola wrote:
> To reduce the execution time of kms_flip test on CI, let's move subtest
> duration parameter as command line option. The default subtest duration
> is 0 seconds meaning that the subtest is run only once.

Single iteration doesn't seem particularly robust. The flip tests for
example are checking for jitter and such so running it just once
probably means we're not actually testing anything.

> 
> The patch reduces the kms_flip binary mode execution time on Geminilake from
> 1189 seconds down to 307 seconds with default subtest duration.
> 
> No functional changes on subtests.
> 
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> ---
>  tests/kms_flip.c | 113 +++++++++++++++++++++++++++++++++++++------------------
>  1 file changed, 77 insertions(+), 36 deletions(-)
> 
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index 3d6fe94..09aaac2 100644
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -82,6 +82,8 @@
>  #define DRM_CAP_TIMESTAMP_MONOTONIC 6
>  #endif
>  
> +#define MAX_DURATION            60
> +
>  drmModeRes *resources;
>  int drm_fd;
>  static drm_intel_bufmgr *bufmgr;
> @@ -95,6 +97,13 @@ static drmModeConnector *last_connector;
>  
>  uint32_t *fb_ptr;
>  
> +/* Command line parameters. */
> +struct {
> +	int duration;
> +} opt = {
> +	.duration = 0,
> +};
> +
>  struct type_name {
>  	int type;
>  	const char *name;
> @@ -1518,56 +1527,89 @@ static void test_nonblocking_read(int in)
>  	close(fd);
>  }
>  
> +static int opt_handler(int option, int option_index, void *input)
> +{
> +	switch (option) {
> +	case 'd':
> +		opt.duration = strtol(optarg, NULL, 0);
> +
> +		if (opt.duration > MAX_DURATION) {
> +			igt_debug("limiting test duration from %ds to %ds\n",
> +				  opt.duration, MAX_DURATION);
> +			opt.duration = MAX_DURATION;
> +		}
> +
> +		if (opt.duration < 0) {
> +			igt_debug("limiting test duration from %ds to %ds\n",
> +				  opt.duration, 0);
> +			opt.duration = 0;
> +		}
> +		break;
> +	default:
> +		igt_assert(false);
> +	}
> +
> +	return 0;
> +}
> +
> +const char *help_str =
> +	"  --duration test duration in seconds (default 0s)\n";
> +
>  int main(int argc, char **argv)
>  {
> +	struct option long_options[] = {
> +		{ "duration", required_argument, NULL, 'd'},
> +		{ 0, 0, 0, 0 }
> +	};
> +
>  	struct {
> -		int duration;
>  		int flags;
>  		const char *name;
>  	} tests[] = {
> -		{ 30, TEST_VBLANK | TEST_CHECK_TS, "wf_vblank-ts-check" },
> -		{ 30, TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_CHECK_TS,
> +		{ TEST_VBLANK | TEST_CHECK_TS, "wf_vblank-ts-check" },
> +		{ TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_CHECK_TS,
>  					"blocking-wf_vblank" },
> -		{ 30,  TEST_VBLANK | TEST_VBLANK_ABSOLUTE,
> +		{ TEST_VBLANK | TEST_VBLANK_ABSOLUTE,
>  					"absolute-wf_vblank" },
> -		{ 30,  TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
> +		{ TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
>  					"blocking-absolute-wf_vblank" },
> -		{ 10, TEST_FLIP | TEST_BASIC, "plain-flip" },
> -		{ 30, TEST_FLIP | TEST_EBUSY , "busy-flip" },
> -		{ 30, TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
> -		{ 30, TEST_FLIP | TEST_CHECK_TS, "plain-flip-ts-check" },
> -		{ 30, TEST_FLIP | TEST_CHECK_TS | TEST_FB_RECREATE,
> +		{ TEST_FLIP | TEST_BASIC, "plain-flip" },
> +		{ TEST_FLIP | TEST_EBUSY , "busy-flip" },
> +		{ TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
> +		{ TEST_FLIP | TEST_CHECK_TS, "plain-flip-ts-check" },
> +		{ TEST_FLIP | TEST_CHECK_TS | TEST_FB_RECREATE,
>  			"plain-flip-fb-recreate" },
> -		{ 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" },
> -		{ 20, TEST_FLIP | TEST_MODESET | TEST_EINVAL | TEST_BASIC, "flip-vs-modeset" },
> -		{ 30,  TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
> +		{ TEST_FLIP | TEST_RMFB | TEST_MODESET , "flip-vs-rmfb" },
> +		{ TEST_FLIP | TEST_DPMS | TEST_EINVAL | TEST_BASIC, "flip-vs-dpms" },
> +		{ TEST_FLIP | TEST_PAN, "flip-vs-panning" },
> +		{ TEST_FLIP | TEST_MODESET | TEST_EINVAL | TEST_BASIC, "flip-vs-modeset" },
> +		{ TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
>  					"flip-vs-expired-vblank" },
>  
> -		{ 30, TEST_FLIP | TEST_VBLANK | TEST_VBLANK_ABSOLUTE |
> -		      TEST_CHECK_TS, "flip-vs-absolute-wf_vblank" },
> -		{ 10, TEST_FLIP | TEST_VBLANK | TEST_CHECK_TS | TEST_BASIC,
> +		{ TEST_FLIP | TEST_VBLANK | TEST_VBLANK_ABSOLUTE |
> +		  TEST_CHECK_TS, "flip-vs-absolute-wf_vblank" },
> +		{ TEST_FLIP | TEST_VBLANK | TEST_CHECK_TS | TEST_BASIC,
>  					"flip-vs-wf_vblank" },
> -		{ 30, TEST_FLIP | TEST_VBLANK | TEST_VBLANK_BLOCK |
> -			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" },
> -		{ 1, TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING, "flip-vs-bad-tiling" },
> +		{ TEST_FLIP | TEST_VBLANK | TEST_VBLANK_BLOCK |
> +		  TEST_CHECK_TS, "flip-vs-blocking-wf-vblank" },
> +		{ TEST_FLIP | TEST_MODESET | TEST_HANG | TEST_NOEVENT, "flip-vs-modeset-vs-hang" },
> +		{ TEST_FLIP | TEST_PAN | TEST_HANG, "flip-vs-panning-vs-hang" },
> +		{ TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING, "flip-vs-bad-tiling" },
>  
> -		{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
> +		{ TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
>  					"flip-vs-dpms-off-vs-modeset" },
> -		{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP | TEST_SINGLE_BUFFER,
> +		{ TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP | TEST_SINGLE_BUFFER,
>  					"single-buffer-flip-vs-dpms-off-vs-modeset" },
> -		{ 30, TEST_FLIP | TEST_NO_2X_OUTPUT | TEST_DPMS_OFF_OTHERS , "dpms-off-confusion" },
> -		{ 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" },
> -		{ 0, TEST_BO_TOOBIG | TEST_NO_2X_OUTPUT, "bo-too-big" },
> +		{ TEST_FLIP | TEST_NO_2X_OUTPUT | TEST_DPMS_OFF_OTHERS , "dpms-off-confusion" },
> +		{ TEST_ENOENT | TEST_NOEVENT, "nonexisting-fb" },
> +		{ TEST_DPMS_OFF | TEST_DPMS | TEST_VBLANK_RACE, "dpms-vs-vblank-race" },
> +		{ TEST_MODESET | TEST_VBLANK_RACE, "modeset-vs-vblank-race" },
> +		{ TEST_BO_TOOBIG | TEST_NO_2X_OUTPUT, "bo-too-big" },
>  	};
>  	int i;
>  
> -	igt_subtest_init(argc, argv);
> +	igt_subtest_init_parse_opts(&argc, argv, "", long_options, help_str,
> +				    opt_handler, NULL);
>  
>  	igt_fixture {
>  		drm_fd = drm_open_driver_master(DRIVER_ANY);
> @@ -1592,7 +1634,7 @@ int main(int argc, char **argv)
>  		igt_subtest_f("%s%s",
>  			      tests[i].flags & TEST_BASIC ? "basic-" : "",
>  			      tests[i].name)
> -			run_test(tests[i].duration, tests[i].flags);
> +			run_test(opt.duration, tests[i].flags);
>  
>  		if (tests[i].flags & TEST_NO_2X_OUTPUT)
>  			continue;
> @@ -1602,7 +1644,7 @@ int main(int argc, char **argv)
>  			continue;
>  
>  		igt_subtest_f( "2x-%s", tests[i].name)
> -			run_pair(tests[i].duration, tests[i].flags);
> +			run_pair(opt.duration, tests[i].flags);
>  	}
>  
>  	igt_fork_signal_helper();
> @@ -1614,7 +1656,7 @@ int main(int argc, char **argv)
>  			continue;
>  
>  		igt_subtest_f( "%s-interruptible", tests[i].name)
> -			run_test(tests[i].duration, tests[i].flags);
> +			run_test(opt.duration, tests[i].flags);
>  
>  		if (tests[i].flags & TEST_NO_2X_OUTPUT)
>  			continue;
> @@ -1624,7 +1666,7 @@ int main(int argc, char **argv)
>  			continue;
>  
>  		igt_subtest_f( "2x-%s-interruptible", tests[i].name)
> -			run_pair(tests[i].duration, tests[i].flags);
> +			run_pair(opt.duration, tests[i].flags);
>  	}
>  	igt_stop_signal_helper();
>  
> @@ -1632,6 +1674,5 @@ int main(int argc, char **argv)
>  	 * Let drm_fd leak, since it's needed by the dpms restore
>  	 * exit_handler and igt_exit() won't return.
>  	 */
> -
>  	igt_exit();
>  }
> -- 
> 2.7.4
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev

-- 
Ville Syrjälä
Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Binary mode optimizations (rev3)
  2018-06-13 12:58 [igt-dev] [PATCH i-g-t v2 0/2] tests/kms_flip: Binary mode optimizations Mika Kahola
  2018-06-13 12:58 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
  2018-06-13 12:58 ` [igt-dev] [PATCH i-g-t v2 2/2] tests/kms_flip: Change 2x tests execution order Mika Kahola
@ 2018-06-13 15:55 ` Patchwork
  2018-06-13 19:43 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  3 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2018-06-13 15:55 UTC (permalink / raw)
  To: Mika Kahola; +Cc: igt-dev

== Series Details ==

Series: tests/kms_flip: Binary mode optimizations (rev3)
URL   : https://patchwork.freedesktop.org/series/44619/
State : success

== Summary ==

= CI Bug Log - changes from CI_DRM_4309 -> IGTPW_1458 =

== Summary - SUCCESS ==

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/44619/revisions/3/mbox/

== Known issues ==

  Here are the changes found in IGTPW_1458 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@kms_flip@basic-flip-vs-modeset:
      fi-skl-6700hq:      PASS -> DMESG-WARN (fdo#105998)

    igt@kms_frontbuffer_tracking@basic:
      fi-hsw-4200u:       PASS -> DMESG-FAIL (fdo#106103, fdo#102614)

    
    ==== Possible fixes ====

    igt@gem_exec_suspend@basic-s4-devices:
      fi-kbl-7500u:       DMESG-WARN (fdo#105128) -> PASS

    igt@kms_flip@basic-flip-vs-dpms:
      fi-skl-6700hq:      DMESG-WARN (fdo#105998) -> PASS

    igt@kms_flip@basic-flip-vs-modeset:
      fi-glk-j4005:       DMESG-WARN (fdo#106000) -> PASS

    igt@kms_flip@basic-flip-vs-wf_vblank:
      fi-glk-j4005:       FAIL (fdo#100368) -> PASS

    igt@kms_pipe_crc_basic@read-crc-pipe-c:
      fi-glk-j4005:       DMESG-WARN (fdo#106097) -> PASS

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
      fi-cnl-psr:         DMESG-WARN (fdo#104951) -> PASS

    
  fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
  fdo#102614 https://bugs.freedesktop.org/show_bug.cgi?id=102614
  fdo#104951 https://bugs.freedesktop.org/show_bug.cgi?id=104951
  fdo#105128 https://bugs.freedesktop.org/show_bug.cgi?id=105128
  fdo#105998 https://bugs.freedesktop.org/show_bug.cgi?id=105998
  fdo#106000 https://bugs.freedesktop.org/show_bug.cgi?id=106000
  fdo#106097 https://bugs.freedesktop.org/show_bug.cgi?id=106097
  fdo#106103 https://bugs.freedesktop.org/show_bug.cgi?id=106103


== Participating hosts (43 -> 39) ==

  Missing    (4): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan 


== Build changes ==

    * IGT: IGT_4517 -> IGTPW_1458

  CI_DRM_4309: 2740c5b0d0f40092355b329a62ede8cced7f64b9 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_1458: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1458/
  IGT_4517: e94ce40798e35d2e3c4494f50b617908066bbf8b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+igt@kms_flip@2x-bo-too-big-interruptible
+igt@kms_flip@2x-dpms-off-confusion-interruptible

== Logs ==

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_flip: Binary mode optimizations (rev3)
  2018-06-13 12:58 [igt-dev] [PATCH i-g-t v2 0/2] tests/kms_flip: Binary mode optimizations Mika Kahola
                   ` (2 preceding siblings ...)
  2018-06-13 15:55 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Binary mode optimizations (rev3) Patchwork
@ 2018-06-13 19:43 ` Patchwork
  3 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2018-06-13 19:43 UTC (permalink / raw)
  To: Mika Kahola; +Cc: igt-dev

== Series Details ==

Series: tests/kms_flip: Binary mode optimizations (rev3)
URL   : https://patchwork.freedesktop.org/series/44619/
State : success

== Summary ==

= CI Bug Log - changes from IGT_4517_full -> IGTPW_1458_full =

== Summary - WARNING ==

  Minor unknown changes coming with IGTPW_1458_full need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_1458_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/44619/revisions/3/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in IGTPW_1458_full:

  === IGT changes ===

    ==== Warnings ====

    igt@gem_exec_schedule@deep-bsd2:
      shard-kbl:          SKIP -> PASS +1

    igt@kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-cpu:
      shard-snb:          PASS -> SKIP +1

    igt@pm_rc6_residency@rc6-accuracy:
      shard-kbl:          PASS -> SKIP +1

    
== Known issues ==

  Here are the changes found in IGTPW_1458_full that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@gem_exec_reloc@basic-gtt-read-active:
      shard-snb:          PASS -> INCOMPLETE (fdo#105411)

    igt@gem_exec_schedule@pi-ringfull-blt:
      shard-glk:          NOTRUN -> FAIL (fdo#103158) +2

    igt@kms_flip@flip-vs-blocking-wf-vblank:
      shard-hsw:          PASS -> FAIL (fdo#103928)

    igt@kms_flip_tiling@flip-to-y-tiled:
      shard-glk:          NOTRUN -> FAIL (fdo#103822, fdo#104724) +1

    igt@kms_flip_tiling@flip-x-tiled:
      shard-glk:          NOTRUN -> FAIL (fdo#104724)

    igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc:
      shard-glk:          NOTRUN -> FAIL (fdo#103167, fdo#104724)

    igt@perf@blocking:
      shard-hsw:          PASS -> FAIL (fdo#102252)

    igt@prime_vgem@coherency-gtt:
      shard-glk:          NOTRUN -> FAIL (fdo#100587)

    igt@testdisplay:
      shard-glk:          NOTRUN -> INCOMPLETE (fdo#103359, k.org#198133)

    
    ==== Possible fixes ====

    igt@drv_selftest@live_gtt:
      shard-kbl:          FAIL (fdo#105347) -> PASS

    igt@drv_suspend@shrink:
      shard-apl:          INCOMPLETE (fdo#103927) -> PASS
      shard-glk:          INCOMPLETE (fdo#103359, k.org#198133) -> PASS

    igt@kms_atomic_transition@1x-modeset-transitions-nonblocking-fencing:
      shard-glk:          FAIL (fdo#105703) -> PASS

    igt@kms_flip@flip-vs-panning-vs-hang:
      shard-snb:          DMESG-WARN (fdo#103821) -> PASS

    igt@kms_flip@plain-flip-ts-check-interruptible:
      shard-hsw:          FAIL (fdo#100368) -> PASS

    igt@kms_plane_multiple@atomic-pipe-a-tiling-x:
      shard-snb:          FAIL (fdo#103166, fdo#104724) -> PASS

    igt@perf_pmu@busy-accuracy-50-vcs1:
      shard-snb:          INCOMPLETE (fdo#105411) -> SKIP

    
  fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
  fdo#100587 https://bugs.freedesktop.org/show_bug.cgi?id=100587
  fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
  fdo#103158 https://bugs.freedesktop.org/show_bug.cgi?id=103158
  fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
  fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
  fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
  fdo#103821 https://bugs.freedesktop.org/show_bug.cgi?id=103821
  fdo#103822 https://bugs.freedesktop.org/show_bug.cgi?id=103822
  fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
  fdo#103928 https://bugs.freedesktop.org/show_bug.cgi?id=103928
  fdo#104724 https://bugs.freedesktop.org/show_bug.cgi?id=104724
  fdo#105347 https://bugs.freedesktop.org/show_bug.cgi?id=105347
  fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
  fdo#105703 https://bugs.freedesktop.org/show_bug.cgi?id=105703
  k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133


== Participating hosts (5 -> 5) ==

  No changes in participating hosts


== Build changes ==

    * IGT: IGT_4517 -> IGTPW_1458
    * Linux: CI_DRM_4307 -> CI_DRM_4309

  CI_DRM_4307: 0cf6f8f74cad691364d738d1607bc45945f3a5f9 @ git://anongit.freedesktop.org/gfx-ci/linux
  CI_DRM_4309: 2740c5b0d0f40092355b329a62ede8cced7f64b9 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_1458: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1458/
  IGT_4517: e94ce40798e35d2e3c4494f50b617908066bbf8b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

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

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

* Re: [igt-dev] [PATCH i-g-t v2 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-06-13 13:57   ` Ville Syrjälä
@ 2018-06-14 10:40     ` Mika Kahola
  0 siblings, 0 replies; 10+ messages in thread
From: Mika Kahola @ 2018-06-14 10:40 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev

On Wed, 2018-06-13 at 16:57 +0300, Ville Syrjälä wrote:
> On Wed, Jun 13, 2018 at 03:58:33PM +0300, Mika Kahola wrote:
> > 
> > To reduce the execution time of kms_flip test on CI, let's move
> > subtest
> > duration parameter as command line option. The default subtest
> > duration
> > is 0 seconds meaning that the subtest is run only once.
> Single iteration doesn't seem particularly robust. The flip tests for
> example are checking for jitter and such so running it just once
> probably means we're not actually testing anything.
Maybe we could add minimum duration for the tests that need more than
one iteration to produce meaningful results. That would still reduce
the total runtime of the tests if majority of the tests would be happy
with one iteration.

> 
> > 
> > 
> > The patch reduces the kms_flip binary mode execution time on
> > Geminilake from
> > 1189 seconds down to 307 seconds with default subtest duration.
> > 
> > No functional changes on subtests.
> > 
> > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> > ---
> >  tests/kms_flip.c | 113 +++++++++++++++++++++++++++++++++++++----
> > --------------
> >  1 file changed, 77 insertions(+), 36 deletions(-)
> > 
> > diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> > index 3d6fe94..09aaac2 100644
> > --- a/tests/kms_flip.c
> > +++ b/tests/kms_flip.c
> > @@ -82,6 +82,8 @@
> >  #define DRM_CAP_TIMESTAMP_MONOTONIC 6
> >  #endif
> >  
> > +#define MAX_DURATION            60
> > +
> >  drmModeRes *resources;
> >  int drm_fd;
> >  static drm_intel_bufmgr *bufmgr;
> > @@ -95,6 +97,13 @@ static drmModeConnector *last_connector;
> >  
> >  uint32_t *fb_ptr;
> >  
> > +/* Command line parameters. */
> > +struct {
> > +	int duration;
> > +} opt = {
> > +	.duration = 0,
> > +};
> > +
> >  struct type_name {
> >  	int type;
> >  	const char *name;
> > @@ -1518,56 +1527,89 @@ static void test_nonblocking_read(int in)
> >  	close(fd);
> >  }
> >  
> > +static int opt_handler(int option, int option_index, void *input)
> > +{
> > +	switch (option) {
> > +	case 'd':
> > +		opt.duration = strtol(optarg, NULL, 0);
> > +
> > +		if (opt.duration > MAX_DURATION) {
> > +			igt_debug("limiting test duration from %ds
> > to %ds\n",
> > +				  opt.duration, MAX_DURATION);
> > +			opt.duration = MAX_DURATION;
> > +		}
> > +
> > +		if (opt.duration < 0) {
> > +			igt_debug("limiting test duration from %ds
> > to %ds\n",
> > +				  opt.duration, 0);
> > +			opt.duration = 0;
> > +		}
> > +		break;
> > +	default:
> > +		igt_assert(false);
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> > +const char *help_str =
> > +	"  --duration test duration in seconds (default 0s)\n";
> > +
> >  int main(int argc, char **argv)
> >  {
> > +	struct option long_options[] = {
> > +		{ "duration", required_argument, NULL, 'd'},
> > +		{ 0, 0, 0, 0 }
> > +	};
> > +
> >  	struct {
> > -		int duration;
> >  		int flags;
> >  		const char *name;
> >  	} tests[] = {
> > -		{ 30, TEST_VBLANK | TEST_CHECK_TS, "wf_vblank-ts-
> > check" },
> > -		{ 30, TEST_VBLANK | TEST_VBLANK_BLOCK |
> > TEST_CHECK_TS,
> > +		{ TEST_VBLANK | TEST_CHECK_TS, "wf_vblank-ts-
> > check" },
> > +		{ TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_CHECK_TS,
> >  					"blocking-wf_vblank" },
> > -		{ 30,  TEST_VBLANK | TEST_VBLANK_ABSOLUTE,
> > +		{ TEST_VBLANK | TEST_VBLANK_ABSOLUTE,
> >  					"absolute-wf_vblank" },
> > -		{ 30,  TEST_VBLANK | TEST_VBLANK_BLOCK |
> > TEST_VBLANK_ABSOLUTE,
> > +		{ TEST_VBLANK | TEST_VBLANK_BLOCK |
> > TEST_VBLANK_ABSOLUTE,
> >  					"blocking-absolute-
> > wf_vblank" },
> > -		{ 10, TEST_FLIP | TEST_BASIC, "plain-flip" },
> > -		{ 30, TEST_FLIP | TEST_EBUSY , "busy-flip" },
> > -		{ 30, TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-
> > fences" },
> > -		{ 30, TEST_FLIP | TEST_CHECK_TS, "plain-flip-ts-
> > check" },
> > -		{ 30, TEST_FLIP | TEST_CHECK_TS |
> > TEST_FB_RECREATE,
> > +		{ TEST_FLIP | TEST_BASIC, "plain-flip" },
> > +		{ TEST_FLIP | TEST_EBUSY , "busy-flip" },
> > +		{ TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" 
> > },
> > +		{ TEST_FLIP | TEST_CHECK_TS, "plain-flip-ts-check" 
> > },
> > +		{ TEST_FLIP | TEST_CHECK_TS | TEST_FB_RECREATE,
> >  			"plain-flip-fb-recreate" },
> > -		{ 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" },
> > -		{ 20, TEST_FLIP | TEST_MODESET | TEST_EINVAL |
> > TEST_BASIC, "flip-vs-modeset" },
> > -		{ 30,  TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
> > +		{ TEST_FLIP | TEST_RMFB | TEST_MODESET , "flip-vs-
> > rmfb" },
> > +		{ TEST_FLIP | TEST_DPMS | TEST_EINVAL |
> > TEST_BASIC, "flip-vs-dpms" },
> > +		{ TEST_FLIP | TEST_PAN, "flip-vs-panning" },
> > +		{ TEST_FLIP | TEST_MODESET | TEST_EINVAL |
> > TEST_BASIC, "flip-vs-modeset" },
> > +		{ TEST_FLIP | TEST_VBLANK_EXPIRED_SEQ,
> >  					"flip-vs-expired-vblank"
> > },
> >  
> > -		{ 30, TEST_FLIP | TEST_VBLANK |
> > TEST_VBLANK_ABSOLUTE |
> > -		      TEST_CHECK_TS, "flip-vs-absolute-wf_vblank"
> > },
> > -		{ 10, TEST_FLIP | TEST_VBLANK | TEST_CHECK_TS |
> > TEST_BASIC,
> > +		{ TEST_FLIP | TEST_VBLANK | TEST_VBLANK_ABSOLUTE |
> > +		  TEST_CHECK_TS, "flip-vs-absolute-wf_vblank" },
> > +		{ TEST_FLIP | TEST_VBLANK | TEST_CHECK_TS |
> > TEST_BASIC,
> >  					"flip-vs-wf_vblank" },
> > -		{ 30, TEST_FLIP | TEST_VBLANK | TEST_VBLANK_BLOCK
> > |
> > -			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" },
> > -		{ 1, TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING,
> > "flip-vs-bad-tiling" },
> > +		{ TEST_FLIP | TEST_VBLANK | TEST_VBLANK_BLOCK |
> > +		  TEST_CHECK_TS, "flip-vs-blocking-wf-vblank" },
> > +		{ TEST_FLIP | TEST_MODESET | TEST_HANG |
> > TEST_NOEVENT, "flip-vs-modeset-vs-hang" },
> > +		{ TEST_FLIP | TEST_PAN | TEST_HANG, "flip-vs-
> > panning-vs-hang" },
> > +		{ TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING,
> > "flip-vs-bad-tiling" },
> >  
> > -		{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
> > +		{ TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
> >  					"flip-vs-dpms-off-vs-
> > modeset" },
> > -		{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP |
> > TEST_SINGLE_BUFFER,
> > +		{ TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP |
> > TEST_SINGLE_BUFFER,
> >  					"single-buffer-flip-vs-
> > dpms-off-vs-modeset" },
> > -		{ 30, TEST_FLIP | TEST_NO_2X_OUTPUT |
> > TEST_DPMS_OFF_OTHERS , "dpms-off-confusion" },
> > -		{ 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" },
> > -		{ 0, TEST_BO_TOOBIG | TEST_NO_2X_OUTPUT, "bo-too-
> > big" },
> > +		{ TEST_FLIP | TEST_NO_2X_OUTPUT |
> > TEST_DPMS_OFF_OTHERS , "dpms-off-confusion" },
> > +		{ TEST_ENOENT | TEST_NOEVENT, "nonexisting-fb" },
> > +		{ TEST_DPMS_OFF | TEST_DPMS | TEST_VBLANK_RACE,
> > "dpms-vs-vblank-race" },
> > +		{ TEST_MODESET | TEST_VBLANK_RACE, "modeset-vs-
> > vblank-race" },
> > +		{ TEST_BO_TOOBIG | TEST_NO_2X_OUTPUT, "bo-too-big" 
> > },
> >  	};
> >  	int i;
> >  
> > -	igt_subtest_init(argc, argv);
> > +	igt_subtest_init_parse_opts(&argc, argv, "", long_options,
> > help_str,
> > +				    opt_handler, NULL);
> >  
> >  	igt_fixture {
> >  		drm_fd = drm_open_driver_master(DRIVER_ANY);
> > @@ -1592,7 +1634,7 @@ int main(int argc, char **argv)
> >  		igt_subtest_f("%s%s",
> >  			      tests[i].flags & TEST_BASIC ?
> > "basic-" : "",
> >  			      tests[i].name)
> > -			run_test(tests[i].duration,
> > tests[i].flags);
> > +			run_test(opt.duration, tests[i].flags);
> >  
> >  		if (tests[i].flags & TEST_NO_2X_OUTPUT)
> >  			continue;
> > @@ -1602,7 +1644,7 @@ int main(int argc, char **argv)
> >  			continue;
> >  
> >  		igt_subtest_f( "2x-%s", tests[i].name)
> > -			run_pair(tests[i].duration,
> > tests[i].flags);
> > +			run_pair(opt.duration, tests[i].flags);
> >  	}
> >  
> >  	igt_fork_signal_helper();
> > @@ -1614,7 +1656,7 @@ int main(int argc, char **argv)
> >  			continue;
> >  
> >  		igt_subtest_f( "%s-interruptible", tests[i].name)
> > -			run_test(tests[i].duration,
> > tests[i].flags);
> > +			run_test(opt.duration, tests[i].flags);
> >  
> >  		if (tests[i].flags & TEST_NO_2X_OUTPUT)
> >  			continue;
> > @@ -1624,7 +1666,7 @@ int main(int argc, char **argv)
> >  			continue;
> >  
> >  		igt_subtest_f( "2x-%s-interruptible",
> > tests[i].name)
> > -			run_pair(tests[i].duration,
> > tests[i].flags);
> > +			run_pair(opt.duration, tests[i].flags);
> >  	}
> >  	igt_stop_signal_helper();
> >  
> > @@ -1632,6 +1674,5 @@ int main(int argc, char **argv)
> >  	 * Let drm_fd leak, since it's needed by the dpms restore
> >  	 * exit_handler and igt_exit() won't return.
> >  	 */
> > -
> >  	igt_exit();
> >  }
> > -- 
> > 2.7.4
> > 
> > _______________________________________________
> > igt-dev mailing list
> > igt-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/igt-dev
-- 
Mika Kahola - Intel OTC

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

end of thread, other threads:[~2018-06-14 10:40 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-13 12:58 [igt-dev] [PATCH i-g-t v2 0/2] tests/kms_flip: Binary mode optimizations Mika Kahola
2018-06-13 12:58 ` [igt-dev] [PATCH i-g-t v2 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
2018-06-13 13:57   ` Ville Syrjälä
2018-06-14 10:40     ` Mika Kahola
2018-06-13 12:58 ` [igt-dev] [PATCH i-g-t v2 2/2] tests/kms_flip: Change 2x tests execution order Mika Kahola
2018-06-13 15:55 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Binary mode optimizations (rev3) Patchwork
2018-06-13 19:43 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2018-06-12 11:19 [igt-dev] [PATCH i-g-t 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
2018-06-13 11:30 ` [igt-dev] [PATCH i-g-t v2 " Mika Kahola
2018-06-13 12:07   ` Chris Wilson
2018-06-13 12:49     ` Mika Kahola

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