All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t] kms_atomic_transition: Split out modeset tests on internal panels
@ 2017-11-02 13:38 Imre Deak
  2017-11-02 15:56 ` ✓ Fi.CI.BAT: success for " Patchwork
                   ` (6 more replies)
  0 siblings, 7 replies; 12+ messages in thread
From: Imre Deak @ 2017-11-02 13:38 UTC (permalink / raw)
  To: intel-gfx

Doing modeset on internal panels may have a considerable overhead due to
the panel specific power sequencing delays. To avoid long test runtimes
in the CI fast-feedback test split out the testing of internal panels
from the plane modeset subtests. Create fast and slow versions of these
new subtests. In the fast one only combinations with all enabled, all
planes disabled or a single plane enable are tested. In the slow one all
plane combinations are tested.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103334
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 tests/kms_atomic_transition.c | 64 ++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 60 insertions(+), 4 deletions(-)

diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 4c295125..c27e48e1 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -189,6 +189,7 @@ enum transition_type {
 	TRANSITION_PLANES,
 	TRANSITION_AFTER_FREE,
 	TRANSITION_MODESET,
+	TRANSITION_MODESET_PLANES_FAST,
 	TRANSITION_MODESET_DISABLE,
 };
 
@@ -528,6 +529,10 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
 	}
 
 	for (i = 0; i < iter_max; i++) {
+		if (type == TRANSITION_MODESET_PLANES_FAST &&
+		    hweight32(i) != 1 && hweight32(i) != pipe_obj->n_planes)
+			continue;
+
 		igt_output_set_pipe(output, pipe);
 
 		wm_setup_plane(display, pipe, i, parms, fencing);
@@ -547,16 +552,20 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
 
 			/* i -> i+1 will be done when i increases, can be skipped here */
 			for (j = iter_max - 1; j > i + 1; j--) {
+				if (type == TRANSITION_MODESET_PLANES_FAST &&
+				    hweight32(j) != 1 && hweight32(j) != pipe_obj->n_planes)
+					continue;
+
 				wm_setup_plane(display, pipe, j, parms, fencing);
 
-				if (type == TRANSITION_MODESET)
+				if (type >= TRANSITION_MODESET)
 					igt_output_override_mode(output, &override_mode);
 
 				atomic_commit(display, pipe, flags, (void *)(unsigned long) j, fencing);
 				wait_for_transition(display, pipe, nonblocking, fencing);
 
 				wm_setup_plane(display, pipe, i, parms, fencing);
-				if (type == TRANSITION_MODESET)
+				if (type >= TRANSITION_MODESET)
 					igt_output_override_mode(output, NULL);
 
 				atomic_commit(display, pipe, flags, (void *)(unsigned long) i, fencing);
@@ -864,6 +873,19 @@ static void run_modeset_transition(igt_display_t *display, int requested_outputs
 	run_modeset_tests(display, requested_outputs, nonblocking, fencing);
 }
 
+static bool output_is_internal_panel(igt_output_t *output)
+{
+	switch (output->config.connector->connector_type) {
+	case DRM_MODE_CONNECTOR_LVDS:
+	case DRM_MODE_CONNECTOR_eDP:
+	case DRM_MODE_CONNECTOR_DSI:
+	case DRM_MODE_CONNECTOR_DPI:
+		return true;
+	default:
+		return false;
+	}
+}
+
 igt_main
 {
 	igt_display_t display;
@@ -914,12 +936,46 @@ igt_main
 			run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, true);
 
 	igt_subtest("plane-all-modeset-transition")
-		for_each_pipe_with_valid_output(&display, pipe, output)
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (output_is_internal_panel(output))
+				continue;
 			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, false);
+		}
 
 	igt_subtest("plane-all-modeset-transition-fencing")
-		for_each_pipe_with_valid_output(&display, pipe, output)
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (output_is_internal_panel(output))
+				continue;
 			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, true);
+		}
+
+	igt_subtest("plane-all-modeset-transition-internal-panels-fast")
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!output_is_internal_panel(output))
+				continue;
+			run_transition_test(&display, pipe, output, TRANSITION_MODESET_PLANES_FAST, false, false);
+		}
+
+	igt_subtest("plane-all-modeset-transition-fencing-internal-panels-fast")
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!output_is_internal_panel(output))
+				continue;
+			run_transition_test(&display, pipe, output, TRANSITION_MODESET_PLANES_FAST, false, true);
+		}
+
+	igt_subtest("plane-all-modeset-transition-internal-panels-slow")
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!output_is_internal_panel(output))
+				continue;
+			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, false);
+		}
+
+	igt_subtest("plane-all-modeset-transition-fencing-internal-panels-slow")
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!output_is_internal_panel(output))
+				continue;
+			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, true);
+		}
 
 	igt_subtest("plane-toggle-modeset-transition")
 		for_each_pipe_with_valid_output(&display, pipe, output)
-- 
2.11.0

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

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

* ✓ Fi.CI.BAT: success for kms_atomic_transition: Split out modeset tests on internal panels
  2017-11-02 13:38 [PATCH i-g-t] kms_atomic_transition: Split out modeset tests on internal panels Imre Deak
@ 2017-11-02 15:56 ` Patchwork
  2017-11-02 17:09 ` ✗ Fi.CI.IGT: warning " Patchwork
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2017-11-02 15:56 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

== Series Details ==

Series: kms_atomic_transition: Split out modeset tests on internal panels
URL   : https://patchwork.freedesktop.org/series/33052/
State : success

== Summary ==

IGT patchset tested on top of latest successful build
6d16875736b9fb1ebf4bf3dc5a941f9e431d58e0 lib/igt_debugfs: Remove support for legacy CRC api.

with latest DRM-Tip kernel build CI_DRM_3309
fca2506bc5d4 drm-tip: 2017y-11m-02d-13h-10m-58s UTC integration manifest

Testlist changes:
+igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels-fast
+igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels-slow
+igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels-fast
+igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels-slow

Test chamelium:
        Subgroup dp-crc-fast:
                fail       -> PASS       (fi-kbl-7500u) fdo#102514
Test kms_cursor_legacy:
        Subgroup basic-flip-before-cursor-varying-size:
                skip       -> PASS       (fi-hsw-4770r)
Test kms_pipe_crc_basic:
        Subgroup nonblocking-crc-pipe-a-frame-sequence:
                dmesg-warn -> PASS       (fi-skl-6700k) fdo#103546 +1

fdo#102514 https://bugs.freedesktop.org/show_bug.cgi?id=102514
fdo#103546 https://bugs.freedesktop.org/show_bug.cgi?id=103546

fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:446s
fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:461s
fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:380s
fi-bsw-n3050     total:289  pass:243  dwarn:0   dfail:0   fail:0   skip:46  time:554s
fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:277s
fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:508s
fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:504s
fi-byt-j1900     total:289  pass:253  dwarn:1   dfail:0   fail:0   skip:35  time:513s
fi-byt-n2820     total:289  pass:249  dwarn:1   dfail:0   fail:0   skip:39  time:491s
fi-cfl-s         total:289  pass:253  dwarn:4   dfail:0   fail:0   skip:32  time:551s
fi-cnl-y         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:635s
fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:431s
fi-gdg-551       total:289  pass:178  dwarn:1   dfail:0   fail:1   skip:109 time:263s
fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:594s
fi-glk-dsi       total:289  pass:258  dwarn:0   dfail:0   fail:1   skip:30  time:497s
fi-hsw-4770      total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:435s
fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:429s
fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:430s
fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:499s
fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:464s
fi-kbl-7500u     total:289  pass:264  dwarn:1   dfail:0   fail:0   skip:24  time:488s
fi-kbl-7560u     total:289  pass:270  dwarn:0   dfail:0   fail:0   skip:19  time:575s
fi-kbl-7567u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:481s
fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:585s
fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:574s
fi-skl-6260u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:453s
fi-skl-6600u     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:601s
fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:649s
fi-skl-6700k     total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:521s
fi-skl-6770hq    total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:499s
fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:464s
fi-snb-2520m     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:577s
fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:434s

== Logs ==

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

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

* ✗ Fi.CI.IGT: warning for kms_atomic_transition: Split out modeset tests on internal panels
  2017-11-02 13:38 [PATCH i-g-t] kms_atomic_transition: Split out modeset tests on internal panels Imre Deak
  2017-11-02 15:56 ` ✓ Fi.CI.BAT: success for " Patchwork
@ 2017-11-02 17:09 ` Patchwork
  2017-11-02 17:12 ` [PATCH i-g-t] " Chris Wilson
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2017-11-02 17:09 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

== Series Details ==

Series: kms_atomic_transition: Split out modeset tests on internal panels
URL   : https://patchwork.freedesktop.org/series/33052/
State : warning

== Summary ==

Test kms_setmode:
        Subgroup basic:
                pass       -> FAIL       (shard-hsw) fdo#99912
Test kms_atomic_transition:
        Subgroup 1x-modeset-transitions-nonblocking:
                pass       -> DMESG-WARN (shard-hsw)
Test drv_module_reload:
        Subgroup basic-reload:
                dmesg-warn -> PASS       (shard-hsw) fdo#102707
Test kms_busy:
        Subgroup extended-modeset-hang-oldfb-with-reset-render-A:
                dmesg-warn -> PASS       (shard-hsw)

fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
fdo#102707 https://bugs.freedesktop.org/show_bug.cgi?id=102707

shard-hsw        total:2543 pass:1436 dwarn:1   dfail:0   fail:9   skip:1097 time:9266s

== Logs ==

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

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

* Re: [PATCH i-g-t] kms_atomic_transition: Split out modeset tests on internal panels
  2017-11-02 13:38 [PATCH i-g-t] kms_atomic_transition: Split out modeset tests on internal panels Imre Deak
  2017-11-02 15:56 ` ✓ Fi.CI.BAT: success for " Patchwork
  2017-11-02 17:09 ` ✗ Fi.CI.IGT: warning " Patchwork
@ 2017-11-02 17:12 ` Chris Wilson
  2017-11-03  9:21   ` Imre Deak
  2017-11-03 13:27 ` [PATCH i-g-t v2] " Imre Deak
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 12+ messages in thread
From: Chris Wilson @ 2017-11-02 17:12 UTC (permalink / raw)
  To: Imre Deak, intel-gfx

Quoting Imre Deak (2017-11-02 13:38:09)
> Doing modeset on internal panels may have a considerable overhead due to
> the panel specific power sequencing delays. To avoid long test runtimes
> in the CI fast-feedback test split out the testing of internal panels
> from the plane modeset subtests. Create fast and slow versions of these
> new subtests. In the fast one only combinations with all enabled, all
> planes disabled or a single plane enable are tested. In the slow one all
> plane combinations are tested.

> @@ -528,6 +529,10 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
>         }
>  
>         for (i = 0; i < iter_max; i++) {
> +               if (type == TRANSITION_MODESET_PLANES_FAST &&
> +                   hweight32(i) != 1 && hweight32(i) != pipe_obj->n_planes)

So reduce number of iterations to a power of two, and only operate if
pipe_obj->n_planes == 1

Why repeat hweight32(i) when you've already proved it is 1? That reads
very fishily.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH i-g-t] kms_atomic_transition: Split out modeset tests on internal panels
  2017-11-02 17:12 ` [PATCH i-g-t] " Chris Wilson
@ 2017-11-03  9:21   ` Imre Deak
  0 siblings, 0 replies; 12+ messages in thread
From: Imre Deak @ 2017-11-03  9:21 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

On Thu, Nov 02, 2017 at 05:12:56PM +0000, Chris Wilson wrote:
> Quoting Imre Deak (2017-11-02 13:38:09)
> > Doing modeset on internal panels may have a considerable overhead due to
> > the panel specific power sequencing delays. To avoid long test runtimes
> > in the CI fast-feedback test split out the testing of internal panels
> > from the plane modeset subtests. Create fast and slow versions of these
> > new subtests. In the fast one only combinations with all enabled, all
> > planes disabled or a single plane enable are tested. In the slow one all
> > plane combinations are tested.
> 
> > @@ -528,6 +529,10 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
> >         }
> >  
> >         for (i = 0; i < iter_max; i++) {
> > +               if (type == TRANSITION_MODESET_PLANES_FAST &&
> > +                   hweight32(i) != 1 && hweight32(i) != pipe_obj->n_planes)
> 
> So reduce number of iterations to a power of two, and only operate if
> pipe_obj->n_planes == 1
> 
> Why repeat hweight32(i) when you've already proved it is 1? That reads
> very fishily.

I wanted to test only combinations where either only one plane is
enabled or all planes are enabled. How about adding

int n_enabled_planes = hweight32(i);

and checking that instead to make things clearer?

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

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

* [PATCH i-g-t v2] kms_atomic_transition: Split out modeset tests on internal panels
  2017-11-02 13:38 [PATCH i-g-t] kms_atomic_transition: Split out modeset tests on internal panels Imre Deak
                   ` (2 preceding siblings ...)
  2017-11-02 17:12 ` [PATCH i-g-t] " Chris Wilson
@ 2017-11-03 13:27 ` Imre Deak
  2017-11-08 19:33   ` [PATCH i-g-t v3] " Imre Deak
  2017-11-03 15:34 ` ✓ Fi.CI.BAT: success for kms_atomic_transition: Split out modeset tests on internal panels (rev2) Patchwork
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 12+ messages in thread
From: Imre Deak @ 2017-11-03 13:27 UTC (permalink / raw)
  To: intel-gfx

Doing modeset on internal panels may have a considerable overhead due to
the panel specific power sequencing delays. To avoid long test runtimes
in CI split out the testing of internal panels from the plane modeset
subtests and test only a reduced number of plane combinations on these:
where only a single plane is enabled or all planes are enabled.

v2:
- Add code comment explaining the need for the separate internal-panels
  subtests.
- Calculate the number of enabled planes only once. (Chris)
- Disable the slow internal-panels subtests testing all combinations.
  (Petri)

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103334
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 tests/kms_atomic_transition.c | 61 ++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 57 insertions(+), 4 deletions(-)

diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 4c295125..c57a9356 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -189,6 +189,7 @@ enum transition_type {
 	TRANSITION_PLANES,
 	TRANSITION_AFTER_FREE,
 	TRANSITION_MODESET,
+	TRANSITION_MODESET_FAST,
 	TRANSITION_MODESET_DISABLE,
 };
 
@@ -528,6 +529,13 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
 	}
 
 	for (i = 0; i < iter_max; i++) {
+		int n_enable_planes = hweight32(i);
+
+		if (type == TRANSITION_MODESET_FAST &&
+		    n_enable_planes != 1 &&
+		    n_enable_planes != pipe_obj->n_planes)
+			continue;
+
 		igt_output_set_pipe(output, pipe);
 
 		wm_setup_plane(display, pipe, i, parms, fencing);
@@ -547,16 +555,23 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
 
 			/* i -> i+1 will be done when i increases, can be skipped here */
 			for (j = iter_max - 1; j > i + 1; j--) {
+				n_enable_planes = hweight32(j);
+
+				if (type == TRANSITION_MODESET_FAST &&
+				    n_enable_planes != 1 &&
+				    n_enable_planes != pipe_obj->n_planes)
+					continue;
+
 				wm_setup_plane(display, pipe, j, parms, fencing);
 
-				if (type == TRANSITION_MODESET)
+				if (type >= TRANSITION_MODESET)
 					igt_output_override_mode(output, &override_mode);
 
 				atomic_commit(display, pipe, flags, (void *)(unsigned long) j, fencing);
 				wait_for_transition(display, pipe, nonblocking, fencing);
 
 				wm_setup_plane(display, pipe, i, parms, fencing);
-				if (type == TRANSITION_MODESET)
+				if (type >= TRANSITION_MODESET)
 					igt_output_override_mode(output, NULL);
 
 				atomic_commit(display, pipe, flags, (void *)(unsigned long) i, fencing);
@@ -864,6 +879,19 @@ static void run_modeset_transition(igt_display_t *display, int requested_outputs
 	run_modeset_tests(display, requested_outputs, nonblocking, fencing);
 }
 
+static bool output_is_internal_panel(igt_output_t *output)
+{
+	switch (output->config.connector->connector_type) {
+	case DRM_MODE_CONNECTOR_LVDS:
+	case DRM_MODE_CONNECTOR_eDP:
+	case DRM_MODE_CONNECTOR_DSI:
+	case DRM_MODE_CONNECTOR_DPI:
+		return true;
+	default:
+		return false;
+	}
+}
+
 igt_main
 {
 	igt_display_t display;
@@ -913,13 +941,38 @@ igt_main
 		for_each_pipe_with_valid_output(&display, pipe, output)
 			run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, true);
 
+	/*
+	 * Test modeset cases on internal panels separately with a reduced
+	 * number of combinations, to avoid long runtimes due to modesets on
+	 * panels with long power cycle delays.
+	 */
 	igt_subtest("plane-all-modeset-transition")
-		for_each_pipe_with_valid_output(&display, pipe, output)
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (output_is_internal_panel(output))
+				continue;
 			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, false);
+		}
 
 	igt_subtest("plane-all-modeset-transition-fencing")
-		for_each_pipe_with_valid_output(&display, pipe, output)
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (output_is_internal_panel(output))
+				continue;
 			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, true);
+		}
+
+	igt_subtest("plane-all-modeset-transition-internal-panels")
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!output_is_internal_panel(output))
+				continue;
+			run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, false);
+		}
+
+	igt_subtest("plane-all-modeset-transition-fencing-internal-panels")
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!output_is_internal_panel(output))
+				continue;
+			run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, true);
+		}
 
 	igt_subtest("plane-toggle-modeset-transition")
 		for_each_pipe_with_valid_output(&display, pipe, output)
-- 
2.13.2

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

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

* ✓ Fi.CI.BAT: success for kms_atomic_transition: Split out modeset tests on internal panels (rev2)
  2017-11-02 13:38 [PATCH i-g-t] kms_atomic_transition: Split out modeset tests on internal panels Imre Deak
                   ` (3 preceding siblings ...)
  2017-11-03 13:27 ` [PATCH i-g-t v2] " Imre Deak
@ 2017-11-03 15:34 ` Patchwork
  2017-11-03 18:12 ` ✗ Fi.CI.IGT: failure " Patchwork
  2017-11-08 20:53 ` ✗ Fi.CI.BAT: failure for kms_atomic_transition: Split out modeset tests on internal panels (rev3) Patchwork
  6 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2017-11-03 15:34 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

== Series Details ==

Series: kms_atomic_transition: Split out modeset tests on internal panels (rev2)
URL   : https://patchwork.freedesktop.org/series/33052/
State : success

== Summary ==

IGT patchset tested on top of latest successful build
c8d1ea24d3bfaf11b223bbe22407aeca196d0d89 tests/debugfs_test: Pretty print subdirectories

with latest DRM-Tip kernel build CI_DRM_3312
de359919ae46 drm-tip: 2017y-11m-03d-14h-00m-37s UTC integration manifest

Testlist changes:
+igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels
+igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels

Test gem_exec_flush:
        Subgroup basic-wb-set-default:
                incomplete -> PASS       (fi-glk-dsi)
Test gem_exec_reloc:
        Subgroup basic-write-gtt-active:
                fail       -> PASS       (fi-gdg-551) fdo#102582
Test kms_busy:
        Subgroup basic-flip-b:
                fail       -> PASS       (fi-bwr-2160)
Test drv_module_reload:
        Subgroup basic-no-display:
                fail       -> PASS       (fi-hsw-4770r) fdo#103534

fdo#102582 https://bugs.freedesktop.org/show_bug.cgi?id=102582
fdo#103534 https://bugs.freedesktop.org/show_bug.cgi?id=103534

fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:446s
fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:467s
fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:383s
fi-bsw-n3050     total:289  pass:243  dwarn:0   dfail:0   fail:0   skip:46  time:552s
fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:278s
fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:502s
fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:504s
fi-byt-j1900     total:289  pass:253  dwarn:1   dfail:0   fail:0   skip:35  time:507s
fi-byt-n2820     total:289  pass:249  dwarn:1   dfail:0   fail:0   skip:39  time:496s
fi-cfl-s         total:289  pass:254  dwarn:3   dfail:0   fail:0   skip:32  time:555s
fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:427s
fi-gdg-551       total:289  pass:178  dwarn:1   dfail:0   fail:1   skip:109 time:266s
fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:592s
fi-glk-dsi       total:289  pass:258  dwarn:0   dfail:0   fail:1   skip:30  time:497s
fi-hsw-4770      total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:432s
fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:434s
fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:425s
fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:500s
fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:462s
fi-kbl-7500u     total:289  pass:264  dwarn:1   dfail:0   fail:0   skip:24  time:496s
fi-kbl-7560u     total:289  pass:270  dwarn:0   dfail:0   fail:0   skip:19  time:578s
fi-kbl-7567u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:476s
fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:576s
fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:577s
fi-skl-6260u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:457s
fi-skl-6600u     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:595s
fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:652s
fi-skl-6700k     total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:526s
fi-skl-6770hq    total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:510s
fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:461s
fi-snb-2520m     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:575s
fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:434s

== Logs ==

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

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

* ✗ Fi.CI.IGT: failure for kms_atomic_transition: Split out modeset tests on internal panels (rev2)
  2017-11-02 13:38 [PATCH i-g-t] kms_atomic_transition: Split out modeset tests on internal panels Imre Deak
                   ` (4 preceding siblings ...)
  2017-11-03 15:34 ` ✓ Fi.CI.BAT: success for kms_atomic_transition: Split out modeset tests on internal panels (rev2) Patchwork
@ 2017-11-03 18:12 ` Patchwork
  2017-11-08 20:53 ` ✗ Fi.CI.BAT: failure for kms_atomic_transition: Split out modeset tests on internal panels (rev3) Patchwork
  6 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2017-11-03 18:12 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

== Series Details ==

Series: kms_atomic_transition: Split out modeset tests on internal panels (rev2)
URL   : https://patchwork.freedesktop.org/series/33052/
State : failure

== Summary ==

Test kms_busy:
        Subgroup extended-modeset-hang-newfb-with-reset-render-B:
                pass       -> DMESG-WARN (shard-hsw)
        Subgroup extended-modeset-hang-oldfb-with-reset-render-C:
                pass       -> DMESG-WARN (shard-hsw)
Test kms_setmode:
        Subgroup basic:
                fail       -> PASS       (shard-hsw) fdo#99912
Test drv_suspend:
        Subgroup fence-restore-untiled-hibernate:
                dmesg-fail -> FAIL       (shard-hsw) fdo#103375
        Subgroup debugfs-reader:
                pass       -> INCOMPLETE (shard-hsw)

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

shard-hsw        total:2492 pass:1408 dwarn:2   dfail:0   fail:8   skip:1073 time:9100s

== Logs ==

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

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

* [PATCH i-g-t v3] kms_atomic_transition: Split out modeset tests on internal panels
  2017-11-03 13:27 ` [PATCH i-g-t v2] " Imre Deak
@ 2017-11-08 19:33   ` Imre Deak
  2017-11-09  8:03     ` Maarten Lankhorst
  0 siblings, 1 reply; 12+ messages in thread
From: Imre Deak @ 2017-11-08 19:33 UTC (permalink / raw)
  To: intel-gfx

Doing modeset on internal panels may have a considerable overhead due to
the panel specific power sequencing delays. To avoid long test runtimes
in CI split out the testing of internal panels from the plane modeset
subtests and test only a reduced number of plane combinations on these:
where only a single plane is enabled, all planes are disabled or all
planes are enabled.

v2:
- Add code comment explaining the need for the separate internal-panels
  subtests.
- Calculate the number of enabled planes only once. (Chris)
- Disable the slow internal-panels subtests testing all combinations.
  (Petri)

v3: (Maarten)
- Skip the internal-panels subtests if no internal panels are found.
- Also test transitions with all planes disabled.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103334
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 tests/kms_atomic_transition.c | 71 ++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 67 insertions(+), 4 deletions(-)

diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 4c295125..54581ed7 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -189,6 +189,7 @@ enum transition_type {
 	TRANSITION_PLANES,
 	TRANSITION_AFTER_FREE,
 	TRANSITION_MODESET,
+	TRANSITION_MODESET_FAST,
 	TRANSITION_MODESET_DISABLE,
 };
 
@@ -528,6 +529,13 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
 	}
 
 	for (i = 0; i < iter_max; i++) {
+		int n_enable_planes = hweight32(i);
+
+		if (type == TRANSITION_MODESET_FAST &&
+		    n_enable_planes > 1 &&
+		    n_enable_planes < pipe_obj->n_planes)
+			continue;
+
 		igt_output_set_pipe(output, pipe);
 
 		wm_setup_plane(display, pipe, i, parms, fencing);
@@ -547,16 +555,23 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
 
 			/* i -> i+1 will be done when i increases, can be skipped here */
 			for (j = iter_max - 1; j > i + 1; j--) {
+				n_enable_planes = hweight32(j);
+
+				if (type == TRANSITION_MODESET_FAST &&
+				    n_enable_planes > 1 &&
+				    n_enable_planes < pipe_obj->n_planes)
+					continue;
+
 				wm_setup_plane(display, pipe, j, parms, fencing);
 
-				if (type == TRANSITION_MODESET)
+				if (type >= TRANSITION_MODESET)
 					igt_output_override_mode(output, &override_mode);
 
 				atomic_commit(display, pipe, flags, (void *)(unsigned long) j, fencing);
 				wait_for_transition(display, pipe, nonblocking, fencing);
 
 				wm_setup_plane(display, pipe, i, parms, fencing);
-				if (type == TRANSITION_MODESET)
+				if (type >= TRANSITION_MODESET)
 					igt_output_override_mode(output, NULL);
 
 				atomic_commit(display, pipe, flags, (void *)(unsigned long) i, fencing);
@@ -864,6 +879,19 @@ static void run_modeset_transition(igt_display_t *display, int requested_outputs
 	run_modeset_tests(display, requested_outputs, nonblocking, fencing);
 }
 
+static bool output_is_internal_panel(igt_output_t *output)
+{
+	switch (output->config.connector->connector_type) {
+	case DRM_MODE_CONNECTOR_LVDS:
+	case DRM_MODE_CONNECTOR_eDP:
+	case DRM_MODE_CONNECTOR_DSI:
+	case DRM_MODE_CONNECTOR_DPI:
+		return true;
+	default:
+		return false;
+	}
+}
+
 igt_main
 {
 	igt_display_t display;
@@ -913,13 +941,48 @@ igt_main
 		for_each_pipe_with_valid_output(&display, pipe, output)
 			run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, true);
 
+	/*
+	 * Test modeset cases on internal panels separately with a reduced
+	 * number of combinations, to avoid long runtimes due to modesets on
+	 * panels with long power cycle delays.
+	 */
 	igt_subtest("plane-all-modeset-transition")
-		for_each_pipe_with_valid_output(&display, pipe, output)
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (output_is_internal_panel(output))
+				continue;
 			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, false);
+		}
 
 	igt_subtest("plane-all-modeset-transition-fencing")
-		for_each_pipe_with_valid_output(&display, pipe, output)
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (output_is_internal_panel(output))
+				continue;
 			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, true);
+		}
+
+	igt_subtest("plane-all-modeset-transition-internal-panels") {
+		int tested = 0;
+
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!output_is_internal_panel(output))
+				continue;
+			run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, false);
+			tested++;
+		}
+		igt_skip_on_f(!tested, "No output with internal panel found\n");
+	}
+
+	igt_subtest("plane-all-modeset-transition-fencing-internal-panels") {
+		int tested = 0;
+
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!output_is_internal_panel(output))
+				continue;
+			run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, true);
+			tested++;
+		}
+		igt_skip_on_f(!tested, "No output with internal panel found\n");
+	}
 
 	igt_subtest("plane-toggle-modeset-transition")
 		for_each_pipe_with_valid_output(&display, pipe, output)
-- 
2.13.2

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

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

* ✗ Fi.CI.BAT: failure for kms_atomic_transition: Split out modeset tests on internal panels (rev3)
  2017-11-02 13:38 [PATCH i-g-t] kms_atomic_transition: Split out modeset tests on internal panels Imre Deak
                   ` (5 preceding siblings ...)
  2017-11-03 18:12 ` ✗ Fi.CI.IGT: failure " Patchwork
@ 2017-11-08 20:53 ` Patchwork
  6 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2017-11-08 20:53 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

== Series Details ==

Series: kms_atomic_transition: Split out modeset tests on internal panels (rev3)
URL   : https://patchwork.freedesktop.org/series/33052/
State : failure

== Summary ==

IGT patchset tested on top of latest successful build
9fe5a9a3de9e2ce345d5967a1e10a9a586b19836 tests/kms_fbcon_fbt: Report fbc_status on error

with latest DRM-Tip kernel build CI_DRM_3322
d284738777d7 drm-tip: 2017y-11m-08d-17h-36m-01s UTC integration manifest

Testlist changes:
+igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels
+igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels

Test chamelium:
        Subgroup dp-crc-fast:
                fail       -> PASS       (fi-kbl-7500u) fdo#102514
Test gem_mmap_gtt:
        Subgroup basic-wc:
                pass       -> DMESG-WARN (fi-bsw-n3050)
Test kms_cursor_legacy:
        Subgroup basic-busy-flip-before-cursor-legacy:
                fail       -> PASS       (fi-gdg-551) fdo#102618
Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-b:
                pass       -> INCOMPLETE (fi-snb-2520m)

fdo#102514 https://bugs.freedesktop.org/show_bug.cgi?id=102514
fdo#102618 https://bugs.freedesktop.org/show_bug.cgi?id=102618

fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:451s
fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:462s
fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:384s
fi-bsw-n3050     total:289  pass:242  dwarn:1   dfail:0   fail:0   skip:46  time:545s
fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:275s
fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:508s
fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:518s
fi-byt-j1900     total:289  pass:254  dwarn:0   dfail:0   fail:0   skip:35  time:506s
fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:429s
fi-gdg-551       total:289  pass:178  dwarn:1   dfail:0   fail:1   skip:109 time:265s
fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:543s
fi-hsw-4770      total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:430s
fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:442s
fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:432s
fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:483s
fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:462s
fi-kbl-7500u     total:289  pass:264  dwarn:1   dfail:0   fail:0   skip:24  time:484s
fi-kbl-7560u     total:289  pass:270  dwarn:0   dfail:0   fail:0   skip:19  time:523s
fi-kbl-7567u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:481s
fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:536s
fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:570s
fi-skl-6260u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:462s
fi-skl-6600u     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:546s
fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:566s
fi-skl-6700k     total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:524s
fi-skl-6770hq    total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:497s
fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:452s
fi-snb-2520m     total:246  pass:212  dwarn:0   dfail:0   fail:0   skip:33 
fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:422s
Blacklisted hosts:
fi-cfl-s         total:289  pass:254  dwarn:3   dfail:0   fail:0   skip:32  time:531s
fi-cnl-y         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:554s

== Logs ==

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

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

* Re: [PATCH i-g-t v3] kms_atomic_transition: Split out modeset tests on internal panels
  2017-11-08 19:33   ` [PATCH i-g-t v3] " Imre Deak
@ 2017-11-09  8:03     ` Maarten Lankhorst
  2017-11-09 12:39       ` Imre Deak
  0 siblings, 1 reply; 12+ messages in thread
From: Maarten Lankhorst @ 2017-11-09  8:03 UTC (permalink / raw)
  To: Imre Deak, intel-gfx

Op 08-11-17 om 20:33 schreef Imre Deak:
> Doing modeset on internal panels may have a considerable overhead due to
> the panel specific power sequencing delays. To avoid long test runtimes
> in CI split out the testing of internal panels from the plane modeset
> subtests and test only a reduced number of plane combinations on these:
> where only a single plane is enabled, all planes are disabled or all
> planes are enabled.
>
> v2:
> - Add code comment explaining the need for the separate internal-panels
>   subtests.
> - Calculate the number of enabled planes only once. (Chris)
> - Disable the slow internal-panels subtests testing all combinations.
>   (Petri)
>
> v3: (Maarten)
> - Skip the internal-panels subtests if no internal panels are found.
> - Also test transitions with all planes disabled.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103334
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Petri Latvala <petri.latvala@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Imre Deak <imre.deak@intel.com>
> ---

Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

>  tests/kms_atomic_transition.c | 71 ++++++++++++++++++++++++++++++++++++++++---
>  1 file changed, 67 insertions(+), 4 deletions(-)
>
> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> index 4c295125..54581ed7 100644
> --- a/tests/kms_atomic_transition.c
> +++ b/tests/kms_atomic_transition.c
> @@ -189,6 +189,7 @@ enum transition_type {
>  	TRANSITION_PLANES,
>  	TRANSITION_AFTER_FREE,
>  	TRANSITION_MODESET,
> +	TRANSITION_MODESET_FAST,
>  	TRANSITION_MODESET_DISABLE,
>  };
>  
> @@ -528,6 +529,13 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
>  	}
>  
>  	for (i = 0; i < iter_max; i++) {
> +		int n_enable_planes = hweight32(i);
> +
> +		if (type == TRANSITION_MODESET_FAST &&
> +		    n_enable_planes > 1 &&
> +		    n_enable_planes < pipe_obj->n_planes)
> +			continue;
> +
>  		igt_output_set_pipe(output, pipe);
>  
>  		wm_setup_plane(display, pipe, i, parms, fencing);
> @@ -547,16 +555,23 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
>  
>  			/* i -> i+1 will be done when i increases, can be skipped here */
>  			for (j = iter_max - 1; j > i + 1; j--) {
> +				n_enable_planes = hweight32(j);
> +
> +				if (type == TRANSITION_MODESET_FAST &&
> +				    n_enable_planes > 1 &&
> +				    n_enable_planes < pipe_obj->n_planes)
> +					continue;
> +
>  				wm_setup_plane(display, pipe, j, parms, fencing);
>  
> -				if (type == TRANSITION_MODESET)
> +				if (type >= TRANSITION_MODESET)
>  					igt_output_override_mode(output, &override_mode);
>  
>  				atomic_commit(display, pipe, flags, (void *)(unsigned long) j, fencing);
>  				wait_for_transition(display, pipe, nonblocking, fencing);
>  
>  				wm_setup_plane(display, pipe, i, parms, fencing);
> -				if (type == TRANSITION_MODESET)
> +				if (type >= TRANSITION_MODESET)
>  					igt_output_override_mode(output, NULL);
>  
>  				atomic_commit(display, pipe, flags, (void *)(unsigned long) i, fencing);
> @@ -864,6 +879,19 @@ static void run_modeset_transition(igt_display_t *display, int requested_outputs
>  	run_modeset_tests(display, requested_outputs, nonblocking, fencing);
>  }
>  
> +static bool output_is_internal_panel(igt_output_t *output)
> +{
> +	switch (output->config.connector->connector_type) {
> +	case DRM_MODE_CONNECTOR_LVDS:
> +	case DRM_MODE_CONNECTOR_eDP:
> +	case DRM_MODE_CONNECTOR_DSI:
> +	case DRM_MODE_CONNECTOR_DPI:
> +		return true;
> +	default:
> +		return false;
> +	}
> +}
> +
>  igt_main
>  {
>  	igt_display_t display;
> @@ -913,13 +941,48 @@ igt_main
>  		for_each_pipe_with_valid_output(&display, pipe, output)
>  			run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, true);
>  
> +	/*
> +	 * Test modeset cases on internal panels separately with a reduced
> +	 * number of combinations, to avoid long runtimes due to modesets on
> +	 * panels with long power cycle delays.
> +	 */
>  	igt_subtest("plane-all-modeset-transition")
> -		for_each_pipe_with_valid_output(&display, pipe, output)
> +		for_each_pipe_with_valid_output(&display, pipe, output) {
> +			if (output_is_internal_panel(output))
> +				continue;
>  			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, false);
> +		}
>  
>  	igt_subtest("plane-all-modeset-transition-fencing")
> -		for_each_pipe_with_valid_output(&display, pipe, output)
> +		for_each_pipe_with_valid_output(&display, pipe, output) {
> +			if (output_is_internal_panel(output))
> +				continue;
>  			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, true);
> +		}
> +
> +	igt_subtest("plane-all-modeset-transition-internal-panels") {
> +		int tested = 0;
> +
> +		for_each_pipe_with_valid_output(&display, pipe, output) {
> +			if (!output_is_internal_panel(output))
> +				continue;
> +			run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, false);
> +			tested++;
> +		}
> +		igt_skip_on_f(!tested, "No output with internal panel found\n");
> +	}
> +
> +	igt_subtest("plane-all-modeset-transition-fencing-internal-panels") {
> +		int tested = 0;
> +
> +		for_each_pipe_with_valid_output(&display, pipe, output) {
> +			if (!output_is_internal_panel(output))
> +				continue;
> +			run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, true);
> +			tested++;
> +		}
> +		igt_skip_on_f(!tested, "No output with internal panel found\n");
> +	}
>  
>  	igt_subtest("plane-toggle-modeset-transition")
>  		for_each_pipe_with_valid_output(&display, pipe, output)


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

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

* Re: [PATCH i-g-t v3] kms_atomic_transition: Split out modeset tests on internal panels
  2017-11-09  8:03     ` Maarten Lankhorst
@ 2017-11-09 12:39       ` Imre Deak
  0 siblings, 0 replies; 12+ messages in thread
From: Imre Deak @ 2017-11-09 12:39 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

On Thu, Nov 09, 2017 at 09:03:37AM +0100, Maarten Lankhorst wrote:
> Op 08-11-17 om 20:33 schreef Imre Deak:
> > Doing modeset on internal panels may have a considerable overhead due to
> > the panel specific power sequencing delays. To avoid long test runtimes
> > in CI split out the testing of internal panels from the plane modeset
> > subtests and test only a reduced number of plane combinations on these:
> > where only a single plane is enabled, all planes are disabled or all
> > planes are enabled.
> >
> > v2:
> > - Add code comment explaining the need for the separate internal-panels
> >   subtests.
> > - Calculate the number of enabled planes only once. (Chris)
> > - Disable the slow internal-panels subtests testing all combinations.
> >   (Petri)
> >
> > v3: (Maarten)
> > - Skip the internal-panels subtests if no internal panels are found.
> > - Also test transitions with all planes disabled.
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103334
> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Cc: Petri Latvala <petri.latvala@intel.com>
> > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > Signed-off-by: Imre Deak <imre.deak@intel.com>
> > ---
> 
> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

Thanks for the reviews, I pushed the patch.

> 
> >  tests/kms_atomic_transition.c | 71 ++++++++++++++++++++++++++++++++++++++++---
> >  1 file changed, 67 insertions(+), 4 deletions(-)
> >
> > diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
> > index 4c295125..54581ed7 100644
> > --- a/tests/kms_atomic_transition.c
> > +++ b/tests/kms_atomic_transition.c
> > @@ -189,6 +189,7 @@ enum transition_type {
> >  	TRANSITION_PLANES,
> >  	TRANSITION_AFTER_FREE,
> >  	TRANSITION_MODESET,
> > +	TRANSITION_MODESET_FAST,
> >  	TRANSITION_MODESET_DISABLE,
> >  };
> >  
> > @@ -528,6 +529,13 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
> >  	}
> >  
> >  	for (i = 0; i < iter_max; i++) {
> > +		int n_enable_planes = hweight32(i);
> > +
> > +		if (type == TRANSITION_MODESET_FAST &&
> > +		    n_enable_planes > 1 &&
> > +		    n_enable_planes < pipe_obj->n_planes)
> > +			continue;
> > +
> >  		igt_output_set_pipe(output, pipe);
> >  
> >  		wm_setup_plane(display, pipe, i, parms, fencing);
> > @@ -547,16 +555,23 @@ run_transition_test(igt_display_t *display, enum pipe pipe, igt_output_t *output
> >  
> >  			/* i -> i+1 will be done when i increases, can be skipped here */
> >  			for (j = iter_max - 1; j > i + 1; j--) {
> > +				n_enable_planes = hweight32(j);
> > +
> > +				if (type == TRANSITION_MODESET_FAST &&
> > +				    n_enable_planes > 1 &&
> > +				    n_enable_planes < pipe_obj->n_planes)
> > +					continue;
> > +
> >  				wm_setup_plane(display, pipe, j, parms, fencing);
> >  
> > -				if (type == TRANSITION_MODESET)
> > +				if (type >= TRANSITION_MODESET)
> >  					igt_output_override_mode(output, &override_mode);
> >  
> >  				atomic_commit(display, pipe, flags, (void *)(unsigned long) j, fencing);
> >  				wait_for_transition(display, pipe, nonblocking, fencing);
> >  
> >  				wm_setup_plane(display, pipe, i, parms, fencing);
> > -				if (type == TRANSITION_MODESET)
> > +				if (type >= TRANSITION_MODESET)
> >  					igt_output_override_mode(output, NULL);
> >  
> >  				atomic_commit(display, pipe, flags, (void *)(unsigned long) i, fencing);
> > @@ -864,6 +879,19 @@ static void run_modeset_transition(igt_display_t *display, int requested_outputs
> >  	run_modeset_tests(display, requested_outputs, nonblocking, fencing);
> >  }
> >  
> > +static bool output_is_internal_panel(igt_output_t *output)
> > +{
> > +	switch (output->config.connector->connector_type) {
> > +	case DRM_MODE_CONNECTOR_LVDS:
> > +	case DRM_MODE_CONNECTOR_eDP:
> > +	case DRM_MODE_CONNECTOR_DSI:
> > +	case DRM_MODE_CONNECTOR_DPI:
> > +		return true;
> > +	default:
> > +		return false;
> > +	}
> > +}
> > +
> >  igt_main
> >  {
> >  	igt_display_t display;
> > @@ -913,13 +941,48 @@ igt_main
> >  		for_each_pipe_with_valid_output(&display, pipe, output)
> >  			run_transition_test(&display, pipe, output, TRANSITION_AFTER_FREE, true, true);
> >  
> > +	/*
> > +	 * Test modeset cases on internal panels separately with a reduced
> > +	 * number of combinations, to avoid long runtimes due to modesets on
> > +	 * panels with long power cycle delays.
> > +	 */
> >  	igt_subtest("plane-all-modeset-transition")
> > -		for_each_pipe_with_valid_output(&display, pipe, output)
> > +		for_each_pipe_with_valid_output(&display, pipe, output) {
> > +			if (output_is_internal_panel(output))
> > +				continue;
> >  			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, false);
> > +		}
> >  
> >  	igt_subtest("plane-all-modeset-transition-fencing")
> > -		for_each_pipe_with_valid_output(&display, pipe, output)
> > +		for_each_pipe_with_valid_output(&display, pipe, output) {
> > +			if (output_is_internal_panel(output))
> > +				continue;
> >  			run_transition_test(&display, pipe, output, TRANSITION_MODESET, false, true);
> > +		}
> > +
> > +	igt_subtest("plane-all-modeset-transition-internal-panels") {
> > +		int tested = 0;
> > +
> > +		for_each_pipe_with_valid_output(&display, pipe, output) {
> > +			if (!output_is_internal_panel(output))
> > +				continue;
> > +			run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, false);
> > +			tested++;
> > +		}
> > +		igt_skip_on_f(!tested, "No output with internal panel found\n");
> > +	}
> > +
> > +	igt_subtest("plane-all-modeset-transition-fencing-internal-panels") {
> > +		int tested = 0;
> > +
> > +		for_each_pipe_with_valid_output(&display, pipe, output) {
> > +			if (!output_is_internal_panel(output))
> > +				continue;
> > +			run_transition_test(&display, pipe, output, TRANSITION_MODESET_FAST, false, true);
> > +			tested++;
> > +		}
> > +		igt_skip_on_f(!tested, "No output with internal panel found\n");
> > +	}
> >  
> >  	igt_subtest("plane-toggle-modeset-transition")
> >  		for_each_pipe_with_valid_output(&display, pipe, output)
> 
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

end of thread, other threads:[~2017-11-09 12:39 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-02 13:38 [PATCH i-g-t] kms_atomic_transition: Split out modeset tests on internal panels Imre Deak
2017-11-02 15:56 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-11-02 17:09 ` ✗ Fi.CI.IGT: warning " Patchwork
2017-11-02 17:12 ` [PATCH i-g-t] " Chris Wilson
2017-11-03  9:21   ` Imre Deak
2017-11-03 13:27 ` [PATCH i-g-t v2] " Imre Deak
2017-11-08 19:33   ` [PATCH i-g-t v3] " Imre Deak
2017-11-09  8:03     ` Maarten Lankhorst
2017-11-09 12:39       ` Imre Deak
2017-11-03 15:34 ` ✓ Fi.CI.BAT: success for kms_atomic_transition: Split out modeset tests on internal panels (rev2) Patchwork
2017-11-03 18:12 ` ✗ Fi.CI.IGT: failure " Patchwork
2017-11-08 20:53 ` ✗ Fi.CI.BAT: failure for kms_atomic_transition: Split out modeset tests on internal panels (rev3) 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.