All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test
@ 2019-09-05 14:35 Simon Ser
  2019-09-05 14:51 ` Ville Syrjälä
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Simon Ser @ 2019-09-05 14:35 UTC (permalink / raw)
  To: igt-dev

This test performs a single atomic commit on multiple CRTCs at once. The goal
is to check that a page-flip event for each CRTC is received.

I chose not to integrate this to an existing test, because kms_atomic is
basically a single function with lots of options. Integrating this test to
kms_atomic would mix up these two and make it difficult to understand the test.

Signed-off-by: Simon Ser <simon.ser@intel.com>
---

This is basically the test I wrote while reviewing the kms_dp_tiled_display
series [1]. I'm sending it as an RFC to know if there's any interest in having
it merged.

[1]: https://lists.freedesktop.org/archives/igt-dev/2019-August/015724.html

 tests/Makefile.sources   |   1 +
 tests/kms_atomic_multi.c | 149 +++++++++++++++++++++++++++++++++++++++
 tests/meson.build        |   1 +
 3 files changed, 151 insertions(+)
 create mode 100644 tests/kms_atomic_multi.c

diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index c02e4d9489f2..e08968d2b0fc 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -29,6 +29,7 @@ TESTS_progs = \
 	kms_atomic \
 	kms_atomic_interruptible \
 	kms_atomic_transition \
+	kms_atomic_multi \
 	kms_available_modes_crc \
 	kms_big_fb \
 	kms_busy \
diff --git a/tests/kms_atomic_multi.c b/tests/kms_atomic_multi.c
new file mode 100644
index 000000000000..96212ab9a1e6
--- /dev/null
+++ b/tests/kms_atomic_multi.c
@@ -0,0 +1,149 @@
+/*
+ * Copyright © 2018 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include <poll.h>
+#include <drm_mode.h>
+#include <drm_fourcc.h>
+#include "igt.h"
+
+struct test_connector {
+	igt_output_t *output;
+	struct igt_fb fb;
+	drmModeConnectorPtr connector;
+	enum pipe pipe;
+	bool page_flip;
+};
+
+struct test_data {
+	int drm_fd;
+	igt_display_t *display;
+	struct test_connector conns[2];
+};
+
+static void create_fb(struct test_data *data, struct test_connector *conn)
+{
+	igt_plane_t *primary;
+	drmModeModeInfo *mode;
+
+	mode = igt_output_get_mode(conn->output);
+	igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
+			      DRM_FORMAT_XBGR8888, LOCAL_DRM_FORMAT_MOD_NONE,
+			      &conn->fb);
+
+	primary = igt_output_get_plane_type(conn->output, DRM_PLANE_TYPE_PRIMARY);
+	igt_assert(primary);
+
+	igt_plane_set_fb(primary, &conn->fb);
+}
+
+static void pick_2_outputs(struct test_data *data)
+{
+	igt_output_t *output;
+	struct test_connector *conn;
+	size_t i;
+
+	i = 0;
+	for_each_connected_output(data->display, output) {
+		if (i >= 2)
+			break;
+
+		conn = &data->conns[i];
+		conn->output = output;
+		conn->pipe = i;
+		igt_output_set_pipe(output, conn->pipe);
+		i++;
+	}
+
+	igt_skip_on(i < 2);
+	/* TODO: test_only commit, skip on failure */
+	igt_display_commit_atomic(data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+}
+
+static void page_flip_handler(int fd, unsigned seq, unsigned tv_sec,
+			      unsigned tv_usec, unsigned crtc_id, void *_data)
+{
+	struct test_data *data = _data;
+	struct test_connector *conn;
+	size_t i;
+
+	for (i = 0; i < sizeof(data->conns) / sizeof(data->conns[0]); i++) {
+		conn = &data->conns[i];
+		if (data->display->pipes[conn->pipe].crtc_id == crtc_id) {
+			igt_assert_f(!conn->page_flip,
+				     "Got two page-flips for CRTC %u\n",
+				     crtc_id);
+			conn->page_flip = true;
+			return;
+		}
+	}
+
+	igt_assert_f(0, "Got page-flip event for unexpected CRTC %u\n", crtc_id);
+}
+
+igt_main
+{
+	int ret;
+	struct test_data data = {0};
+	igt_display_t display;
+	struct pollfd pfd = {0};
+	drmEventContext drm_event = {0};
+	int i;
+
+	igt_fixture {
+		data.drm_fd = drm_open_driver_master(DRIVER_ANY);
+		kmstest_set_vt_graphics_mode();
+		igt_display_require(&display, data.drm_fd);
+		igt_display_reset(&display);
+		igt_require(display.is_atomic);
+		data.display = &display;
+
+		pfd.fd = data.drm_fd;
+		pfd.events = POLLIN;
+
+		drm_event.version = 3;
+		drm_event.page_flip_handler2 = page_flip_handler;
+	}
+
+	igt_subtest("2x-flip") {
+		pick_2_outputs(&data);
+
+		create_fb(&data, &data.conns[0]);
+		create_fb(&data, &data.conns[1]);
+
+		igt_display_commit_atomic(data.display, DRM_MODE_ATOMIC_NONBLOCK |
+					  DRM_MODE_PAGE_FLIP_EVENT, &data);
+
+		/* TODO: handle two events sent at once */
+		for (i = 0; i < 2; i++) {
+			ret = poll(&pfd, 1, 1000);
+			igt_assert(ret == 1);
+			drmHandleEvent(data.drm_fd, &drm_event);
+		}
+	}
+
+	igt_fixture {
+		close(data.drm_fd);
+		kmstest_restore_vt_mode();
+		igt_display_fini(data.display);
+	}
+}
diff --git a/tests/meson.build b/tests/meson.build
index a7b2b3221304..df00ab4a2f81 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -14,6 +14,7 @@ test_progs = [
 	'kms_atomic',
 	'kms_atomic_interruptible',
 	'kms_atomic_transition',
+	'kms_atomic_multi',
 	'kms_available_modes_crc',
 	'kms_big_fb',
 	'kms_busy',
--
2.23.0

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

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

* Re: [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test
  2019-09-05 14:35 [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test Simon Ser
@ 2019-09-05 14:51 ` Ville Syrjälä
  2019-09-06 14:15   ` Ser, Simon
  2019-09-05 15:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Ville Syrjälä @ 2019-09-05 14:51 UTC (permalink / raw)
  To: Simon Ser; +Cc: igt-dev

On Thu, Sep 05, 2019 at 05:35:30PM +0300, Simon Ser wrote:
> This test performs a single atomic commit on multiple CRTCs at once. The goal
> is to check that a page-flip event for each CRTC is received.
> 
> I chose not to integrate this to an existing test, because kms_atomic is
> basically a single function with lots of options. Integrating this test to
> kms_atomic would mix up these two and make it difficult to understand the test.
> 
> Signed-off-by: Simon Ser <simon.ser@intel.com>
> ---
> 
> This is basically the test I wrote while reviewing the kms_dp_tiled_display
> series [1]. I'm sending it as an RFC to know if there's any interest in having
> it merged.
> 
> [1]: https://lists.freedesktop.org/archives/igt-dev/2019-August/015724.html
> 
>  tests/Makefile.sources   |   1 +
>  tests/kms_atomic_multi.c | 149 +++++++++++++++++++++++++++++++++++++++
>  tests/meson.build        |   1 +
>  3 files changed, 151 insertions(+)
>  create mode 100644 tests/kms_atomic_multi.c
> 
> diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> index c02e4d9489f2..e08968d2b0fc 100644
> --- a/tests/Makefile.sources
> +++ b/tests/Makefile.sources
> @@ -29,6 +29,7 @@ TESTS_progs = \
>  	kms_atomic \
>  	kms_atomic_interruptible \
>  	kms_atomic_transition \
> +	kms_atomic_multi \
>  	kms_available_modes_crc \
>  	kms_big_fb \
>  	kms_busy \
> diff --git a/tests/kms_atomic_multi.c b/tests/kms_atomic_multi.c
> new file mode 100644
> index 000000000000..96212ab9a1e6
> --- /dev/null
> +++ b/tests/kms_atomic_multi.c
> @@ -0,0 +1,149 @@
> +/*
> + * Copyright © 2018 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> + * IN THE SOFTWARE.
> + */
> +
> +#include <poll.h>
> +#include <drm_mode.h>
> +#include <drm_fourcc.h>
> +#include "igt.h"
> +
> +struct test_connector {
> +	igt_output_t *output;
> +	struct igt_fb fb;
> +	drmModeConnectorPtr connector;
> +	enum pipe pipe;
> +	bool page_flip;
> +};
> +
> +struct test_data {
> +	int drm_fd;
> +	igt_display_t *display;
> +	struct test_connector conns[2];
> +};
> +
> +static void create_fb(struct test_data *data, struct test_connector *conn)
> +{
> +	igt_plane_t *primary;
> +	drmModeModeInfo *mode;
> +
> +	mode = igt_output_get_mode(conn->output);
> +	igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> +			      DRM_FORMAT_XBGR8888, LOCAL_DRM_FORMAT_MOD_NONE,
> +			      &conn->fb);
> +
> +	primary = igt_output_get_plane_type(conn->output, DRM_PLANE_TYPE_PRIMARY);
> +	igt_assert(primary);
> +
> +	igt_plane_set_fb(primary, &conn->fb);
> +}
> +
> +static void pick_2_outputs(struct test_data *data)
> +{
> +	igt_output_t *output;
> +	struct test_connector *conn;
> +	size_t i;
> +
> +	i = 0;
> +	for_each_connected_output(data->display, output) {
> +		if (i >= 2)
> +			break;
> +
> +		conn = &data->conns[i];
> +		conn->output = output;
> +		conn->pipe = i;

That assumes every output can be driven by any pipe.
Using for_each_valid_output_on_pipe() should avoid that
assumption.

> +		igt_output_set_pipe(output, conn->pipe);
> +		i++;
> +	}
> +
> +	igt_skip_on(i < 2);
> +	/* TODO: test_only commit, skip on failure */
> +	igt_display_commit_atomic(data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +}
> +
> +static void page_flip_handler(int fd, unsigned seq, unsigned tv_sec,
> +			      unsigned tv_usec, unsigned crtc_id, void *_data)
> +{
> +	struct test_data *data = _data;
> +	struct test_connector *conn;
> +	size_t i;
> +
> +	for (i = 0; i < sizeof(data->conns) / sizeof(data->conns[0]); i++) {

ARRAY_SIZE()

> +		conn = &data->conns[i];
> +		if (data->display->pipes[conn->pipe].crtc_id == crtc_id) {
> +			igt_assert_f(!conn->page_flip,
> +				     "Got two page-flips for CRTC %u\n",
> +				     crtc_id);
> +			conn->page_flip = true;
> +			return;
> +		}
> +	}
> +
> +	igt_assert_f(0, "Got page-flip event for unexpected CRTC %u\n", crtc_id);
> +}
> +
> +igt_main
> +{
> +	int ret;
> +	struct test_data data = {0};
> +	igt_display_t display;
> +	struct pollfd pfd = {0};
> +	drmEventContext drm_event = {0};
> +	int i;
> +
> +	igt_fixture {
> +		data.drm_fd = drm_open_driver_master(DRIVER_ANY);
> +		kmstest_set_vt_graphics_mode();
> +		igt_display_require(&display, data.drm_fd);
> +		igt_display_reset(&display);
> +		igt_require(display.is_atomic);
> +		data.display = &display;
> +
> +		pfd.fd = data.drm_fd;
> +		pfd.events = POLLIN;
> +
> +		drm_event.version = 3;
> +		drm_event.page_flip_handler2 = page_flip_handler;
> +	}
> +
> +	igt_subtest("2x-flip") {

Are we planning more subtests? I guess 1x,2x,3x,... might be nice?

> +		pick_2_outputs(&data);
> +
> +		create_fb(&data, &data.conns[0]);
> +		create_fb(&data, &data.conns[1]);
> +
> +		igt_display_commit_atomic(data.display, DRM_MODE_ATOMIC_NONBLOCK |
> +					  DRM_MODE_PAGE_FLIP_EVENT, &data);
> +
> +		/* TODO: handle two events sent at once */
> +		for (i = 0; i < 2; i++) {
> +			ret = poll(&pfd, 1, 1000);
> +			igt_assert(ret == 1);
> +			drmHandleEvent(data.drm_fd, &drm_event);

Not verifying that we didn't get too many events?

I guess it might also be nice to have different subtests
for page flips and full modesets.

I guess there is no generic way to force the kernel to modeset
a crtc we didn't explicitly include in the request, so can't
really test that scenario :(

> +		}
> +	}
> +
> +	igt_fixture {
> +		close(data.drm_fd);
> +		kmstest_restore_vt_mode();
> +		igt_display_fini(data.display);
> +	}
> +}
> diff --git a/tests/meson.build b/tests/meson.build
> index a7b2b3221304..df00ab4a2f81 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -14,6 +14,7 @@ test_progs = [
>  	'kms_atomic',
>  	'kms_atomic_interruptible',
>  	'kms_atomic_transition',
> +	'kms_atomic_multi',
>  	'kms_available_modes_crc',
>  	'kms_big_fb',
>  	'kms_busy',
> --
> 2.23.0
> 
> _______________________________________________
> 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] 7+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_atomic_multi: new test
  2019-09-05 14:35 [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test Simon Ser
  2019-09-05 14:51 ` Ville Syrjälä
@ 2019-09-05 15:08 ` Patchwork
  2019-09-05 18:47 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  2019-09-06  6:15 ` [igt-dev] [PATCH RFC i-g-t] " Arkadiusz Hiler
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2019-09-05 15:08 UTC (permalink / raw)
  To: Simon Ser; +Cc: igt-dev

== Series Details ==

Series: tests/kms_atomic_multi: new test
URL   : https://patchwork.freedesktop.org/series/66288/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6838 -> IGTPW_3422
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/66288/revisions/1/mbox/

Known issues
------------

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_switch@legacy-render:
    - fi-bxt-dsi:         [PASS][1] -> [INCOMPLETE][2] ([fdo#103927] / [fdo#111381])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-bxt-dsi/igt@gem_ctx_switch@legacy-render.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-bxt-dsi/igt@gem_ctx_switch@legacy-render.html

  
#### Possible fixes ####

  * igt@gem_mmap_gtt@basic:
    - fi-glk-dsi:         [INCOMPLETE][3] ([fdo#103359] / [k.org#198133]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-glk-dsi/igt@gem_mmap_gtt@basic.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-glk-dsi/igt@gem_mmap_gtt@basic.html

  * igt@kms_busy@basic-flip-c:
    - fi-skl-6770hq:      [SKIP][5] ([fdo#109271] / [fdo#109278]) -> [PASS][6] +2 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-skl-6770hq/igt@kms_busy@basic-flip-c.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-skl-6770hq/igt@kms_busy@basic-flip-c.html

  * igt@kms_chamelium@dp-edid-read:
    - fi-kbl-7500u:       [WARN][7] ([fdo#109483]) -> [PASS][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-kbl-7500u/igt@kms_chamelium@dp-edid-read.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-kbl-7500u/igt@kms_chamelium@dp-edid-read.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - fi-skl-6770hq:      [SKIP][9] ([fdo#109271]) -> [PASS][10] +23 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-skl-6770hq/igt@kms_flip@basic-flip-vs-dpms.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-skl-6770hq/igt@kms_flip@basic-flip-vs-dpms.html

  * igt@kms_frontbuffer_tracking@basic:
    - fi-hsw-peppy:       [DMESG-WARN][11] ([fdo#102614]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-hsw-peppy/igt@kms_frontbuffer_tracking@basic.html
    - fi-icl-u2:          [FAIL][13] ([fdo#103167]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-icl-u2/igt@kms_frontbuffer_tracking@basic.html

  * igt@vgem_basic@debugfs:
    - fi-icl-u3:          [DMESG-WARN][15] ([fdo#107724]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/fi-icl-u3/igt@vgem_basic@debugfs.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/fi-icl-u3/igt@vgem_basic@debugfs.html

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

  [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#106107]: https://bugs.freedesktop.org/show_bug.cgi?id=106107
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109483]: https://bugs.freedesktop.org/show_bug.cgi?id=109483
  [fdo#111381]: https://bugs.freedesktop.org/show_bug.cgi?id=111381
  [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133


Participating hosts (53 -> 46)
------------------------------

  Additional (1): fi-pnv-d510 
  Missing    (8): fi-ilk-m540 fi-tgl-u fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-icl-y fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5171 -> IGTPW_3422

  CI-20190529: 20190529
  CI_DRM_6838: 8e907b7591b620dba402c7ada493a31ca0320c99 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_3422: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/
  IGT_5171: 1911564805fe454919e8a5846534a0c1ef376a33 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+igt@kms_atomic_multi@2x-flip

== Logs ==

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_atomic_multi: new test
  2019-09-05 14:35 [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test Simon Ser
  2019-09-05 14:51 ` Ville Syrjälä
  2019-09-05 15:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2019-09-05 18:47 ` Patchwork
  2019-09-06  6:15 ` [igt-dev] [PATCH RFC i-g-t] " Arkadiusz Hiler
  3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2019-09-05 18:47 UTC (permalink / raw)
  To: Simon Ser; +Cc: igt-dev

== Series Details ==

Series: tests/kms_atomic_multi: new test
URL   : https://patchwork.freedesktop.org/series/66288/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6838_full -> IGTPW_3422_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/66288/revisions/1/mbox/

Possible new issues
-------------------

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

### IGT changes ###

#### Possible regressions ####

  * {igt@kms_atomic_multi@2x-flip} (NEW):
    - shard-iclb:         NOTRUN -> [SKIP][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb4/igt@kms_atomic_multi@2x-flip.html

  
New tests
---------

  New tests have been introduced between CI_DRM_6838_full and IGTPW_3422_full:

### New IGT tests (1) ###

  * igt@kms_atomic_multi@2x-flip:
    - Statuses : 2 pass(s) 4 skip(s)
    - Exec time: [0.0, 0.26] s

  

Known issues
------------

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_shared@q-in-order-bsd2:
    - shard-iclb:         [PASS][2] -> [SKIP][3] ([fdo#109276]) +13 similar issues
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb1/igt@gem_ctx_shared@q-in-order-bsd2.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb5/igt@gem_ctx_shared@q-in-order-bsd2.html

  * igt@gem_eio@suspend:
    - shard-hsw:          [PASS][4] -> [FAIL][5] ([fdo#111550])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw8/igt@gem_eio@suspend.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw7/igt@gem_eio@suspend.html

  * igt@gem_exec_schedule@preempt-other-bsd:
    - shard-iclb:         [PASS][6] -> [SKIP][7] ([fdo#111325]) +6 similar issues
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb8/igt@gem_exec_schedule@preempt-other-bsd.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb1/igt@gem_exec_schedule@preempt-other-bsd.html

  * igt@gem_exec_suspend@basic-s3:
    - shard-hsw:          [PASS][8] -> [FAIL][9] ([fdo#103375]) +4 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw7/igt@gem_exec_suspend@basic-s3.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw7/igt@gem_exec_suspend@basic-s3.html

  * igt@gem_workarounds@suspend-resume:
    - shard-apl:          [PASS][10] -> [DMESG-WARN][11] ([fdo#108566]) +6 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl8/igt@gem_workarounds@suspend-resume.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-apl4/igt@gem_workarounds@suspend-resume.html

  * igt@i915_pm_rpm@gem-pread:
    - shard-hsw:          [PASS][12] -> [FAIL][13] ([fdo#111548]) +7 similar issues
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw7/igt@i915_pm_rpm@gem-pread.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw7/igt@i915_pm_rpm@gem-pread.html

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic:
    - shard-hsw:          [PASS][14] -> [FAIL][15] ([fdo#103355])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw8/igt@kms_cursor_legacy@cursor-vs-flip-atomic.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw1/igt@kms_cursor_legacy@cursor-vs-flip-atomic.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
    - shard-glk:          [PASS][16] -> [FAIL][17] ([fdo#105363])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-glk5/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-glk3/igt@kms_flip@flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-iclb:         [PASS][18] -> [INCOMPLETE][19] ([fdo#107713] / [fdo#109507])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb3/igt@kms_flip@flip-vs-suspend.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb3/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt:
    - shard-iclb:         [PASS][20] -> [FAIL][21] ([fdo#103167]) +1 similar issue
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_psr@psr2_cursor_mmap_cpu:
    - shard-iclb:         [PASS][22] -> [SKIP][23] ([fdo#109441])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb8/igt@kms_psr@psr2_cursor_mmap_cpu.html

  * igt@kms_setmode@basic:
    - shard-hsw:          [PASS][24] -> [FAIL][25] ([fdo#99912])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw7/igt@kms_setmode@basic.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw4/igt@kms_setmode@basic.html

  * igt@perf_pmu@render-node-busy-rcs0:
    - shard-apl:          [PASS][26] -> [FAIL][27] ([fdo#111545])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl3/igt@perf_pmu@render-node-busy-rcs0.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-apl1/igt@perf_pmu@render-node-busy-rcs0.html

  
#### Possible fixes ####

  * igt@gem_ctx_shared@exec-single-timeline-bsd:
    - shard-iclb:         [SKIP][28] ([fdo#110841]) -> [PASS][29]
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb1/igt@gem_ctx_shared@exec-single-timeline-bsd.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb8/igt@gem_ctx_shared@exec-single-timeline-bsd.html

  * igt@gem_exec_async@concurrent-writes-bsd:
    - shard-iclb:         [SKIP][30] ([fdo#111325]) -> [PASS][31] +2 similar issues
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb4/igt@gem_exec_async@concurrent-writes-bsd.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb6/igt@gem_exec_async@concurrent-writes-bsd.html

  * igt@gem_exec_schedule@reorder-wide-bsd1:
    - shard-iclb:         [SKIP][32] ([fdo#109276]) -> [PASS][33] +12 similar issues
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb6/igt@gem_exec_schedule@reorder-wide-bsd1.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb2/igt@gem_exec_schedule@reorder-wide-bsd1.html

  * igt@i915_pm_rpm@modeset-stress-extra-wait:
    - shard-hsw:          [FAIL][34] ([fdo#111548]) -> [PASS][35] +4 similar issues
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw2/igt@i915_pm_rpm@modeset-stress-extra-wait.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw2/igt@i915_pm_rpm@modeset-stress-extra-wait.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-180:
    - shard-apl:          [INCOMPLETE][36] ([fdo#103927]) -> [PASS][37] +3 similar issues
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl7/igt@kms_big_fb@x-tiled-16bpp-rotate-180.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-apl7/igt@kms_big_fb@x-tiled-16bpp-rotate-180.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move:
    - shard-iclb:         [FAIL][38] ([fdo#103167]) -> [PASS][39] +3 similar issues
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move.html

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
    - shard-snb:          [FAIL][40] ([fdo#103375]) -> [PASS][41] +2 similar issues
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-snb7/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-snb2/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
    - shard-hsw:          [FAIL][42] ([fdo#103375]) -> [PASS][43] +4 similar issues
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw2/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw6/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
    - shard-kbl:          [INCOMPLETE][44] ([fdo#103665]) -> [PASS][45]
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-kbl3/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-kbl1/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
    - shard-apl:          [DMESG-WARN][46] ([fdo#108566]) -> [PASS][47] +2 similar issues
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl4/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-apl4/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
    - shard-iclb:         [INCOMPLETE][48] ([fdo#107713]) -> [PASS][49] +1 similar issue
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb7/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb6/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html

  * igt@kms_psr2_su@frontbuffer:
    - shard-iclb:         [SKIP][50] ([fdo#109642] / [fdo#111068]) -> [PASS][51]
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb5/igt@kms_psr2_su@frontbuffer.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb2/igt@kms_psr2_su@frontbuffer.html

  * igt@kms_psr@psr2_cursor_render:
    - shard-iclb:         [SKIP][52] ([fdo#109441]) -> [PASS][53]
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb8/igt@kms_psr@psr2_cursor_render.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb2/igt@kms_psr@psr2_cursor_render.html

  * igt@kms_setmode@basic:
    - shard-kbl:          [FAIL][54] ([fdo#99912]) -> [PASS][55]
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-kbl2/igt@kms_setmode@basic.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-kbl7/igt@kms_setmode@basic.html

  * igt@perf_pmu@busy-idle-vcs0:
    - shard-apl:          [FAIL][56] ([fdo#111545]) -> [PASS][57] +1 similar issue
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-apl3/igt@perf_pmu@busy-idle-vcs0.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-apl5/igt@perf_pmu@busy-idle-vcs0.html

  
#### Warnings ####

  * igt@gem_mocs_settings@mocs-settings-bsd2:
    - shard-iclb:         [SKIP][58] ([fdo#109276]) -> [FAIL][59] ([fdo#111330]) +1 similar issue
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-iclb6/igt@gem_mocs_settings@mocs-settings-bsd2.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-iclb2/igt@gem_mocs_settings@mocs-settings-bsd2.html

  * igt@i915_pm_rpm@modeset-lpsp:
    - shard-hsw:          [FAIL][60] ([fdo#111548]) -> [SKIP][61] ([fdo#109271])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw2/igt@i915_pm_rpm@modeset-lpsp.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw1/igt@i915_pm_rpm@modeset-lpsp.html

  * igt@i915_pm_rpm@modeset-pc8-residency-stress:
    - shard-hsw:          [SKIP][62] ([fdo#109271]) -> [FAIL][63] ([fdo#111548]) +1 similar issue
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw5/igt@i915_pm_rpm@modeset-pc8-residency-stress.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw7/igt@i915_pm_rpm@modeset-pc8-residency-stress.html

  * igt@perf_pmu@cpu-hotplug:
    - shard-hsw:          [TIMEOUT][64] ([fdo#111546]) -> [INCOMPLETE][65] ([fdo#103540])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6838/shard-hsw2/igt@perf_pmu@cpu-hotplug.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/shard-hsw1/igt@perf_pmu@cpu-hotplug.html

  
  {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#103355]: https://bugs.freedesktop.org/show_bug.cgi?id=103355
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
  [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#109507]: https://bugs.freedesktop.org/show_bug.cgi?id=109507
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110841]: https://bugs.freedesktop.org/show_bug.cgi?id=110841
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111325]: https://bugs.freedesktop.org/show_bug.cgi?id=111325
  [fdo#111330]: https://bugs.freedesktop.org/show_bug.cgi?id=111330
  [fdo#111545]: https://bugs.freedesktop.org/show_bug.cgi?id=111545
  [fdo#111546]: https://bugs.freedesktop.org/show_bug.cgi?id=111546
  [fdo#111548]: https://bugs.freedesktop.org/show_bug.cgi?id=111548
  [fdo#111550]: https://bugs.freedesktop.org/show_bug.cgi?id=111550
  [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912


Participating hosts (10 -> 6)
------------------------------

  Missing    (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5171 -> IGTPW_3422
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_6838: 8e907b7591b620dba402c7ada493a31ca0320c99 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_3422: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3422/
  IGT_5171: 1911564805fe454919e8a5846534a0c1ef376a33 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

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

* Re: [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test
  2019-09-05 14:35 [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test Simon Ser
                   ` (2 preceding siblings ...)
  2019-09-05 18:47 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2019-09-06  6:15 ` Arkadiusz Hiler
  3 siblings, 0 replies; 7+ messages in thread
From: Arkadiusz Hiler @ 2019-09-06  6:15 UTC (permalink / raw)
  To: Simon Ser; +Cc: igt-dev

On Thu, Sep 05, 2019 at 05:35:30PM +0300, Simon Ser wrote:
> This test performs a single atomic commit on multiple CRTCs at once. The goal
> is to check that a page-flip event for each CRTC is received.
> 
> I chose not to integrate this to an existing test, because kms_atomic is
> basically a single function with lots of options. Integrating this test to
> kms_atomic would mix up these two and make it difficult to understand the test.
> 
> Signed-off-by: Simon Ser <simon.ser@intel.com>

Hey,

This series introduces new undocumented tests:

kms_atomic_multi
kms_atomic_multi@2x-flip

Can you document them as per the requirement in the [CONTRIBUTING.md]?

[Documentation] has more details on how to do this.

Here are few examples:
https://gitlab.freedesktop.org/drm/igt-gpu-tools/commit/0316695d03aa46108296b27f3982ec93200c7a6e
https://gitlab.freedesktop.org/drm/igt-gpu-tools/commit/443cc658e1e6b492ee17bf4f4d891029eb7a205d

Thanks in advance!

[CONTRIBUTING.md]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/blob/master/CONTRIBUTING.md#L19
[Documentation]: https://drm.pages.freedesktop.org/igt-gpu-tools/igt-gpu-tools-Core.html#igt-describe

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

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

* Re: [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test
  2019-09-05 14:51 ` Ville Syrjälä
@ 2019-09-06 14:15   ` Ser, Simon
  2019-09-06 14:44     ` Ville Syrjälä
  0 siblings, 1 reply; 7+ messages in thread
From: Ser, Simon @ 2019-09-06 14:15 UTC (permalink / raw)
  To: ville.syrjala; +Cc: igt-dev

Thanks for the review!

On Thu, 2019-09-05 at 17:51 +0300, Ville Syrjälä wrote:
> On Thu, Sep 05, 2019 at 05:35:30PM +0300, Simon Ser wrote:
> > This test performs a single atomic commit on multiple CRTCs at once. The goal
> > is to check that a page-flip event for each CRTC is received.
> > 
> > I chose not to integrate this to an existing test, because kms_atomic is
> > basically a single function with lots of options. Integrating this test to
> > kms_atomic would mix up these two and make it difficult to understand the test.
> > 
> > Signed-off-by: Simon Ser <simon.ser@intel.com>
> > ---
> > 
> > This is basically the test I wrote while reviewing the kms_dp_tiled_display
> > series [1]. I'm sending it as an RFC to know if there's any interest in having
> > it merged.
> > 
> > [1]: https://lists.freedesktop.org/archives/igt-dev/2019-August/015724.html
> > 
> >  tests/Makefile.sources   |   1 +
> >  tests/kms_atomic_multi.c | 149 +++++++++++++++++++++++++++++++++++++++
> >  tests/meson.build        |   1 +
> >  3 files changed, 151 insertions(+)
> >  create mode 100644 tests/kms_atomic_multi.c
> > 
> > diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> > index c02e4d9489f2..e08968d2b0fc 100644
> > --- a/tests/Makefile.sources
> > +++ b/tests/Makefile.sources
> > @@ -29,6 +29,7 @@ TESTS_progs = \
> >  	kms_atomic \
> >  	kms_atomic_interruptible \
> >  	kms_atomic_transition \
> > +	kms_atomic_multi \
> >  	kms_available_modes_crc \
> >  	kms_big_fb \
> >  	kms_busy \
> > diff --git a/tests/kms_atomic_multi.c b/tests/kms_atomic_multi.c
> > new file mode 100644
> > index 000000000000..96212ab9a1e6
> > --- /dev/null
> > +++ b/tests/kms_atomic_multi.c
> > @@ -0,0 +1,149 @@
> > +/*
> > + * Copyright © 2018 Intel Corporation
> > + *
> > + * Permission is hereby granted, free of charge, to any person obtaining a
> > + * copy of this software and associated documentation files (the "Software"),
> > + * to deal in the Software without restriction, including without limitation
> > + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> > + * and/or sell copies of the Software, and to permit persons to whom the
> > + * Software is furnished to do so, subject to the following conditions:
> > + *
> > + * The above copyright notice and this permission notice (including the next
> > + * paragraph) shall be included in all copies or substantial portions of the
> > + * Software.
> > + *
> > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> > + * IN THE SOFTWARE.
> > + */
> > +
> > +#include <poll.h>
> > +#include <drm_mode.h>
> > +#include <drm_fourcc.h>
> > +#include "igt.h"
> > +
> > +struct test_connector {
> > +	igt_output_t *output;
> > +	struct igt_fb fb;
> > +	drmModeConnectorPtr connector;
> > +	enum pipe pipe;
> > +	bool page_flip;
> > +};
> > +
> > +struct test_data {
> > +	int drm_fd;
> > +	igt_display_t *display;
> > +	struct test_connector conns[2];
> > +};
> > +
> > +static void create_fb(struct test_data *data, struct test_connector *conn)
> > +{
> > +	igt_plane_t *primary;
> > +	drmModeModeInfo *mode;
> > +
> > +	mode = igt_output_get_mode(conn->output);
> > +	igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> > +			      DRM_FORMAT_XBGR8888, LOCAL_DRM_FORMAT_MOD_NONE,
> > +			      &conn->fb);
> > +
> > +	primary = igt_output_get_plane_type(conn->output, DRM_PLANE_TYPE_PRIMARY);
> > +	igt_assert(primary);
> > +
> > +	igt_plane_set_fb(primary, &conn->fb);
> > +}
> > +
> > +static void pick_2_outputs(struct test_data *data)
> > +{
> > +	igt_output_t *output;
> > +	struct test_connector *conn;
> > +	size_t i;
> > +
> > +	i = 0;
> > +	for_each_connected_output(data->display, output) {
> > +		if (i >= 2)
> > +			break;
> > +
> > +		conn = &data->conns[i];
> > +		conn->output = output;
> > +		conn->pipe = i;
> 
> That assumes every output can be driven by any pipe.
> Using for_each_valid_output_on_pipe() should avoid that
> assumption.
> 
> > +		igt_output_set_pipe(output, conn->pipe);
> > +		i++;
> > +	}
> > +
> > +	igt_skip_on(i < 2);
> > +	/* TODO: test_only commit, skip on failure */
> > +	igt_display_commit_atomic(data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> > +}
> > +
> > +static void page_flip_handler(int fd, unsigned seq, unsigned tv_sec,
> > +			      unsigned tv_usec, unsigned crtc_id, void *_data)
> > +{
> > +	struct test_data *data = _data;
> > +	struct test_connector *conn;
> > +	size_t i;
> > +
> > +	for (i = 0; i < sizeof(data->conns) / sizeof(data->conns[0]); i++) {
> 
> ARRAY_SIZE()
> 
> > +		conn = &data->conns[i];
> > +		if (data->display->pipes[conn->pipe].crtc_id == crtc_id) {
> > +			igt_assert_f(!conn->page_flip,
> > +				     "Got two page-flips for CRTC %u\n",
> > +				     crtc_id);
> > +			conn->page_flip = true;
> > +			return;
> > +		}
> > +	}
> > +
> > +	igt_assert_f(0, "Got page-flip event for unexpected CRTC %u\n", crtc_id);
> > +}
> > +
> > +igt_main
> > +{
> > +	int ret;
> > +	struct test_data data = {0};
> > +	igt_display_t display;
> > +	struct pollfd pfd = {0};
> > +	drmEventContext drm_event = {0};
> > +	int i;
> > +
> > +	igt_fixture {
> > +		data.drm_fd = drm_open_driver_master(DRIVER_ANY);
> > +		kmstest_set_vt_graphics_mode();
> > +		igt_display_require(&display, data.drm_fd);
> > +		igt_display_reset(&display);
> > +		igt_require(display.is_atomic);
> > +		data.display = &display;
> > +
> > +		pfd.fd = data.drm_fd;
> > +		pfd.events = POLLIN;
> > +
> > +		drm_event.version = 3;
> > +		drm_event.page_flip_handler2 = page_flip_handler;
> > +	}
> > +
> > +	igt_subtest("2x-flip") {
> 
> Are we planning more subtests? I guess 1x,2x,3x,... might be nice?

Indeed

> > +		pick_2_outputs(&data);
> > +
> > +		create_fb(&data, &data.conns[0]);
> > +		create_fb(&data, &data.conns[1]);
> > +
> > +		igt_display_commit_atomic(data.display, DRM_MODE_ATOMIC_NONBLOCK |
> > +					  DRM_MODE_PAGE_FLIP_EVENT, &data);
> > +
> > +		/* TODO: handle two events sent at once */
> > +		for (i = 0; i < 2; i++) {
> > +			ret = poll(&pfd, 1, 1000);
> > +			igt_assert(ret == 1);
> > +			drmHandleEvent(data.drm_fd, &drm_event);
> 
> Not verifying that we didn't get too many events?

This is done in page_flip_handler

> I guess it might also be nice to have different subtests
> for page flips and full modesets.

Yeah, I plan on expanding this test with more subtests

> I guess there is no generic way to force the kernel to modeset
> a crtc we didn't explicitly include in the request, so can't
> really test that scenario :(

Hmm, not sure I get this scenario. How could we modeset a CRTC not
included in the atomic request? Can you elaborate?

> > +		}
> > +	}
> > +
> > +	igt_fixture {
> > +		close(data.drm_fd);
> > +		kmstest_restore_vt_mode();
> > +		igt_display_fini(data.display);
> > +	}
> > +}
> > diff --git a/tests/meson.build b/tests/meson.build
> > index a7b2b3221304..df00ab4a2f81 100644
> > --- a/tests/meson.build
> > +++ b/tests/meson.build
> > @@ -14,6 +14,7 @@ test_progs = [
> >  	'kms_atomic',
> >  	'kms_atomic_interruptible',
> >  	'kms_atomic_transition',
> > +	'kms_atomic_multi',
> >  	'kms_available_modes_crc',
> >  	'kms_big_fb',
> >  	'kms_busy',
> > --
> > 2.23.0
> > 
> > _______________________________________________
> > igt-dev mailing list
> > igt-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test
  2019-09-06 14:15   ` Ser, Simon
@ 2019-09-06 14:44     ` Ville Syrjälä
  0 siblings, 0 replies; 7+ messages in thread
From: Ville Syrjälä @ 2019-09-06 14:44 UTC (permalink / raw)
  To: Ser, Simon; +Cc: igt-dev

On Fri, Sep 06, 2019 at 02:15:10PM +0000, Ser, Simon wrote:
> Thanks for the review!
> 
> On Thu, 2019-09-05 at 17:51 +0300, Ville Syrjälä wrote:
> > On Thu, Sep 05, 2019 at 05:35:30PM +0300, Simon Ser wrote:
> > > This test performs a single atomic commit on multiple CRTCs at once. The goal
> > > is to check that a page-flip event for each CRTC is received.
> > > 
> > > I chose not to integrate this to an existing test, because kms_atomic is
> > > basically a single function with lots of options. Integrating this test to
> > > kms_atomic would mix up these two and make it difficult to understand the test.
> > > 
> > > Signed-off-by: Simon Ser <simon.ser@intel.com>
> > > ---
> > > 
> > > This is basically the test I wrote while reviewing the kms_dp_tiled_display
> > > series [1]. I'm sending it as an RFC to know if there's any interest in having
> > > it merged.
> > > 
> > > [1]: https://lists.freedesktop.org/archives/igt-dev/2019-August/015724.html
> > > 
> > >  tests/Makefile.sources   |   1 +
> > >  tests/kms_atomic_multi.c | 149 +++++++++++++++++++++++++++++++++++++++
> > >  tests/meson.build        |   1 +
> > >  3 files changed, 151 insertions(+)
> > >  create mode 100644 tests/kms_atomic_multi.c
> > > 
> > > diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> > > index c02e4d9489f2..e08968d2b0fc 100644
> > > --- a/tests/Makefile.sources
> > > +++ b/tests/Makefile.sources
> > > @@ -29,6 +29,7 @@ TESTS_progs = \
> > >  	kms_atomic \
> > >  	kms_atomic_interruptible \
> > >  	kms_atomic_transition \
> > > +	kms_atomic_multi \
> > >  	kms_available_modes_crc \
> > >  	kms_big_fb \
> > >  	kms_busy \
> > > diff --git a/tests/kms_atomic_multi.c b/tests/kms_atomic_multi.c
> > > new file mode 100644
> > > index 000000000000..96212ab9a1e6
> > > --- /dev/null
> > > +++ b/tests/kms_atomic_multi.c
> > > @@ -0,0 +1,149 @@
> > > +/*
> > > + * Copyright © 2018 Intel Corporation
> > > + *
> > > + * Permission is hereby granted, free of charge, to any person obtaining a
> > > + * copy of this software and associated documentation files (the "Software"),
> > > + * to deal in the Software without restriction, including without limitation
> > > + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> > > + * and/or sell copies of the Software, and to permit persons to whom the
> > > + * Software is furnished to do so, subject to the following conditions:
> > > + *
> > > + * The above copyright notice and this permission notice (including the next
> > > + * paragraph) shall be included in all copies or substantial portions of the
> > > + * Software.
> > > + *
> > > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> > > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> > > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> > > + * IN THE SOFTWARE.
> > > + */
> > > +
> > > +#include <poll.h>
> > > +#include <drm_mode.h>
> > > +#include <drm_fourcc.h>
> > > +#include "igt.h"
> > > +
> > > +struct test_connector {
> > > +	igt_output_t *output;
> > > +	struct igt_fb fb;
> > > +	drmModeConnectorPtr connector;
> > > +	enum pipe pipe;
> > > +	bool page_flip;
> > > +};
> > > +
> > > +struct test_data {
> > > +	int drm_fd;
> > > +	igt_display_t *display;
> > > +	struct test_connector conns[2];
> > > +};
> > > +
> > > +static void create_fb(struct test_data *data, struct test_connector *conn)
> > > +{
> > > +	igt_plane_t *primary;
> > > +	drmModeModeInfo *mode;
> > > +
> > > +	mode = igt_output_get_mode(conn->output);
> > > +	igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> > > +			      DRM_FORMAT_XBGR8888, LOCAL_DRM_FORMAT_MOD_NONE,
> > > +			      &conn->fb);
> > > +
> > > +	primary = igt_output_get_plane_type(conn->output, DRM_PLANE_TYPE_PRIMARY);
> > > +	igt_assert(primary);
> > > +
> > > +	igt_plane_set_fb(primary, &conn->fb);
> > > +}
> > > +
> > > +static void pick_2_outputs(struct test_data *data)
> > > +{
> > > +	igt_output_t *output;
> > > +	struct test_connector *conn;
> > > +	size_t i;
> > > +
> > > +	i = 0;
> > > +	for_each_connected_output(data->display, output) {
> > > +		if (i >= 2)
> > > +			break;
> > > +
> > > +		conn = &data->conns[i];
> > > +		conn->output = output;
> > > +		conn->pipe = i;
> > 
> > That assumes every output can be driven by any pipe.
> > Using for_each_valid_output_on_pipe() should avoid that
> > assumption.
> > 
> > > +		igt_output_set_pipe(output, conn->pipe);
> > > +		i++;
> > > +	}
> > > +
> > > +	igt_skip_on(i < 2);
> > > +	/* TODO: test_only commit, skip on failure */
> > > +	igt_display_commit_atomic(data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> > > +}
> > > +
> > > +static void page_flip_handler(int fd, unsigned seq, unsigned tv_sec,
> > > +			      unsigned tv_usec, unsigned crtc_id, void *_data)
> > > +{
> > > +	struct test_data *data = _data;
> > > +	struct test_connector *conn;
> > > +	size_t i;
> > > +
> > > +	for (i = 0; i < sizeof(data->conns) / sizeof(data->conns[0]); i++) {
> > 
> > ARRAY_SIZE()
> > 
> > > +		conn = &data->conns[i];
> > > +		if (data->display->pipes[conn->pipe].crtc_id == crtc_id) {
> > > +			igt_assert_f(!conn->page_flip,
> > > +				     "Got two page-flips for CRTC %u\n",
> > > +				     crtc_id);
> > > +			conn->page_flip = true;
> > > +			return;
> > > +		}
> > > +	}
> > > +
> > > +	igt_assert_f(0, "Got page-flip event for unexpected CRTC %u\n", crtc_id);
> > > +}
> > > +
> > > +igt_main
> > > +{
> > > +	int ret;
> > > +	struct test_data data = {0};
> > > +	igt_display_t display;
> > > +	struct pollfd pfd = {0};
> > > +	drmEventContext drm_event = {0};
> > > +	int i;
> > > +
> > > +	igt_fixture {
> > > +		data.drm_fd = drm_open_driver_master(DRIVER_ANY);
> > > +		kmstest_set_vt_graphics_mode();
> > > +		igt_display_require(&display, data.drm_fd);
> > > +		igt_display_reset(&display);
> > > +		igt_require(display.is_atomic);
> > > +		data.display = &display;
> > > +
> > > +		pfd.fd = data.drm_fd;
> > > +		pfd.events = POLLIN;
> > > +
> > > +		drm_event.version = 3;
> > > +		drm_event.page_flip_handler2 = page_flip_handler;
> > > +	}
> > > +
> > > +	igt_subtest("2x-flip") {
> > 
> > Are we planning more subtests? I guess 1x,2x,3x,... might be nice?
> 
> Indeed
> 
> > > +		pick_2_outputs(&data);
> > > +
> > > +		create_fb(&data, &data.conns[0]);
> > > +		create_fb(&data, &data.conns[1]);
> > > +
> > > +		igt_display_commit_atomic(data.display, DRM_MODE_ATOMIC_NONBLOCK |
> > > +					  DRM_MODE_PAGE_FLIP_EVENT, &data);
> > > +
> > > +		/* TODO: handle two events sent at once */
> > > +		for (i = 0; i < 2; i++) {
> > > +			ret = poll(&pfd, 1, 1000);
> > > +			igt_assert(ret == 1);
> > > +			drmHandleEvent(data.drm_fd, &drm_event);
> > 
> > Not verifying that we didn't get too many events?
> 
> This is done in page_flip_handler
> 
> > I guess it might also be nice to have different subtests
> > for page flips and full modesets.
> 
> Yeah, I plan on expanding this test with more subtests
> 
> > I guess there is no generic way to force the kernel to modeset
> > a crtc we didn't explicitly include in the request, so can't
> > really test that scenario :(
> 
> Hmm, not sure I get this scenario. How could we modeset a CRTC not
> included in the atomic request? Can you elaborate?

Current scenarios are:
- cdclk frequency needs to be changed
- ran out of FDI bandwidth on IVB and need to reduce the
  other pipe's contribution

Future scenarios I want to get fixed:
- ran out of MST link bandwidth and need to reduce other pipes'
  contributions

> 
> > > +		}
> > > +	}
> > > +
> > > +	igt_fixture {
> > > +		close(data.drm_fd);
> > > +		kmstest_restore_vt_mode();
> > > +		igt_display_fini(data.display);
> > > +	}
> > > +}
> > > diff --git a/tests/meson.build b/tests/meson.build
> > > index a7b2b3221304..df00ab4a2f81 100644
> > > --- a/tests/meson.build
> > > +++ b/tests/meson.build
> > > @@ -14,6 +14,7 @@ test_progs = [
> > >  	'kms_atomic',
> > >  	'kms_atomic_interruptible',
> > >  	'kms_atomic_transition',
> > > +	'kms_atomic_multi',
> > >  	'kms_available_modes_crc',
> > >  	'kms_big_fb',
> > >  	'kms_busy',
> > > --
> > > 2.23.0
> > > 
> > > _______________________________________________
> > > 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] 7+ messages in thread

end of thread, other threads:[~2019-09-06 14:44 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-05 14:35 [igt-dev] [PATCH RFC i-g-t] tests/kms_atomic_multi: new test Simon Ser
2019-09-05 14:51 ` Ville Syrjälä
2019-09-06 14:15   ` Ser, Simon
2019-09-06 14:44     ` Ville Syrjälä
2019-09-05 15:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2019-09-05 18:47 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2019-09-06  6:15 ` [igt-dev] [PATCH RFC i-g-t] " Arkadiusz Hiler

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.