All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v3 0/2] tests/kms_flip: Binary mode optimizations
@ 2018-08-09 10:12 Mika Kahola
  2018-08-09 10:12 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Mika Kahola @ 2018-08-09 10:12 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.

The binary mode execution time on GLK platform reduced from 1189 seconds
down to 536 seconds (2X tests skipped as test platform had only 1 display
connected)

For VIZ-14324

v2: Execute subtest once by default
v3: For jitter copmutation, increase default timeout for subtests to
    3 seconds (Ville)

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 | 131 ++++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 86 insertions(+), 45 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] 12+ messages in thread

* [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-08-09 10:12 [igt-dev] [PATCH i-g-t v3 0/2] tests/kms_flip: Binary mode optimizations Mika Kahola
@ 2018-08-09 10:12 ` Mika Kahola
  2018-08-09 10:20   ` Chris Wilson
  2018-11-08 11:47   ` Maarten Lankhorst
  2018-08-09 10:12 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/kms_flip: Change 2x tests execution order Mika Kahola
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 12+ messages in thread
From: Mika Kahola @ 2018-08-09 10:12 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 3 seconds for test that require jitter computation and for the rest
of the subtests are run only once.

v2: Run each subtest only once (default action)
v3: Reduces default timeout for tests that require jitter computation (Ville)

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

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 393d690..4cd1951 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;
@@ -1521,56 +1530,90 @@ 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,
+		{ 3, TEST_VBLANK | TEST_CHECK_TS, "wf_vblank-ts-check" },
+		{ 3, TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_CHECK_TS,
 					"blocking-wf_vblank" },
-		{ 30,  TEST_VBLANK | TEST_VBLANK_ABSOLUTE,
+		{ 3, TEST_VBLANK | TEST_VBLANK_ABSOLUTE,
 					"absolute-wf_vblank" },
-		{ 30,  TEST_VBLANK | TEST_VBLANK_BLOCK | TEST_VBLANK_ABSOLUTE,
+		{ 3, 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,
+		{ 3, TEST_FLIP | TEST_BASIC, "plain-flip" },
+		{ 3, TEST_FLIP | TEST_EBUSY , "busy-flip" },
+		{ 3, TEST_FLIP | TEST_FENCE_STRESS , "flip-vs-fences" },
+		{ 3, TEST_FLIP | TEST_CHECK_TS, "plain-flip-ts-check" },
+		{ 3, 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,
+		{ 3, TEST_FLIP | TEST_RMFB | TEST_MODESET , "flip-vs-rmfb" },
+		{ 3, TEST_FLIP | TEST_DPMS | TEST_EINVAL | TEST_BASIC, "flip-vs-dpms" },
+		{ 3, TEST_FLIP | TEST_PAN, "flip-vs-panning" },
+		{ 3, TEST_FLIP | TEST_MODESET | TEST_EINVAL | TEST_BASIC, "flip-vs-modeset" },
+		{ 3, 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,
+		{ 3, TEST_FLIP | TEST_VBLANK | TEST_VBLANK_ABSOLUTE |
+		  TEST_CHECK_TS, "flip-vs-absolute-wf_vblank" },
+		{ 3, 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" },
+		{ 3, TEST_FLIP | TEST_VBLANK | TEST_VBLANK_BLOCK |
+		  TEST_CHECK_TS, "flip-vs-blocking-wf-vblank" },
+		{ 3, TEST_FLIP | TEST_MODESET | TEST_HANG | TEST_NOEVENT, "flip-vs-modeset-vs-hang" },
+		{ 3, TEST_FLIP | TEST_PAN | TEST_HANG, "flip-vs-panning-vs-hang" },
+		{ 3, TEST_FLIP | TEST_EINVAL | TEST_FB_BAD_TILING, "flip-vs-bad-tiling" },
 
-		{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
+		{ 0, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP,
 					"flip-vs-dpms-off-vs-modeset" },
-		{ 1, TEST_DPMS_OFF | TEST_MODESET | TEST_FLIP | TEST_SINGLE_BUFFER,
+		{ 0, 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_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" },
+		{ 3, TEST_DPMS_OFF | TEST_DPMS | TEST_VBLANK_RACE, "dpms-vs-vblank-race" },
+		{ 3, TEST_MODESET | TEST_VBLANK_RACE, "modeset-vs-vblank-race" },
 		{ 0, 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);
@@ -1595,7 +1638,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(max(opt.duration, tests[i].duration), tests[i].flags);
 
 		if (tests[i].flags & TEST_NO_2X_OUTPUT)
 			continue;
@@ -1605,7 +1648,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(max(opt.duration, tests[i].duration), tests[i].flags);
 	}
 
 	igt_fork_signal_helper();
@@ -1617,7 +1660,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(max(opt.duration, tests[i].duration), tests[i].flags);
 
 		if (tests[i].flags & TEST_NO_2X_OUTPUT)
 			continue;
@@ -1627,7 +1670,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(max(opt.duration, tests[i].duration), tests[i].flags);
 	}
 	igt_stop_signal_helper();
 
@@ -1635,6 +1678,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] 12+ messages in thread

* [igt-dev] [PATCH i-g-t v3 2/2] tests/kms_flip: Change 2x tests execution order
  2018-08-09 10:12 [igt-dev] [PATCH i-g-t v3 0/2] tests/kms_flip: Binary mode optimizations Mika Kahola
  2018-08-09 10:12 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
@ 2018-08-09 10:12 ` Mika Kahola
  2018-11-08 11:16   ` Maarten Lankhorst
  2018-08-09 11:09 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Binary mode optimizations (rev4) Patchwork
  2018-08-09 12:21 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  3 siblings, 1 reply; 12+ messages in thread
From: Mika Kahola @ 2018-08-09 10:12 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.

v2: update commit message (Petri)
v3: Change subtest execution order

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

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 4cd1951..6217d67 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -1640,19 +1640,6 @@ int main(int argc, char **argv)
 			      tests[i].name)
 			run_test(max(opt.duration, tests[i].duration), tests[i].flags);
 
-		if (tests[i].flags & TEST_NO_2X_OUTPUT)
-			continue;
-
-		/* code doesn't disable all crtcs, so skip rpm tests */
-		if (tests[i].flags & TEST_RPM)
-			continue;
-
-		igt_subtest_f( "2x-%s", tests[i].name)
-			run_pair(max(opt.duration, tests[i].duration), tests[i].flags);
-	}
-
-	igt_fork_signal_helper();
-	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) &&
@@ -1661,7 +1648,10 @@ int main(int argc, char **argv)
 
 		igt_subtest_f( "%s-interruptible", tests[i].name)
 			run_test(max(opt.duration, tests[i].duration), tests[i].flags);
+	}
 
+	igt_fork_signal_helper();
+	for (i = 0; i < sizeof(tests) / sizeof (tests[0]); i++) {
 		if (tests[i].flags & TEST_NO_2X_OUTPUT)
 			continue;
 
@@ -1669,6 +1659,15 @@ int main(int argc, char **argv)
 		if (tests[i].flags & TEST_RPM)
 			continue;
 
+		igt_subtest_f( "2x-%s", tests[i].name)
+			run_pair(max(opt.duration, tests[i].duration), tests[i].flags);
+
+		/* 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;
+
 		igt_subtest_f( "2x-%s-interruptible", tests[i].name)
 			run_pair(max(opt.duration, tests[i].duration), tests[i].flags);
 	}
-- 
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] 12+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-08-09 10:12 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
@ 2018-08-09 10:20   ` Chris Wilson
  2018-08-09 11:29     ` Mika Kahola
  2018-11-08 11:47   ` Maarten Lankhorst
  1 sibling, 1 reply; 12+ messages in thread
From: Chris Wilson @ 2018-08-09 10:20 UTC (permalink / raw)
  To: Mika Kahola, igt-dev

Quoting Mika Kahola (2018-08-09 11:12:33)
> 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 3 seconds for test that require jitter computation and for the rest
> of the subtests are run only once.

I disagree with having tests that change between invocations. It's far
too easy for one to make a mistake and not configure the test correctly,
completely fairly to reproduce whatever bug one was seeking.

If you think both durations are interesting for different aspects, test
both.
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

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

== Series Details ==

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

== Summary ==

= CI Bug Log - changes from CI_DRM_4636 -> IGTPW_1696 =

== Summary - SUCCESS ==

  No regressions found.

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

== Possible new issues ==

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

  === IGT changes ===

    ==== Possible regressions ====

    igt@gem_exec_suspend@basic-s3:
      {fi-kbl-soraka}:    NOTRUN -> INCOMPLETE

    
== Known issues ==

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

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_selftest@live_hangcheck:
      fi-skl-guc:         PASS -> DMESG-FAIL (fdo#107174)
      fi-kbl-guc:         PASS -> DMESG-FAIL (fdo#106947)
      {fi-icl-u}:         NOTRUN -> INCOMPLETE (fdo#107399)

    igt@drv_selftest@live_workarounds:
      fi-cnl-psr:         PASS -> DMESG-FAIL (fdo#107292)

    igt@kms_frontbuffer_tracking@basic:
      {fi-byt-clapper}:   PASS -> FAIL (fdo#103167)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
      fi-snb-2520m:       PASS -> INCOMPLETE (fdo#103713)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
      {fi-icl-u}:         NOTRUN -> DMESG-WARN (fdo#107382) +4

    {igt@kms_psr@primary_page_flip}:
      {fi-icl-u}:         NOTRUN -> FAIL (fdo#107383) +3

    
    ==== Warnings ====

    {igt@kms_psr@primary_page_flip}:
      fi-cnl-psr:         DMESG-WARN (fdo#107372) -> DMESG-FAIL (fdo#107372)

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
  fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
  fdo#106947 https://bugs.freedesktop.org/show_bug.cgi?id=106947
  fdo#107174 https://bugs.freedesktop.org/show_bug.cgi?id=107174
  fdo#107292 https://bugs.freedesktop.org/show_bug.cgi?id=107292
  fdo#107372 https://bugs.freedesktop.org/show_bug.cgi?id=107372
  fdo#107382 https://bugs.freedesktop.org/show_bug.cgi?id=107382
  fdo#107383 https://bugs.freedesktop.org/show_bug.cgi?id=107383
  fdo#107399 https://bugs.freedesktop.org/show_bug.cgi?id=107399


== Participating hosts (50 -> 49) ==

  Additional (3): fi-kbl-soraka fi-kbl-7560u fi-icl-u 
  Missing    (4): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u 


== Build changes ==

    * IGT: IGT_4590 -> IGTPW_1696

  CI_DRM_4636: 084bb2fb549650b6da80976c9bc594779ce342b4 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_1696: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1696/
  IGT_4590: e6ddaca7a8ea9d3d27f0ecaa36b357cc02e2df3b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

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

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

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

On Thu, 2018-08-09 at 11:20 +0100, Chris Wilson wrote:
> Quoting Mika Kahola (2018-08-09 11:12:33)
> > 
> > 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 3 seconds for test that require jitter computation and for the
> > rest
> > of the subtests are run only once.
> I disagree with having tests that change between invocations. It's
> far
> too easy for one to make a mistake and not configure the test
> correctly,
> completely fairly to reproduce whatever bug one was seeking.
> 
So, should I remove the option of setting the duration for the
subtests? Originally, we have timeouts ranging from 0 to 30 seconds,
depending on a test. Based on my tests on GLK, I found out that tests
that require some jitter computation yields the similar results if we
run it for 3 or 30 seconds. When running less than 3 seconds there are
differences in jitter results. That's why I suggested that 3 seconds
would be a sweetspot for the subtests.

Should I just use 3 seconds timeout for all subtests and discard the
possibility to set the timeout? 

> If you think both durations are interesting for different aspects,
> test
> both.
> -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] 12+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_flip: Binary mode optimizations (rev4)
  2018-08-09 10:12 [igt-dev] [PATCH i-g-t v3 0/2] tests/kms_flip: Binary mode optimizations Mika Kahola
                   ` (2 preceding siblings ...)
  2018-08-09 11:09 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Binary mode optimizations (rev4) Patchwork
@ 2018-08-09 12:21 ` Patchwork
  3 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2018-08-09 12:21 UTC (permalink / raw)
  To: Mika Kahola; +Cc: igt-dev

== Series Details ==

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

== Summary ==

= CI Bug Log - changes from IGT_4590_full -> IGTPW_1696_full =

== Summary - SUCCESS ==

  No regressions found.

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

== Known issues ==

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

  === IGT changes ===

    ==== Issues hit ====

    igt@gem_sync@basic-each:
      shard-snb:          PASS -> INCOMPLETE (fdo#105411)

    igt@kms_vblank@pipe-a-ts-continuation-dpms-rpm:
      shard-kbl:          PASS -> FAIL (fdo#106539)
      shard-apl:          PASS -> FAIL (fdo#106539)
      shard-glk:          PASS -> FAIL (fdo#106539)
      shard-hsw:          PASS -> FAIL (fdo#106539)

    
    ==== Possible fixes ====

    igt@gem_cs_tlb@blt:
      shard-snb:          INCOMPLETE (fdo#105411) -> PASS

    igt@gem_workarounds@suspend-resume:
      shard-kbl:          INCOMPLETE (fdo#103665) -> PASS

    igt@kms_vblank@pipe-c-ts-continuation-modeset-rpm:
      shard-hsw:          FAIL (fdo#106539) -> PASS +7

    igt@pm_rpm@cursor-dpms:
      shard-glk:          WARN -> PASS

    igt@pm_rpm@modeset-lpsp-stress:
      shard-hsw:          FAIL (fdo#106539) -> SKIP

    
  fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
  fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
  fdo#106539 https://bugs.freedesktop.org/show_bug.cgi?id=106539


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

  No changes in participating hosts


== Build changes ==

    * IGT: IGT_4590 -> IGTPW_1696
    * Linux: CI_DRM_4635 -> CI_DRM_4636

  CI_DRM_4635: a9f34f7e3bab765e2b1320a1b154a76be38602a7 @ git://anongit.freedesktop.org/gfx-ci/linux
  CI_DRM_4636: 084bb2fb549650b6da80976c9bc594779ce342b4 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_1696: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1696/
  IGT_4590: e6ddaca7a8ea9d3d27f0ecaa36b357cc02e2df3b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

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

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

* Re: [igt-dev] [PATCH i-g-t v3 2/2] tests/kms_flip: Change 2x tests execution order
  2018-08-09 10:12 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/kms_flip: Change 2x tests execution order Mika Kahola
@ 2018-11-08 11:16   ` Maarten Lankhorst
  0 siblings, 0 replies; 12+ messages in thread
From: Maarten Lankhorst @ 2018-11-08 11:16 UTC (permalink / raw)
  To: Mika Kahola, igt-dev

Op 09-08-18 om 12:12 schreef Mika Kahola:
> 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.
>
> v2: update commit message (Petri)
> v3: Change subtest execution order
>
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> ---
>  tests/kms_flip.c | 25 ++++++++++++-------------
>  1 file changed, 12 insertions(+), 13 deletions(-)
>
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index 4cd1951..6217d67 100644
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -1640,19 +1640,6 @@ int main(int argc, char **argv)
>  			      tests[i].name)
>  			run_test(max(opt.duration, tests[i].duration), tests[i].flags);
>  
> -		if (tests[i].flags & TEST_NO_2X_OUTPUT)
> -			continue;
> -
> -		/* code doesn't disable all crtcs, so skip rpm tests */
> -		if (tests[i].flags & TEST_RPM)
> -			continue;
> -
> -		igt_subtest_f( "2x-%s", tests[i].name)
> -			run_pair(max(opt.duration, tests[i].duration), tests[i].flags);
> -	}
> -
> -	igt_fork_signal_helper();
> -	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) &&
> @@ -1661,7 +1648,10 @@ int main(int argc, char **argv)
>  
>  		igt_subtest_f( "%s-interruptible", tests[i].name)
>  			run_test(max(opt.duration, tests[i].duration), tests[i].flags);
> +	}
>  
> +	igt_fork_signal_helper();
Hmm, this forces all the 2x tests as interruptible?
> +	for (i = 0; i < sizeof(tests) / sizeof (tests[0]); i++) {
>  		if (tests[i].flags & TEST_NO_2X_OUTPUT)
>  			continue;
>  
> @@ -1669,6 +1659,15 @@ int main(int argc, char **argv)
>  		if (tests[i].flags & TEST_RPM)
>  			continue;
>  
> +		igt_subtest_f( "2x-%s", tests[i].name)
> +			run_pair(max(opt.duration, tests[i].duration), tests[i].flags);
> +
> +		/* 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;
> +
>  		igt_subtest_f( "2x-%s-interruptible", tests[i].name) {
put igt_fork_signal_helper() here
>  			run_pair(max(opt.duration, tests[i].duration), tests[i].flags);
And stop it after.
>  	}

Yeah doing the 2x tests isn't optimal in that order and causes a lot of modesets.

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

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

* Re: [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-08-09 10:12 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
  2018-08-09 10:20   ` Chris Wilson
@ 2018-11-08 11:47   ` Maarten Lankhorst
  2018-11-08 12:45     ` Kahola, Mika
  1 sibling, 1 reply; 12+ messages in thread
From: Maarten Lankhorst @ 2018-11-08 11:47 UTC (permalink / raw)
  To: Mika Kahola, igt-dev

Op 09-08-18 om 12:12 schreef Mika Kahola:
> 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 3 seconds for test that require jitter computation and for the rest
> of the subtests are run only once.
>
> v2: Run each subtest only once (default action)
> v3: Reduces default timeout for tests that require jitter computation (Ville)
>
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
I think this is the wrong approach. What we really want to do is kill tests from kms_flip
instead and move them to separate places.

Killing off all the interruptible tests would save 50% of the time. So all we have to do is
making sure that we have tests that test the missing ioctl's in in kms_atomic_interruptible,
and we would save 50% of the time.

After that we have to get rid of the unrelated tests to make the code more readable..
nonexisting-fb, dpms-vs-vblank-race, modeset-vs-vblank-race and bo-too-big would be
better off in a separate testcase.

Same for bad-tiling, but I already had a patch for that.
https://patchwork.freedesktop.org/patch/259361/

This would clean up kms_flip a lot, and make the test more readable.

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

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

* Re: [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-11-08 11:47   ` Maarten Lankhorst
@ 2018-11-08 12:45     ` Kahola, Mika
  2018-11-08 13:11       ` Maarten Lankhorst
  0 siblings, 1 reply; 12+ messages in thread
From: Kahola, Mika @ 2018-11-08 12:45 UTC (permalink / raw)
  To: igt-dev, maarten.lankhorst

On Thu, 2018-11-08 at 12:47 +0100, Maarten Lankhorst wrote:
> Op 09-08-18 om 12:12 schreef Mika Kahola:
> > 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 3 seconds for test that require jitter computation and for the
> > rest
> > of the subtests are run only once.
> > 
> > v2: Run each subtest only once (default action)
> > v3: Reduces default timeout for tests that require jitter
> > computation (Ville)
> > 
> > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> 
> I think this is the wrong approach. What we really want to do is kill
> tests from kms_flip
> instead and move them to separate places.
> 
> Killing off all the interruptible tests would save 50% of the time.
> So all we have to do is
> making sure that we have tests that test the missing ioctl's in in
> kms_atomic_interruptible,
> and we would save 50% of the time.
kms_atomic_interruptible would probably be more logical place for
interrupt tests. I agree that it would reduce the execution time of the
kms_flip test but in the end of the day we still need to run those
interruptible tests and therefore we would end up increasing the
execution time of the kms_atomic_interruptible test.

Do you feel that we could have overall reduction in test execution if
we move these interruptible tests out from kms_flip? Maybe kms_flip
readability would improve and therefore worth the effort?
> 
> After that we have to get rid of the unrelated tests to make the code
> more readable..
> nonexisting-fb, dpms-vs-vblank-race, modeset-vs-vblank-race and bo-
> too-big would be
> better off in a separate testcase.
> 
> Same for bad-tiling, but I already had a patch for that.
> https://patchwork.freedesktop.org/patch/259361/
> 
> This would clean up kms_flip a lot, and make the test more readable.
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-11-08 12:45     ` Kahola, Mika
@ 2018-11-08 13:11       ` Maarten Lankhorst
  2018-11-08 14:41         ` Kahola, Mika
  0 siblings, 1 reply; 12+ messages in thread
From: Maarten Lankhorst @ 2018-11-08 13:11 UTC (permalink / raw)
  To: Kahola, Mika, igt-dev

Op 08-11-18 om 13:45 schreef Kahola, Mika:
> On Thu, 2018-11-08 at 12:47 +0100, Maarten Lankhorst wrote:
>> Op 09-08-18 om 12:12 schreef Mika Kahola:
>>> 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 3 seconds for test that require jitter computation and for the
>>> rest
>>> of the subtests are run only once.
>>>
>>> v2: Run each subtest only once (default action)
>>> v3: Reduces default timeout for tests that require jitter
>>> computation (Ville)
>>>
>>> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
>> I think this is the wrong approach. What we really want to do is kill
>> tests from kms_flip
>> instead and move them to separate places.
>>
>> Killing off all the interruptible tests would save 50% of the time.
>> So all we have to do is
>> making sure that we have tests that test the missing ioctl's in in
>> kms_atomic_interruptible,
>> and we would save 50% of the time.
> kms_atomic_interruptible would probably be more logical place for
> interrupt tests. I agree that it would reduce the execution time of the
> kms_flip test but in the end of the day we still need to run those
> interruptible tests and therefore we would end up increasing the
> execution time of the kms_atomic_interruptible test.
>
> Do you feel that we could have overall reduction in test execution if
> we move these interruptible tests out from kms_flip? Maybe kms_flip
> readability would improve and therefore worth the effort?
The kms_flip ones just double the execution time of the tests, and don't result in more coverage.

Testing the various ioctl's in a controlled fashion would result in better coverage and lower execution time.
Just look at how kms_atomic_interruptible is structure, it should be easy to add more tests to it and actually
guarantees that the ioctl being tested is interrupted.

I definitely hope that removing those tests increase readability, because of all the unrelated API test special
cases being removed, and only actual flip related tests remaining.

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

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

* Re: [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_flip: Set duration for subtest from command line
  2018-11-08 13:11       ` Maarten Lankhorst
@ 2018-11-08 14:41         ` Kahola, Mika
  0 siblings, 0 replies; 12+ messages in thread
From: Kahola, Mika @ 2018-11-08 14:41 UTC (permalink / raw)
  To: igt-dev, maarten.lankhorst

On Thu, 2018-11-08 at 14:11 +0100, Maarten Lankhorst wrote:
> Op 08-11-18 om 13:45 schreef Kahola, Mika:
> > On Thu, 2018-11-08 at 12:47 +0100, Maarten Lankhorst wrote:
> > > Op 09-08-18 om 12:12 schreef Mika Kahola:
> > > > 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 3 seconds for test that require jitter computation and for
> > > > the
> > > > rest
> > > > of the subtests are run only once.
> > > > 
> > > > v2: Run each subtest only once (default action)
> > > > v3: Reduces default timeout for tests that require jitter
> > > > computation (Ville)
> > > > 
> > > > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> > > 
> > > I think this is the wrong approach. What we really want to do is
> > > kill
> > > tests from kms_flip
> > > instead and move them to separate places.
> > > 
> > > Killing off all the interruptible tests would save 50% of the
> > > time.
> > > So all we have to do is
> > > making sure that we have tests that test the missing ioctl's in
> > > in
> > > kms_atomic_interruptible,
> > > and we would save 50% of the time.
> > 
> > kms_atomic_interruptible would probably be more logical place for
> > interrupt tests. I agree that it would reduce the execution time of
> > the
> > kms_flip test but in the end of the day we still need to run those
> > interruptible tests and therefore we would end up increasing the
> > execution time of the kms_atomic_interruptible test.
> > 
> > Do you feel that we could have overall reduction in test execution
> > if
> > we move these interruptible tests out from kms_flip? Maybe kms_flip
> > readability would improve and therefore worth the effort?
> 
> The kms_flip ones just double the execution time of the tests, and
> don't result in more coverage.
> 
> Testing the various ioctl's in a controlled fashion would result in
> better coverage and lower execution time.
> Just look at how kms_atomic_interruptible is structure, it should be
> easy to add more tests to it and actually
> guarantees that the ioctl being tested is interrupted.
> 
> I definitely hope that removing those tests increase readability,
> because of all the unrelated API test special
> cases being removed, and only actual flip related tests remaining.
Ok. I prepare a patch that removes interruptible tests from kms_flip.
Let's see how kms_flip looks after that change. I also look into adding
the removed tests to kms_atomic_interruptible. 
 
> 
> ~Maarten
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

end of thread, other threads:[~2018-11-08 14:41 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-09 10:12 [igt-dev] [PATCH i-g-t v3 0/2] tests/kms_flip: Binary mode optimizations Mika Kahola
2018-08-09 10:12 ` [igt-dev] [PATCH i-g-t v3 1/2] tests/kms_flip: Set duration for subtest from command line Mika Kahola
2018-08-09 10:20   ` Chris Wilson
2018-08-09 11:29     ` Mika Kahola
2018-11-08 11:47   ` Maarten Lankhorst
2018-11-08 12:45     ` Kahola, Mika
2018-11-08 13:11       ` Maarten Lankhorst
2018-11-08 14:41         ` Kahola, Mika
2018-08-09 10:12 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/kms_flip: Change 2x tests execution order Mika Kahola
2018-11-08 11:16   ` Maarten Lankhorst
2018-08-09 11:09 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Binary mode optimizations (rev4) Patchwork
2018-08-09 12:21 ` [igt-dev] ✓ Fi.CI.IGT: " 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.