* [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe.
@ 2018-03-14 11:20 Maarten Lankhorst
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 1/5] lib/igt_kms: Add functions to get only a single output for a pipe Maarten Lankhorst
` (11 more replies)
0 siblings, 12 replies; 20+ messages in thread
From: Maarten Lankhorst @ 2018-03-14 11:20 UTC (permalink / raw)
To: igt-dev
Some tests don't have to be called on all outputs, because they only manipulate the pipe.
For these tests we create 2 helper functions, so we reduce the amount of modesets required.
for_each_pipe_with_single_output is a drop in replacement for for_each_pipe_with_valid_output,
and only iterates 1 output per pipe.
igt_get_single_output_for_pipe returns a valid output for a given pipe, if it can be found.
It can be used in place of a for_each_valid_output_on_pipe loop.
This is just a sample conversion, other tests can be changed when this is accepted..
Maarten Lankhorst (5):
lib/igt_kms: Add functions to get only a single output for a pipe.
tests/kms_rmfb: Use for_each_pipe_with_single_output.
tests/kms_busy: Convert to using igt_get_single_output_for_pipe.
tests/kms_chv_cursor_fail: Reorder tests, and use
igt_display_require_output_on_pipe.
tests/kms_chv_cursor_fail: Handle cleanup better.
lib/igt_kms.c | 93 +++++++++++++++++++++++++++++++++++++++++++++
lib/igt_kms.h | 26 +++++++++++++
tests/kms_busy.c | 38 ++++++++----------
tests/kms_chv_cursor_fail.c | 90 +++++++++++++++++--------------------------
tests/kms_rmfb.c | 8 +---
5 files changed, 171 insertions(+), 84 deletions(-)
--
2.16.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* [igt-dev] [PATCH i-g-t 1/5] lib/igt_kms: Add functions to get only a single output for a pipe.
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
@ 2018-03-14 11:20 ` Maarten Lankhorst
2018-03-14 14:43 ` Ville Syrjälä
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 2/5] tests/kms_rmfb: Use for_each_pipe_with_single_output Maarten Lankhorst
` (10 subsequent siblings)
11 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-03-14 11:20 UTC (permalink / raw)
To: igt-dev
igt_get_single_output_for_pipe() will give a valid output for a pipe,
for_each_pipe_with_single_output will iterate over all pipes, and
will be called for each pipe with an output once.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
lib/igt_kms.c | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_kms.h | 26 +++++++++++++++++
2 files changed, 119 insertions(+)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 6bac4d1fae50..1313ef12ebc5 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -2195,6 +2195,99 @@ igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type)
return &pipe->planes[plane_idx];
}
+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_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t **chosen_outputs)
+{
+ unsigned full_pipe_mask = (1 << (display->n_pipes)) - 1, assigned_pipes = 0;
+ igt_output_t *output;
+ int i, j;
+
+ memset(chosen_outputs, 0, sizeof(*chosen_outputs) * display->n_pipes);
+
+ /*
+ * Try to assign all outputs to the first available CRTC for
+ * it, start with the outputs restricted to 1 pipe, then increase
+ * number of pipes until we assign connectors to all pipes.
+ */
+ for (i = 0; i <= display->n_pipes; i++) {
+ for_each_connected_output(display, output) {
+ uint32_t pipe_mask = output->config.valid_crtc_idx_mask & full_pipe_mask;
+ bool found = false;
+
+ if (output_is_internal_panel(output)) {
+ /*
+ * Internal panel should be assigned to pipe A
+ * if possible, so make sure they're enumerated
+ * first.
+ */
+
+ if (i)
+ continue;
+ } else if (__builtin_popcount(pipe_mask) != i)
+ continue;
+
+ for (j = 0; j < display->n_pipes; j++) {
+ bool pipe_assigned = assigned_pipes & (1 << j);
+
+ if (pipe_assigned || !(pipe_mask & (1 << j)))
+ continue;
+
+ if (!found) {
+ /* We found an unassigned pipe, use it! */
+ found = true;
+ assigned_pipes |= 1 << j;
+ chosen_outputs[j] = output;
+ } else if (!chosen_outputs[j] ||
+ /*
+ * Overwrite internal panel if not assigned,
+ * external outputs are faster to do modesets
+ */
+ output_is_internal_panel(chosen_outputs[j]))
+ chosen_outputs[j] = output;
+ }
+
+ if (!found)
+ igt_warn("Output %s could not be assigned to a pipe\n",
+ igt_output_name(output));
+ }
+ }
+
+ return chosen_outputs;
+}
+
+/**
+ * igt_get_single_output_for_pipe:
+ * @display: a pointer to an #igt_display_t structure
+ * @pipe: The pipe for which an #igt_output_t must be returned.
+ *
+ * Get a compatible output for a pipe.
+ *
+ * Returns: A compatible output for a given pipe, or NULL.
+ */
+igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe pipe)
+{
+ igt_output_t *chosen_outputs[display->n_pipes];
+
+ igt_assert(pipe != PIPE_NONE);
+ igt_require(pipe < display->n_pipes);
+
+ __igt_pipe_populate_outputs(display, chosen_outputs);
+
+ return chosen_outputs[pipe];
+}
+
static igt_output_t *igt_pipe_get_output(igt_pipe_t *pipe)
{
igt_display_t *display = pipe->display;
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 1c46186e8a9d..178b636c143e 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -380,7 +380,9 @@ igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
igt_output_t *igt_output_from_connector(igt_display_t *display,
drmModeConnector *connector);
+
igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type);
+igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe pipe);
void igt_pipe_request_out_fence(igt_pipe_t *pipe);
@@ -468,6 +470,10 @@ static inline bool igt_output_is_connected(igt_output_t *output)
*
* This for loop is called over all connected outputs. This function
* will try every combination of @pipe and @output.
+ *
+ * If you only need to test a single output for each pipe, use
+ * for_each_pipe_with_single_output(), if you only need an
+ * output for a single pipe, use igt_get_single_output_for_pipe().
*/
#define for_each_pipe_with_valid_output(display, pipe, output) \
for (int con__ = (pipe) = 0; \
@@ -476,6 +482,26 @@ static inline bool igt_output_is_connected(igt_output_t *output)
for_each_if ((((output) = &(display)->outputs[con__]), \
igt_pipe_connector_valid((pipe), (output))))
+igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
+ igt_output_t **chosen_outputs);
+
+/**
+ * for_each_pipe_with_single_output:
+ * @display: a pointer to an #igt_display_t structure
+ * @pipe: The pipe for which this @pipe / @output combination is valid.
+ * @output: The output for which this @pipe / @output combination is valid.
+ *
+ * This loop is called over all pipes, and will try to find a compatible output
+ * for each pipe. Unlike for_each_pipe_with_valid_output(), this function will
+ * be called at most once for each pipe.
+ */
+#define for_each_pipe_with_single_output(display, pipe, output) \
+ for (igt_output_t *__outputs[(display)->n_pipes], \
+ **__output = __igt_pipe_populate_outputs((display), __outputs); \
+ __output < &__outputs[(display)->n_pipes]; __output++) \
+ for_each_if (*__output && \
+ ((pipe) = (__outputs - __output), (output) = *__output, 1))
+
/**
* for_each_valid_output_on_pipe:
* @display: a pointer to an #igt_display_t structure
--
2.16.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [igt-dev] [PATCH i-g-t 2/5] tests/kms_rmfb: Use for_each_pipe_with_single_output.
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 1/5] lib/igt_kms: Add functions to get only a single output for a pipe Maarten Lankhorst
@ 2018-03-14 11:20 ` Maarten Lankhorst
2018-03-14 14:44 ` Ville Syrjälä
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 3/5] tests/kms_busy: Convert to using igt_get_single_output_for_pipe Maarten Lankhorst
` (9 subsequent siblings)
11 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-03-14 11:20 UTC (permalink / raw)
To: igt-dev
A single output on every pipe will do for testing.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_rmfb.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
index c97adceea761..f3461cc919e9 100644
--- a/tests/kms_rmfb.c
+++ b/tests/kms_rmfb.c
@@ -129,15 +129,10 @@ static void
run_rmfb_test(struct rmfb_data *data, bool reopen)
{
igt_output_t *output;
- int valid_tests = 0;
enum pipe pipe;
- for_each_pipe_with_valid_output(&data->display, pipe, output) {
+ for_each_pipe_with_single_output(&data->display, pipe, output)
test_rmfb(data, output, pipe, reopen);
- valid_tests = 1;
- }
-
- igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
}
igt_main
@@ -152,6 +147,7 @@ igt_main
kmstest_set_vt_graphics_mode();
igt_display_init(&data.display, data.drm_fd);
+ igt_display_require_output(&data.display);
}
igt_subtest_f("rmfb-ioctl")
--
2.16.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [igt-dev] [PATCH i-g-t 3/5] tests/kms_busy: Convert to using igt_get_single_output_for_pipe.
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 1/5] lib/igt_kms: Add functions to get only a single output for a pipe Maarten Lankhorst
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 2/5] tests/kms_rmfb: Use for_each_pipe_with_single_output Maarten Lankhorst
@ 2018-03-14 11:20 ` Maarten Lankhorst
2018-03-14 14:46 ` Ville Syrjälä
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 4/5] tests/kms_chv_cursor_fail: Reorder tests, and use igt_display_require_output_on_pipe Maarten Lankhorst
` (8 subsequent siblings)
11 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-03-14 11:20 UTC (permalink / raw)
To: igt-dev
Put a single igt_display_require_output_on_pipe in the fixture,
so we know we always have an output on the pipe and can always
assume it's not NULL.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_busy.c | 38 +++++++++++++++-----------------------
1 file changed, 15 insertions(+), 23 deletions(-)
diff --git a/tests/kms_busy.c b/tests/kms_busy.c
index 0828a8b38a06..5b4959681025 100644
--- a/tests/kms_busy.c
+++ b/tests/kms_busy.c
@@ -35,31 +35,23 @@ IGT_TEST_DESCRIPTION("Basic check of KMS ABI with busy framebuffers.");
static igt_output_t *
set_fb_on_crtc(igt_display_t *dpy, int pipe, struct igt_fb *fb)
{
+ drmModeModeInfoPtr mode;
+ igt_plane_t *primary;
igt_output_t *output;
- for_each_valid_output_on_pipe(dpy, pipe, output) {
- drmModeModeInfoPtr mode;
- igt_plane_t *primary;
-
- if (output->pending_pipe != PIPE_NONE)
- continue;
-
- igt_output_set_pipe(output, pipe);
- mode = igt_output_get_mode(output);
+ output = igt_get_single_output_for_pipe(dpy, pipe);
- igt_create_pattern_fb(dpy->drm_fd,
- mode->hdisplay, mode->vdisplay,
- DRM_FORMAT_XRGB8888,
- LOCAL_I915_FORMAT_MOD_X_TILED,
- fb);
+ igt_output_set_pipe(output, pipe);
+ mode = igt_output_get_mode(output);
- primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
- igt_plane_set_fb(primary, fb);
+ igt_create_pattern_fb(dpy->drm_fd, mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_X_TILED, fb);
- return output;
- }
+ primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+ igt_plane_set_fb(primary, fb);
- return NULL;
+ return output;
}
static void do_cleanup_display(igt_display_t *dpy)
@@ -168,7 +160,7 @@ static void test_flip(igt_display_t *dpy, unsigned ring, int pipe, bool modeset)
signal(SIGALRM, sighandler);
- igt_require((output = set_fb_on_crtc(dpy, pipe, &fb[0])));
+ output = set_fb_on_crtc(dpy, pipe, &fb[0]);
igt_display_commit2(dpy, COMMIT_LEGACY);
igt_create_pattern_fb(dpy->drm_fd,
@@ -246,7 +238,7 @@ static void test_hang(igt_display_t *dpy, unsigned ring,
igt_output_t *output;
igt_plane_t *primary;
- igt_require((output = set_fb_on_crtc(dpy, pipe, &fb[0])));
+ output = set_fb_on_crtc(dpy, pipe, &fb[0]);
igt_display_commit2(dpy, COMMIT_ATOMIC);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
@@ -290,7 +282,7 @@ static void test_pageflip_modeset_hang(igt_display_t *dpy,
igt_plane_t *primary;
igt_spin_t *t;
- igt_require((output = set_fb_on_crtc(dpy, pipe, &fb)));
+ output = set_fb_on_crtc(dpy, pipe, &fb);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
@@ -337,7 +329,7 @@ igt_main
errno = 0;
igt_fixture {
- igt_skip_on(n >= display.n_pipes);
+ igt_display_require_output_on_pipe(&display, n);
}
igt_subtest_f("basic-flip-%s",
--
2.16.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [igt-dev] [PATCH i-g-t 4/5] tests/kms_chv_cursor_fail: Reorder tests, and use igt_display_require_output_on_pipe.
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
` (2 preceding siblings ...)
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 3/5] tests/kms_busy: Convert to using igt_get_single_output_for_pipe Maarten Lankhorst
@ 2018-03-14 11:20 ` Maarten Lankhorst
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 5/5] tests/kms_chv_cursor_fail: Handle cleanup better Maarten Lankhorst
` (7 subsequent siblings)
11 siblings, 0 replies; 20+ messages in thread
From: Maarten Lankhorst @ 2018-03-14 11:20 UTC (permalink / raw)
To: igt-dev
This test is purely about the pipe fifo underrun, so not all outputs
need to be tested. Reorder the tests to run per pipe first, this will
save a modeset for all different sizes when the tests are run per-binary,
and another modeset on each subtest when more than 1 output is connected.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_chv_cursor_fail.c | 85 ++++++++++++++++++---------------------------
1 file changed, 34 insertions(+), 51 deletions(-)
diff --git a/tests/kms_chv_cursor_fail.c b/tests/kms_chv_cursor_fail.c
index ffbe39d0c41b..0dd366c3b4b1 100644
--- a/tests/kms_chv_cursor_fail.c
+++ b/tests/kms_chv_cursor_fail.c
@@ -246,7 +246,7 @@ static void prepare_crtc(data_t *data)
primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
igt_plane_set_fb(primary, &data->primary_fb);
- igt_display_commit(display);
+ igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
data->jump_x = (mode->hdisplay - data->curw) / 2;
data->jump_y = (mode->vdisplay - data->curh) / 2;
@@ -262,34 +262,15 @@ static void prepare_crtc(data_t *data)
static void test_crtc(data_t *data, unsigned int edges)
{
- igt_display_t *display = &data->display;
- int valid_tests = 0;
-
cleanup_crtc(data);
create_cursor_fb(data, data->curw, data->curh);
- for_each_valid_output_on_pipe(display, data->pipe, data->output) {
- prepare_crtc(data);
-
- valid_tests++;
-
- igt_info("Beginning %s on pipe %s, connector %s\n",
- igt_subtest_name(),
- kmstest_pipe_name(data->pipe),
- igt_output_name(data->output));
+ prepare_crtc(data);
- test_edges(data, edges);
-
- igt_info("\n%s on pipe %s, connector %s: PASSED\n\n",
- igt_subtest_name(),
- kmstest_pipe_name(data->pipe),
- igt_output_name(data->output));
- }
+ test_edges(data, edges);
igt_remove_fb(data->drm_fd, &data->fb);
-
- igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
}
static int opt_handler(int opt, int opt_index, void *_data)
@@ -354,36 +335,38 @@ int main(int argc, char **argv)
igt_display_init(&data.display, data.drm_fd);
}
- for (data.curw = 64; data.curw <= 256; data.curw *= 2) {
- data.curh = data.curw;
- for (data.pipe = PIPE_A; data.pipe <= PIPE_C; data.pipe++) {
- igt_subtest_f("pipe-%s-%dx%d-left-edge",
- kmstest_pipe_name(data.pipe),
- data.curw, data.curh) {
- igt_require(data.pipe < data.display.n_pipes);
- igt_require(data.curw <= max_curw && data.curh <= max_curh);
- test_crtc(&data, EDGE_LEFT);
- }
- igt_subtest_f("pipe-%s-%dx%d-right-edge",
- kmstest_pipe_name(data.pipe),
- data.curw, data.curh) {
- igt_require(data.pipe < data.display.n_pipes);
- igt_require(data.curw <= max_curw && data.curh <= max_curh);
- test_crtc(&data, EDGE_RIGHT);
+ for_each_pipe_static(data.pipe) {
+ igt_subtest_group {
+ igt_fixture {
+ igt_display_require_output_on_pipe(&data.display, data.pipe);
+ data.output = igt_get_single_output_for_pipe(&data.display, data.pipe);
}
- igt_subtest_f("pipe-%s-%dx%d-top-edge",
- kmstest_pipe_name(data.pipe),
- data.curw, data.curh) {
- igt_require(data.pipe < data.display.n_pipes);
- igt_require(data.curw <= max_curw && data.curh <= max_curh);
- test_crtc(&data, EDGE_TOP);
- }
- igt_subtest_f("pipe-%s-%dx%d-bottom-edge",
- kmstest_pipe_name(data.pipe),
- data.curw, data.curh) {
- igt_require(data.pipe < data.display.n_pipes);
- igt_require(data.curw <= max_curw && data.curh <= max_curh);
- test_crtc(&data, EDGE_BOTTOM);
+
+ for (data.curw = 64; data.curw <= 256; data.curw *= 2) {
+ data.curh = data.curw;
+
+ igt_fixture
+ igt_require(data.curw <= max_curw && data.curh <= max_curh);
+
+ igt_subtest_f("pipe-%s-%dx%d-left-edge",
+ kmstest_pipe_name(data.pipe),
+ data.curw, data.curh)
+ test_crtc(&data, EDGE_LEFT);
+
+ igt_subtest_f("pipe-%s-%dx%d-right-edge",
+ kmstest_pipe_name(data.pipe),
+ data.curw, data.curh)
+ test_crtc(&data, EDGE_RIGHT);
+
+ igt_subtest_f("pipe-%s-%dx%d-top-edge",
+ kmstest_pipe_name(data.pipe),
+ data.curw, data.curh)
+ test_crtc(&data, EDGE_TOP);
+
+ igt_subtest_f("pipe-%s-%dx%d-bottom-edge",
+ kmstest_pipe_name(data.pipe),
+ data.curw, data.curh)
+ test_crtc(&data, EDGE_BOTTOM);
}
}
}
--
2.16.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [igt-dev] [PATCH i-g-t 5/5] tests/kms_chv_cursor_fail: Handle cleanup better.
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
` (3 preceding siblings ...)
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 4/5] tests/kms_chv_cursor_fail: Reorder tests, and use igt_display_require_output_on_pipe Maarten Lankhorst
@ 2018-03-14 11:20 ` Maarten Lankhorst
2018-03-14 14:48 ` Ville Syrjälä
2018-03-14 13:37 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Patchwork
` (6 subsequent siblings)
11 siblings, 1 reply; 20+ messages in thread
From: Maarten Lankhorst @ 2018-03-14 11:20 UTC (permalink / raw)
To: igt-dev
Clean up cursor fb in cleanup_crtc, which means that cursor fb
has to be created after prepare_crtc() is called.
This will fix a small leak when a subtest fails.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_chv_cursor_fail.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/tests/kms_chv_cursor_fail.c b/tests/kms_chv_cursor_fail.c
index 0dd366c3b4b1..7138e549aeb7 100644
--- a/tests/kms_chv_cursor_fail.c
+++ b/tests/kms_chv_cursor_fail.c
@@ -224,6 +224,7 @@ static void cleanup_crtc(data_t *data)
data->pipe_crc = NULL;
igt_remove_fb(data->drm_fd, &data->primary_fb);
+ igt_remove_fb(data->drm_fd, &data->fb);
}
static void prepare_crtc(data_t *data)
@@ -262,15 +263,11 @@ static void prepare_crtc(data_t *data)
static void test_crtc(data_t *data, unsigned int edges)
{
- cleanup_crtc(data);
+ prepare_crtc(data);
create_cursor_fb(data, data->curw, data->curh);
- prepare_crtc(data);
-
test_edges(data, edges);
-
- igt_remove_fb(data->drm_fd, &data->fb);
}
static int opt_handler(int opt, int opt_index, void *_data)
--
2.16.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe.
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
` (4 preceding siblings ...)
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 5/5] tests/kms_chv_cursor_fail: Handle cleanup better Maarten Lankhorst
@ 2018-03-14 13:37 ` Patchwork
2018-03-14 17:22 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
` (5 subsequent siblings)
11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-03-14 13:37 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
== Series Details ==
Series: lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe.
URL : https://patchwork.freedesktop.org/series/39953/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
518ccf1d1b452b9d26ddcf54249fb6e91f451f90 tests/kms_frontbuffer_tracking: Respect mode when collecting CRCs.
with latest DRM-Tip kernel build CI_DRM_3926
47934443f321 drm-tip: 2018y-03m-14d-12h-41m-28s UTC integration manifest
Testlist changes:
+igt@kms_chv_cursor_fail@pipe-d-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-top-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-top-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-top-edge
---- Known issues:
Test gem_mmap_gtt:
Subgroup basic-small-bo-tiledx:
fail -> PASS (fi-gdg-551) fdo#102575
fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:434s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:383s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:298s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:512s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:513s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:526s
fi-cfl-8700k total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:413s
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:575s
fi-cfl-u total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:514s
fi-cnl-y3 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:587s
fi-elk-e7500 total:288 pass:229 dwarn:0 dfail:0 fail:0 skip:59 time:429s
fi-gdg-551 total:288 pass:180 dwarn:0 dfail:0 fail:0 skip:108 time:318s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:530s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:404s
fi-ilk-650 total:288 pass:228 dwarn:0 dfail:0 fail:0 skip:60 time:429s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:427s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:475s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:470s
fi-kbl-r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:514s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:665s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:445s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:531s
fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:544s
fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:506s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:496s
fi-skl-guc total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:428s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:443s
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:401s
Blacklisted hosts:
fi-cnl-drrs total:288 pass:257 dwarn:3 dfail:0 fail:0 skip:28 time:528s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1128/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 1/5] lib/igt_kms: Add functions to get only a single output for a pipe.
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 1/5] lib/igt_kms: Add functions to get only a single output for a pipe Maarten Lankhorst
@ 2018-03-14 14:43 ` Ville Syrjälä
2018-03-15 16:58 ` [igt-dev] [PATCH i-g-t] lib/igt_kms: Add functions to get only a single output for a pipe, v2 Maarten Lankhorst
0 siblings, 1 reply; 20+ messages in thread
From: Ville Syrjälä @ 2018-03-14 14:43 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
On Wed, Mar 14, 2018 at 12:20:17PM +0100, Maarten Lankhorst wrote:
> igt_get_single_output_for_pipe() will give a valid output for a pipe,
> for_each_pipe_with_single_output will iterate over all pipes, and
> will be called for each pipe with an output once.
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> lib/igt_kms.c | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> lib/igt_kms.h | 26 +++++++++++++++++
> 2 files changed, 119 insertions(+)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 6bac4d1fae50..1313ef12ebc5 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -2195,6 +2195,99 @@ igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type)
> return &pipe->planes[plane_idx];
> }
>
> +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_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t **chosen_outputs)
> +{
> + unsigned full_pipe_mask = (1 << (display->n_pipes)) - 1, assigned_pipes = 0;
> + igt_output_t *output;
> + int i, j;
> +
> + memset(chosen_outputs, 0, sizeof(*chosen_outputs) * display->n_pipes);
> +
> + /*
> + * Try to assign all outputs to the first available CRTC for
> + * it, start with the outputs restricted to 1 pipe, then increase
> + * number of pipes until we assign connectors to all pipes.
> + */
> + for (i = 0; i <= display->n_pipes; i++) {
> + for_each_connected_output(display, output) {
> + uint32_t pipe_mask = output->config.valid_crtc_idx_mask & full_pipe_mask;
> + bool found = false;
> +
> + if (output_is_internal_panel(output)) {
> + /*
> + * Internal panel should be assigned to pipe A
> + * if possible, so make sure they're enumerated
> + * first.
> + */
> +
> + if (i)
> + continue;
> + } else if (__builtin_popcount(pipe_mask) != i)
> + continue;
> +
> + for (j = 0; j < display->n_pipes; j++) {
> + bool pipe_assigned = assigned_pipes & (1 << j);
> +
> + if (pipe_assigned || !(pipe_mask & (1 << j)))
> + continue;
> +
> + if (!found) {
> + /* We found an unassigned pipe, use it! */
> + found = true;
> + assigned_pipes |= 1 << j;
> + chosen_outputs[j] = output;
> + } else if (!chosen_outputs[j] ||
> + /*
> + * Overwrite internal panel if not assigned,
> + * external outputs are faster to do modesets
> + */
> + output_is_internal_panel(chosen_outputs[j]))
> + chosen_outputs[j] = output;
> + }
I think this might not be find the optimal solution in some cases since
it always picks the first available pipe. So in theory we might not pick
as many outputs that are actually available. But I suppose such
configurations shouldn't be commoin so probably will do fine for most
cases.
> +
> + if (!found)
> + igt_warn("Output %s could not be assigned to a pipe\n",
> + igt_output_name(output));
> + }
> + }
> +
> + return chosen_outputs;
> +}
> +
> +/**
> + * igt_get_single_output_for_pipe:
> + * @display: a pointer to an #igt_display_t structure
> + * @pipe: The pipe for which an #igt_output_t must be returned.
> + *
> + * Get a compatible output for a pipe.
> + *
> + * Returns: A compatible output for a given pipe, or NULL.
> + */
> +igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe pipe)
> +{
> + igt_output_t *chosen_outputs[display->n_pipes];
> +
> + igt_assert(pipe != PIPE_NONE);
> + igt_require(pipe < display->n_pipes);
> +
> + __igt_pipe_populate_outputs(display, chosen_outputs);
> +
> + return chosen_outputs[pipe];
> +}
> +
> static igt_output_t *igt_pipe_get_output(igt_pipe_t *pipe)
> {
> igt_display_t *display = pipe->display;
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 1c46186e8a9d..178b636c143e 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -380,7 +380,9 @@ igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
> igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
> igt_output_t *igt_output_from_connector(igt_display_t *display,
> drmModeConnector *connector);
> +
> igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type);
> +igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe pipe);
>
> void igt_pipe_request_out_fence(igt_pipe_t *pipe);
>
> @@ -468,6 +470,10 @@ static inline bool igt_output_is_connected(igt_output_t *output)
> *
> * This for loop is called over all connected outputs. This function
> * will try every combination of @pipe and @output.
> + *
> + * If you only need to test a single output for each pipe, use
> + * for_each_pipe_with_single_output(), if you only need an
> + * output for a single pipe, use igt_get_single_output_for_pipe().
> */
> #define for_each_pipe_with_valid_output(display, pipe, output) \
> for (int con__ = (pipe) = 0; \
> @@ -476,6 +482,26 @@ static inline bool igt_output_is_connected(igt_output_t *output)
> for_each_if ((((output) = &(display)->outputs[con__]), \
> igt_pipe_connector_valid((pipe), (output))))
>
> +igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
> + igt_output_t **chosen_outputs);
> +
> +/**
> + * for_each_pipe_with_single_output:
> + * @display: a pointer to an #igt_display_t structure
> + * @pipe: The pipe for which this @pipe / @output combination is valid.
> + * @output: The output for which this @pipe / @output combination is valid.
> + *
> + * This loop is called over all pipes, and will try to find a compatible output
> + * for each pipe. Unlike for_each_pipe_with_valid_output(), this function will
> + * be called at most once for each pipe.
> + */
> +#define for_each_pipe_with_single_output(display, pipe, output) \
> + for (igt_output_t *__outputs[(display)->n_pipes], \
> + **__output = __igt_pipe_populate_outputs((display), __outputs); \
> + __output < &__outputs[(display)->n_pipes]; __output++) \
> + for_each_if (*__output && \
> + ((pipe) = (__outputs - __output), (output) = *__output, 1))
That requires quite a sophisticated parser :) But it does look correct to me.
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> +
> /**
> * for_each_valid_output_on_pipe:
> * @display: a pointer to an #igt_display_t structure
> --
> 2.16.2
>
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
--
Ville Syrjälä
Intel OTC
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 2/5] tests/kms_rmfb: Use for_each_pipe_with_single_output.
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 2/5] tests/kms_rmfb: Use for_each_pipe_with_single_output Maarten Lankhorst
@ 2018-03-14 14:44 ` Ville Syrjälä
0 siblings, 0 replies; 20+ messages in thread
From: Ville Syrjälä @ 2018-03-14 14:44 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
On Wed, Mar 14, 2018 at 12:20:18PM +0100, Maarten Lankhorst wrote:
> A single output on every pipe will do for testing.
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> tests/kms_rmfb.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
> index c97adceea761..f3461cc919e9 100644
> --- a/tests/kms_rmfb.c
> +++ b/tests/kms_rmfb.c
> @@ -129,15 +129,10 @@ static void
> run_rmfb_test(struct rmfb_data *data, bool reopen)
> {
> igt_output_t *output;
> - int valid_tests = 0;
> enum pipe pipe;
>
> - for_each_pipe_with_valid_output(&data->display, pipe, output) {
> + for_each_pipe_with_single_output(&data->display, pipe, output)
> test_rmfb(data, output, pipe, reopen);
> - valid_tests = 1;
> - }
> -
> - igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
> }
>
> igt_main
> @@ -152,6 +147,7 @@ igt_main
> kmstest_set_vt_graphics_mode();
>
> igt_display_init(&data.display, data.drm_fd);
> + igt_display_require_output(&data.display);
> }
>
> igt_subtest_f("rmfb-ioctl")
> --
> 2.16.2
>
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
--
Ville Syrjälä
Intel OTC
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 3/5] tests/kms_busy: Convert to using igt_get_single_output_for_pipe.
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 3/5] tests/kms_busy: Convert to using igt_get_single_output_for_pipe Maarten Lankhorst
@ 2018-03-14 14:46 ` Ville Syrjälä
2018-03-16 8:28 ` [igt-dev] [PATCH i-g-t] tests/kms_busy: Convert to using igt_get_single_output_for_pipe, v2 Maarten Lankhorst
0 siblings, 1 reply; 20+ messages in thread
From: Ville Syrjälä @ 2018-03-14 14:46 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
On Wed, Mar 14, 2018 at 12:20:19PM +0100, Maarten Lankhorst wrote:
> Put a single igt_display_require_output_on_pipe in the fixture,
> so we know we always have an output on the pipe and can always
> assume it's not NULL.
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> tests/kms_busy.c | 38 +++++++++++++++-----------------------
> 1 file changed, 15 insertions(+), 23 deletions(-)
>
> diff --git a/tests/kms_busy.c b/tests/kms_busy.c
> index 0828a8b38a06..5b4959681025 100644
> --- a/tests/kms_busy.c
> +++ b/tests/kms_busy.c
> @@ -35,31 +35,23 @@ IGT_TEST_DESCRIPTION("Basic check of KMS ABI with busy framebuffers.");
> static igt_output_t *
> set_fb_on_crtc(igt_display_t *dpy, int pipe, struct igt_fb *fb)
> {
> + drmModeModeInfoPtr mode;
> + igt_plane_t *primary;
> igt_output_t *output;
>
> - for_each_valid_output_on_pipe(dpy, pipe, output) {
> - drmModeModeInfoPtr mode;
> - igt_plane_t *primary;
> -
> - if (output->pending_pipe != PIPE_NONE)
> - continue;
> -
> - igt_output_set_pipe(output, pipe);
> - mode = igt_output_get_mode(output);
> + output = igt_get_single_output_for_pipe(dpy, pipe);
>
> - igt_create_pattern_fb(dpy->drm_fd,
> - mode->hdisplay, mode->vdisplay,
> - DRM_FORMAT_XRGB8888,
> - LOCAL_I915_FORMAT_MOD_X_TILED,
> - fb);
> + igt_output_set_pipe(output, pipe);
> + mode = igt_output_get_mode(output);
>
> - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> - igt_plane_set_fb(primary, fb);
> + igt_create_pattern_fb(dpy->drm_fd, mode->hdisplay, mode->vdisplay,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_X_TILED, fb);
>
> - return output;
> - }
> + primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> + igt_plane_set_fb(primary, fb);
>
> - return NULL;
> + return output;
> }
>
> static void do_cleanup_display(igt_display_t *dpy)
> @@ -168,7 +160,7 @@ static void test_flip(igt_display_t *dpy, unsigned ring, int pipe, bool modeset)
>
> signal(SIGALRM, sighandler);
>
> - igt_require((output = set_fb_on_crtc(dpy, pipe, &fb[0])));
> + output = set_fb_on_crtc(dpy, pipe, &fb[0]);
> igt_display_commit2(dpy, COMMIT_LEGACY);
>
> igt_create_pattern_fb(dpy->drm_fd,
> @@ -246,7 +238,7 @@ static void test_hang(igt_display_t *dpy, unsigned ring,
> igt_output_t *output;
> igt_plane_t *primary;
>
> - igt_require((output = set_fb_on_crtc(dpy, pipe, &fb[0])));
> + output = set_fb_on_crtc(dpy, pipe, &fb[0]);
> igt_display_commit2(dpy, COMMIT_ATOMIC);
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>
> @@ -290,7 +282,7 @@ static void test_pageflip_modeset_hang(igt_display_t *dpy,
> igt_plane_t *primary;
> igt_spin_t *t;
>
> - igt_require((output = set_fb_on_crtc(dpy, pipe, &fb)));
> + output = set_fb_on_crtc(dpy, pipe, &fb);
> primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>
> igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
> @@ -337,7 +329,7 @@ igt_main
> errno = 0;
>
> igt_fixture {
> - igt_skip_on(n >= display.n_pipes);
> + igt_display_require_output_on_pipe(&display, n);
> }
>
> igt_subtest_f("basic-flip-%s",
> --
> 2.16.2
>
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
--
Ville Syrjälä
Intel OTC
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 5/5] tests/kms_chv_cursor_fail: Handle cleanup better.
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 5/5] tests/kms_chv_cursor_fail: Handle cleanup better Maarten Lankhorst
@ 2018-03-14 14:48 ` Ville Syrjälä
2018-03-19 15:07 ` Maarten Lankhorst
0 siblings, 1 reply; 20+ messages in thread
From: Ville Syrjälä @ 2018-03-14 14:48 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
On Wed, Mar 14, 2018 at 12:20:21PM +0100, Maarten Lankhorst wrote:
> Clean up cursor fb in cleanup_crtc, which means that cursor fb
> has to be created after prepare_crtc() is called.
>
> This will fix a small leak when a subtest fails.
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> tests/kms_chv_cursor_fail.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/tests/kms_chv_cursor_fail.c b/tests/kms_chv_cursor_fail.c
> index 0dd366c3b4b1..7138e549aeb7 100644
> --- a/tests/kms_chv_cursor_fail.c
> +++ b/tests/kms_chv_cursor_fail.c
> @@ -224,6 +224,7 @@ static void cleanup_crtc(data_t *data)
> data->pipe_crc = NULL;
>
> igt_remove_fb(data->drm_fd, &data->primary_fb);
> + igt_remove_fb(data->drm_fd, &data->fb);
> }
>
> static void prepare_crtc(data_t *data)
> @@ -262,15 +263,11 @@ static void prepare_crtc(data_t *data)
>
> static void test_crtc(data_t *data, unsigned int edges)
> {
> - cleanup_crtc(data);
> + prepare_crtc(data);
>
> create_cursor_fb(data, data->curw, data->curh);
4 and 5 lgtm as well
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> - prepare_crtc(data);
> -
> test_edges(data, edges);
> -
> - igt_remove_fb(data->drm_fd, &data->fb);
> }
>
> static int opt_handler(int opt, int opt_index, void *_data)
> --
> 2.16.2
>
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
--
Ville Syrjälä
Intel OTC
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe.
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
` (5 preceding siblings ...)
2018-03-14 13:37 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Patchwork
@ 2018-03-14 17:22 ` Patchwork
2018-03-15 18:31 ` [igt-dev] ✗ Fi.CI.BAT: warning for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev2) Patchwork
` (4 subsequent siblings)
11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-03-14 17:22 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
== Series Details ==
Series: lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe.
URL : https://patchwork.freedesktop.org/series/39953/
State : failure
== Summary ==
---- Possible new issues:
Test kms_rmfb:
Subgroup close-fd:
pass -> CRASH (shard-apl)
pass -> CRASH (shard-hsw)
pass -> CRASH (shard-snb)
Subgroup rmfb-ioctl:
pass -> CRASH (shard-apl)
pass -> CRASH (shard-hsw)
pass -> CRASH (shard-snb)
---- Known issues:
Test kms_flip:
Subgroup dpms-vs-vblank-race:
pass -> FAIL (shard-hsw) fdo#103060
Subgroup flip-vs-panning-vs-hang-interruptible:
dmesg-warn -> PASS (shard-snb) fdo#103821
Subgroup plain-flip-fb-recreate:
pass -> FAIL (shard-hsw) fdo#100368
Test kms_plane:
Subgroup plane-position-hole-dpms-pipe-b-planes:
fail -> PASS (shard-apl) fdo#103166 +1
Test kms_rotation_crc:
Subgroup sprite-rotation-180:
pass -> FAIL (shard-snb) fdo#105185 +1
fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
fdo#103821 https://bugs.freedesktop.org/show_bug.cgi?id=103821
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
fdo#105185 https://bugs.freedesktop.org/show_bug.cgi?id=105185
shard-apl total:3446 pass:1796 dwarn:1 dfail:0 fail:8 skip:1637 time:12420s
shard-hsw total:3480 pass:1765 dwarn:1 dfail:0 fail:4 skip:1707 time:11728s
shard-snb total:3480 pass:1356 dwarn:1 dfail:0 fail:4 skip:2117 time:7201s
Blacklisted hosts:
shard-kbl total:3395 pass:1882 dwarn:1 dfail:0 fail:9 skip:1500 time:9138s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1128/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* [igt-dev] [PATCH i-g-t] lib/igt_kms: Add functions to get only a single output for a pipe, v2.
2018-03-14 14:43 ` Ville Syrjälä
@ 2018-03-15 16:58 ` Maarten Lankhorst
0 siblings, 0 replies; 20+ messages in thread
From: Maarten Lankhorst @ 2018-03-15 16:58 UTC (permalink / raw)
To: igt-dev
igt_get_single_output_for_pipe() will give a valid output for a pipe,
for_each_pipe_with_single_output will iterate over all pipes, and
will be called for each pipe with an output once.
Changes since v1:
- pipe = __outputs - __output returned a negative number for pipe,
correctly set it to __output - __outputs.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
The macro was almost correct! Good thing I had kms_rmfb expose the flaw. :)
lib/igt_kms.c | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_kms.h | 26 +++++++++++++++++
2 files changed, 119 insertions(+)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 6bac4d1fae50..1313ef12ebc5 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -2195,6 +2195,99 @@ igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type)
return &pipe->planes[plane_idx];
}
+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_output_t **__igt_pipe_populate_outputs(igt_display_t *display, igt_output_t **chosen_outputs)
+{
+ unsigned full_pipe_mask = (1 << (display->n_pipes)) - 1, assigned_pipes = 0;
+ igt_output_t *output;
+ int i, j;
+
+ memset(chosen_outputs, 0, sizeof(*chosen_outputs) * display->n_pipes);
+
+ /*
+ * Try to assign all outputs to the first available CRTC for
+ * it, start with the outputs restricted to 1 pipe, then increase
+ * number of pipes until we assign connectors to all pipes.
+ */
+ for (i = 0; i <= display->n_pipes; i++) {
+ for_each_connected_output(display, output) {
+ uint32_t pipe_mask = output->config.valid_crtc_idx_mask & full_pipe_mask;
+ bool found = false;
+
+ if (output_is_internal_panel(output)) {
+ /*
+ * Internal panel should be assigned to pipe A
+ * if possible, so make sure they're enumerated
+ * first.
+ */
+
+ if (i)
+ continue;
+ } else if (__builtin_popcount(pipe_mask) != i)
+ continue;
+
+ for (j = 0; j < display->n_pipes; j++) {
+ bool pipe_assigned = assigned_pipes & (1 << j);
+
+ if (pipe_assigned || !(pipe_mask & (1 << j)))
+ continue;
+
+ if (!found) {
+ /* We found an unassigned pipe, use it! */
+ found = true;
+ assigned_pipes |= 1 << j;
+ chosen_outputs[j] = output;
+ } else if (!chosen_outputs[j] ||
+ /*
+ * Overwrite internal panel if not assigned,
+ * external outputs are faster to do modesets
+ */
+ output_is_internal_panel(chosen_outputs[j]))
+ chosen_outputs[j] = output;
+ }
+
+ if (!found)
+ igt_warn("Output %s could not be assigned to a pipe\n",
+ igt_output_name(output));
+ }
+ }
+
+ return chosen_outputs;
+}
+
+/**
+ * igt_get_single_output_for_pipe:
+ * @display: a pointer to an #igt_display_t structure
+ * @pipe: The pipe for which an #igt_output_t must be returned.
+ *
+ * Get a compatible output for a pipe.
+ *
+ * Returns: A compatible output for a given pipe, or NULL.
+ */
+igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe pipe)
+{
+ igt_output_t *chosen_outputs[display->n_pipes];
+
+ igt_assert(pipe != PIPE_NONE);
+ igt_require(pipe < display->n_pipes);
+
+ __igt_pipe_populate_outputs(display, chosen_outputs);
+
+ return chosen_outputs[pipe];
+}
+
static igt_output_t *igt_pipe_get_output(igt_pipe_t *pipe)
{
igt_display_t *display = pipe->display;
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 672930e9849f..24cb0b7e778b 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -380,7 +380,9 @@ igt_plane_t *igt_output_get_plane(igt_output_t *output, int plane_idx);
igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type);
igt_output_t *igt_output_from_connector(igt_display_t *display,
drmModeConnector *connector);
+
igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type);
+igt_output_t *igt_get_single_output_for_pipe(igt_display_t *display, enum pipe pipe);
void igt_pipe_request_out_fence(igt_pipe_t *pipe);
@@ -468,6 +470,10 @@ static inline bool igt_output_is_connected(igt_output_t *output)
*
* This for loop is called over all connected outputs. This function
* will try every combination of @pipe and @output.
+ *
+ * If you only need to test a single output for each pipe, use
+ * for_each_pipe_with_single_output(), if you only need an
+ * output for a single pipe, use igt_get_single_output_for_pipe().
*/
#define for_each_pipe_with_valid_output(display, pipe, output) \
for (int con__ = (pipe) = 0; \
@@ -476,6 +482,26 @@ static inline bool igt_output_is_connected(igt_output_t *output)
for_each_if ((((output) = &(display)->outputs[con__]), \
igt_pipe_connector_valid((pipe), (output))))
+igt_output_t **__igt_pipe_populate_outputs(igt_display_t *display,
+ igt_output_t **chosen_outputs);
+
+/**
+ * for_each_pipe_with_single_output:
+ * @display: a pointer to an #igt_display_t structure
+ * @pipe: The pipe for which this @pipe / @output combination is valid.
+ * @output: The output for which this @pipe / @output combination is valid.
+ *
+ * This loop is called over all pipes, and will try to find a compatible output
+ * for each pipe. Unlike for_each_pipe_with_valid_output(), this function will
+ * be called at most once for each pipe.
+ */
+#define for_each_pipe_with_single_output(display, pipe, output) \
+ for (igt_output_t *__outputs[(display)->n_pipes], \
+ **__output = __igt_pipe_populate_outputs((display), __outputs); \
+ __output < &__outputs[(display)->n_pipes]; __output++) \
+ for_each_if (*__output && \
+ ((pipe) = (__output - __outputs), (output) = *__output, 1))
+
/**
* for_each_valid_output_on_pipe:
* @display: a pointer to an #igt_display_t structure
--
2.16.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [igt-dev] ✗ Fi.CI.BAT: warning for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev2)
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
` (6 preceding siblings ...)
2018-03-14 17:22 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
@ 2018-03-15 18:31 ` Patchwork
2018-03-15 19:29 ` Patchwork
` (3 subsequent siblings)
11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-03-15 18:31 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
== Series Details ==
Series: lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev2)
URL : https://patchwork.freedesktop.org/series/39953/
State : warning
== Summary ==
IGT patchset tested on top of latest successful build
17ae4da9059464b9386dd56b07f29322c914ff7b tests/kms_plane_scaling: Change minimum fb height for YUV 420 planar
with latest DRM-Tip kernel build CI_DRM_3934
3b4800f0237f drm-tip: 2018y-03m-15d-15h-48m-56s UTC integration manifest
Testlist changes:
+igt@kms_chv_cursor_fail@pipe-d-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-top-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-top-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-top-edge
---- Possible new issues:
Test kms_busy:
Subgroup basic-flip-c:
pass -> SKIP (fi-bsw-n3050)
---- Known issues:
Test gem_mmap_gtt:
Subgroup basic-small-bo-tiledx:
pass -> FAIL (fi-gdg-551) fdo#102575
Test kms_flip:
Subgroup basic-flip-vs-wf_vblank:
pass -> FAIL (fi-cfl-s2) fdo#100368
Test kms_pipe_crc_basic:
Subgroup suspend-read-crc-pipe-c:
pass -> INCOMPLETE (fi-bxt-dsi) fdo#103927
fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
fi-bdw-5557u total:285 pass:264 dwarn:0 dfail:0 fail:0 skip:21 time:434s
fi-bdw-gvtdvm total:285 pass:261 dwarn:0 dfail:0 fail:0 skip:24 time:440s
fi-blb-e6850 total:285 pass:220 dwarn:1 dfail:0 fail:0 skip:64 time:381s
fi-bsw-n3050 total:285 pass:238 dwarn:0 dfail:0 fail:0 skip:47 time:538s
fi-bwr-2160 total:285 pass:180 dwarn:0 dfail:0 fail:0 skip:105 time:296s
fi-bxt-dsi total:243 pass:216 dwarn:0 dfail:0 fail:0 skip:26
fi-bxt-j4205 total:285 pass:256 dwarn:0 dfail:0 fail:0 skip:29 time:515s
fi-byt-j1900 total:285 pass:250 dwarn:0 dfail:0 fail:0 skip:35 time:519s
fi-byt-n2820 total:285 pass:246 dwarn:0 dfail:0 fail:0 skip:39 time:506s
fi-cfl-8700k total:285 pass:257 dwarn:0 dfail:0 fail:0 skip:28 time:406s
fi-cfl-s2 total:285 pass:258 dwarn:0 dfail:0 fail:1 skip:26 time:581s
fi-cfl-u total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:513s
fi-cnl-drrs total:285 pass:254 dwarn:3 dfail:0 fail:0 skip:28 time:535s
fi-cnl-y3 total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:582s
fi-elk-e7500 total:285 pass:226 dwarn:0 dfail:0 fail:0 skip:59 time:431s
fi-gdg-551 total:285 pass:176 dwarn:0 dfail:0 fail:1 skip:108 time:319s
fi-glk-1 total:285 pass:257 dwarn:0 dfail:0 fail:0 skip:28 time:535s
fi-hsw-4770 total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:401s
fi-ilk-650 total:285 pass:225 dwarn:0 dfail:0 fail:0 skip:60 time:420s
fi-ivb-3520m total:285 pass:256 dwarn:0 dfail:0 fail:0 skip:29 time:464s
fi-ivb-3770 total:285 pass:252 dwarn:0 dfail:0 fail:0 skip:33 time:428s
fi-kbl-7500u total:285 pass:260 dwarn:1 dfail:0 fail:0 skip:24 time:482s
fi-kbl-7567u total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:466s
fi-kbl-r total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:513s
fi-pnv-d510 total:285 pass:219 dwarn:1 dfail:0 fail:0 skip:65 time:657s
fi-skl-6260u total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:444s
fi-skl-6600u total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:529s
fi-skl-6700hq total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:540s
fi-skl-6700k2 total:285 pass:261 dwarn:0 dfail:0 fail:0 skip:24 time:509s
fi-skl-6770hq total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:494s
fi-skl-guc total:285 pass:257 dwarn:0 dfail:0 fail:0 skip:28 time:429s
fi-skl-gvtdvm total:285 pass:262 dwarn:0 dfail:0 fail:0 skip:23 time:446s
fi-snb-2520m total:3 pass:2 dwarn:0 dfail:0 fail:0 skip:0
fi-snb-2600 total:285 pass:245 dwarn:0 dfail:0 fail:0 skip:40 time:407s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1140/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* [igt-dev] ✗ Fi.CI.BAT: warning for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev2)
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
` (7 preceding siblings ...)
2018-03-15 18:31 ` [igt-dev] ✗ Fi.CI.BAT: warning for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev2) Patchwork
@ 2018-03-15 19:29 ` Patchwork
2018-03-16 7:29 ` Patchwork
` (2 subsequent siblings)
11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-03-15 19:29 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
== Series Details ==
Series: lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev2)
URL : https://patchwork.freedesktop.org/series/39953/
State : warning
== Summary ==
IGT patchset tested on top of latest successful build
2e92134b4e4f754239f9721b8781ce2fc0aab07c tests/kms_frontbuffer_tracking: Reduce fbc status spam, v2.
with latest DRM-Tip kernel build CI_DRM_3934
3b4800f0237f drm-tip: 2018y-03m-15d-15h-48m-56s UTC integration manifest
Testlist changes:
+igt@kms_chv_cursor_fail@pipe-d-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-top-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-top-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-top-edge
---- Possible new issues:
Test kms_busy:
Subgroup basic-flip-c:
pass -> SKIP (fi-bsw-n3050)
---- Known issues:
Test debugfs_test:
Subgroup read_all_entries:
incomplete -> PASS (fi-snb-2520m) fdo#103713
Test gem_mmap_gtt:
Subgroup basic-small-bo-tiledx:
pass -> FAIL (fi-gdg-551) fdo#102575
Test kms_pipe_crc_basic:
Subgroup suspend-read-crc-pipe-b:
pass -> DMESG-WARN (fi-cnl-y3) fdo#104951
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575
fdo#104951 https://bugs.freedesktop.org/show_bug.cgi?id=104951
fi-bdw-5557u total:285 pass:264 dwarn:0 dfail:0 fail:0 skip:21 time:433s
fi-bdw-gvtdvm total:285 pass:261 dwarn:0 dfail:0 fail:0 skip:24 time:445s
fi-blb-e6850 total:285 pass:220 dwarn:1 dfail:0 fail:0 skip:64 time:383s
fi-bsw-n3050 total:285 pass:238 dwarn:0 dfail:0 fail:0 skip:47 time:540s
fi-bwr-2160 total:285 pass:180 dwarn:0 dfail:0 fail:0 skip:105 time:299s
fi-bxt-dsi total:285 pass:255 dwarn:0 dfail:0 fail:0 skip:30 time:516s
fi-bxt-j4205 total:285 pass:256 dwarn:0 dfail:0 fail:0 skip:29 time:512s
fi-byt-j1900 total:285 pass:250 dwarn:0 dfail:0 fail:0 skip:35 time:520s
fi-byt-n2820 total:285 pass:246 dwarn:0 dfail:0 fail:0 skip:39 time:505s
fi-cfl-8700k total:285 pass:257 dwarn:0 dfail:0 fail:0 skip:28 time:411s
fi-cfl-s2 total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:573s
fi-cfl-u total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:514s
fi-cnl-drrs total:285 pass:254 dwarn:3 dfail:0 fail:0 skip:28 time:520s
fi-cnl-y3 total:285 pass:258 dwarn:1 dfail:0 fail:0 skip:26 time:588s
fi-elk-e7500 total:285 pass:226 dwarn:0 dfail:0 fail:0 skip:59 time:420s
fi-gdg-551 total:285 pass:176 dwarn:0 dfail:0 fail:1 skip:108 time:320s
fi-glk-1 total:285 pass:257 dwarn:0 dfail:0 fail:0 skip:28 time:538s
fi-hsw-4770 total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:404s
fi-ilk-650 total:285 pass:225 dwarn:0 dfail:0 fail:0 skip:60 time:426s
fi-ivb-3520m total:285 pass:256 dwarn:0 dfail:0 fail:0 skip:29 time:473s
fi-ivb-3770 total:285 pass:252 dwarn:0 dfail:0 fail:0 skip:33 time:433s
fi-kbl-7500u total:285 pass:260 dwarn:1 dfail:0 fail:0 skip:24 time:475s
fi-kbl-7567u total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:471s
fi-kbl-r total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:512s
fi-pnv-d510 total:285 pass:219 dwarn:1 dfail:0 fail:0 skip:65 time:654s
fi-skl-6260u total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:444s
fi-skl-6600u total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:529s
fi-skl-6700hq total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:541s
fi-skl-6700k2 total:285 pass:261 dwarn:0 dfail:0 fail:0 skip:24 time:506s
fi-skl-6770hq total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:502s
fi-skl-guc total:285 pass:257 dwarn:0 dfail:0 fail:0 skip:28 time:427s
fi-skl-gvtdvm total:285 pass:262 dwarn:0 dfail:0 fail:0 skip:23 time:446s
fi-snb-2520m total:285 pass:245 dwarn:0 dfail:0 fail:0 skip:40 time:563s
fi-snb-2600 total:285 pass:245 dwarn:0 dfail:0 fail:0 skip:40 time:403s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1141/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* [igt-dev] ✗ Fi.CI.BAT: warning for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev2)
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
` (8 preceding siblings ...)
2018-03-15 19:29 ` Patchwork
@ 2018-03-16 7:29 ` Patchwork
2018-03-16 9:03 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev3) Patchwork
2018-03-16 10:41 ` [igt-dev] ✗ Fi.CI.IGT: warning " Patchwork
11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-03-16 7:29 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
== Series Details ==
Series: lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev2)
URL : https://patchwork.freedesktop.org/series/39953/
State : warning
== Summary ==
IGT patchset tested on top of latest successful build
2e92134b4e4f754239f9721b8781ce2fc0aab07c tests/kms_frontbuffer_tracking: Reduce fbc status spam, v2.
with latest DRM-Tip kernel build CI_DRM_3935
9ac56f76a6a2 drm-tip: 2018y-03m-15d-22h-52m-42s UTC integration manifest
Testlist changes:
+igt@kms_chv_cursor_fail@pipe-d-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-top-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-top-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-top-edge
---- Possible new issues:
Test kms_busy:
Subgroup basic-flip-c:
pass -> SKIP (fi-bsw-n3050)
---- Known issues:
Test gem_mmap_gtt:
Subgroup basic-small-bo-tiledx:
pass -> FAIL (fi-gdg-551) fdo#102575
Test prime_vgem:
Subgroup basic-fence-flip:
pass -> FAIL (fi-ilk-650) fdo#104008
fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575
fdo#104008 https://bugs.freedesktop.org/show_bug.cgi?id=104008
fi-bdw-5557u total:285 pass:264 dwarn:0 dfail:0 fail:0 skip:21 time:432s
fi-bdw-gvtdvm total:285 pass:261 dwarn:0 dfail:0 fail:0 skip:24 time:442s
fi-blb-e6850 total:285 pass:220 dwarn:1 dfail:0 fail:0 skip:64 time:381s
fi-bsw-n3050 total:285 pass:238 dwarn:0 dfail:0 fail:0 skip:47 time:536s
fi-bwr-2160 total:285 pass:180 dwarn:0 dfail:0 fail:0 skip:105 time:298s
fi-bxt-j4205 total:285 pass:256 dwarn:0 dfail:0 fail:0 skip:29 time:512s
fi-byt-j1900 total:285 pass:250 dwarn:0 dfail:0 fail:0 skip:35 time:515s
fi-byt-n2820 total:285 pass:246 dwarn:0 dfail:0 fail:0 skip:39 time:503s
fi-cfl-8700k total:285 pass:257 dwarn:0 dfail:0 fail:0 skip:28 time:410s
fi-cfl-s2 total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:579s
fi-cfl-u total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:513s
fi-cnl-drrs total:285 pass:254 dwarn:3 dfail:0 fail:0 skip:28 time:525s
fi-elk-e7500 total:285 pass:226 dwarn:0 dfail:0 fail:0 skip:59 time:429s
fi-gdg-551 total:285 pass:176 dwarn:0 dfail:0 fail:1 skip:108 time:319s
fi-hsw-4770 total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:401s
fi-ilk-650 total:285 pass:224 dwarn:0 dfail:0 fail:1 skip:60 time:421s
fi-ivb-3520m total:285 pass:256 dwarn:0 dfail:0 fail:0 skip:29 time:470s
fi-ivb-3770 total:285 pass:252 dwarn:0 dfail:0 fail:0 skip:33 time:429s
fi-kbl-7500u total:285 pass:260 dwarn:1 dfail:0 fail:0 skip:24 time:475s
fi-kbl-7567u total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:470s
fi-kbl-r total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:513s
fi-pnv-d510 total:285 pass:219 dwarn:1 dfail:0 fail:0 skip:65 time:655s
fi-skl-6260u total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:445s
fi-skl-6600u total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:534s
fi-skl-6700hq total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:540s
fi-skl-6700k2 total:285 pass:261 dwarn:0 dfail:0 fail:0 skip:24 time:506s
fi-skl-6770hq total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:502s
fi-skl-guc total:285 pass:257 dwarn:0 dfail:0 fail:0 skip:28 time:428s
fi-skl-gvtdvm total:285 pass:262 dwarn:0 dfail:0 fail:0 skip:23 time:448s
fi-snb-2520m total:285 pass:245 dwarn:0 dfail:0 fail:0 skip:40 time:585s
fi-snb-2600 total:285 pass:245 dwarn:0 dfail:0 fail:0 skip:40 time:399s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1143/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* [igt-dev] [PATCH i-g-t] tests/kms_busy: Convert to using igt_get_single_output_for_pipe, v2.
2018-03-14 14:46 ` Ville Syrjälä
@ 2018-03-16 8:28 ` Maarten Lankhorst
0 siblings, 0 replies; 20+ messages in thread
From: Maarten Lankhorst @ 2018-03-16 8:28 UTC (permalink / raw)
To: igt-dev
Put a single igt_display_require_output_on_pipe in the fixture,
so we know we always have an output on the pipe and can always
assume it's not NULL.
Changes since v1:
- Move igt_subtest_group upwards, to prevent a skip when no valid
output can be found on pipe A, but can be found on other pipes.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> #v1
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
tests/kms_busy.c | 128 +++++++++++++++++++++++++------------------------------
1 file changed, 59 insertions(+), 69 deletions(-)
diff --git a/tests/kms_busy.c b/tests/kms_busy.c
index 0828a8b38a06..4a4e0e15608c 100644
--- a/tests/kms_busy.c
+++ b/tests/kms_busy.c
@@ -35,31 +35,23 @@ IGT_TEST_DESCRIPTION("Basic check of KMS ABI with busy framebuffers.");
static igt_output_t *
set_fb_on_crtc(igt_display_t *dpy, int pipe, struct igt_fb *fb)
{
+ drmModeModeInfoPtr mode;
+ igt_plane_t *primary;
igt_output_t *output;
- for_each_valid_output_on_pipe(dpy, pipe, output) {
- drmModeModeInfoPtr mode;
- igt_plane_t *primary;
-
- if (output->pending_pipe != PIPE_NONE)
- continue;
+ output = igt_get_single_output_for_pipe(dpy, pipe);
- igt_output_set_pipe(output, pipe);
- mode = igt_output_get_mode(output);
+ igt_output_set_pipe(output, pipe);
+ mode = igt_output_get_mode(output);
- igt_create_pattern_fb(dpy->drm_fd,
- mode->hdisplay, mode->vdisplay,
- DRM_FORMAT_XRGB8888,
- LOCAL_I915_FORMAT_MOD_X_TILED,
- fb);
-
- primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
- igt_plane_set_fb(primary, fb);
+ igt_create_pattern_fb(dpy->drm_fd, mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_X_TILED, fb);
- return output;
- }
+ primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+ igt_plane_set_fb(primary, fb);
- return NULL;
+ return output;
}
static void do_cleanup_display(igt_display_t *dpy)
@@ -168,7 +160,7 @@ static void test_flip(igt_display_t *dpy, unsigned ring, int pipe, bool modeset)
signal(SIGALRM, sighandler);
- igt_require((output = set_fb_on_crtc(dpy, pipe, &fb[0])));
+ output = set_fb_on_crtc(dpy, pipe, &fb[0]);
igt_display_commit2(dpy, COMMIT_LEGACY);
igt_create_pattern_fb(dpy->drm_fd,
@@ -246,7 +238,7 @@ static void test_hang(igt_display_t *dpy, unsigned ring,
igt_output_t *output;
igt_plane_t *primary;
- igt_require((output = set_fb_on_crtc(dpy, pipe, &fb[0])));
+ output = set_fb_on_crtc(dpy, pipe, &fb[0]);
igt_display_commit2(dpy, COMMIT_ATOMIC);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
@@ -290,7 +282,7 @@ static void test_pageflip_modeset_hang(igt_display_t *dpy,
igt_plane_t *primary;
igt_spin_t *t;
- igt_require((output = set_fb_on_crtc(dpy, pipe, &fb)));
+ output = set_fb_on_crtc(dpy, pipe, &fb);
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
@@ -333,86 +325,84 @@ igt_main
/* XXX Extend to cover atomic rendering tests to all planes + legacy */
- for_each_pipe_static(n) {
+ for_each_pipe_static(n) igt_subtest_group {
+ igt_hang_t hang;
+
errno = 0;
igt_fixture {
- igt_skip_on(n >= display.n_pipes);
+ igt_display_require_output_on_pipe(&display, n);
}
igt_subtest_f("basic-flip-%s",
- kmstest_pipe_name(n)) {
+ kmstest_pipe_name(n)) {
igt_require(gem_has_ring(display.drm_fd,
e->exec_id | e->flags));
test_flip(&display, e->exec_id | e->flags, n, false);
}
igt_subtest_f("basic-modeset-%s",
- kmstest_pipe_name(n)) {
+ kmstest_pipe_name(n)) {
igt_require(gem_has_ring(display.drm_fd,
e->exec_id | e->flags));
test_flip(&display, e->exec_id | e->flags, n, true);
}
- igt_subtest_group {
- igt_hang_t hang;
-
- igt_fixture {
- igt_require(gem_has_ring(display.drm_fd,
- e->exec_id | e->flags));
+ igt_fixture {
+ igt_require(gem_has_ring(display.drm_fd,
+ e->exec_id | e->flags));
- hang = igt_allow_hang(display.drm_fd, 0, 0);
- }
+ hang = igt_allow_hang(display.drm_fd, 0, 0);
+ }
- igt_subtest_f("extended-pageflip-modeset-hang-oldfb-%s-%s",
- e->name, kmstest_pipe_name(n)) {
- igt_require(gem_has_ring(display.drm_fd,
- e->exec_id | e->flags));
+ igt_subtest_f("extended-pageflip-modeset-hang-oldfb-%s-%s",
+ e->name, kmstest_pipe_name(n)) {
+ igt_require(gem_has_ring(display.drm_fd,
+ e->exec_id | e->flags));
- test_pageflip_modeset_hang(&display, e->exec_id | e->flags, n);
- }
+ test_pageflip_modeset_hang(&display, e->exec_id | e->flags, n);
+ }
- igt_fixture
- igt_require(display.is_atomic);
+ igt_fixture
+ igt_require(display.is_atomic);
- igt_subtest_f("extended-pageflip-hang-oldfb-%s-%s",
- e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, false, false);
+ igt_subtest_f("extended-pageflip-hang-oldfb-%s-%s",
+ e->name, kmstest_pipe_name(n))
+ test_hang(&display, e->exec_id | e->flags, n, false, false);
- igt_subtest_f("extended-pageflip-hang-newfb-%s-%s",
- e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, false, true);
+ igt_subtest_f("extended-pageflip-hang-newfb-%s-%s",
+ e->name, kmstest_pipe_name(n))
+ test_hang(&display, e->exec_id | e->flags, n, false, true);
- igt_subtest_f("extended-modeset-hang-oldfb-%s-%s",
- e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, true, false);
+ igt_subtest_f("extended-modeset-hang-oldfb-%s-%s",
+ e->name, kmstest_pipe_name(n))
+ test_hang(&display, e->exec_id | e->flags, n, true, false);
- igt_subtest_f("extended-modeset-hang-newfb-%s-%s",
- e->name, kmstest_pipe_name(n))
- test_hang(&display, e->exec_id | e->flags, n, true, true);
+ igt_subtest_f("extended-modeset-hang-newfb-%s-%s",
+ e->name, kmstest_pipe_name(n))
+ test_hang(&display, e->exec_id | e->flags, n, true, true);
- igt_subtest_f("extended-modeset-hang-oldfb-with-reset-%s-%s",
- e->name, kmstest_pipe_name(n)) {
- igt_set_module_param_int("force_reset_modeset_test", 1);
+ igt_subtest_f("extended-modeset-hang-oldfb-with-reset-%s-%s",
+ e->name, kmstest_pipe_name(n)) {
+ igt_set_module_param_int("force_reset_modeset_test", 1);
- test_hang(&display, e->exec_id | e->flags, n, true, false);
+ test_hang(&display, e->exec_id | e->flags, n, true, false);
- igt_set_module_param_int("force_reset_modeset_test", 0);
- }
+ igt_set_module_param_int("force_reset_modeset_test", 0);
+ }
- igt_subtest_f("extended-modeset-hang-newfb-with-reset-%s-%s",
- e->name, kmstest_pipe_name(n)) {
- igt_set_module_param_int("force_reset_modeset_test", 1);
+ igt_subtest_f("extended-modeset-hang-newfb-with-reset-%s-%s",
+ e->name, kmstest_pipe_name(n)) {
+ igt_set_module_param_int("force_reset_modeset_test", 1);
- test_hang(&display, e->exec_id | e->flags, n, true, true);
+ test_hang(&display, e->exec_id | e->flags, n, true, true);
- igt_set_module_param_int("force_reset_modeset_test", 0);
- }
+ igt_set_module_param_int("force_reset_modeset_test", 0);
+ }
- igt_fixture {
- igt_disallow_hang(display.drm_fd, hang);
- }
+ igt_fixture {
+ igt_disallow_hang(display.drm_fd, hang);
}
}
--
2.16.2
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev3)
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
` (9 preceding siblings ...)
2018-03-16 7:29 ` Patchwork
@ 2018-03-16 9:03 ` Patchwork
2018-03-16 10:41 ` [igt-dev] ✗ Fi.CI.IGT: warning " Patchwork
11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-03-16 9:03 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
== Series Details ==
Series: lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev3)
URL : https://patchwork.freedesktop.org/series/39953/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
2e92134b4e4f754239f9721b8781ce2fc0aab07c tests/kms_frontbuffer_tracking: Reduce fbc status spam, v2.
with latest DRM-Tip kernel build CI_DRM_3936
e867298503d2 drm-tip: 2018y-03m-16d-07h-43m-57s UTC integration manifest
Testlist changes:
+igt@kms_chv_cursor_fail@pipe-d-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-d-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-d-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-d-256x256-top-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-e-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-e-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-e-256x256-top-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-left-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-right-edge
+igt@kms_chv_cursor_fail@pipe-f-64x64-top-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-left-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-right-edge
+igt@kms_chv_cursor_fail@pipe-f-128x128-top-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-bottom-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-left-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-right-edge
+igt@kms_chv_cursor_fail@pipe-f-256x256-top-edge
fi-bdw-5557u total:285 pass:264 dwarn:0 dfail:0 fail:0 skip:21 time:432s
fi-bdw-gvtdvm total:285 pass:261 dwarn:0 dfail:0 fail:0 skip:24 time:442s
fi-blb-e6850 total:285 pass:220 dwarn:1 dfail:0 fail:0 skip:64 time:380s
fi-bsw-n3050 total:285 pass:239 dwarn:0 dfail:0 fail:0 skip:46 time:538s
fi-bwr-2160 total:285 pass:180 dwarn:0 dfail:0 fail:0 skip:105 time:298s
fi-bxt-j4205 total:285 pass:256 dwarn:0 dfail:0 fail:0 skip:29 time:511s
fi-byt-j1900 total:285 pass:250 dwarn:0 dfail:0 fail:0 skip:35 time:517s
fi-byt-n2820 total:285 pass:246 dwarn:0 dfail:0 fail:0 skip:39 time:505s
fi-cfl-8700k total:285 pass:257 dwarn:0 dfail:0 fail:0 skip:28 time:411s
fi-cfl-s2 total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:574s
fi-cfl-u total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:513s
fi-cnl-drrs total:285 pass:254 dwarn:3 dfail:0 fail:0 skip:28 time:524s
fi-cnl-y3 total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:586s
fi-elk-e7500 total:285 pass:226 dwarn:0 dfail:0 fail:0 skip:59 time:420s
fi-gdg-551 total:285 pass:176 dwarn:0 dfail:0 fail:1 skip:108 time:320s
fi-glk-1 total:285 pass:257 dwarn:0 dfail:0 fail:0 skip:28 time:539s
fi-hsw-4770 total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:403s
fi-ilk-650 total:285 pass:225 dwarn:0 dfail:0 fail:0 skip:60 time:423s
fi-ivb-3520m total:285 pass:256 dwarn:0 dfail:0 fail:0 skip:29 time:471s
fi-ivb-3770 total:285 pass:252 dwarn:0 dfail:0 fail:0 skip:33 time:429s
fi-kbl-7500u total:285 pass:260 dwarn:1 dfail:0 fail:0 skip:24 time:474s
fi-kbl-7567u total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:471s
fi-kbl-r total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:516s
fi-pnv-d510 total:285 pass:219 dwarn:1 dfail:0 fail:0 skip:65 time:656s
fi-skl-6260u total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:444s
fi-skl-6600u total:285 pass:258 dwarn:0 dfail:0 fail:0 skip:27 time:533s
fi-skl-6700hq total:285 pass:259 dwarn:0 dfail:0 fail:0 skip:26 time:540s
fi-skl-6700k2 total:285 pass:261 dwarn:0 dfail:0 fail:0 skip:24 time:503s
fi-skl-6770hq total:285 pass:265 dwarn:0 dfail:0 fail:0 skip:20 time:490s
fi-skl-guc total:285 pass:257 dwarn:0 dfail:0 fail:0 skip:28 time:431s
fi-skl-gvtdvm total:285 pass:262 dwarn:0 dfail:0 fail:0 skip:23 time:447s
fi-snb-2520m total:285 pass:245 dwarn:0 dfail:0 fail:0 skip:40 time:586s
fi-snb-2600 total:285 pass:245 dwarn:0 dfail:0 fail:0 skip:40 time:399s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1145/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: warning for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev3)
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
` (10 preceding siblings ...)
2018-03-16 9:03 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev3) Patchwork
@ 2018-03-16 10:41 ` Patchwork
11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-03-16 10:41 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
== Series Details ==
Series: lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev3)
URL : https://patchwork.freedesktop.org/series/39953/
State : warning
== Summary ==
---- Possible new issues:
Test drv_suspend:
Subgroup fence-restore-tiled2untiled:
pass -> SKIP (shard-snb)
Test gem_tiled_blits:
Subgroup normal:
pass -> SKIP (shard-apl)
Test gem_tiled_swapping:
Subgroup non-threaded:
skip -> PASS (shard-snb)
---- Known issues:
Test gem_eio:
Subgroup in-flight-contexts:
pass -> INCOMPLETE (shard-apl) fdo#105341
Test kms_flip:
Subgroup 2x-flip-vs-expired-vblank-interruptible:
dmesg-warn -> PASS (shard-hsw) fdo#102887
Subgroup modeset-vs-vblank-race:
pass -> FAIL (shard-hsw) fdo#103060
Test kms_plane_multiple:
Subgroup atomic-pipe-a-tiling-x:
fail -> PASS (shard-snb) fdo#103166
Test kms_rotation_crc:
Subgroup primary-rotation-180:
fail -> PASS (shard-snb) fdo#103925 +1
Test kms_vblank:
Subgroup pipe-b-ts-continuation-suspend:
pass -> SKIP (shard-snb) fdo#105411
Test perf:
Subgroup polling:
pass -> FAIL (shard-hsw) fdo#102252
fdo#105341 https://bugs.freedesktop.org/show_bug.cgi?id=105341
fdo#102887 https://bugs.freedesktop.org/show_bug.cgi?id=102887
fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
shard-apl total:3392 pass:1771 dwarn:1 dfail:0 fail:7 skip:1611 time:12203s
shard-hsw total:3478 pass:1766 dwarn:1 dfail:0 fail:3 skip:1707 time:11739s
shard-snb total:3478 pass:1356 dwarn:1 dfail:0 fail:2 skip:2119 time:7154s
Blacklisted hosts:
shard-kbl total:2117 pass:1167 dwarn:1 dfail:0 fail:8 skip:940 time:5692s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1145/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [igt-dev] [PATCH i-g-t 5/5] tests/kms_chv_cursor_fail: Handle cleanup better.
2018-03-14 14:48 ` Ville Syrjälä
@ 2018-03-19 15:07 ` Maarten Lankhorst
0 siblings, 0 replies; 20+ messages in thread
From: Maarten Lankhorst @ 2018-03-19 15:07 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: igt-dev
Op 14-03-18 om 15:48 schreef Ville Syrjälä:
> On Wed, Mar 14, 2018 at 12:20:21PM +0100, Maarten Lankhorst wrote:
>> Clean up cursor fb in cleanup_crtc, which means that cursor fb
>> has to be created after prepare_crtc() is called.
>>
>> This will fix a small leak when a subtest fails.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> ---
>> tests/kms_chv_cursor_fail.c | 7 ++-----
>> 1 file changed, 2 insertions(+), 5 deletions(-)
>>
>> diff --git a/tests/kms_chv_cursor_fail.c b/tests/kms_chv_cursor_fail.c
>> index 0dd366c3b4b1..7138e549aeb7 100644
>> --- a/tests/kms_chv_cursor_fail.c
>> +++ b/tests/kms_chv_cursor_fail.c
>> @@ -224,6 +224,7 @@ static void cleanup_crtc(data_t *data)
>> data->pipe_crc = NULL;
>>
>> igt_remove_fb(data->drm_fd, &data->primary_fb);
>> + igt_remove_fb(data->drm_fd, &data->fb);
>> }
>>
>> static void prepare_crtc(data_t *data)
>> @@ -262,15 +263,11 @@ static void prepare_crtc(data_t *data)
>>
>> static void test_crtc(data_t *data, unsigned int edges)
>> {
>> - cleanup_crtc(data);
>> + prepare_crtc(data);
>>
>> create_cursor_fb(data, data->curw, data->curh);
> 4 and 5 lgtm as well
>
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Thanks, pushed after tests succeeded. :)
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2018-03-19 15:07 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-14 11:20 [igt-dev] [PATCH i-g-t 0/5] lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Maarten Lankhorst
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 1/5] lib/igt_kms: Add functions to get only a single output for a pipe Maarten Lankhorst
2018-03-14 14:43 ` Ville Syrjälä
2018-03-15 16:58 ` [igt-dev] [PATCH i-g-t] lib/igt_kms: Add functions to get only a single output for a pipe, v2 Maarten Lankhorst
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 2/5] tests/kms_rmfb: Use for_each_pipe_with_single_output Maarten Lankhorst
2018-03-14 14:44 ` Ville Syrjälä
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 3/5] tests/kms_busy: Convert to using igt_get_single_output_for_pipe Maarten Lankhorst
2018-03-14 14:46 ` Ville Syrjälä
2018-03-16 8:28 ` [igt-dev] [PATCH i-g-t] tests/kms_busy: Convert to using igt_get_single_output_for_pipe, v2 Maarten Lankhorst
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 4/5] tests/kms_chv_cursor_fail: Reorder tests, and use igt_display_require_output_on_pipe Maarten Lankhorst
2018-03-14 11:20 ` [igt-dev] [PATCH i-g-t 5/5] tests/kms_chv_cursor_fail: Handle cleanup better Maarten Lankhorst
2018-03-14 14:48 ` Ville Syrjälä
2018-03-19 15:07 ` Maarten Lankhorst
2018-03-14 13:37 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe Patchwork
2018-03-14 17:22 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2018-03-15 18:31 ` [igt-dev] ✗ Fi.CI.BAT: warning for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev2) Patchwork
2018-03-15 19:29 ` Patchwork
2018-03-16 7:29 ` Patchwork
2018-03-16 9:03 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_kms: Add for_each_pipe_with_single_output and igt_get_single_output_for_pipe. (rev3) Patchwork
2018-03-16 10:41 ` [igt-dev] ✗ Fi.CI.IGT: warning " 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.