All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH RFC i-g-t 0/4] VC4 load tracker testing
@ 2019-01-08 15:02 Paul Kocialkowski
  2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 1/4] lib/igt_kms: Add helpers to count and iterate planes from pipe Paul Kocialkowski
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Paul Kocialkowski @ 2019-01-08 15:02 UTC (permalink / raw)
  To: igt-dev; +Cc: Eben Upton

This series introduces helpers and a simple test (with two subtests)
for testing the VC4 load tracker. See the final commit message for
more details about the test.

This series is posted as RFC since the kernel piece are still under
review. It allows testing the series with IGT in the meantime (and was
used for testing the kernel side).

The two preliminary patches were already sent as part of another series
and are included so that CI can attempt to build the whole series.

Cheers,

Paul

Paul Kocialkowski (4):
  lib/igt_kms: Add helpers to count and iterate planes from pipe
  lib/igt_kms: Add helpers to count and iterate planes from output
  lib/igt_vc4: Add helpers for underrun count and load tracker state
  tests: Add VC4 load tracker tests

 lib/igt_kms.c            |  84 +++++++++++++
 lib/igt_kms.h            |   6 +
 lib/igt_vc4.c            |  32 +++++
 lib/igt_vc4.h            |   6 +
 tests/Makefile.sources   |   1 +
 tests/meson.build        |   1 +
 tests/vc4_load_tracker.c | 249 +++++++++++++++++++++++++++++++++++++++
 7 files changed, 379 insertions(+)
 create mode 100644 tests/vc4_load_tracker.c

-- 
2.20.1

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

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

* [igt-dev] [PATCH i-g-t 1/4] lib/igt_kms: Add helpers to count and iterate planes from pipe
  2019-01-08 15:02 [igt-dev] [PATCH RFC i-g-t 0/4] VC4 load tracker testing Paul Kocialkowski
@ 2019-01-08 15:02 ` Paul Kocialkowski
  2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 2/4] lib/igt_kms: Add helpers to count and iterate planes from output Paul Kocialkowski
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Paul Kocialkowski @ 2019-01-08 15:02 UTC (permalink / raw)
  To: igt-dev; +Cc: Eben Upton

This introduces helpers that allow counting how many planes of a given
type are present from a pipe and getting the n-th plane of a given type.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
---
 lib/igt_kms.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_kms.h |  3 +++
 2 files changed, 51 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 684a599ca674..e5c4ee72884a 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -2276,6 +2276,54 @@ igt_plane_t *igt_pipe_get_plane_type(igt_pipe_t *pipe, int plane_type)
 	return &pipe->planes[plane_idx];
 }
 
+/**
+ * igt_pipe_count_plane_type:
+ * @pipe: Target pipe
+ * @plane_type: Cursor, primary or an overlay plane
+ *
+ * Counts the number of planes of type @plane_type for the provided @pipe.
+ *
+ * Returns: The number of planes that match the requested plane type
+ */
+int igt_pipe_count_plane_type(igt_pipe_t *pipe, int plane_type)
+{
+	int i, count = 0;
+
+	for(i = 0; i < pipe->n_planes; i++)
+		if (pipe->planes[i].type == plane_type)
+			count++;
+
+	return count;
+}
+
+/**
+ * igt_pipe_get_plane_type_index:
+ * @pipe: Target pipe
+ * @plane_type: Cursor, primary or an overlay plane
+ * @index: the index of the plane among planes of the same type
+ *
+ * Get the @index th plane of type @plane_type for the provided @pipe.
+ *
+ * Returns: The @index th plane that matches the requested plane type
+ */
+igt_plane_t *igt_pipe_get_plane_type_index(igt_pipe_t *pipe, int plane_type,
+					   int index)
+{
+	int i, type_index = 0;
+
+	for(i = 0; i < pipe->n_planes; i++) {
+		if (pipe->planes[i].type != plane_type)
+			continue;
+
+		if (type_index == index)
+			return &pipe->planes[i];
+
+		type_index++;
+	}
+
+	return NULL;
+}
+
 static bool output_is_internal_panel(igt_output_t *output)
 {
 	switch (output->config.connector->connector_type) {
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 4a7c3c97957f..0f99535e2c6e 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -405,6 +405,9 @@ 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);
+int igt_pipe_count_plane_type(igt_pipe_t *pipe, int plane_type);
+igt_plane_t *igt_pipe_get_plane_type_index(igt_pipe_t *pipe, int plane_type,
+					   int index);
 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);
-- 
2.20.1

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

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

* [igt-dev] [PATCH i-g-t 2/4] lib/igt_kms: Add helpers to count and iterate planes from output
  2019-01-08 15:02 [igt-dev] [PATCH RFC i-g-t 0/4] VC4 load tracker testing Paul Kocialkowski
  2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 1/4] lib/igt_kms: Add helpers to count and iterate planes from pipe Paul Kocialkowski
@ 2019-01-08 15:02 ` Paul Kocialkowski
  2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 3/4] lib/igt_vc4: Add helpers for underrun count and load tracker state Paul Kocialkowski
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Paul Kocialkowski @ 2019-01-08 15:02 UTC (permalink / raw)
  To: igt-dev; +Cc: Eben Upton

With helpers to count and iterate among planes of a given type from the
pipe in place, we can use them with the current pipe for the output to
make it possible for tests to use them (the pipe struct is not currently
easily exposed to tests and exposing it adds unnecessary complexity).

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
---
 lib/igt_kms.c | 36 ++++++++++++++++++++++++++++++++++++
 lib/igt_kms.h |  3 +++
 2 files changed, 39 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index e5c4ee72884a..f87c869fd3b7 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -3718,6 +3718,42 @@ igt_plane_t *igt_output_get_plane_type(igt_output_t *output, int plane_type)
 	return igt_pipe_get_plane_type(pipe, plane_type);
 }
 
+/**
+ * igt_output_count_plane_type:
+ * @output: Target output
+ * @plane_type: Cursor, primary or an overlay plane
+ *
+ * Counts the number of planes of type @plane_type for the provided @output.
+ *
+ * Returns: The number of planes that match the requested plane type
+ */
+int igt_output_count_plane_type(igt_output_t *output, int plane_type)
+{
+	igt_pipe_t *pipe = igt_output_get_driving_pipe(output);
+	igt_assert(pipe);
+
+	return igt_pipe_count_plane_type(pipe, plane_type);
+}
+
+/**
+ * igt_output_get_plane_type_index:
+ * @output: Target output
+ * @plane_type: Cursor, primary or an overlay plane
+ * @index: the index of the plane among planes of the same type
+ *
+ * Get the @index th plane of type @plane_type for the provided @output.
+ *
+ * Returns: The @index th plane that matches the requested plane type
+ */
+igt_plane_t *igt_output_get_plane_type_index(igt_output_t *output,
+					     int plane_type, int index)
+{
+	igt_pipe_t *pipe = igt_output_get_driving_pipe(output);
+	igt_assert(pipe);
+
+	return igt_pipe_get_plane_type_index(pipe, plane_type, index);
+}
+
 /**
  * igt_plane_set_fb:
  * @plane: Plane
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 0f99535e2c6e..1cfce9647637 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -401,6 +401,9 @@ void igt_output_override_mode(igt_output_t *output, drmModeModeInfo *mode);
 void igt_output_set_pipe(igt_output_t *output, enum pipe pipe);
 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);
+int igt_output_count_plane_type(igt_output_t *output, int plane_type);
+igt_plane_t *igt_output_get_plane_type_index(igt_output_t *output,
+					     int plane_type, int index);
 igt_output_t *igt_output_from_connector(igt_display_t *display,
     drmModeConnector *connector);
 
-- 
2.20.1

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

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

* [igt-dev] [PATCH i-g-t 3/4] lib/igt_vc4: Add helpers for underrun count and load tracker state
  2019-01-08 15:02 [igt-dev] [PATCH RFC i-g-t 0/4] VC4 load tracker testing Paul Kocialkowski
  2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 1/4] lib/igt_kms: Add helpers to count and iterate planes from pipe Paul Kocialkowski
  2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 2/4] lib/igt_kms: Add helpers to count and iterate planes from output Paul Kocialkowski
@ 2019-01-08 15:02 ` Paul Kocialkowski
  2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 4/4] tests: Add VC4 load tracker tests Paul Kocialkowski
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Paul Kocialkowski @ 2019-01-08 15:02 UTC (permalink / raw)
  To: igt-dev; +Cc: Eben Upton

Introduce new helpers that allow getting the current underrun count
from debugfs and getting/setting the enabled state of the load tracker.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
---
 lib/igt_vc4.c | 32 ++++++++++++++++++++++++++++++++
 lib/igt_vc4.h |  6 ++++++
 2 files changed, 38 insertions(+)

diff --git a/lib/igt_vc4.c b/lib/igt_vc4.c
index 16dfe67a44b1..1e2c2e636509 100644
--- a/lib/igt_vc4.c
+++ b/lib/igt_vc4.c
@@ -34,6 +34,7 @@
 #include "drmtest.h"
 #include "igt_aux.h"
 #include "igt_core.h"
+#include "igt_sysfs.h"
 #include "igt_vc4.h"
 #include "ioctl_wrappers.h"
 #include "intel_reg.h"
@@ -176,3 +177,34 @@ bool igt_vc4_purgeable_bo(int fd, int handle, bool purgeable)
 
 	return arg.retained;
 }
+
+int igt_vc4_get_underrun_count(int debugfs)
+{
+	int underrun_count;
+	char *underrun = igt_sysfs_get(debugfs, VC4_UNDERRUN_DEBUGFS);
+
+	igt_assert(underrun);
+
+	underrun_count = atoi(underrun);
+	free(underrun);
+
+	return underrun_count;
+}
+
+void igt_vc4_set_load_tracker(int debugfs, bool enable)
+{
+	igt_sysfs_set(debugfs, VC4_LOAD_TRACKER_DEBUGFS, enable ? "Y" : "N");
+}
+
+bool igt_vc4_get_load_tracker(int debugfs)
+{
+	bool enabled;
+	char *load_tracker = igt_sysfs_get(debugfs, VC4_LOAD_TRACKER_DEBUGFS);
+
+	igt_assert(load_tracker);
+
+	enabled = (load_tracker[0] == 'Y');
+	free(load_tracker);
+
+	return enabled;
+}
diff --git a/lib/igt_vc4.h b/lib/igt_vc4.h
index ebc8a3881b5e..0f7dba6b25e6 100644
--- a/lib/igt_vc4.h
+++ b/lib/igt_vc4.h
@@ -24,6 +24,9 @@
 #ifndef IGT_VC4_H
 #define IGT_VC4_H
 
+#define VC4_LOAD_TRACKER_DEBUGFS	"hvs_load_tracker"
+#define VC4_UNDERRUN_DEBUGFS		"hvs_underrun"
+
 uint32_t igt_vc4_get_cleared_bo(int fd, size_t size, uint32_t clearval);
 int igt_vc4_create_bo(int fd, size_t size);
 void *igt_vc4_mmap_bo(int fd, uint32_t handle, uint32_t size, unsigned prot);
@@ -32,5 +35,8 @@ bool igt_vc4_purgeable_bo(int fd, int handle, bool purgeable);
 
 void igt_vc4_set_tiling(int fd, uint32_t handle, uint64_t modifier);
 uint64_t igt_vc4_get_tiling(int fd, uint32_t handle);
+int igt_vc4_get_underrun_count(int debugfs);
+void igt_vc4_set_load_tracker(int debugfs, bool enable);
+bool igt_vc4_get_load_tracker(int debugfs);
 
 #endif /* IGT_VC4_H */
-- 
2.20.1

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

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

* [igt-dev] [PATCH i-g-t 4/4] tests: Add VC4 load tracker tests
  2019-01-08 15:02 [igt-dev] [PATCH RFC i-g-t 0/4] VC4 load tracker testing Paul Kocialkowski
                   ` (2 preceding siblings ...)
  2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 3/4] lib/igt_vc4: Add helpers for underrun count and load tracker state Paul Kocialkowski
@ 2019-01-08 15:02 ` Paul Kocialkowski
  2019-01-08 15:03 ` [igt-dev] ✗ Fi.CI.BAT: failure for VC4 load tracker testing Patchwork
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Paul Kocialkowski @ 2019-01-08 15:02 UTC (permalink / raw)
  To: igt-dev; +Cc: Eben Upton

This introduces tests for the VC4 load tracking mechanism, with two
flavors. One checks that the load limitation is reached after adding
"as many planes as possible" in the mode resolution. The other checks
the consistency between the underrun indication and load tracking
indication while doing that.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
---
 tests/Makefile.sources   |   1 +
 tests/meson.build        |   1 +
 tests/vc4_load_tracker.c | 249 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 251 insertions(+)
 create mode 100644 tests/vc4_load_tracker.c

diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index eedde1e817cb..5ea4f940129e 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -8,6 +8,7 @@ VC4_TESTS = \
 	vc4_create_bo \
 	vc4_dmabuf_poll \
 	vc4_lookup_fail \
+	vc4_load_tracker \
 	vc4_label_bo \
 	vc4_purgeable_bo \
 	vc4_tiling \
diff --git a/tests/meson.build b/tests/meson.build
index b8a6e61b3404..f6c71ff97574 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -85,6 +85,7 @@ test_progs = [
 	'vc4_create_bo',
 	'vc4_dmabuf_poll',
 	'vc4_label_bo',
+	'vc4_load_tracker',
 	'vc4_lookup_fail',
 	'vc4_purgeable_bo',
 	'vc4_tiling',
diff --git a/tests/vc4_load_tracker.c b/tests/vc4_load_tracker.c
new file mode 100644
index 000000000000..10301a1ecde3
--- /dev/null
+++ b/tests/vc4_load_tracker.c
@@ -0,0 +1,249 @@
+/*
+ * Copyright © 2018 Bootlin
+ * Copyright © 2018 Broadcom
+ *
+ * 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 "igt.h"
+#include "igt_vc4.h"
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <fcntl.h>
+#include <inttypes.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <poll.h>
+#include "vc4_drm.h"
+
+static igt_output_t *select_output(igt_display_t *display)
+{
+	igt_output_t *output;
+	enum pipe pipe;
+
+	for_each_pipe(display, pipe) {
+		for_each_valid_output_on_pipe(display, pipe, output) {
+			drmModeConnector *connector = output->config.connector;
+
+			if (connector->connection != DRM_MODE_CONNECTED)
+				continue;
+
+			igt_output_set_pipe(output, pipe);
+
+			return output;
+		}
+	}
+
+	return NULL;
+}
+
+static void setup_primary_plane(int drm_fd, igt_output_t *output,
+				uint32_t width, uint32_t height,
+				igt_plane_t **plane, struct igt_fb *fb)
+{
+	unsigned int fb_id;
+
+	*plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_assert(*plane);
+
+	fb_id = igt_create_pattern_fb(drm_fd, width, height,
+				      DRM_FORMAT_ARGB8888,
+				      LOCAL_DRM_FORMAT_MOD_NONE, fb);
+	igt_assert(fb_id > 0);
+
+	igt_plane_set_fb(*plane, fb);
+}
+
+static void setup_overlay_plane(int drm_fd, igt_output_t *output,
+				unsigned int index, uint32_t width,
+				uint32_t height, struct igt_fb *fbs)
+{
+	unsigned int fb_id;
+	struct igt_fb *fb = &fbs[index];
+	igt_plane_t *plane =
+		igt_output_get_plane_type_index(output, DRM_PLANE_TYPE_OVERLAY,
+						index);
+	igt_assert(plane);
+
+	fb_id = igt_create_pattern_fb(drm_fd, width, height,
+				      DRM_FORMAT_ARGB8888,
+				      LOCAL_DRM_FORMAT_MOD_NONE, fb);
+	igt_assert(fb_id > 0);
+
+	igt_plane_set_fb(plane, fb);
+	igt_plane_set_position(plane, 10 * (index + 1), 10 * (index + 1));
+}
+
+static void cleanup_overlay_plane(int drm_fd, igt_output_t *output,
+				  unsigned int index, struct igt_fb *fbs,
+				  bool cleanup_fb)
+{
+	struct igt_fb *fb = &fbs[index];
+	igt_plane_t *plane =
+		igt_output_get_plane_type_index(output, DRM_PLANE_TYPE_OVERLAY,
+						index);
+	igt_assert(plane);
+
+	if (cleanup_fb)
+		igt_remove_fb(drm_fd, fb);
+	else
+		igt_plane_set_fb(plane, NULL);
+}
+
+static void load_tracker_test(int drm_fd, igt_display_t *display,
+			      bool test_consistency)
+{
+	igt_output_t *output;
+	drmModeModeInfo *mode;
+	struct igt_fb primary_fb;
+	igt_plane_t *primary_plane;
+	struct igt_fb *overlay_fbs;
+	uint32_t overlay_width, overlay_height;
+	unsigned int overlay_planes_count;
+	unsigned int count;
+	unsigned int index;
+	bool load_tracker_initial = false;
+	bool bandwidth_exceeded = false;
+	bool underrun_detected = false;
+	int underrun_count;
+	int debugfs;
+	int ret;
+
+	debugfs = igt_debugfs_dir(drm_fd);
+	igt_assert(debugfs >= 0);
+
+	underrun_count = igt_vc4_get_underrun_count(debugfs);
+	load_tracker_initial = igt_vc4_get_load_tracker(debugfs);
+
+	output = select_output(display);
+	igt_assert(output);
+
+	igt_debug("Selected connector %s\n",
+		  kmstest_connector_type_str(output->config.connector->connector_type));
+
+	mode = igt_output_get_mode(output);
+	igt_assert(mode);
+
+	setup_primary_plane(drm_fd, output, mode->hdisplay, mode->vdisplay,
+			    &primary_plane, &primary_fb);
+
+	overlay_planes_count =
+		igt_output_count_plane_type(output, DRM_PLANE_TYPE_OVERLAY);
+
+	overlay_fbs = calloc(sizeof(struct igt_fb), overlay_planes_count);
+
+	overlay_width = mode->hdisplay;
+	overlay_height = mode->vdisplay;
+
+	for (count = 1; count <= overlay_planes_count; count++) {
+		int underrun_update;
+
+		igt_debug("Using %d overlay planes with resolution %dx%d\n",
+			  overlay_planes_count, overlay_width, overlay_height);
+
+		for (index = 0; index < count; index++)
+			setup_overlay_plane(drm_fd, output, index,
+					    overlay_width, overlay_height,
+					    overlay_fbs);
+
+		igt_vc4_set_load_tracker(debugfs, true);
+
+		ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
+		bandwidth_exceeded = (ret < 0 && errno == ENOSPC);
+
+		igt_debug("Bandwidth limitation exeeded: %s\n",
+			  bandwidth_exceeded ? "Yes" : "No");
+
+		igt_vc4_set_load_tracker(debugfs, false);
+
+		igt_display_commit2(display, COMMIT_ATOMIC);
+
+		igt_wait_for_vblank(drm_fd, output->pending_pipe);
+
+		underrun_update = igt_vc4_get_underrun_count(debugfs);
+
+		underrun_detected = (underrun_update > underrun_count);
+		underrun_count = underrun_update;
+
+		igt_debug("Underrun detected: %s\n",
+			  underrun_detected ? "Yes" : "No");
+
+		if (test_consistency)
+			igt_assert(bandwidth_exceeded == underrun_detected);
+
+		for (index = 0; index < count; index++)
+			cleanup_overlay_plane(drm_fd, output, index,
+					      overlay_fbs, false);
+
+		igt_display_commit2(display, COMMIT_ATOMIC);
+
+		for (index = 0; index < count; index++)
+			cleanup_overlay_plane(drm_fd, output, index,
+					      overlay_fbs, true);
+
+
+		if (bandwidth_exceeded)
+			break;
+	}
+
+	if (!test_consistency)
+		igt_assert(bandwidth_exceeded);
+
+	free(overlay_fbs);
+
+	igt_plane_set_fb(primary_plane, NULL);
+
+	igt_display_commit2(display, COMMIT_ATOMIC);
+
+	igt_remove_fb(drm_fd, &primary_fb);
+
+	igt_vc4_set_load_tracker(debugfs, load_tracker_initial);
+	close(debugfs);
+}
+
+igt_main
+{
+	igt_display_t display;
+	int drm_fd;
+
+	igt_fixture {
+		drm_fd = drm_open_driver(DRIVER_VC4);
+
+		kmstest_set_vt_graphics_mode();
+
+		igt_display_require(&display, drm_fd);
+		igt_require(display.is_atomic);
+	}
+
+	igt_subtest("detection")
+		load_tracker_test(drm_fd, &display, false);
+
+	igt_subtest("consistency")
+		load_tracker_test(drm_fd, &display, true);
+
+	igt_fixture {
+		igt_display_fini(&display);
+		kmstest_restore_vt_mode();
+		close(drm_fd);
+	}
+}
-- 
2.20.1

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

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

* [igt-dev] ✗ Fi.CI.BAT: failure for VC4 load tracker testing
  2019-01-08 15:02 [igt-dev] [PATCH RFC i-g-t 0/4] VC4 load tracker testing Paul Kocialkowski
                   ` (3 preceding siblings ...)
  2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 4/4] tests: Add VC4 load tracker tests Paul Kocialkowski
@ 2019-01-08 15:03 ` Patchwork
  2019-01-08 17:16 ` [igt-dev] ✓ Fi.CI.BAT: success for VC4 load tracker testing (rev2) Patchwork
  2019-01-09  1:42 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  6 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2019-01-08 15:03 UTC (permalink / raw)
  To: Paul Kocialkowski; +Cc: igt-dev

== Series Details ==

Series: VC4 load tracker testing
URL   : https://patchwork.freedesktop.org/series/54887/
State : failure

== Summary ==

Patch is empty.
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

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

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

* [igt-dev] ✓ Fi.CI.BAT: success for VC4 load tracker testing (rev2)
  2019-01-08 15:02 [igt-dev] [PATCH RFC i-g-t 0/4] VC4 load tracker testing Paul Kocialkowski
                   ` (4 preceding siblings ...)
  2019-01-08 15:03 ` [igt-dev] ✗ Fi.CI.BAT: failure for VC4 load tracker testing Patchwork
@ 2019-01-08 17:16 ` Patchwork
  2019-01-09  1:42 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  6 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2019-01-08 17:16 UTC (permalink / raw)
  To: Paul Kocialkowski; +Cc: igt-dev

== Series Details ==

Series: VC4 load tracker testing (rev2)
URL   : https://patchwork.freedesktop.org/series/54887/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5378 -> IGTPW_2201
====================================================

Summary
-------

  **WARNING**

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

  External URL: https://patchwork.freedesktop.org/api/1.0/series/54887/revisions/2/

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

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

### IGT changes ###

#### Warnings ####

  * igt@kms_busy@basic-flip-a:
    - fi-kbl-7567u:       PASS -> SKIP +36

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live_hangcheck:
    - fi-bwr-2160:        PASS -> DMESG-FAIL [fdo#108735]

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

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s4-devices:
    - fi-bsw-kefka:       DMESG-WARN -> PASS
    - fi-blb-e6850:       INCOMPLETE [fdo#107718] -> PASS

  * igt@i915_selftest@live_hangcheck:
    - fi-apl-guc:         DMESG-FAIL [fdo#109228] -> PASS

  * igt@kms_frontbuffer_tracking@basic:
    - fi-byt-clapper:     FAIL [fdo#103167] -> PASS

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-a:
    - fi-byt-clapper:     FAIL [fdo#103191] / [fdo#107362] -> PASS

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
    - fi-byt-clapper:     INCOMPLETE [fdo#102657] -> PASS

  * igt@kms_psr@sprite_plane_onoff:
    - fi-skl-6700hq:      FAIL [fdo#107383] -> PASS +3

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

  [fdo#102657]: https://bugs.freedesktop.org/show_bug.cgi?id=102657
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#105998]: https://bugs.freedesktop.org/show_bug.cgi?id=105998
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#107383]: https://bugs.freedesktop.org/show_bug.cgi?id=107383
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#108735]: https://bugs.freedesktop.org/show_bug.cgi?id=108735
  [fdo#108915]: https://bugs.freedesktop.org/show_bug.cgi?id=108915
  [fdo#109228]: https://bugs.freedesktop.org/show_bug.cgi?id=109228
  [fdo#109241]: https://bugs.freedesktop.org/show_bug.cgi?id=109241


Participating hosts (48 -> 45)
------------------------------

  Additional (1): fi-icl-y 
  Missing    (4): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-glk-j4005 


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

    * IGT: IGT_4756 -> IGTPW_2201

  CI_DRM_5378: 96b07848e43c024bd6a5a44970371c4866140a1c @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_2201: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2201/
  IGT_4756: 75081c6bfb9998bd7cbf35a7ac0578c683fe55a8 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+igt@vc4_load_tracker@consistency
+igt@vc4_load_tracker@detection

== Logs ==

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for VC4 load tracker testing (rev2)
  2019-01-08 15:02 [igt-dev] [PATCH RFC i-g-t 0/4] VC4 load tracker testing Paul Kocialkowski
                   ` (5 preceding siblings ...)
  2019-01-08 17:16 ` [igt-dev] ✓ Fi.CI.BAT: success for VC4 load tracker testing (rev2) Patchwork
@ 2019-01-09  1:42 ` Patchwork
  6 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2019-01-09  1:42 UTC (permalink / raw)
  To: Paul Kocialkowski; +Cc: igt-dev

== Series Details ==

Series: VC4 load tracker testing (rev2)
URL   : https://patchwork.freedesktop.org/series/54887/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5378_full -> IGTPW_2201_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/54887/revisions/2/

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_isolation@vcs1-s3:
    - shard-kbl:          NOTRUN -> INCOMPLETE [fdo#103665]

  * igt@kms_available_modes_crc@available_mode_test_crc:
    - shard-snb:          NOTRUN -> FAIL [fdo#106641]

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a:
    - shard-snb:          NOTRUN -> DMESG-WARN [fdo#107956]
    - shard-kbl:          NOTRUN -> DMESG-WARN [fdo#107956]

  * igt@kms_color@pipe-c-degamma:
    - shard-apl:          PASS -> FAIL [fdo#104782]

  * igt@kms_cursor_crc@cursor-256x256-onscreen:
    - shard-kbl:          PASS -> FAIL [fdo#103232] +1

  * igt@kms_cursor_crc@cursor-256x256-random:
    - shard-glk:          PASS -> FAIL [fdo#103232] +2

  * igt@kms_cursor_crc@cursor-64x21-sliding:
    - shard-apl:          PASS -> FAIL [fdo#103232] +7

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff:
    - shard-apl:          PASS -> FAIL [fdo#103167] +1

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-gtt:
    - shard-glk:          PASS -> FAIL [fdo#103167] +3

  * igt@kms_plane@pixel-format-pipe-c-planes-source-clamping:
    - shard-glk:          PASS -> FAIL [fdo#108948] +1

  * igt@kms_plane_multiple@atomic-pipe-a-tiling-x:
    - shard-apl:          PASS -> FAIL [fdo#103166] +1

  * igt@kms_plane_multiple@atomic-pipe-a-tiling-y:
    - shard-glk:          PASS -> FAIL [fdo#103166]

  * igt@kms_setmode@basic:
    - shard-kbl:          NOTRUN -> FAIL [fdo#99912]

  * igt@sw_sync@sync_busy_fork_unixsocket:
    - shard-apl:          PASS -> INCOMPLETE [fdo#103927]

  
#### Possible fixes ####

  * igt@kms_color@pipe-c-legacy-gamma:
    - shard-apl:          FAIL [fdo#104782] -> PASS

  * igt@kms_cursor_crc@cursor-128x128-suspend:
    - shard-apl:          FAIL [fdo#103191] / [fdo#103232] -> PASS

  * igt@kms_cursor_crc@cursor-256x85-random:
    - shard-apl:          FAIL [fdo#103232] -> PASS +2

  * igt@kms_cursor_crc@cursor-256x85-sliding:
    - shard-glk:          FAIL [fdo#103232] -> PASS +2

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite:
    - shard-apl:          FAIL [fdo#103167] -> PASS

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-cpu:
    - shard-glk:          FAIL [fdo#103167] -> PASS +4

  * igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb:
    - shard-apl:          FAIL [fdo#108145] -> PASS
    - shard-glk:          FAIL [fdo#108145] -> PASS
    - shard-kbl:          FAIL [fdo#108145] -> PASS

  * igt@kms_plane_multiple@atomic-pipe-a-tiling-x:
    - shard-glk:          FAIL [fdo#103166] -> PASS +2

  * igt@kms_plane_multiple@atomic-pipe-c-tiling-yf:
    - shard-apl:          FAIL [fdo#103166] -> PASS +2
    - shard-kbl:          FAIL [fdo#103166] -> PASS

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top:
    - shard-kbl:          DMESG-FAIL [fdo#108950] -> PASS

  * igt@kms_vblank@pipe-a-ts-continuation-dpms-suspend:
    - shard-kbl:          INCOMPLETE [fdo#103665] -> PASS

  * igt@pm_rps@min-max-config-loaded:
    - shard-apl:          FAIL [fdo#102250] -> PASS
    - shard-glk:          FAIL [fdo#102250] -> PASS

  
#### Warnings ####

  * igt@i915_suspend@shrink:
    - shard-glk:          DMESG-WARN [fdo#109244] -> INCOMPLETE [fdo#103359] / [fdo#106886] / [k.org#198133]

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

  [fdo#102250]: https://bugs.freedesktop.org/show_bug.cgi?id=102250
  [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
  [fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
  [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#104782]: https://bugs.freedesktop.org/show_bug.cgi?id=104782
  [fdo#106641]: https://bugs.freedesktop.org/show_bug.cgi?id=106641
  [fdo#106886]: https://bugs.freedesktop.org/show_bug.cgi?id=106886
  [fdo#107469]: https://bugs.freedesktop.org/show_bug.cgi?id=107469
  [fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#108784]: https://bugs.freedesktop.org/show_bug.cgi?id=108784
  [fdo#108929]: https://bugs.freedesktop.org/show_bug.cgi?id=108929
  [fdo#108948]: https://bugs.freedesktop.org/show_bug.cgi?id=108948
  [fdo#108950]: https://bugs.freedesktop.org/show_bug.cgi?id=108950
  [fdo#109241]: https://bugs.freedesktop.org/show_bug.cgi?id=109241
  [fdo#109244]: https://bugs.freedesktop.org/show_bug.cgi?id=109244
  [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
  [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133


Participating hosts (7 -> 5)
------------------------------

  Missing    (2): shard-skl shard-iclb 


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

    * IGT: IGT_4756 -> IGTPW_2201
    * Piglit: piglit_4509 -> None

  CI_DRM_5378: 96b07848e43c024bd6a5a44970371c4866140a1c @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_2201: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2201/
  IGT_4756: 75081c6bfb9998bd7cbf35a7ac0578c683fe55a8 @ 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_2201/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

end of thread, other threads:[~2019-01-09  1:42 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-08 15:02 [igt-dev] [PATCH RFC i-g-t 0/4] VC4 load tracker testing Paul Kocialkowski
2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 1/4] lib/igt_kms: Add helpers to count and iterate planes from pipe Paul Kocialkowski
2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 2/4] lib/igt_kms: Add helpers to count and iterate planes from output Paul Kocialkowski
2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 3/4] lib/igt_vc4: Add helpers for underrun count and load tracker state Paul Kocialkowski
2019-01-08 15:02 ` [igt-dev] [PATCH i-g-t 4/4] tests: Add VC4 load tracker tests Paul Kocialkowski
2019-01-08 15:03 ` [igt-dev] ✗ Fi.CI.BAT: failure for VC4 load tracker testing Patchwork
2019-01-08 17:16 ` [igt-dev] ✓ Fi.CI.BAT: success for VC4 load tracker testing (rev2) Patchwork
2019-01-09  1:42 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.