All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t 0/4] Test tiled display with aid of chamelium.
@ 2021-04-26  8:12 Kunal Joshi
  2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 1/4] Make basic chamelium function accessible to other tests Kunal Joshi
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Kunal Joshi @ 2021-04-26  8:12 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi, petri.latvala

As of now we have kms_dp_tiled_display test which needs a physical
panel. Added changes to have chamelium act as a tiled panel and then
execute the test.

Kunal Joshi (4):
  Make basic chamelium function accessible to other tests
  Added structures and functions to generate tiled edids
  Added a subtest where chamelium acts as a tiled panel
  HAX: Run in BAT

 lib/igt_chamelium.c                   | 198 ++++++++++++++
 lib/igt_chamelium.h                   |  33 +++
 lib/igt_edid.c                        |  27 ++
 lib/igt_edid.h                        |  20 ++
 lib/igt_kms.c                         | 202 ++++++++++++++
 lib/igt_kms.h                         |  25 +-
 tests/intel-ci/fast-feedback.testlist |  13 +-
 tests/kms_chamelium.c                 | 378 +++++++++-----------------
 tests/kms_dp_tiled_display.c          | 119 ++++++--
 9 files changed, 736 insertions(+), 279 deletions(-)

-- 
2.25.1

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

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

* [igt-dev] [PATCH i-g-t 1/4] Make basic chamelium function accessible to other tests
  2021-04-26  8:12 [igt-dev] [PATCH i-g-t 0/4] Test tiled display with aid of chamelium Kunal Joshi
@ 2021-04-26  8:12 ` Kunal Joshi
  2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 2/4] Added structures and functions to generate tiled edids Kunal Joshi
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Kunal Joshi @ 2021-04-26  8:12 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi, petri.latvala

There are many use case where we can integrate chamelium with other tests,
Migrating some of basic chamelium functions to igt_chamelium lib to avoid
Code rewriting.

v2: Moved one more function reset_state from tests/kms_chamelium to
lib/igt_chamelium.

v3: - Shifted disabling of modeset to igt_kms
    - Replace connection_str with kmstest_connector_status_str (Petri)
    - Generalized require__connector_present (Petri)
    - Avoided using data_chamelium_t struct (Petri)

v4: - Moved function to library (Petri)
    - Renamed some functions and added documentation (Petri)

v6: - Documentation of functions(Petri)
    - Shifted function to igt_kms and renamed (Petri)

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Karthik B S <karthik.b.s@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
---
 lib/igt_chamelium.c   | 131 +++++++++++++++
 lib/igt_chamelium.h   |  28 ++++
 lib/igt_kms.c         | 100 +++++++++++
 lib/igt_kms.h         |  23 ++-
 tests/kms_chamelium.c | 378 +++++++++++++++---------------------------
 5 files changed, 411 insertions(+), 249 deletions(-)

diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
index 99b6a8df..617b416e 100644
--- a/lib/igt_chamelium.c
+++ b/lib/igt_chamelium.c
@@ -220,6 +220,137 @@ const char *chamelium_port_get_name(struct chamelium_port *port)
 	return port->name;
 }
 
+/**
+ * chamelium_require_connector_present
+ * @ports: All connected ports
+ * @type: Required port type
+ * @port_count: Total port count
+ * @count: The required number of port count
+ *
+ * Check there are required ports connected of given type
+ */
+void
+chamelium_require_connector_present(struct chamelium_port **ports,
+				    unsigned int type,
+				    int port_count,
+				    int count)
+{
+	int i;
+	int found = 0;
+
+	for (i = 0; i < port_count; i++) {
+		if (chamelium_port_get_type(ports[i]) == type)
+			found++;
+	}
+
+	igt_require_f(found >= count,
+		      "port of type %s found %d and required %d\n",
+		      kmstest_connector_type_str(type), found, count);
+}
+
+/**
+ * chamelium_reprobe_connector
+ * @display: A pointer to an #igt_display_t structure
+ * @chamelium: The Chamelium instance to use
+ * @port: Chamelium port to reprobe
+ *
+ *  Reprobe the given connector and fetch current status
+ *
+ *  Returns: drmModeConnection
+ */
+drmModeConnection
+chamelium_reprobe_connector(igt_display_t *display,
+			    struct chamelium *chamelium,
+			    struct chamelium_port *port)
+{
+	drmModeConnector *connector;
+	drmModeConnection status;
+	igt_output_t *output;
+
+	igt_debug("Reprobing %s...\n", chamelium_port_get_name(port));
+	connector = chamelium_port_get_connector(chamelium, port, true);
+	igt_assert(connector);
+	status = connector->connection;
+
+	/* let's make sure that igt_display is up to date too */
+	output = igt_output_from_connector(display, connector);
+	output->force_reprobe = true;
+	igt_output_refresh(output);
+
+	drmModeFreeConnector(connector);
+	return status;
+}
+
+/**
+ * chamelium_wait_for_conn_status_change
+ * @display: A pointer to an #igt_display_t structure
+ * @chamelium: The Chamelium instance to use
+ * @port: Chamelium port to check connector status update
+ * @status: Enum which describes connector states
+ *
+ * Wait for the connector to change the status
+ */
+void
+chamelium_wait_for_conn_status_change(igt_display_t *display,
+			     struct chamelium *chamelium,
+			     struct chamelium_port *port,
+			     drmModeConnection status)
+{
+	igt_debug("Waiting for %s to get %s...\n",
+			  chamelium_port_get_name(port),
+			  kmstest_connector_status_str(status));
+
+	/*
+	 * Rely on simple reprobing so we don't fail tests that don't require
+	 * that hpd events work in the event that hpd doesn't work on the system
+	 */
+	igt_until_timeout(CHAMELIUM_HOTPLUG_TIMEOUT) {
+		if (chamelium_reprobe_connector(display,
+						chamelium, port) == status)
+			return;
+
+		usleep(50000);
+	}
+
+	igt_assert_f(false, "Timed out waiting for %s to get %s\n",
+				 chamelium_port_get_name(port),
+				 kmstest_connector_status_str(status));
+}
+
+/**
+ * chamelium_reset_state
+ *
+ * @chamelium: The Chamelium instance to use
+ * @port: Chamelium port to reset
+ * @ports: All connected ports
+ * @port_count: Count of connected ports
+ *
+ * Reset chamelium ports
+ */
+void
+chamelium_reset_state(igt_display_t *display,
+		      struct chamelium *chamelium,
+		      struct chamelium_port *port,
+		      struct chamelium_port **ports,
+		      int port_count)
+{
+	int p;
+
+	chamelium_reset(chamelium);
+
+	if (port) {
+		chamelium_wait_for_conn_status_change(display, chamelium,
+						      port,
+						      DRM_MODE_DISCONNECTED);
+	} else {
+		for (p = 0; p < port_count; p++) {
+			port = ports[p];
+			chamelium_wait_for_conn_status_change(display, chamelium,
+							      port, DRM_MODE_DISCONNECTED);
+		}
+	}
+}
+
 /**
  * chamelium_destroy_frame_dump:
  * @dump: The frame dump to destroy
diff --git a/lib/igt_chamelium.h b/lib/igt_chamelium.h
index bfcb7bb4..a4ace397 100644
--- a/lib/igt_chamelium.h
+++ b/lib/igt_chamelium.h
@@ -32,6 +32,7 @@
 #include <xf86drmMode.h>
 
 #include "igt_debugfs.h"
+#include "igt_kms.h"
 
 struct igt_fb;
 struct edid;
@@ -81,6 +82,11 @@ struct chamelium_infoframe {
 
 struct chamelium_edid;
 
+/* Set of Video Identification Codes advertised in the EDID */
+static const uint8_t edid_ar_svds[] = {
+	16, /* 1080p @ 60Hz, 16:9 */
+};
+
 /**
  * CHAMELIUM_MAX_PORTS: the maximum number of ports supported by igt_chamelium.
  *
@@ -102,6 +108,8 @@ struct chamelium_edid;
 
 extern bool igt_chamelium_allow_fsm_handling;
 
+#define CHAMELIUM_HOTPLUG_TIMEOUT 20 /* seconds */
+
 void chamelium_deinit_rpc_only(struct chamelium *chamelium);
 struct chamelium *chamelium_init_rpc_only(void);
 struct chamelium *chamelium_init(int drm_fd);
@@ -115,6 +123,26 @@ drmModeConnector *chamelium_port_get_connector(struct chamelium *chamelium,
 					       struct chamelium_port *port,
 					       bool reprobe);
 const char *chamelium_port_get_name(struct chamelium_port *port);
+void
+chamelium_require_connector_present(struct chamelium_port **ports,
+				    unsigned int type,
+				    int port_count,
+				    int count);
+drmModeConnection
+chamelium_reprobe_connector(igt_display_t *display,
+			    struct chamelium *chamelium,
+			    struct chamelium_port *port);
+void
+chamelium_wait_for_conn_status_change(igt_display_t *display,
+				      struct chamelium *chamelium,
+				      struct chamelium_port *port,
+				      drmModeConnection status);
+void
+chamelium_reset_state(igt_display_t *display,
+		      struct chamelium *chamelium,
+		      struct chamelium_port *port,
+		      struct chamelium_port **ports,
+		      int port_count);
 
 bool chamelium_wait_reachable(struct chamelium *chamelium, int timeout);
 void chamelium_assert_reachable(struct chamelium *chamelium, int timeout);
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 08d429a8..4285f1d0 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -376,6 +376,83 @@ const struct edid *igt_kms_get_3d_edid(void)
 	return edid;
 }
 
+/**
+ * igt_kms_get_aspect_ratio_edid:
+ *
+ * Gets the base edid block, which includes the following modes
+ * and different aspect ratio
+ *
+ *  - 1920x1080 60Hz
+ *  - 1280x720 60Hz
+ *  - 1024x768 60Hz
+ *  - 800x600 60Hz
+ *  - 640x480 60Hz
+ *
+ * Returns: a basic edid block with aspect ratio block
+ */
+const struct edid *igt_kms_get_aspect_ratio_edid(void)
+{
+	static unsigned char raw_edid[2 * EDID_BLOCK_SIZE] = {0};
+	struct edid *edid;
+	struct edid_ext *edid_ext;
+	struct edid_cea *edid_cea;
+	char *cea_data;
+	struct edid_cea_data_block *block;
+	size_t cea_data_size = 0, vsdb_size;
+	const struct cea_vsdb *vsdb;
+
+	edid = (struct edid *) raw_edid;
+	memcpy(edid, igt_kms_get_base_edid(), sizeof(struct edid));
+	edid->extensions_len = 1;
+	edid_ext = &edid->extensions[0];
+	edid_cea = &edid_ext->data.cea;
+	cea_data = edid_cea->data;
+
+	/* The HDMI VSDB advertises support for InfoFrames */
+	block = (struct edid_cea_data_block *) &cea_data[cea_data_size];
+	vsdb = cea_vsdb_get_hdmi_default(&vsdb_size);
+	cea_data_size += edid_cea_data_block_set_vsdb(block, vsdb,
+						      vsdb_size);
+
+	/* Short Video Descriptor */
+	block = (struct edid_cea_data_block *) &cea_data[cea_data_size];
+	cea_data_size += edid_cea_data_block_set_svd(block, edid_ar_svds,
+						     sizeof(edid_ar_svds));
+
+	assert(cea_data_size <= sizeof(edid_cea->data));
+
+	edid_ext_set_cea(edid_ext, cea_data_size, 0, 0);
+
+	edid_update_checksum(edid);
+
+	return edid;
+}
+
+/**
+ * igt_kms_get_custom_edid:
+ *
+ * @edid: enum to specify which edid block is required
+ * returns pointer to requested edid block
+ *
+ * Returns: required edid
+ */
+const struct edid *igt_kms_get_custom_edid(enum igt_custom_edid_type edid)
+{
+	switch (edid) {
+	case IGT_CUSTOM_EDID_BASE:
+		return igt_kms_get_base_edid();
+	case IGT_CUSTOM_EDID_ALT:
+		return igt_kms_get_alt_edid();
+	case IGT_CUSTOM_EDID_HDMI_AUDIO:
+		return igt_kms_get_hdmi_audio_edid();
+	case IGT_CUSTOM_EDID_DP_AUDIO:
+		return igt_kms_get_dp_audio_edid();
+	case IGT_CUSTOM_EDID_ASPECT_RATIO:
+		return igt_kms_get_aspect_ratio_edid();
+	}
+	assert(0); /* unreachable */
+}
+
 const char * const igt_plane_prop_names[IGT_NUM_PLANE_PROPS] = {
 	[IGT_PLANE_SRC_X] = "SRC_X",
 	[IGT_PLANE_SRC_Y] = "SRC_Y",
@@ -2276,6 +2353,29 @@ const drmModeModeInfo *igt_std_1024_mode_get(void)
 	return &std_1024_mode;
 }
 
+/*
+ * igt_modeset_disable_all_outputs
+ * @diplay: igt display structure
+ *
+ * Modeset to disable all output
+ *
+ * We need to do a modeset disabling all output to get the next
+ * HPD event on TypeC port
+ */
+void igt_modeset_disable_all_outputs(igt_display_t *display)
+{
+	int i;
+
+	for (i = 0; i < display->n_outputs; i++) {
+		igt_output_t *output = &display->outputs[i];
+
+		igt_output_set_pipe(output, PIPE_NONE);
+	}
+
+	igt_display_commit2(display, COMMIT_ATOMIC);
+
+}
+
 static void igt_pipe_fini(igt_pipe_t *pipe)
 {
 	free(pipe->planes);
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 09b10b3e..4038f422 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -77,6 +77,25 @@ enum port {
         I915_MAX_PORTS
 };
 
+/**
+ * igt_custom_edid_type:
+ *
+ * Enum used for the helper function igt_custom_edid_type
+ * @IGT_CUSTOM_EDID_BASE: Returns base edid
+ * @IGT_CUSTOM_EDID_ALT: Returns alternate edid
+ * @IGT_CUSTOM_EDID_HDMI_AUDIO: Returns edid with HDMI audio block
+ * @IGT_CUSTOM_EDID_DP_AUDIO: Returns edid with DP audio block
+ * @IGT_CUSTOM_EDID_ASPECT_RATIO: Returns base edid with apect ratio data block
+ */
+enum igt_custom_edid_type {
+	IGT_CUSTOM_EDID_BASE,
+	IGT_CUSTOM_EDID_ALT,
+	IGT_CUSTOM_EDID_HDMI_AUDIO,
+	IGT_CUSTOM_EDID_DP_AUDIO,
+	IGT_CUSTOM_EDID_ASPECT_RATIO,
+};
+#define IGT_CUSTOM_EDID_COUNT 5
+
 /**
  * kmstest_port_name:
  * @port: display plane
@@ -446,6 +465,7 @@ igt_output_t *igt_output_from_connector(igt_display_t *display,
 void igt_output_refresh(igt_output_t *output);
 const drmModeModeInfo *igt_std_1024_mode_get(void);
 void igt_output_set_writeback_fb(igt_output_t *output, struct igt_fb *fb);
+void igt_modeset_disable_all_outputs(igt_display_t *display);
 
 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);
@@ -795,7 +815,8 @@ const struct edid *igt_kms_get_hdmi_audio_edid(void);
 const struct edid *igt_kms_get_dp_audio_edid(void);
 const struct edid *igt_kms_get_4k_edid(void);
 const struct edid *igt_kms_get_3d_edid(void);
-
+const struct edid *igt_kms_get_aspect_ratio_edid(void);
+const struct edid *igt_kms_get_custom_edid(enum igt_custom_edid_type edid);
 struct udev_monitor *igt_watch_uevents(void);
 bool igt_hotplug_detected(struct udev_monitor *mon,
 			  int timeout_secs);
diff --git a/tests/kms_chamelium.c b/tests/kms_chamelium.c
index a9101a82..3651981a 100644
--- a/tests/kms_chamelium.c
+++ b/tests/kms_chamelium.c
@@ -36,15 +36,6 @@
 #include <string.h>
 #include <stdatomic.h>
 
-enum test_edid {
-	TEST_EDID_BASE,
-	TEST_EDID_ALT,
-	TEST_EDID_HDMI_AUDIO,
-	TEST_EDID_DP_AUDIO,
-	TEST_EDID_ASPECT_RATIO,
-};
-#define TEST_EDID_COUNT 5
-
 enum test_modeset_mode {
 	TEST_MODESET_ON,
 	TEST_MODESET_ON_OFF,
@@ -59,10 +50,9 @@ typedef struct {
 
 	int drm_fd;
 
-	struct chamelium_edid *edids[TEST_EDID_COUNT];
+	struct chamelium_edid *edids[IGT_CUSTOM_EDID_COUNT];
 } data_t;
 
-#define HOTPLUG_TIMEOUT 20 /* seconds */
 #define ONLINE_TIMEOUT 20 /* seconds */
 
 #define HPD_STORM_PULSE_INTERVAL_DP 100 /* ms */
@@ -97,78 +87,6 @@ get_connectors_link_status_failed(data_t *data, bool *link_status_failed)
 	}
 }
 
-static void
-require_connector_present(data_t *data, unsigned int type)
-{
-	int i;
-	bool found = false;
-
-	for (i = 0; i < data->port_count && !found; i++) {
-		if (chamelium_port_get_type(data->ports[i]) == type)
-			found = true;
-	}
-
-	igt_require_f(found, "No port of type %s was found\n",
-		      kmstest_connector_type_str(type));
-}
-
-static drmModeConnection
-reprobe_connector(data_t *data, struct chamelium_port *port)
-{
-	drmModeConnector *connector;
-	drmModeConnection status;
-	igt_output_t *output;
-
-	igt_debug("Reprobing %s...\n", chamelium_port_get_name(port));
-	connector = chamelium_port_get_connector(data->chamelium, port, true);
-	igt_assert(connector);
-	status = connector->connection;
-
-	/* let's make sure that igt_display is up to date too */
-	output = igt_output_from_connector(&data->display, connector);
-	output->force_reprobe = true;
-	igt_output_refresh(output);
-
-	drmModeFreeConnector(connector);
-	return status;
-}
-
-static const char *connection_str(drmModeConnection c)
-{
-	switch (c) {
-	case DRM_MODE_CONNECTED:
-		return "connected";
-	case DRM_MODE_DISCONNECTED:
-		return "disconnected";
-	case DRM_MODE_UNKNOWNCONNECTION:
-		return "unknown";
-	}
-	assert(0); /* unreachable */
-}
-
-static void
-wait_for_connector(data_t *data, struct chamelium_port *port,
-		   drmModeConnection status)
-{
-	igt_debug("Waiting for %s to get %s...\n",
-		  chamelium_port_get_name(port), connection_str(status));
-
-	/*
-	 * Rely on simple reprobing so we don't fail tests that don't require
-	 * that hpd events work in the event that hpd doesn't work on the system
-	 */
-	igt_until_timeout(HOTPLUG_TIMEOUT) {
-		if (reprobe_connector(data, port) == status) {
-			return;
-		}
-
-		usleep(50000);
-	}
-
-	igt_assert_f(false, "Timed out waiting for %s to get %s\n",
-		  chamelium_port_get_name(port), connection_str(status));
-}
-
 /* Wait for hotplug and return the remaining time left from timeout */
 static bool wait_for_hotplug(struct udev_monitor *mon, int *timeout)
 {
@@ -192,11 +110,12 @@ wait_for_connector_after_hotplug(data_t *data, struct udev_monitor *mon,
 				 struct chamelium_port *port,
 				 drmModeConnection status)
 {
-	int timeout = HOTPLUG_TIMEOUT;
+	int timeout = CHAMELIUM_HOTPLUG_TIMEOUT;
 	int hotplug_count = 0;
 
 	igt_debug("Waiting for %s to get %s after a hotplug event...\n",
-		  chamelium_port_get_name(port), connection_str(status));
+			  chamelium_port_get_name(port),
+			  kmstest_connector_status_str(status));
 
 	while (timeout > 0) {
 		if (!wait_for_hotplug(mon, &timeout))
@@ -204,13 +123,15 @@ wait_for_connector_after_hotplug(data_t *data, struct udev_monitor *mon,
 
 		hotplug_count++;
 
-		if (reprobe_connector(data, port) == status)
+		if (chamelium_reprobe_connector(&data->display, data->chamelium,
+						port) == status)
 			return;
 	}
 
 	igt_assert_f(false, "Timed out waiting for %s to get %s after a hotplug. Current state %s hotplug_count %d\n",
-		  chamelium_port_get_name(port), connection_str(status),
-		  connection_str(reprobe_connector(data, port)), hotplug_count);
+			    chamelium_port_get_name(port),
+			    kmstest_connector_status_str(status),
+			    kmstest_connector_status_str(chamelium_reprobe_connector(&data->display, data->chamelium, port)), hotplug_count);
 }
 
 
@@ -282,30 +203,6 @@ check_analog_bridge(data_t *data, struct chamelium_port *port)
 	return false;
 }
 
-static void
-reset_state(data_t *data, struct chamelium_port *port)
-{
-	int p, i;
-
-	for (i = 0; i < data->display.n_outputs; i++) {
-		igt_output_t *output = &data->display.outputs[i];
-		igt_output_set_pipe(output, PIPE_NONE);
-	}
-
-	igt_display_commit2(&data->display, COMMIT_ATOMIC);
-
-	chamelium_reset(data->chamelium);
-
-	if (port) {
-		wait_for_connector(data, port, DRM_MODE_DISCONNECTED);
-	} else {
-		for (p = 0; p < data->port_count; p++) {
-			port = data->ports[p];
-			wait_for_connector(data, port, DRM_MODE_DISCONNECTED);
-		}
-	}
-}
-
 static void chamelium_paint_xr24_pattern(uint32_t *data,
 					 size_t width, size_t height,
 					 size_t stride, size_t block_size)
@@ -437,7 +334,12 @@ test_hotplug_for_each_pipe(data_t *data, struct chamelium_port *port)
 	enum pipe pipe;
 	struct udev_monitor *mon = igt_watch_uevents();
 
-	reset_state(data, NULL);
+	chamelium_reset_state(&data->display,
+			      data->chamelium,
+			      port,
+			      data->ports,
+			      data->port_count);
+
 	igt_hpd_storm_set_threshold(data->drm_fd, 0);
 	/* Disconnect if any port got connected */
 	chamelium_unplug(data->chamelium, port);
@@ -483,7 +385,11 @@ test_hotplug(data_t *data, struct chamelium_port *port, int toggle_count,
 	struct udev_monitor *mon = igt_watch_uevents();
 	igt_output_t *output = get_output_for_port(data, port);
 
-	reset_state(data, NULL);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium, NULL,
+			      data->ports, data->port_count);
+
+
 	igt_hpd_storm_set_threshold(data->drm_fd, 0);
 
 	for (i = 0; i < toggle_count; i++) {
@@ -528,18 +434,16 @@ test_hotplug(data_t *data, struct chamelium_port *port, int toggle_count,
 	igt_remove_fb(data->drm_fd, &fb);
 }
 
-static const struct edid *get_edid(enum test_edid edid);
-
 static void set_edid(data_t *data, struct chamelium_port *port,
-		     enum test_edid edid)
+		     enum igt_custom_edid_type edid)
 {
 	chamelium_port_set_edid(data->chamelium, port, data->edids[edid]);
 }
 
-static const char test_edid_read_desc[] =
+static const char igt_custom_edid_type_read_desc[] =
 	"Make sure the EDID exposed by KMS is the same as the screen's";
 static void
-test_edid_read(data_t *data, struct chamelium_port *port, enum test_edid edid)
+igt_custom_edid_type_read(data_t *data, struct chamelium_port *port, enum igt_custom_edid_type edid)
 {
 	drmModePropertyBlobPtr edid_blob = NULL;
 	drmModeConnector *connector = chamelium_port_get_connector(
@@ -548,11 +452,14 @@ test_edid_read(data_t *data, struct chamelium_port *port, enum test_edid edid)
 	const struct edid *raw_edid;
 	uint64_t edid_blob_id;
 
-	reset_state(data, port);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium,
+			      port, data->ports, data->port_count);
 
 	set_edid(data, port, edid);
 	chamelium_plug(data->chamelium, port);
-	wait_for_connector(data, port, DRM_MODE_CONNECTED);
+	chamelium_wait_for_conn_status_change(&data->display, data->chamelium,
+					      port, DRM_MODE_CONNECTED);
 
 	igt_skip_on(check_analog_bridge(data, port));
 
@@ -578,7 +485,7 @@ try_suspend_resume_hpd(data_t *data, struct chamelium_port *port,
 {
 	drmModeConnection target_state = connected ? DRM_MODE_DISCONNECTED :
 						     DRM_MODE_CONNECTED;
-	int timeout = HOTPLUG_TIMEOUT;
+	int timeout = CHAMELIUM_HOTPLUG_TIMEOUT;
 	int delay;
 	int p;
 
@@ -604,7 +511,10 @@ try_suspend_resume_hpd(data_t *data, struct chamelium_port *port,
 	chamelium_assert_reachable(data->chamelium, ONLINE_TIMEOUT);
 
 	if (port) {
-		igt_assert_eq(reprobe_connector(data, port), target_state);
+		igt_assert_eq(chamelium_reprobe_connector(&data->display,
+							  data->chamelium,
+							  port),
+							  target_state);
 	} else {
 		for (p = 0; p < data->port_count; p++) {
 			drmModeConnection current_state;
@@ -617,10 +527,10 @@ try_suspend_resume_hpd(data_t *data, struct chamelium_port *port,
 			 * the expected connector state try to wait for an HPD
 			 * event for each connector/port.
 			 */
-			current_state = reprobe_connector(data, port);
+			current_state = chamelium_reprobe_connector(&data->display, data->chamelium, port);
 			if (p > 0 && current_state != target_state) {
 				igt_assert(wait_for_hotplug(mon, &timeout));
-				current_state = reprobe_connector(data, port);
+				current_state = chamelium_reprobe_connector(&data->display, data->chamelium, port);
 			}
 
 			igt_assert_eq(current_state, target_state);
@@ -640,7 +550,9 @@ test_suspend_resume_hpd(data_t *data, struct chamelium_port *port,
 {
 	struct udev_monitor *mon = igt_watch_uevents();
 
-	reset_state(data, port);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium,
+			      port, data->ports, data->port_count);
 
 	/* Make sure we notice new connectors after resuming */
 	try_suspend_resume_hpd(data, port, state, test, mon, false);
@@ -667,7 +579,9 @@ test_suspend_resume_hpd_common(data_t *data, enum igt_suspend_state state,
 		igt_debug("Testing port %s\n", chamelium_port_get_name(port));
 	}
 
-	reset_state(data, NULL);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium, NULL,
+			      data->ports, data->port_count);
 
 	/* Make sure we notice new connectors after resuming */
 	try_suspend_resume_hpd(data, NULL, state, test, mon, false);
@@ -686,25 +600,28 @@ static void
 test_suspend_resume_edid_change(data_t *data, struct chamelium_port *port,
 				enum igt_suspend_state state,
 				enum igt_suspend_test test,
-				enum test_edid edid,
-				enum test_edid alt_edid)
+				enum igt_custom_edid_type edid,
+				enum igt_custom_edid_type alt_edid)
 {
 	struct udev_monitor *mon = igt_watch_uevents();
 	bool link_status_failed[2][data->port_count];
 	int p;
 
-	reset_state(data, port);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium,
+			      port, data->ports, data->port_count);
 
 	/* Catch the event and flush all remaining ones. */
-	igt_assert(igt_hotplug_detected(mon, HOTPLUG_TIMEOUT));
+	igt_assert(igt_hotplug_detected(mon, CHAMELIUM_HOTPLUG_TIMEOUT));
 	igt_flush_uevents(mon);
 
 	/* First plug in the port */
 	set_edid(data, port, edid);
 	chamelium_plug(data->chamelium, port);
-	igt_assert(igt_hotplug_detected(mon, HOTPLUG_TIMEOUT));
+	igt_assert(igt_hotplug_detected(mon, CHAMELIUM_HOTPLUG_TIMEOUT));
 
-	wait_for_connector(data, port, DRM_MODE_CONNECTED);
+	chamelium_wait_for_conn_status_change(&data->display, data->chamelium,
+					      port, DRM_MODE_CONNECTED);
 
 	/*
 	 * Change the edid before we suspend. On resume, the machine should
@@ -717,7 +634,7 @@ test_suspend_resume_edid_change(data_t *data, struct chamelium_port *port,
 	igt_flush_uevents(mon);
 
 	igt_system_suspend_autoresume(state, test);
-	igt_assert(igt_hotplug_detected(mon, HOTPLUG_TIMEOUT));
+	igt_assert(igt_hotplug_detected(mon, CHAMELIUM_HOTPLUG_TIMEOUT));
 	chamelium_assert_reachable(data->chamelium, ONLINE_TIMEOUT);
 
 	get_connectors_link_status_failed(data, link_status_failed[1]);
@@ -727,7 +644,7 @@ test_suspend_resume_edid_change(data_t *data, struct chamelium_port *port,
 }
 
 static igt_output_t *
-prepare_output(data_t *data, struct chamelium_port *port, enum test_edid edid)
+prepare_output(data_t *data, struct chamelium_port *port, enum igt_custom_edid_type edid)
 {
 	igt_display_t *display = &data->display;
 	igt_output_t *output;
@@ -740,7 +657,8 @@ prepare_output(data_t *data, struct chamelium_port *port, enum test_edid edid)
 	set_edid(data, port, edid);
 
 	chamelium_plug(data->chamelium, port);
-	wait_for_connector(data, port, DRM_MODE_CONNECTED);
+	chamelium_wait_for_conn_status_change(&data->display, data->chamelium,
+					      port, DRM_MODE_CONNECTED);
 
 	igt_display_reset(display);
 
@@ -838,9 +756,11 @@ static void test_display_one_mode(data_t *data, struct chamelium_port *port,
 	igt_output_t *output;
 	igt_plane_t *primary;
 
-	reset_state(data, port);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium,
+			      port, data->ports, data->port_count);
 
-	output = prepare_output(data, port, TEST_EDID_BASE);
+	output = prepare_output(data, port, IGT_CUSTOM_EDID_BASE);
 	connector = chamelium_port_get_connector(data->chamelium, port, false);
 	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
 	igt_assert(primary);
@@ -883,13 +803,15 @@ static void test_display_all_modes(data_t *data, struct chamelium_port *port,
 		 * let's reset state each mode so we will get the
 		 * HPD pulses realibably
 		 */
-		reset_state(data, port);
+		igt_modeset_disable_all_outputs(&data->display);
+		chamelium_reset_state(&data->display, data->chamelium,
+				      port, data->ports, data->port_count);
 
 		/*
 		 * modes may change due to mode pruining and link issues, so we
 		 * need to refresh the connector
 		 */
-		output = prepare_output(data, port, TEST_EDID_BASE);
+		output = prepare_output(data, port, IGT_CUSTOM_EDID_BASE);
 		connector = chamelium_port_get_connector(data->chamelium, port,
 							 false);
 		primary = igt_output_get_plane_type(output,
@@ -939,13 +861,15 @@ test_display_frame_dump(data_t *data, struct chamelium_port *port)
 		 * let's reset state each mode so we will get the
 		 * HPD pulses realibably
 		 */
-		reset_state(data, port);
+		igt_modeset_disable_all_outputs(&data->display);
+		chamelium_reset_state(&data->display, data->chamelium,
+				      port, data->ports, data->port_count);
 
 		/*
 		 * modes may change due to mode pruining and link issues, so we
 		 * need to refresh the connector
 		 */
-		output = prepare_output(data, port, TEST_EDID_BASE);
+		output = prepare_output(data, port, IGT_CUSTOM_EDID_BASE);
 		connector = chamelium_port_get_connector(data->chamelium, port,
 							 false);
 		primary = igt_output_get_plane_type(output,
@@ -1076,13 +1000,15 @@ static void test_mode_timings(data_t *data, struct chamelium_port *port)
 		 * let's reset state each mode so we will get the
 		 * HPD pulses realibably
 		 */
-		reset_state(data, port);
+		igt_modeset_disable_all_outputs(&data->display);
+		chamelium_reset_state(&data->display, data->chamelium,
+				      port, data->ports, data->port_count);
 
 		/*
 		 * modes may change due to mode pruining and link issues, so we
 		 * need to refresh the connector
 		 */
-		output = prepare_output(data, port, TEST_EDID_BASE);
+		output = prepare_output(data, port, IGT_CUSTOM_EDID_BASE);
 		connector = chamelium_port_get_connector(data->chamelium, port, false);
 		primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
 		igt_assert(primary);
@@ -1113,11 +1039,6 @@ static void test_mode_timings(data_t *data, struct chamelium_port *port)
 	} while (++i < count_modes);
 }
 
-/* Set of Video Identification Codes advertised in the EDID */
-static const uint8_t edid_ar_svds[] = {
-	16, /* 1080p @ 60Hz, 16:9 */
-};
-
 struct vic_mode {
 	int hactive, vactive;
 	int vrefresh; /* Hz */
@@ -1164,44 +1085,6 @@ static bool vic_mode_matches_drm(const struct vic_mode *vic_mode,
 	       ar_flag == (drm_mode->flags & DRM_MODE_FLAG_PIC_AR_MASK);
 }
 
-static const struct edid *get_aspect_ratio_edid(void)
-{
-	static unsigned char raw_edid[2 * EDID_BLOCK_SIZE] = {0};
-	struct edid *edid;
-	struct edid_ext *edid_ext;
-	struct edid_cea *edid_cea;
-	char *cea_data;
-	struct edid_cea_data_block *block;
-	size_t cea_data_size = 0, vsdb_size;
-	const struct cea_vsdb *vsdb;
-
-	edid = (struct edid *) raw_edid;
-	memcpy(edid, igt_kms_get_base_edid(), sizeof(struct edid));
-	edid->extensions_len = 1;
-	edid_ext = &edid->extensions[0];
-	edid_cea = &edid_ext->data.cea;
-	cea_data = edid_cea->data;
-
-	/* The HDMI VSDB advertises support for InfoFrames */
-	block = (struct edid_cea_data_block *) &cea_data[cea_data_size];
-	vsdb = cea_vsdb_get_hdmi_default(&vsdb_size);
-	cea_data_size += edid_cea_data_block_set_vsdb(block, vsdb,
-						      vsdb_size);
-
-	/* Short Video Descriptor */
-	block = (struct edid_cea_data_block *) &cea_data[cea_data_size];
-	cea_data_size += edid_cea_data_block_set_svd(block, edid_ar_svds,
-						     sizeof(edid_ar_svds));
-
-	assert(cea_data_size <= sizeof(edid_cea->data));
-
-	edid_ext_set_cea(edid_ext, cea_data_size, 0, 0);
-
-	edid_update_checksum(edid);
-
-	return edid;
-}
-
 static const char test_display_aspect_ratio_desc[] =
 	"Pick a mode with a picture aspect-ratio, capture AVI InfoFrames and "
 	"check they include the relevant fields";
@@ -1223,9 +1106,11 @@ static void test_display_aspect_ratio(data_t *data, struct chamelium_port *port)
 
 	igt_require(chamelium_supports_get_last_infoframe(data->chamelium));
 
-	reset_state(data, port);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium,
+			      port, data->ports, data->port_count);
 
-	output = prepare_output(data, port, TEST_EDID_ASPECT_RATIO);
+	output = prepare_output(data, port, IGT_CUSTOM_EDID_ASPECT_RATIO);
 	connector = chamelium_port_get_connector(data->chamelium, port, false);
 	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
 	igt_assert(primary);
@@ -1929,7 +1814,7 @@ static const char test_display_audio_desc[] =
 	"capture them and check they are correct";
 static void
 test_display_audio(data_t *data, struct chamelium_port *port,
-		   const char *audio_device, enum test_edid edid)
+		   const char *audio_device, enum igt_custom_edid_type edid)
 {
 	bool run, success;
 	struct alsa *alsa;
@@ -1953,7 +1838,9 @@ test_display_audio(data_t *data, struct chamelium_port *port,
 	alsa = alsa_init();
 	igt_assert(alsa);
 
-	reset_state(data, port);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium,
+			      port, data->ports, data->port_count);
 
 	output = prepare_output(data, port, edid);
 	connector = chamelium_port_get_connector(data->chamelium, port, false);
@@ -2021,7 +1908,7 @@ static const char test_display_audio_edid_desc[] =
 	"EDID-Like Data reports the correct audio parameters";
 static void
 test_display_audio_edid(data_t *data, struct chamelium_port *port,
-			enum test_edid edid)
+			enum igt_custom_edid_type edid)
 {
 	igt_output_t *output;
 	igt_plane_t *primary;
@@ -2034,7 +1921,9 @@ test_display_audio_edid(data_t *data, struct chamelium_port *port,
 
 	igt_require(eld_is_supported());
 
-	reset_state(data, port);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium,
+			      port, data->ports, data->port_count);
 
 	output = prepare_output(data, port, edid);
 	connector = chamelium_port_get_connector(data->chamelium, port, false);
@@ -2474,10 +2363,12 @@ static void test_display_planes_random(data_t *data,
 
 	srand(time(NULL));
 
-	reset_state(data, port);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium,
+			      port, data->ports, data->port_count);
 
 	/* Find the connector and pipe. */
-	output = prepare_output(data, port, TEST_EDID_BASE);
+	output = prepare_output(data, port, IGT_CUSTOM_EDID_BASE);
 
 	mode = igt_output_get_mode(output);
 
@@ -2577,7 +2468,9 @@ test_hpd_without_ddc(data_t *data, struct chamelium_port *port)
 {
 	struct udev_monitor *mon = igt_watch_uevents();
 
-	reset_state(data, port);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium,
+			      port, data->ports, data->port_count);
 	igt_flush_uevents(mon);
 
 	/* Disable the DDC on the connector and make sure we still get a
@@ -2586,8 +2479,10 @@ test_hpd_without_ddc(data_t *data, struct chamelium_port *port)
 	chamelium_port_set_ddc_state(data->chamelium, port, false);
 	chamelium_plug(data->chamelium, port);
 
-	igt_assert(igt_hotplug_detected(mon, HOTPLUG_TIMEOUT));
-	igt_assert_eq(reprobe_connector(data, port), DRM_MODE_CONNECTED);
+	igt_assert(igt_hotplug_detected(mon, CHAMELIUM_HOTPLUG_TIMEOUT));
+	igt_assert_eq(chamelium_reprobe_connector(&data->display,
+						  data->chamelium, port),
+						  DRM_MODE_CONNECTED);
 
 	igt_cleanup_uevents(mon);
 }
@@ -2603,7 +2498,9 @@ test_hpd_storm_detect(data_t *data, struct chamelium_port *port, int width)
 	int count = 0;
 
 	igt_require_hpd_storm_ctl(data->drm_fd);
-	reset_state(data, port);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium,
+			      port, data->ports, data->port_count);
 
 	igt_hpd_storm_set_threshold(data->drm_fd, 1);
 	chamelium_fire_hpd_pulses(data->chamelium, port, width, 10);
@@ -2631,7 +2528,9 @@ static void
 test_hpd_storm_disable(data_t *data, struct chamelium_port *port, int width)
 {
 	igt_require_hpd_storm_ctl(data->drm_fd);
-	reset_state(data, port);
+	igt_modeset_disable_all_outputs(&data->display);
+	chamelium_reset_state(&data->display, data->chamelium,
+			      port, data->ports, data->port_count);
 
 	igt_hpd_storm_set_threshold(data->drm_fd, 0);
 	chamelium_fire_hpd_pulses(data->chamelium, port,
@@ -2641,23 +2540,6 @@ test_hpd_storm_disable(data_t *data, struct chamelium_port *port, int width)
 	igt_hpd_storm_reset(data->drm_fd);
 }
 
-static const struct edid *get_edid(enum test_edid edid)
-{
-	switch (edid) {
-	case TEST_EDID_BASE:
-		return igt_kms_get_base_edid();
-	case TEST_EDID_ALT:
-		return igt_kms_get_alt_edid();
-	case TEST_EDID_HDMI_AUDIO:
-		return igt_kms_get_hdmi_audio_edid();
-	case TEST_EDID_DP_AUDIO:
-		return igt_kms_get_dp_audio_edid();
-	case TEST_EDID_ASPECT_RATIO:
-		return get_aspect_ratio_edid();
-	}
-	assert(0); /* unreachable */
-}
-
 #define for_each_port(p, port)            \
 	for (p = 0, port = data.ports[p]; \
 	     p < data.port_count;         \
@@ -2706,17 +2588,17 @@ igt_main
 		data.ports = chamelium_get_ports(data.chamelium,
 						 &data.port_count);
 
-		for (i = 0; i < TEST_EDID_COUNT; ++i) {
+		for (i = 0; i < IGT_CUSTOM_EDID_COUNT; ++i) {
 			data.edids[i] = chamelium_new_edid(data.chamelium,
-							   get_edid(i));
+							   igt_kms_get_custom_edid(i));
 		}
 	}
 
 	igt_describe("DisplayPort tests");
 	igt_subtest_group {
 		igt_fixture {
-			require_connector_present(
-			    &data, DRM_MODE_CONNECTOR_DisplayPort);
+			chamelium_require_connector_present(data.ports, DRM_MODE_CONNECTOR_DisplayPort,
+							    data.port_count, 1);
 		}
 
 		igt_describe(test_basic_hotplug_desc);
@@ -2743,10 +2625,10 @@ igt_main
 				     HPD_TOGGLE_COUNT_FAST,
 				     TEST_MODESET_ON);
 
-		igt_describe(test_edid_read_desc);
+		igt_describe(igt_custom_edid_type_read_desc);
 		connector_subtest("dp-edid-read", DisplayPort) {
-			test_edid_read(&data, port, TEST_EDID_BASE);
-			test_edid_read(&data, port, TEST_EDID_ALT);
+			igt_custom_edid_type_read(&data, port, IGT_CUSTOM_EDID_BASE);
+			igt_custom_edid_type_read(&data, port, IGT_CUSTOM_EDID_ALT);
 		}
 
 		igt_describe(test_suspend_resume_hpd_desc);
@@ -2776,16 +2658,16 @@ igt_main
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_MEM,
 							SUSPEND_TEST_NONE,
-							TEST_EDID_BASE,
-							TEST_EDID_ALT);
+							IGT_CUSTOM_EDID_BASE,
+							IGT_CUSTOM_EDID_ALT);
 
 		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("dp-edid-change-during-hibernate", DisplayPort)
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_DISK,
 							SUSPEND_TEST_DEVICES,
-							TEST_EDID_BASE,
-							TEST_EDID_ALT);
+							IGT_CUSTOM_EDID_BASE,
+							IGT_CUSTOM_EDID_ALT);
 
 		igt_describe(test_display_all_modes_desc);
 		connector_subtest("dp-crc-single", DisplayPort)
@@ -2813,12 +2695,12 @@ igt_main
 		igt_describe(test_display_audio_desc);
 		connector_subtest("dp-audio", DisplayPort)
 			test_display_audio(&data, port, "HDMI",
-					   TEST_EDID_DP_AUDIO);
+					   IGT_CUSTOM_EDID_DP_AUDIO);
 
 		igt_describe(test_display_audio_edid_desc);
 		connector_subtest("dp-audio-edid", DisplayPort)
 			test_display_audio_edid(&data, port,
-						TEST_EDID_DP_AUDIO);
+						IGT_CUSTOM_EDID_DP_AUDIO);
 
 		igt_describe(test_hotplug_for_each_pipe_desc);
 		connector_subtest("dp-hpd-for-each-pipe", DisplayPort)
@@ -2828,8 +2710,8 @@ igt_main
 	igt_describe("HDMI tests");
 	igt_subtest_group {
 		igt_fixture {
-			require_connector_present(
-			    &data, DRM_MODE_CONNECTOR_HDMIA);
+			chamelium_require_connector_present(data.ports, DRM_MODE_CONNECTOR_HDMIA,
+							    data.port_count, 1);
 		}
 
 		igt_describe(test_basic_hotplug_desc);
@@ -2856,10 +2738,10 @@ igt_main
 				     HPD_TOGGLE_COUNT_FAST,
 				     TEST_MODESET_ON);
 
-		igt_describe(test_edid_read_desc);
+		igt_describe(igt_custom_edid_type_read_desc);
 		connector_subtest("hdmi-edid-read", HDMIA) {
-			test_edid_read(&data, port, TEST_EDID_BASE);
-			test_edid_read(&data, port, TEST_EDID_ALT);
+			igt_custom_edid_type_read(&data, port, IGT_CUSTOM_EDID_BASE);
+			igt_custom_edid_type_read(&data, port, IGT_CUSTOM_EDID_ALT);
 		}
 
 		igt_describe(test_suspend_resume_hpd_desc);
@@ -2889,16 +2771,16 @@ igt_main
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_MEM,
 							SUSPEND_TEST_NONE,
-							TEST_EDID_BASE,
-							TEST_EDID_ALT);
+							IGT_CUSTOM_EDID_BASE,
+							IGT_CUSTOM_EDID_ALT);
 
 		igt_describe(test_suspend_resume_edid_change_desc);
 		connector_subtest("hdmi-edid-change-during-hibernate", HDMIA)
 			test_suspend_resume_edid_change(&data, port,
 							SUSPEND_STATE_DISK,
 							SUSPEND_TEST_DEVICES,
-							TEST_EDID_BASE,
-							TEST_EDID_ALT);
+							IGT_CUSTOM_EDID_BASE,
+							IGT_CUSTOM_EDID_ALT);
 
 		igt_describe(test_display_all_modes_desc);
 		connector_subtest("hdmi-crc-single", HDMIA)
@@ -2921,7 +2803,7 @@ igt_main
 			igt_output_t *output;
 			igt_plane_t *primary;
 
-			output = prepare_output(&data, port, TEST_EDID_BASE);
+			output = prepare_output(&data, port, IGT_CUSTOM_EDID_BASE);
 			primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
 			igt_assert(primary);
 
@@ -2952,7 +2834,7 @@ igt_main
 			igt_output_t *output;
 			igt_plane_t *primary;
 
-			output = prepare_output(&data, port, TEST_EDID_BASE);
+			output = prepare_output(&data, port, IGT_CUSTOM_EDID_BASE);
 			primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
 			igt_assert(primary);
 
@@ -2988,12 +2870,12 @@ igt_main
 		igt_describe(test_display_audio_desc);
 		connector_subtest("hdmi-audio", HDMIA)
 			test_display_audio(&data, port, "HDMI",
-					   TEST_EDID_HDMI_AUDIO);
+					   IGT_CUSTOM_EDID_HDMI_AUDIO);
 
 		igt_describe(test_display_audio_edid_desc);
 		connector_subtest("hdmi-audio-edid", HDMIA)
 			test_display_audio_edid(&data, port,
-						TEST_EDID_HDMI_AUDIO);
+						IGT_CUSTOM_EDID_HDMI_AUDIO);
 
 		igt_describe(test_display_aspect_ratio_desc);
 		connector_subtest("hdmi-aspect-ratio", HDMIA)
@@ -3007,8 +2889,8 @@ igt_main
 	igt_describe("VGA tests");
 	igt_subtest_group {
 		igt_fixture {
-			require_connector_present(
-			    &data, DRM_MODE_CONNECTOR_VGA);
+			chamelium_require_connector_present(data.ports, DRM_MODE_CONNECTOR_VGA,
+							    data.port_count, 1);
 		}
 
 		igt_describe(test_basic_hotplug_desc);
@@ -3033,10 +2915,10 @@ igt_main
 				     HPD_TOGGLE_COUNT_FAST,
 				     TEST_MODESET_ON);
 
-		igt_describe(test_edid_read_desc);
+		igt_describe(igt_custom_edid_type_read_desc);
 		connector_subtest("vga-edid-read", VGA) {
-			test_edid_read(&data, port, TEST_EDID_BASE);
-			test_edid_read(&data, port, TEST_EDID_ALT);
+			igt_custom_edid_type_read(&data, port, IGT_CUSTOM_EDID_BASE);
+			igt_custom_edid_type_read(&data, port, IGT_CUSTOM_EDID_ALT);
 		}
 
 		igt_describe(test_suspend_resume_hpd_desc);
-- 
2.25.1

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

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

* [igt-dev] [PATCH i-g-t 2/4] Added structures and functions to generate tiled edids
  2021-04-26  8:12 [igt-dev] [PATCH i-g-t 0/4] Test tiled display with aid of chamelium Kunal Joshi
  2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 1/4] Make basic chamelium function accessible to other tests Kunal Joshi
@ 2021-04-26  8:12 ` Kunal Joshi
  2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 3/4] Added a subtest where chamelium acts as a tiled panel Kunal Joshi
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Kunal Joshi @ 2021-04-26  8:12 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi, petri.latvala

Generating the tiled edid which can be flashed on chamelium and added
some functions to support the same.

v2: No change.

v3: No change.

v4: No change.

v5: No change.

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Karthik B S <karthik.b.s@intel.com>
Reviewed-by: Navare Manasi D <manasi.d.navare@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
---
 lib/igt_chamelium.c |  67 +++++++++++++++++++++++++++++
 lib/igt_chamelium.h |   5 +++
 lib/igt_edid.c      |  27 ++++++++++++
 lib/igt_edid.h      |  20 +++++++++
 lib/igt_kms.c       | 102 ++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_kms.h       |   2 +
 6 files changed, 223 insertions(+)

diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
index 617b416e..7085122a 100644
--- a/lib/igt_chamelium.c
+++ b/lib/igt_chamelium.c
@@ -856,6 +856,33 @@ const struct edid *chamelium_edid_get_raw(struct chamelium_edid *edid,
 	return edid->raw[port_index];
 }
 
+/**
+ * chamelium_edid_get_editable_raw: get the raw EDID which can be edited later.
+ * @edid: the Chamelium EDID
+ * @port: the Chamelium port
+ *
+ * The EDID provided to #chamelium_new_edid may be mutated for identification
+ * purposes. This function allows to retrieve the exact EDID that will be set
+ * for a given port.
+ *
+ * The returned raw EDID is only valid until the next call to this function.
+ */
+struct edid *chamelium_edid_get_editable_raw(struct chamelium_edid *edid,
+					  struct chamelium_port *port)
+{
+	size_t port_index = port - edid->chamelium->ports;
+	size_t edid_size;
+
+	if (!edid->raw[port_index]) {
+		edid_size = edid_get_size(edid->base);
+		edid->raw[port_index] = malloc(edid_size);
+		memcpy(edid->raw[port_index], edid->base, edid_size);
+		chamelium_port_tag_edid(port, edid->raw[port_index]);
+	}
+
+	return edid->raw[port_index];
+}
+
 /**
  * chamelium_port_set_edid:
  * @chamelium: The Chamelium instance to use
@@ -894,6 +921,46 @@ void chamelium_port_set_edid(struct chamelium *chamelium,
 				    port->id, edid_id));
 }
 
+/**
+ * chamelium_port_set_tiled_edid:
+ * @chamelium: The Chamelium instance to use
+ * @port: The port on the Chamelium to set the EDID on
+ * @edid: The Chamelium EDID to set or NULL to use the default Chamelium EDID
+ *
+ * Sets unique serial for tiled edid.
+ * Sets a port on the chamelium to use the specified EDID. This does not fire a
+ * hotplug pulse on it's own, and merely changes what EDID the chamelium port
+ * will report to us the next time we probe it. Users will need to reprobe the
+ * connectors themselves if they want to see the EDID reported by the port
+ * change.
+ *
+ * To create an EDID, see #chamelium_new_edid.
+ */
+void chamelium_port_set_tiled_edid(struct chamelium *chamelium,
+			     struct chamelium_port *port,
+			     struct chamelium_edid *edid)
+{
+	int edid_id;
+	size_t port_index;
+	struct edid *raw_edid;
+
+	if (edid) {
+		port_index = port - chamelium->ports;
+		edid_id = edid->ids[port_index];
+		if (edid_id == 0) {
+			raw_edid = chamelium_edid_get_editable_raw(edid, port);
+			raw_edid->serial[0] = 0x02;
+			base_edid_update_checksum(raw_edid);
+			edid_id = chamelium_upload_edid(chamelium, raw_edid);
+			edid->ids[port_index] = edid_id;
+		}
+	} else {
+		edid_id = 0;
+	}
+	xmlrpc_DECREF(chamelium_rpc(chamelium, NULL, "ApplyEdid", "(ii)",
+				    port->id, edid_id));
+}
+
 /**
  * chamelium_port_set_ddc_state:
  * @chamelium: The Chamelium instance to use
diff --git a/lib/igt_chamelium.h b/lib/igt_chamelium.h
index a4ace397..019bdbfe 100644
--- a/lib/igt_chamelium.h
+++ b/lib/igt_chamelium.h
@@ -165,9 +165,14 @@ struct chamelium_edid *chamelium_new_edid(struct chamelium *chamelium,
 					  const struct edid *edid);
 const struct edid *chamelium_edid_get_raw(struct chamelium_edid *edid,
 					  struct chamelium_port *port);
+struct edid *chamelium_edid_get_editable_raw(struct chamelium_edid *edid,
+					     struct chamelium_port *port);
 void chamelium_port_set_edid(struct chamelium *chamelium,
 			     struct chamelium_port *port,
 			     struct chamelium_edid *edid);
+void chamelium_port_set_tiled_edid(struct chamelium *chamelium,
+				   struct chamelium_port *port,
+				   struct chamelium_edid *edid);
 bool chamelium_port_get_ddc_state(struct chamelium *chamelium,
 				  struct chamelium_port *port);
 void chamelium_port_set_ddc_state(struct chamelium *chamelium,
diff --git a/lib/igt_edid.c b/lib/igt_edid.c
index ce09cc47..6fe984d9 100644
--- a/lib/igt_edid.c
+++ b/lib/igt_edid.c
@@ -313,9 +313,27 @@ void edid_update_checksum(struct edid *edid)
 			ext->data.cea.checksum =
 				compute_checksum((uint8_t *) ext,
 						 sizeof(struct edid_ext));
+		else if (ext->tag == EDID_EXT_DISPLAYID) {
+			ext->data.tile.extension_checksum =
+				compute_checksum((uint8_t *) &ext->data.tile,
+						 sizeof(struct edid_ext));
+			ext->data.tile.checksum =
+				compute_checksum((uint8_t *) ext,
+						 sizeof(struct edid_ext));
+		}
 	}
 }
 
+/**
+ * base_edid_update_checksum: compute and update the checksum of the main EDID
+ * block
+ */
+void base_edid_update_checksum(struct edid *edid)
+{
+	edid->checksum = compute_checksum((uint8_t *) edid,
+					  sizeof(struct edid));
+}
+
 /**
  * edid_get_size: return the size of the EDID block in bytes including EDID
  * extensions, if any.
@@ -458,6 +476,15 @@ size_t edid_cea_data_block_set_speaker_alloc(struct edid_cea_data_block *block,
 	return sizeof(struct edid_cea_data_block) + size;
 }
 
+/**
+ * edid_ext_set_tile initialize an EDID extension block to be identified
+ * as a tiled display topology block
+ */
+void edid_ext_set_displayid(struct edid_ext *ext)
+{
+	ext->tag = EDID_EXT_DISPLAYID;
+}
+
 /**
  * edid_ext_set_cea: initialize an EDID extension block to contain a CEA
  * extension. CEA extensions contain a Data Block Collection (with multiple
diff --git a/lib/igt_edid.h b/lib/igt_edid.h
index 59b47a97..7c2ce123 100644
--- a/lib/igt_edid.h
+++ b/lib/igt_edid.h
@@ -304,12 +304,30 @@ struct edid_cea {
 
 enum edid_ext_tag {
 	EDID_EXT_CEA = 0x02,
+	EDID_EXT_DISPLAYID = 0x70,
+};
+
+struct edid_tile {
+	uint8_t header[7];
+	uint8_t tile_cap;
+	uint8_t topo[3];
+	uint8_t tile_size[4];
+	uint8_t tile_pixel_bezel[5];
+	uint8_t topology_id[9];
+	uint8_t data[96];
+	uint8_t extension_checksum;
+	uint8_t checksum;
+} __attribute__((packed));
+
+enum edid_tile_cap {
+	SCALE_TO_FIT = 0x82,
 };
 
 struct edid_ext {
 	uint8_t tag; /* enum edid_ext_tag */
 	union {
 		struct edid_cea cea;
+		struct edid_tile tile;
 	} data;
 } __attribute__((packed));
 
@@ -356,6 +374,7 @@ struct edid {
 void edid_init(struct edid *edid);
 void edid_init_with_mode(struct edid *edid, drmModeModeInfo *mode);
 void edid_update_checksum(struct edid *edid);
+void base_edid_update_checksum(struct edid *edid);
 size_t edid_get_size(const struct edid *edid);
 void edid_get_mfg(const struct edid *edid, char out[static 3]);
 void detailed_timing_set_mode(struct detailed_timing *dt, drmModeModeInfo *mode,
@@ -383,4 +402,5 @@ size_t edid_cea_data_block_set_speaker_alloc(struct edid_cea_data_block *block,
 void edid_ext_set_cea(struct edid_ext *ext, size_t data_blocks_size,
 		      uint8_t num_native_dtds, uint8_t flags);
 
+void edid_ext_set_displayid(struct edid_ext *ext);
 #endif
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 4285f1d0..df946a7d 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -88,6 +88,9 @@
 
 /* list of connectors that need resetting on exit */
 #define MAX_CONNECTORS 32
+#define MAX_EDID 2
+#define DISPLAY_TILE_BLOCK 0x12
+
 static struct {
 	uint32_t connector_type;
 	uint32_t connector_type_id;
@@ -130,6 +133,26 @@ const struct edid *igt_kms_get_base_edid(void)
 	return &edid;
 }
 
+const struct edid *igt_kms_get_base_tile_edid(void)
+{
+	static struct edid edid;
+	drmModeModeInfo mode = {};
+
+	mode.clock = 277250;
+	mode.hdisplay = 1920;
+	mode.hsync_start = 1968;
+	mode.hsync_end = 2000;
+	mode.htotal = 2080;
+	mode.vdisplay = 2160;
+	mode.vsync_start = 2163;
+	mode.vsync_end = 2173;
+	mode.vtotal = 2222;
+	mode.vrefresh = 60;
+	edid_init_with_mode(&edid, &mode);
+	edid_update_checksum(&edid);
+	return &edid;
+}
+
 /**
  * igt_kms_get_alt_edid:
  *
@@ -265,6 +288,85 @@ const struct edid *igt_kms_get_dp_audio_edid(void)
 	return generate_audio_edid(raw_edid, false, &sad, &speaker_alloc);
 }
 
+struct edid **igt_kms_get_tiled_edid(uint8_t htile, uint8_t vtile)
+{
+	uint8_t top[2];
+	int edids, i;
+	static  char raw_edid[MAX_EDID][256] = {0};
+	static struct edid *edid[MAX_EDID];
+
+	top[0] = 0x00;
+	top[1] = 0x00;
+	top[0] = top[0] | (htile<<4);
+	vtile = vtile & 15;
+	top[0] = top[0] | vtile;
+	top[1] = top[1] | ((htile << 2) & 192);
+	top[1] = top[1] | (vtile & 48);
+
+	edids = (htile+1) * (vtile+1);
+
+	for (i = 0; i < edids; i++)
+		edid[i] = (struct edid *) raw_edid[i];
+
+	for (i = 0; i < edids; i++) {
+
+		struct edid_ext *edid_ext;
+		struct edid_tile *edid_tile;
+
+	/* Create a new EDID from the base IGT EDID, and add an
+	 * extension that advertises tile support.
+	 */
+		memcpy(edid[i],
+		igt_kms_get_base_tile_edid(), sizeof(struct edid));
+		edid[i]->extensions_len = 1;
+		edid_ext = &edid[i]->extensions[0];
+		edid_tile = &edid_ext->data.tile;
+	/* Set 0x70 to 1st byte of extension,
+	 * so it is identified as display block
+	 */
+		edid_ext_set_displayid(edid_ext);
+	/* To identify it as a tiled display block extension */
+		edid_tile->header[0] = DISPLAY_TILE_BLOCK;
+		edid_tile->header[1] = 0x79;
+		edid_tile->header[2] = 0x00;
+		edid_tile->header[3] = 0x00;
+		edid_tile->header[4] = 0x12;
+		edid_tile->header[5] = 0x00;
+		edid_tile->header[6] = 0x16;
+	/* Tile Capabilities */
+		edid_tile->tile_cap = SCALE_TO_FIT;
+	/* Set number of htile and vtile */
+		edid_tile->topo[0] = top[0];
+		if (i == 0)
+			edid_tile->topo[1] = 0x10;
+		else if (i == 1)
+			edid_tile->topo[1] = 0x00;
+		edid_tile->topo[2] = top[1];
+	/* Set tile resolution */
+		edid_tile->tile_size[0] = 0x7f;
+		edid_tile->tile_size[1] = 0x07;
+		edid_tile->tile_size[2] = 0x6f;
+		edid_tile->tile_size[3] = 0x08;
+	/* Dimension of Bezels */
+		edid_tile->tile_pixel_bezel[0] = 0;
+		edid_tile->tile_pixel_bezel[1] = 0;
+		edid_tile->tile_pixel_bezel[2] = 0;
+		edid_tile->tile_pixel_bezel[3] = 0;
+		edid_tile->tile_pixel_bezel[4] = 0;
+	/* Manufacturer Information */
+		edid_tile->topology_id[0] = 0x44;
+		edid_tile->topology_id[1] = 0x45;
+		edid_tile->topology_id[2] = 0x4c;
+		edid_tile->topology_id[3] = 0x43;
+		edid_tile->topology_id[4] = 0x48;
+		edid_tile->topology_id[5] = 0x02;
+		edid_tile->topology_id[6] = 0x00;
+		edid_tile->topology_id[7] = 0x00;
+		edid_tile->topology_id[8] = 0x00;
+	}
+	return edid;
+}
+
 static const uint8_t edid_4k_svds[] = {
 	32 | CEA_SVD_NATIVE, /* 1080p @ 24Hz (native) */
 	5,                   /* 1080i @ 60Hz */
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 4038f422..85f0769c 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -810,12 +810,14 @@ void igt_reset_connectors(void);
 uint32_t kmstest_get_vbl_flag(int crtc_offset);
 
 const struct edid *igt_kms_get_base_edid(void);
+const struct edid *igt_kms_get_base_tile_edid(void);
 const struct edid *igt_kms_get_alt_edid(void);
 const struct edid *igt_kms_get_hdmi_audio_edid(void);
 const struct edid *igt_kms_get_dp_audio_edid(void);
 const struct edid *igt_kms_get_4k_edid(void);
 const struct edid *igt_kms_get_3d_edid(void);
 const struct edid *igt_kms_get_aspect_ratio_edid(void);
+struct edid **igt_kms_get_tiled_edid(uint8_t htile, uint8_t vtile);
 const struct edid *igt_kms_get_custom_edid(enum igt_custom_edid_type edid);
 struct udev_monitor *igt_watch_uevents(void);
 bool igt_hotplug_detected(struct udev_monitor *mon,
-- 
2.25.1

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

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

* [igt-dev] [PATCH i-g-t 3/4] Added a subtest where chamelium acts as a tiled panel
  2021-04-26  8:12 [igt-dev] [PATCH i-g-t 0/4] Test tiled display with aid of chamelium Kunal Joshi
  2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 1/4] Make basic chamelium function accessible to other tests Kunal Joshi
  2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 2/4] Added structures and functions to generate tiled edids Kunal Joshi
@ 2021-04-26  8:12 ` Kunal Joshi
  2021-04-26  9:07   ` Petri Latvala
  2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 4/4] HAX: Run in BAT Kunal Joshi
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 9+ messages in thread
From: Kunal Joshi @ 2021-04-26  8:12 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi, petri.latvala

Split kms_dp_tiled_display into to two subtest.First to execute the
basic test with physical tiled panel and second with chamelium.

v2: Revised to just have basic test if chamelium dependencies are not
    present. Reset ports after the test executes.Changed subtest name
    from with-chamelium to basic-test-pattern-with-chamelium

v3: Changes required to adapt to changes done in first patch.

v4: Changes required to adapt to changes done in first patch.

v5: Changes required to adapt to changes done in first patch.

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Karthik B S <karthik.b.s@intel.com>
Reviewed-by: Navare Manasi D <manasi.d.navare@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
---
 tests/kms_dp_tiled_display.c | 119 ++++++++++++++++++++++++++++-------
 1 file changed, 95 insertions(+), 24 deletions(-)

diff --git a/tests/kms_dp_tiled_display.c b/tests/kms_dp_tiled_display.c
index 9e738a4f..3681100d 100644
--- a/tests/kms_dp_tiled_display.c
+++ b/tests/kms_dp_tiled_display.c
@@ -40,6 +40,7 @@
 #include "poll.h"
 #include "drm_mode.h"
 #include "drm_fourcc.h"
+#include "igt_edid.h"
 
 IGT_TEST_DESCRIPTION("Test for Transcoder Port Sync for Display Port Tiled Displays");
 
@@ -59,8 +60,22 @@ typedef struct {
 	data_connector_t *conns;
 	enum igt_commit_style commit;
 	struct timeval first_ts;
+
+	#ifdef HAVE_CHAMELIUM
+	struct chamelium *chamelium;
+	struct chamelium_port **ports;
+	int port_count;
+	struct chamelium_edid *edids[IGT_CUSTOM_EDID_COUNT];
+	#endif
+
 } data_t;
 
+void basic_test(data_t *data, drmEventContext *drm_event, struct pollfd *pfd);
+
+#ifdef HAVE_CHAMELIUM
+static void test_with_chamelium(data_t *data);
+#endif
+
 static int drm_property_is_tile(drmModePropertyPtr prop)
 {
 	return (strcmp(prop->name, "TILE") ? 0 : 1) &&
@@ -199,7 +214,6 @@ static void test_cleanup(data_t *data)
 	igt_display_commit2(data->display, data->commit);
 	memset(conns, 0, sizeof(data_connector_t) * data->num_h_tiles);
 }
-
 static void setup_mode(data_t *data)
 {
 	int count = 0, prev = 0, i = 0;
@@ -373,21 +387,83 @@ static bool got_all_page_flips(data_t *data)
 	return true;
 }
 
+#ifdef HAVE_CHAMELIUM
+static void test_with_chamelium(data_t *data)
+{
+	int i, count = 0;
+	uint8_t htile = 2, vtile = 1;
+	struct edid **edid;
+
+	data->chamelium = chamelium_init(data->drm_fd);
+	igt_assert(data->chamelium);
+	data->ports = chamelium_get_ports
+		(data->chamelium, &data->port_count);
+	chamelium_require_connector_present(data->ports,
+					    DRM_MODE_CONNECTOR_DisplayPort,
+					    data->port_count, 2);
+	edid = igt_kms_get_tiled_edid(htile-1, vtile-1);
+
+	for (i = 0; i < 2; i++)
+		data->edids[i] =
+			chamelium_new_edid(data->chamelium, edid[i]);
+
+	for (i = 0; i < data->port_count; i++) {
+		if (chamelium_port_get_type(data->ports[i]) ==
+				DRM_MODE_CONNECTOR_DisplayPort) {
+
+			chamelium_port_set_tiled_edid(data->chamelium,
+				data->ports[i], data->edids[i]);
+			chamelium_plug(data->chamelium,
+				       data->ports[i]);
+			chamelium_wait_for_conn_status_change(data->display,
+							      data->chamelium,
+							      data->ports[i],
+							      DRM_MODE_CONNECTED);
+			count++;
+		}
+		if (count == 2)
+			break;
+	}
+}
+#endif
+
+void basic_test(data_t *data, drmEventContext *drm_event, struct pollfd *pfd)
+{
+		int ret;
+
+		get_number_of_h_tiles(data);
+		igt_debug("Number of Horizontal Tiles: %d\n",
+			  data->num_h_tiles);
+		igt_require(data->num_h_tiles > 0);
+		data->conns = calloc(data->num_h_tiles,
+				     sizeof(data_connector_t));
+		igt_assert(data->conns);
+
+		get_connectors(data);
+		setup_mode(data);
+		setup_framebuffer(data);
+		timerclear(&data->first_ts);
+		igt_display_commit_atomic(data->display,
+			DRM_MODE_ATOMIC_NONBLOCK |
+			DRM_MODE_PAGE_FLIP_EVENT, data);
+		while (!got_all_page_flips(data)) {
+			ret = poll(pfd, 1, 1000);
+			igt_assert(ret == 1);
+			drmHandleEvent(data->drm_fd, drm_event);
+		}
+}
+
 igt_main
 {
 	igt_display_t display;
 	data_t data = {0};
 	struct pollfd pfd = {0};
 	drmEventContext drm_event = {0};
-	int ret;
-
 	igt_fixture {
 		data.drm_fd = drm_open_driver_master(DRIVER_ANY);
-
 		kmstest_set_vt_graphics_mode();
 		igt_display_require(&display, data.drm_fd);
 		igt_display_reset(&display);
-
 		data.display = &display;
 		pfd.fd = data.drm_fd;
 		pfd.events = POLLIN;
@@ -395,33 +471,28 @@ igt_main
 		drm_event.page_flip_handler2 = page_flip_handler;
 		data.commit = data.display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY;
 		igt_require(data.commit == COMMIT_ATOMIC);
-
-		get_number_of_h_tiles(&data);
-		igt_debug("Number of Horizontal Tiles: %d\n", data.num_h_tiles);
-		igt_require(data.num_h_tiles > 0);
-		data.conns = calloc(data.num_h_tiles, sizeof(data_connector_t));
 	}
 
 	igt_describe("Make sure the Tiled CRTCs are synchronized and we get "
 		     "page flips for all tiled CRTCs in one vblank.");
 	igt_subtest("basic-test-pattern") {
-		igt_assert(data.conns);
-
-		get_connectors(&data);
-		setup_mode(&data);
-		setup_framebuffer(&data);
-		timerclear(&data.first_ts);
-		igt_display_commit_atomic(data.display, DRM_MODE_ATOMIC_NONBLOCK |
-					  DRM_MODE_PAGE_FLIP_EVENT, &data);
-		while (!got_all_page_flips(&data)) {
-			ret = poll(&pfd, 1, 1000);
-			igt_assert(ret == 1);
-			drmHandleEvent(data.drm_fd, &drm_event);
-		}
-
+		basic_test(&data, &drm_event, &pfd);
 		test_cleanup(&data);
 	}
 
+	#ifdef HAVE_CHAMELIUM
+	igt_subtest_f("basic-test-pattern-with-chamelium") {
+		int i;
+
+		test_with_chamelium(&data);
+		basic_test(&data, &drm_event, &pfd);
+		test_cleanup(&data);
+		for (i = 0; i < data.port_count; i++)
+			chamelium_reset_state(data.display, data.chamelium,
+					      data.ports[i], data.ports,
+					      data.port_count);
+	}
+	#endif
 	igt_fixture {
 		free(data.conns);
 		close(data.drm_fd);
-- 
2.25.1

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

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

* [igt-dev] [PATCH i-g-t 4/4] HAX: Run in BAT
  2021-04-26  8:12 [igt-dev] [PATCH i-g-t 0/4] Test tiled display with aid of chamelium Kunal Joshi
                   ` (2 preceding siblings ...)
  2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 3/4] Added a subtest where chamelium acts as a tiled panel Kunal Joshi
@ 2021-04-26  8:12 ` Kunal Joshi
  2021-04-26  8:37 ` [igt-dev] ✗ Fi.CI.BAT: failure for Test tiled display with aid of chamelium. (rev7) Patchwork
  2021-04-27  5:37 ` [igt-dev] ✗ GitLab.Pipeline: warning " Patchwork
  5 siblings, 0 replies; 9+ messages in thread
From: Kunal Joshi @ 2021-04-26  8:12 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi, petri.latvala

BAT run to test the patch, not for merge

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
---
 tests/intel-ci/fast-feedback.testlist | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist
index fa5006d2..2f807fcf 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -1,5 +1,12 @@
 # Keep alphabetically sorted by default
 
+igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium
+igt@kms_chamelium@dp-hpd-fast
+igt@kms_chamelium@dp-edid-read
+igt@kms_chamelium@dp-crc-fast
+igt@kms_chamelium@hdmi-hpd-fast
+igt@kms_chamelium@hdmi-edid-read
+igt@kms_chamelium@hdmi-crc-fast
 igt@core_auth@basic-auth
 igt@debugfs_test@read_all_entries
 igt@fbdev@eof
@@ -89,12 +96,6 @@ igt@kms_addfb_basic@unused-modifier
 igt@kms_addfb_basic@unused-offsets
 igt@kms_addfb_basic@unused-pitches
 igt@kms_busy@basic
-igt@kms_chamelium@dp-hpd-fast
-igt@kms_chamelium@dp-edid-read
-igt@kms_chamelium@dp-crc-fast
-igt@kms_chamelium@hdmi-hpd-fast
-igt@kms_chamelium@hdmi-edid-read
-igt@kms_chamelium@hdmi-crc-fast
 igt@kms_chamelium@vga-hpd-fast
 igt@kms_chamelium@vga-edid-read
 igt@kms_chamelium@common-hpd-after-suspend
-- 
2.25.1

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

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

* [igt-dev] ✗ Fi.CI.BAT: failure for Test tiled display with aid of chamelium. (rev7)
  2021-04-26  8:12 [igt-dev] [PATCH i-g-t 0/4] Test tiled display with aid of chamelium Kunal Joshi
                   ` (3 preceding siblings ...)
  2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 4/4] HAX: Run in BAT Kunal Joshi
@ 2021-04-26  8:37 ` Patchwork
  2021-04-27  5:37 ` [igt-dev] ✗ GitLab.Pipeline: warning " Patchwork
  5 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2021-04-26  8:37 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: igt-dev


[-- Attachment #1.1: Type: text/plain, Size: 11900 bytes --]

== Series Details ==

Series: Test tiled display with aid of chamelium. (rev7)
URL   : https://patchwork.freedesktop.org/series/71393/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_10005 -> IGTPW_5762
====================================================

Summary
-------

  **FAILURE**

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

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/index.html

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_chamelium@dp-edid-read:
    - fi-icl-u2:          [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10005/fi-icl-u2/igt@kms_chamelium@dp-edid-read.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-icl-u2/igt@kms_chamelium@dp-edid-read.html

  * {igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium} (NEW):
    - fi-bdw-5557u:       NOTRUN -> [FAIL][3]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-bdw-5557u/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-kbl-7567u:       NOTRUN -> [FAIL][4]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-kbl-7567u/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-kbl-guc:         NOTRUN -> [FAIL][5]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-kbl-guc/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - {fi-hsw-gt1}:       NOTRUN -> [FAIL][6]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-hsw-gt1/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-bdw-gvtdvm:      NOTRUN -> [FAIL][7]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-bdw-gvtdvm/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-hsw-4770:        NOTRUN -> [FAIL][8]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-hsw-4770/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-cfl-8700k:       NOTRUN -> [FAIL][9]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-cfl-8700k/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-icl-u2:          NOTRUN -> [SKIP][10]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-icl-u2/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-skl-6600u:       NOTRUN -> [FAIL][11]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-skl-6600u/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-cml-u2:          NOTRUN -> [FAIL][12]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-cml-u2/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - {fi-jsl-1}:         NOTRUN -> [FAIL][13]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-jsl-1/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-apl-guc:         NOTRUN -> [FAIL][14]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-apl-guc/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-snb-2520m:       NOTRUN -> [FAIL][15]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-snb-2520m/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - {fi-tgl-dsi}:       NOTRUN -> [FAIL][16]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-tgl-dsi/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-bxt-dsi:         NOTRUN -> [FAIL][17]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-bxt-dsi/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-cfl-guc:         NOTRUN -> [FAIL][18]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-cfl-guc/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-cml-s:           NOTRUN -> [FAIL][19]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-cml-s/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-kbl-soraka:      NOTRUN -> [FAIL][20]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-kbl-soraka/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-tgl-u2:          NOTRUN -> [FAIL][21]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-tgl-u2/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - {fi-ehl-1}:         NOTRUN -> [FAIL][22]
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-ehl-1/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-ilk-650:         NOTRUN -> [FAIL][23]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-ilk-650/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-bsw-kefka:       NOTRUN -> [FAIL][24]
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-bsw-kefka/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-snb-2600:        NOTRUN -> [FAIL][25]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-snb-2600/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-tgl-y:           NOTRUN -> [FAIL][26]
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-tgl-y/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - {fi-rkl-11500t}:    NOTRUN -> [FAIL][27]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-rkl-11500t/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-kbl-x1275:       NOTRUN -> [FAIL][28]
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-kbl-x1275/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-bsw-nick:        NOTRUN -> [FAIL][29]
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-bsw-nick/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-cfl-8109u:       NOTRUN -> [FAIL][30]
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-cfl-8109u/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - {fi-ehl-2}:         NOTRUN -> [FAIL][31]
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-ehl-2/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-kbl-r:           NOTRUN -> [FAIL][32]
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-kbl-r/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html

  
#### Warnings ####

  * igt@kms_chamelium@vga-edid-read:
    - fi-icl-u2:          [SKIP][33] ([fdo#109309]) -> [SKIP][34] +1 similar issue
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10005/fi-icl-u2/igt@kms_chamelium@vga-edid-read.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-icl-u2/igt@kms_chamelium@vga-edid-read.html

  
New tests
---------

  New tests have been introduced between CI_DRM_10005 and IGTPW_5762:

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

  * igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium:
    - Statuses : 1 abort(s) 29 fail(s) 5 skip(s)
    - Exec time: [0.0, 0.56] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@late_gt_pm:
    - fi-bsw-nick:        [PASS][35] -> [DMESG-FAIL][36] ([i915#2927])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10005/fi-bsw-nick/igt@i915_selftest@live@late_gt_pm.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-bsw-nick/igt@i915_selftest@live@late_gt_pm.html

  * igt@kms_chamelium@dp-edid-read:
    - fi-bdw-gvtdvm:      NOTRUN -> [SKIP][37] ([fdo#109271] / [fdo#111827]) +5 similar issues
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-bdw-gvtdvm/igt@kms_chamelium@dp-edid-read.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-apl-guc:         NOTRUN -> [SKIP][38] ([fdo#109271] / [fdo#111827]) +5 similar issues
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-apl-guc/igt@kms_chamelium@hdmi-hpd-fast.html

  * {igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium} (NEW):
    - fi-bwr-2160:        NOTRUN -> [SKIP][39] ([fdo#109271])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-bwr-2160/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-kbl-7500u:       NOTRUN -> [{ABORT}][40] ([i915#1814])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-kbl-7500u/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-pnv-d510:        NOTRUN -> [SKIP][41] ([fdo#109271])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-pnv-d510/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-skl-6700k2:      NOTRUN -> [SKIP][42] ([fdo#109271])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-skl-6700k2/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
    - fi-elk-e7500:       NOTRUN -> [SKIP][43] ([fdo#109271])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-elk-e7500/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@runner@aborted:
    - fi-bsw-nick:        NOTRUN -> [FAIL][44] ([i915#1436])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/fi-bsw-nick/igt@runner@aborted.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1222]: https://gitlab.freedesktop.org/drm/intel/issues/1222
  [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
  [i915#1814]: https://gitlab.freedesktop.org/drm/intel/issues/1814
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2927]: https://gitlab.freedesktop.org/drm/intel/issues/2927
  [i915#3012]: https://gitlab.freedesktop.org/drm/intel/issues/3012
  [i915#3276]: https://gitlab.freedesktop.org/drm/intel/issues/3276
  [i915#3277]: https://gitlab.freedesktop.org/drm/intel/issues/3277
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3283]: https://gitlab.freedesktop.org/drm/intel/issues/3283
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3303]: https://gitlab.freedesktop.org/drm/intel/issues/3303
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533


Participating hosts (43 -> 36)
------------------------------

  Additional (1): fi-rkl-11500t 
  Missing    (8): fi-ilk-m540 fi-bsw-n3050 fi-hsw-4200u fi-skl-guc fi-bsw-cyan fi-dg1-1 fi-icl-y fi-bdw-samus 


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6074 -> IGTPW_5762

  CI-20190529: 20190529
  CI_DRM_10005: 7a27cb7ac19a95d801c391044cea5274677e7744 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_5762: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/index.html
  IGT_6074: 3f43ae9fd22dc5a517786b984dc3aa717997664f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5762/index.html

[-- Attachment #1.2: Type: text/html, Size: 12675 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

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

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

* Re: [igt-dev] [PATCH i-g-t 3/4] Added a subtest where chamelium acts as a tiled panel
  2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 3/4] Added a subtest where chamelium acts as a tiled panel Kunal Joshi
@ 2021-04-26  9:07   ` Petri Latvala
  2021-04-26  9:24     ` Joshi, Kunal1
  0 siblings, 1 reply; 9+ messages in thread
From: Petri Latvala @ 2021-04-26  9:07 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: igt-dev

On Mon, Apr 26, 2021 at 01:42:07PM +0530, Kunal Joshi wrote:
> Split kms_dp_tiled_display into to two subtest.First to execute the
> basic test with physical tiled panel and second with chamelium.
> 
> v2: Revised to just have basic test if chamelium dependencies are not
>     present. Reset ports after the test executes.Changed subtest name
>     from with-chamelium to basic-test-pattern-with-chamelium
> 
> v3: Changes required to adapt to changes done in first patch.
> 
> v4: Changes required to adapt to changes done in first patch.
> 
> v5: Changes required to adapt to changes done in first patch.
> 
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
> Reviewed-by: Navare Manasi D <manasi.d.navare@intel.com>
> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
> ---
>  tests/kms_dp_tiled_display.c | 119 ++++++++++++++++++++++++++++-------
>  1 file changed, 95 insertions(+), 24 deletions(-)
> 
> diff --git a/tests/kms_dp_tiled_display.c b/tests/kms_dp_tiled_display.c
> index 9e738a4f..3681100d 100644
> --- a/tests/kms_dp_tiled_display.c
> +++ b/tests/kms_dp_tiled_display.c
> @@ -40,6 +40,7 @@
>  #include "poll.h"
>  #include "drm_mode.h"
>  #include "drm_fourcc.h"
> +#include "igt_edid.h"
>  
>  IGT_TEST_DESCRIPTION("Test for Transcoder Port Sync for Display Port Tiled Displays");
>  
> @@ -59,8 +60,22 @@ typedef struct {
>  	data_connector_t *conns;
>  	enum igt_commit_style commit;
>  	struct timeval first_ts;
> +
> +	#ifdef HAVE_CHAMELIUM
> +	struct chamelium *chamelium;
> +	struct chamelium_port **ports;
> +	int port_count;
> +	struct chamelium_edid *edids[IGT_CUSTOM_EDID_COUNT];
> +	#endif
> +
>  } data_t;
>  
> +void basic_test(data_t *data, drmEventContext *drm_event, struct pollfd *pfd);
> +
> +#ifdef HAVE_CHAMELIUM
> +static void test_with_chamelium(data_t *data);
> +#endif
> +
>  static int drm_property_is_tile(drmModePropertyPtr prop)
>  {
>  	return (strcmp(prop->name, "TILE") ? 0 : 1) &&
> @@ -199,7 +214,6 @@ static void test_cleanup(data_t *data)
>  	igt_display_commit2(data->display, data->commit);
>  	memset(conns, 0, sizeof(data_connector_t) * data->num_h_tiles);
>  }
> -
>  static void setup_mode(data_t *data)
>  {
>  	int count = 0, prev = 0, i = 0;
> @@ -373,21 +387,83 @@ static bool got_all_page_flips(data_t *data)
>  	return true;
>  }
>  
> +#ifdef HAVE_CHAMELIUM
> +static void test_with_chamelium(data_t *data)
> +{
> +	int i, count = 0;
> +	uint8_t htile = 2, vtile = 1;
> +	struct edid **edid;
> +
> +	data->chamelium = chamelium_init(data->drm_fd);
> +	igt_assert(data->chamelium);

igt_require here, not igt_assert.


-- 
Petri Latvala



> +	data->ports = chamelium_get_ports
> +		(data->chamelium, &data->port_count);
> +	chamelium_require_connector_present(data->ports,
> +					    DRM_MODE_CONNECTOR_DisplayPort,
> +					    data->port_count, 2);
> +	edid = igt_kms_get_tiled_edid(htile-1, vtile-1);
> +
> +	for (i = 0; i < 2; i++)
> +		data->edids[i] =
> +			chamelium_new_edid(data->chamelium, edid[i]);
> +
> +	for (i = 0; i < data->port_count; i++) {
> +		if (chamelium_port_get_type(data->ports[i]) ==
> +				DRM_MODE_CONNECTOR_DisplayPort) {
> +
> +			chamelium_port_set_tiled_edid(data->chamelium,
> +				data->ports[i], data->edids[i]);
> +			chamelium_plug(data->chamelium,
> +				       data->ports[i]);
> +			chamelium_wait_for_conn_status_change(data->display,
> +							      data->chamelium,
> +							      data->ports[i],
> +							      DRM_MODE_CONNECTED);
> +			count++;
> +		}
> +		if (count == 2)
> +			break;
> +	}
> +}
> +#endif
> +
> +void basic_test(data_t *data, drmEventContext *drm_event, struct pollfd *pfd)
> +{
> +		int ret;
> +
> +		get_number_of_h_tiles(data);
> +		igt_debug("Number of Horizontal Tiles: %d\n",
> +			  data->num_h_tiles);
> +		igt_require(data->num_h_tiles > 0);
> +		data->conns = calloc(data->num_h_tiles,
> +				     sizeof(data_connector_t));
> +		igt_assert(data->conns);
> +
> +		get_connectors(data);
> +		setup_mode(data);
> +		setup_framebuffer(data);
> +		timerclear(&data->first_ts);
> +		igt_display_commit_atomic(data->display,
> +			DRM_MODE_ATOMIC_NONBLOCK |
> +			DRM_MODE_PAGE_FLIP_EVENT, data);
> +		while (!got_all_page_flips(data)) {
> +			ret = poll(pfd, 1, 1000);
> +			igt_assert(ret == 1);
> +			drmHandleEvent(data->drm_fd, drm_event);
> +		}
> +}
> +
>  igt_main
>  {
>  	igt_display_t display;
>  	data_t data = {0};
>  	struct pollfd pfd = {0};
>  	drmEventContext drm_event = {0};
> -	int ret;
> -
>  	igt_fixture {
>  		data.drm_fd = drm_open_driver_master(DRIVER_ANY);
> -
>  		kmstest_set_vt_graphics_mode();
>  		igt_display_require(&display, data.drm_fd);
>  		igt_display_reset(&display);
> -
>  		data.display = &display;
>  		pfd.fd = data.drm_fd;
>  		pfd.events = POLLIN;
> @@ -395,33 +471,28 @@ igt_main
>  		drm_event.page_flip_handler2 = page_flip_handler;
>  		data.commit = data.display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY;
>  		igt_require(data.commit == COMMIT_ATOMIC);
> -
> -		get_number_of_h_tiles(&data);
> -		igt_debug("Number of Horizontal Tiles: %d\n", data.num_h_tiles);
> -		igt_require(data.num_h_tiles > 0);
> -		data.conns = calloc(data.num_h_tiles, sizeof(data_connector_t));
>  	}
>  
>  	igt_describe("Make sure the Tiled CRTCs are synchronized and we get "
>  		     "page flips for all tiled CRTCs in one vblank.");
>  	igt_subtest("basic-test-pattern") {
> -		igt_assert(data.conns);
> -
> -		get_connectors(&data);
> -		setup_mode(&data);
> -		setup_framebuffer(&data);
> -		timerclear(&data.first_ts);
> -		igt_display_commit_atomic(data.display, DRM_MODE_ATOMIC_NONBLOCK |
> -					  DRM_MODE_PAGE_FLIP_EVENT, &data);
> -		while (!got_all_page_flips(&data)) {
> -			ret = poll(&pfd, 1, 1000);
> -			igt_assert(ret == 1);
> -			drmHandleEvent(data.drm_fd, &drm_event);
> -		}
> -
> +		basic_test(&data, &drm_event, &pfd);
>  		test_cleanup(&data);
>  	}
>  
> +	#ifdef HAVE_CHAMELIUM
> +	igt_subtest_f("basic-test-pattern-with-chamelium") {
> +		int i;
> +
> +		test_with_chamelium(&data);
> +		basic_test(&data, &drm_event, &pfd);
> +		test_cleanup(&data);
> +		for (i = 0; i < data.port_count; i++)
> +			chamelium_reset_state(data.display, data.chamelium,
> +					      data.ports[i], data.ports,
> +					      data.port_count);
> +	}
> +	#endif
>  	igt_fixture {
>  		free(data.conns);
>  		close(data.drm_fd);
> -- 
> 2.25.1
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH i-g-t 3/4] Added a subtest where chamelium acts as a tiled panel
  2021-04-26  9:07   ` Petri Latvala
@ 2021-04-26  9:24     ` Joshi, Kunal1
  0 siblings, 0 replies; 9+ messages in thread
From: Joshi, Kunal1 @ 2021-04-26  9:24 UTC (permalink / raw)
  To: Latvala, Petri; +Cc: igt-dev

>> +#ifdef HAVE_CHAMELIUM
>> +static void test_with_chamelium(data_t *data) {
>> +	int i, count = 0;
>> +	uint8_t htile = 2, vtile = 1;
>> +	struct edid **edid;
>> +
>> +	data->chamelium = chamelium_init(data->drm_fd);
>> +	igt_assert(data->chamelium);

>igt_require here, not igt_assert.
>-
>Petri Latvala

Corrected this, Thanks petri

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

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

* [igt-dev] ✗ GitLab.Pipeline: warning for Test tiled display with aid of chamelium. (rev7)
  2021-04-26  8:12 [igt-dev] [PATCH i-g-t 0/4] Test tiled display with aid of chamelium Kunal Joshi
                   ` (4 preceding siblings ...)
  2021-04-26  8:37 ` [igt-dev] ✗ Fi.CI.BAT: failure for Test tiled display with aid of chamelium. (rev7) Patchwork
@ 2021-04-27  5:37 ` Patchwork
  5 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2021-04-27  5:37 UTC (permalink / raw)
  To: Joshi, Kunal1; +Cc: igt-dev

== Series Details ==

Series: Test tiled display with aid of chamelium. (rev7)
URL   : https://patchwork.freedesktop.org/series/71393/
State : warning

== Summary ==

Pipeline status: FAILED.

see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/308346 for the overview.

build:tests-debian-meson-arm64 has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/9196770):
  [16/752] Linking static target lib/libigt-rendercopy_gen8_c.a.
  [17/752] Linking static target lib/libigt-intel_aux_pgtable_c.a.
  [18/752] Linking static target lib/libigt-rendercopy_gen9_c.a.
  [19/752] Linking static target lib/libigt-sw_sync_c.a.
  [20/752] Compiling C object 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o'.
  FAILED: lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o 
  /usr/bin/aarch64-linux-gnu-gcc -Ilib/76b5a35@@igt-igt_kms_c@sta -Ilib -I../lib -I../include/drm-uapi -I../lib/stubs/syscalls -I. -I../ -I../lib/stubs/drm -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/aarch64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm -I/usr/include/libdrm/nouveau -I/usr/include/aarch64-linux-gnu -I/usr/include/valgrind -I/usr/include/alsa -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_GNU_SOURCE -include config.h -D_FORTIFY_SOURCE=2 -Wbad-function-cast -Wdeclaration-after-statement -Wformat=2 -Wimplicit-fallthrough=0 -Wlogical-op -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wuninitialized -Wunused -Wno-clobbered -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-pointer-arith -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-unused-result -Werror=address -Werror=array-bounds -Werror=implicit -Werror=init-self -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-to-int-cast -Werror=return-type -Werror=sequence-point -Werror=trigraphs -Werror=write-strings -fno-builtin-malloc -fno-builtin-calloc -fcommon -fPIC -pthread '-DIGT_DATADIR="/usr/local/share/igt-gpu-tools"' '-DIGT_SRCDIR="/builds/gfx-ci/igt-ci-tags/tests"' '-DIGT_LOG_DOMAIN="igt_kms"'  -MD -MQ 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -MF 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o.d' -o 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -c ../lib/igt_kms.c
  ../lib/igt_kms.c: In function ‘igt_kms_get_aspect_ratio_edid’:
  ../lib/igt_kms.c:521:54: error: ‘edid_ar_svds’ undeclared (first use in this function); did you mean ‘edid_4k_svds’?
    cea_data_size += edid_cea_data_block_set_svd(block, edid_ar_svds,
                                                        ^~~~~~~~~~~~
                                                        edid_4k_svds
  ../lib/igt_kms.c:521:54: note: each undeclared identifier is reported only once for each function it appears in
  ninja: build stopped: subcommand failed.
  section_end:1619424446:step_script
  section_start:1619424446:cleanup_file_variables
  Cleaning up file based variables
  section_end:1619424447:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-debian-meson-armhf has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/9196769):
  [13/819] Linking static target lib/libigt-rendercopy_gen7_c.a.
  [14/819] Linking static target lib/libigt-rendercopy_gen8_c.a.
  [15/819] Linking static target lib/libigt-intel_aux_pgtable_c.a.
  [16/819] Linking static target lib/libigt-rendercopy_gen9_c.a.
  [17/819] Compiling C object 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o'.
  FAILED: lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o 
  /usr/bin/arm-linux-gnueabihf-gcc -Ilib/76b5a35@@igt-igt_kms_c@sta -Ilib -I../lib -I../include/drm-uapi -I../lib/stubs/syscalls -I. -I../ -I../lib/stubs/drm -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm -I/usr/include/libdrm/nouveau -I/usr/include/arm-linux-gnueabihf -I/usr/include/valgrind -I/usr/include/alsa -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_GNU_SOURCE -include config.h -D_FORTIFY_SOURCE=2 -Wbad-function-cast -Wdeclaration-after-statement -Wformat=2 -Wimplicit-fallthrough=0 -Wlogical-op -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wuninitialized -Wunused -Wno-clobbered -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-pointer-arith -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-unused-result -Werror=address -Werror=array-bounds -Werror=implicit -Werror=init-self -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-to-int-cast -Werror=return-type -Werror=sequence-point -Werror=trigraphs -Werror=write-strings -fno-builtin-malloc -fno-builtin-calloc -fcommon -fPIC -pthread '-DIGT_DATADIR="/usr/local/share/igt-gpu-tools"' '-DIGT_SRCDIR="/builds/gfx-ci/igt-ci-tags/tests"' '-DIGT_LOG_DOMAIN="igt_kms"'  -MD -MQ 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -MF 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o.d' -o 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -c ../lib/igt_kms.c
  ../lib/igt_kms.c: In function ‘igt_kms_get_aspect_ratio_edid’:
  ../lib/igt_kms.c:521:54: error: ‘edid_ar_svds’ undeclared (first use in this function); did you mean ‘edid_4k_svds’?
    cea_data_size += edid_cea_data_block_set_svd(block, edid_ar_svds,
                                                        ^~~~~~~~~~~~
                                                        edid_4k_svds
  ../lib/igt_kms.c:521:54: note: each undeclared identifier is reported only once for each function it appears in
  ninja: build stopped: subcommand failed.
  section_end:1619424425:step_script
  section_start:1619424425:cleanup_file_variables
  Cleaning up file based variables
  section_end:1619424431:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-debian-meson-mips has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/9196771):
  [11/843] Linking static target lib/libigt-rendercopy_gen4_c.a.
  [12/843] Linking static target lib/libigt-rendercopy_gen9_c.a.
  [13/843] Linking static target lib/libigt-rendercopy_gen8_c.a.
  [14/843] Linking static target lib/libigt-intel_aux_pgtable_c.a.
  [15/843] Compiling C object 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o'.
  FAILED: lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o 
  /usr/bin/mips-linux-gnu-gcc -Ilib/76b5a35@@igt-igt_kms_c@sta -Ilib -I../lib -I../include/drm-uapi -I../lib/stubs/syscalls -I. -I../ -I../lib/stubs/drm -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/mips-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm -I/usr/include/libdrm/nouveau -I/usr/include/mips-linux-gnu -I/usr/include/valgrind -I/usr/include/alsa -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_GNU_SOURCE -include config.h -D_FORTIFY_SOURCE=2 -Wbad-function-cast -Wdeclaration-after-statement -Wformat=2 -Wimplicit-fallthrough=0 -Wlogical-op -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wuninitialized -Wunused -Wno-clobbered -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-pointer-arith -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-unused-result -Werror=address -Werror=array-bounds -Werror=implicit -Werror=init-self -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-to-int-cast -Werror=return-type -Werror=sequence-point -Werror=trigraphs -Werror=write-strings -fno-builtin-malloc -fno-builtin-calloc -fcommon -fPIC -pthread '-DIGT_DATADIR="/usr/local/share/igt-gpu-tools"' '-DIGT_SRCDIR="/builds/gfx-ci/igt-ci-tags/tests"' '-DIGT_LOG_DOMAIN="igt_kms"'  -MD -MQ 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -MF 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o.d' -o 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -c ../lib/igt_kms.c
  ../lib/igt_kms.c: In function ‘igt_kms_get_aspect_ratio_edid’:
  ../lib/igt_kms.c:521:54: error: ‘edid_ar_svds’ undeclared (first use in this function); did you mean ‘edid_4k_svds’?
    cea_data_size += edid_cea_data_block_set_svd(block, edid_ar_svds,
                                                        ^~~~~~~~~~~~
                                                        edid_4k_svds
  ../lib/igt_kms.c:521:54: note: each undeclared identifier is reported only once for each function it appears in
  ninja: build stopped: subcommand failed.
  section_end:1619424419:step_script
  section_start:1619424419:cleanup_file_variables
  Cleaning up file based variables
  section_end:1619424425:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-debian-minimal has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/9196768):
  [17/164] Linking static target lib/libigt-rendercopy_gen8_c.a.
  [18/164] Linking static target lib/libigt-intel_aux_pgtable_c.a.
  [19/164] Linking static target lib/libigt-rendercopy_gen9_c.a.
  [20/164] Linking static target lib/libigt-igt_draw_c.a.
  [21/164] Compiling C object 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o'.
  FAILED: lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o 
  cc -Ilib/76b5a35@@igt-igt_kms_c@sta -Ilib -I../lib -I../include/drm-uapi -I../lib/stubs/syscalls -I. -I../ -I../lib/stubs/drm -I../lib/stubs/libunwind -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_GNU_SOURCE -include config.h -D_FORTIFY_SOURCE=2 -Wbad-function-cast -Wdeclaration-after-statement -Wformat=2 -Wimplicit-fallthrough=0 -Wlogical-op -Wmissing-declarations -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wuninitialized -Wunused -Wno-clobbered -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-pointer-arith -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-unused-result -Werror=address -Werror=array-bounds -Werror=implicit -Werror=init-self -Werror=int-to-pointer-cast -Werror=main -Werror=missing-braces -Werror=nonnull -Werror=pointer-to-int-cast -Werror=return-type -Werror=sequence-point -Werror=trigraphs -Werror=write-strings -fno-builtin-malloc -fno-builtin-calloc -fcommon -fPIC -pthread '-DIGT_DATADIR="/usr/local/share/igt-gpu-tools"' '-DIGT_SRCDIR="/builds/gfx-ci/igt-ci-tags/tests"' '-DIGT_LOG_DOMAIN="igt_kms"'  -MD -MQ 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -MF 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o.d' -o 'lib/76b5a35@@igt-igt_kms_c@sta/igt_kms.c.o' -c ../lib/igt_kms.c
  ../lib/igt_kms.c: In function ‘igt_kms_get_aspect_ratio_edid’:
  ../lib/igt_kms.c:521:54: error: ‘edid_ar_svds’ undeclared (first use in this function); did you mean ‘edid_4k_svds’?
    cea_data_size += edid_cea_data_block_set_svd(block, edid_ar_svds,
                                                        ^~~~~~~~~~~~
                                                        edid_4k_svds
  ../lib/igt_kms.c:521:54: note: each undeclared identifier is reported only once for each function it appears in
  ninja: build stopped: subcommand failed.
  section_end:1619424441:step_script
  section_start:1619424441:cleanup_file_variables
  Cleaning up file based variables
  section_end:1619424443:cleanup_file_variables
  ERROR: Job failed: exit code 1

== Logs ==

For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/308346
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

end of thread, other threads:[~2021-04-27  5:37 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-26  8:12 [igt-dev] [PATCH i-g-t 0/4] Test tiled display with aid of chamelium Kunal Joshi
2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 1/4] Make basic chamelium function accessible to other tests Kunal Joshi
2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 2/4] Added structures and functions to generate tiled edids Kunal Joshi
2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 3/4] Added a subtest where chamelium acts as a tiled panel Kunal Joshi
2021-04-26  9:07   ` Petri Latvala
2021-04-26  9:24     ` Joshi, Kunal1
2021-04-26  8:12 ` [igt-dev] [PATCH i-g-t 4/4] HAX: Run in BAT Kunal Joshi
2021-04-26  8:37 ` [igt-dev] ✗ Fi.CI.BAT: failure for Test tiled display with aid of chamelium. (rev7) Patchwork
2021-04-27  5:37 ` [igt-dev] ✗ GitLab.Pipeline: 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.