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

This series introduces helpers and a simple test (with three 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.

Changes since RFC v1:
* Split sub-tests into underrun-detection and bandwidth-detection;
* Updated preliminary patches;
* Rebased to latest upstream master;
* Dropped autotools support.

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/meson.build        |   1 +
 tests/vc4_load_tracker.c | 254 +++++++++++++++++++++++++++++++++++++++
 6 files changed, 383 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] 7+ messages in thread

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

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>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Maxime Ripard <maxime.ripard@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 85a911e11060..88a16c81caa3 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -2279,6 +2279,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 679d4e84fab8..3b3cf659035b 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -407,6 +407,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] 7+ messages in thread

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

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>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Maxime Ripard <maxime.ripard@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 88a16c81caa3..1cab9e80d52a 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -3720,6 +3720,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 3b3cf659035b..727ac2d186ed 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -403,6 +403,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] 7+ messages in thread

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

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] 7+ messages in thread

* [igt-dev] [PATCH i-g-t RFC v2 4/4] tests: Add VC4 load tracker tests
  2019-02-06 15:00 [igt-dev] [PATCH i-g-t RFC v2 0/4] VC4 load tracker testing Paul Kocialkowski
                   ` (2 preceding siblings ...)
  2019-02-06 15:00 ` [igt-dev] [PATCH i-g-t RFC v2 3/4] lib/igt_vc4: Add helpers for underrun count and load tracker state Paul Kocialkowski
@ 2019-02-06 15:00 ` Paul Kocialkowski
  2019-02-06 16:07 ` [igt-dev] ✓ Fi.CI.BAT: success for VC4 load tracker testing (rev3) Patchwork
  2019-02-06 16:59 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  5 siblings, 0 replies; 7+ messages in thread
From: Paul Kocialkowski @ 2019-02-06 15:00 UTC (permalink / raw)
  To: igt-dev; +Cc: Eben Upton, Thomas Petazzoni

This introduces new tests for the VC4 load tracking mechanism, that
will attempt to add "as many planes as possibles" in the mode
resolution. The associated sub-tests are the following:
- bandwidth-detection: checks that bandwidth limitation is detected;
- underrun-detection: checks that hardware underruns are detected;
- consistency: checks that bandwidth and underrun reports are consistent;

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

diff --git a/tests/meson.build b/tests/meson.build
index 0f12df26d9fb..beff2568cf78 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -86,6 +86,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..208279c7ee8f
--- /dev/null
+++ b/tests/vc4_load_tracker.c
@@ -0,0 +1,254 @@
+/*
+ * 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, bool test_bandwidth)
+{
+	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 ((test_bandwidth && bandwidth_exceeded) ||
+		    (!test_bandwidth && underrun_detected))
+			break;
+	}
+
+	if (test_bandwidth)
+		igt_assert(bandwidth_exceeded);
+	else
+		igt_assert(underrun_detected);
+
+	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("bandwidth-detection")
+		load_tracker_test(drm_fd, &display, false, true);
+
+	igt_subtest("underrun-detection")
+		load_tracker_test(drm_fd, &display, false, false);
+
+	igt_subtest("consistency")
+		load_tracker_test(drm_fd, &display, true, false);
+
+	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] 7+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for VC4 load tracker testing (rev3)
  2019-02-06 15:00 [igt-dev] [PATCH i-g-t RFC v2 0/4] VC4 load tracker testing Paul Kocialkowski
                   ` (3 preceding siblings ...)
  2019-02-06 15:00 ` [igt-dev] [PATCH i-g-t RFC v2 4/4] tests: Add VC4 load tracker tests Paul Kocialkowski
@ 2019-02-06 16:07 ` Patchwork
  2019-02-06 16:59 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2019-02-06 16:07 UTC (permalink / raw)
  To: Paul Kocialkowski; +Cc: igt-dev

== Series Details ==

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

== Summary ==

CI Bug Log - changes from CI_DRM_5551 -> IGTPW_2348
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live_execlists:
    - fi-apl-guc:         PASS -> INCOMPLETE [fdo#103927]

  * igt@kms_busy@basic-flip-b:
    - fi-gdg-551:         PASS -> FAIL [fdo#103182]

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s3:
    - fi-blb-e6850:       INCOMPLETE [fdo#107718] -> PASS

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-kbl-7500u:       FAIL [fdo#109485] -> PASS

  * igt@pm_rpm@basic-pci-d3-state:
    - fi-bsw-kefka:       {SKIP} [fdo#109271] -> PASS

  * igt@pm_rpm@basic-rte:
    - fi-bsw-kefka:       FAIL [fdo#108800] -> PASS

  * igt@pm_rpm@module-reload:
    - {fi-icl-y}:         DMESG-FAIL [fdo#109513] -> PASS

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

  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#108622]: https://bugs.freedesktop.org/show_bug.cgi?id=108622
  [fdo#108800]: https://bugs.freedesktop.org/show_bug.cgi?id=108800
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109485]: https://bugs.freedesktop.org/show_bug.cgi?id=109485
  [fdo#109513]: https://bugs.freedesktop.org/show_bug.cgi?id=109513


Participating hosts (48 -> 46)
------------------------------

  Additional (1): fi-ivb-3770 
  Missing    (3): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan 


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

    * IGT: IGT_4812 -> IGTPW_2348

  CI_DRM_5551: 417d0e0cd0275705aed001d938e646879ee5afe9 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_2348: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2348/
  IGT_4812: 592b854fead32c2b0dac7198edfb9a6bffd66932 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+igt@vc4_load_tracker@bandwidth-detection
+igt@vc4_load_tracker@consistency
+igt@vc4_load_tracker@underrun-detection

== Logs ==

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for VC4 load tracker testing (rev3)
  2019-02-06 15:00 [igt-dev] [PATCH i-g-t RFC v2 0/4] VC4 load tracker testing Paul Kocialkowski
                   ` (4 preceding siblings ...)
  2019-02-06 16:07 ` [igt-dev] ✓ Fi.CI.BAT: success for VC4 load tracker testing (rev3) Patchwork
@ 2019-02-06 16:59 ` Patchwork
  5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2019-02-06 16:59 UTC (permalink / raw)
  To: Paul Kocialkowski; +Cc: igt-dev

== Series Details ==

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

== Summary ==

CI Bug Log - changes from CI_DRM_5551_full -> IGTPW_2348_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_schedule@pi-ringfull-render:
    - shard-glk:          NOTRUN -> FAIL [fdo#103158]

  * igt@gem_mmap_gtt@hang:
    - shard-glk:          PASS -> FAIL [fdo#109469]

  * igt@kms_color@pipe-b-ctm-max:
    - shard-apl:          PASS -> FAIL [fdo#108147]
    - shard-kbl:          PASS -> FAIL [fdo#108147]

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

  * igt@kms_cursor_crc@cursor-128x128-suspend:
    - shard-hsw:          PASS -> INCOMPLETE [fdo#103540]

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

  * igt@kms_flip@2x-plain-flip-fb-recreate:
    - shard-glk:          PASS -> FAIL [fdo#100368]

  * igt@kms_flip@modeset-vs-vblank-race:
    - shard-glk:          PASS -> FAIL [fdo#103060]

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-wc:
    - shard-glk:          PASS -> FAIL [fdo#103167] +2

  * igt@kms_frontbuffer_tracking@fbc-1p-rte:
    - shard-kbl:          PASS -> DMESG-FAIL [fdo#103167] / [fdo#103558] / [fdo#105602]
    - shard-apl:          PASS -> FAIL [fdo#103167] / [fdo#105682]

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

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

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

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

  
#### Possible fixes ####

  * igt@kms_color@pipe-a-degamma:
    - shard-apl:          FAIL [fdo#104782] / [fdo#108145] -> PASS
    - shard-kbl:          FAIL [fdo#104782] / [fdo#108145] -> PASS

  * igt@kms_cursor_crc@cursor-128x128-dpms:
    - shard-kbl:          FAIL [fdo#103232] -> PASS

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

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

  * igt@kms_cursor_crc@cursor-alpha-opaque:
    - shard-glk:          FAIL [fdo#109350] -> PASS

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic:
    - shard-hsw:          FAIL [fdo#103355] -> PASS

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

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

  * igt@kms_plane@pixel-format-pipe-b-planes-source-clamping:
    - shard-apl:          FAIL [fdo#108948] -> PASS

  * igt@kms_plane@plane-position-covered-pipe-b-planes:
    - shard-glk:          FAIL [fdo#103166] -> PASS +1
    - shard-kbl:          FAIL [fdo#103166] -> PASS

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

  * igt@kms_setmode@basic:
    - shard-hsw:          FAIL [fdo#99912] -> PASS

  * igt@kms_universal_plane@universal-plane-pipe-a-functional:
    - shard-apl:          FAIL [fdo#103166] -> PASS

  * igt@pm_rpm@system-suspend:
    - shard-kbl:          INCOMPLETE [fdo#103665] / [fdo#107807] -> PASS

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

  [fdo#100368]: https://bugs.freedesktop.org/show_bug.cgi?id=100368
  [fdo#103060]: https://bugs.freedesktop.org/show_bug.cgi?id=103060
  [fdo#103158]: https://bugs.freedesktop.org/show_bug.cgi?id=103158
  [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#103355]: https://bugs.freedesktop.org/show_bug.cgi?id=103355
  [fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
  [fdo#103558]: https://bugs.freedesktop.org/show_bug.cgi?id=103558
  [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
  [fdo#104782]: https://bugs.freedesktop.org/show_bug.cgi?id=104782
  [fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602
  [fdo#105682]: https://bugs.freedesktop.org/show_bug.cgi?id=105682
  [fdo#105763]: https://bugs.freedesktop.org/show_bug.cgi?id=105763
  [fdo#107807]: https://bugs.freedesktop.org/show_bug.cgi?id=107807
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#108147]: https://bugs.freedesktop.org/show_bug.cgi?id=108147
  [fdo#108948]: https://bugs.freedesktop.org/show_bug.cgi?id=108948
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109350]: https://bugs.freedesktop.org/show_bug.cgi?id=109350
  [fdo#109469]: https://bugs.freedesktop.org/show_bug.cgi?id=109469
  [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912


Participating hosts (6 -> 4)
------------------------------

  Missing    (2): shard-skl shard-iclb 


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

    * IGT: IGT_4812 -> IGTPW_2348
    * Piglit: piglit_4509 -> None

  CI_DRM_5551: 417d0e0cd0275705aed001d938e646879ee5afe9 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_2348: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2348/
  IGT_4812: 592b854fead32c2b0dac7198edfb9a6bffd66932 @ 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_2348/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

end of thread, other threads:[~2019-02-06 16:59 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-06 15:00 [igt-dev] [PATCH i-g-t RFC v2 0/4] VC4 load tracker testing Paul Kocialkowski
2019-02-06 15:00 ` [igt-dev] [PATCH i-g-t RFC v2 1/4] lib/igt_kms: Add helpers to count and iterate planes from pipe Paul Kocialkowski
2019-02-06 15:00 ` [igt-dev] [PATCH i-g-t RFC v2 2/4] lib/igt_kms: Add helpers to count and iterate planes from output Paul Kocialkowski
2019-02-06 15:00 ` [igt-dev] [PATCH i-g-t RFC v2 3/4] lib/igt_vc4: Add helpers for underrun count and load tracker state Paul Kocialkowski
2019-02-06 15:00 ` [igt-dev] [PATCH i-g-t RFC v2 4/4] tests: Add VC4 load tracker tests Paul Kocialkowski
2019-02-06 16:07 ` [igt-dev] ✓ Fi.CI.BAT: success for VC4 load tracker testing (rev3) Patchwork
2019-02-06 16:59 ` [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.