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

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 (3):
  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.

 lib/igt_chamelium.c          | 117 +++++++++++++++++++++++++++++++++++++++++++
 lib/igt_chamelium.h          |  25 +++++++++
 lib/igt_edid.c               |  27 ++++++++++
 lib/igt_edid.h               |  20 ++++++++
 lib/igt_kms.c                | 104 ++++++++++++++++++++++++++++++++++++++
 lib/igt_kms.h                |   2 +
 tests/kms_chamelium.c        |  64 +----------------------
 tests/kms_dp_tiled_display.c | 109 ++++++++++++++++++++++++++++++++--------
 8 files changed, 385 insertions(+), 83 deletions(-)

-- 
2.7.4

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

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

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

There are many uses cases where we can integrate chamelium with other 
tests,Migrating basic chamelium functions to igt_chamelium lib to avoid
code rewriting.

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Karthik B S <karthik.b.s@intel.com>
---
 lib/igt_chamelium.c   | 50 ++++++++++++++++++++++++++++++++++++++++
 lib/igt_chamelium.h   | 20 ++++++++++++++++
 tests/kms_chamelium.c | 64 +--------------------------------------------------
 3 files changed, 71 insertions(+), 63 deletions(-)

diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
index 9971f51..29949bb 100644
--- a/lib/igt_chamelium.c
+++ b/lib/igt_chamelium.c
@@ -132,6 +132,56 @@ static struct chamelium *cleanup_instance;
 static void chamelium_do_calculate_fb_crc(cairo_surface_t *fb_surface,
 					  igt_crc_t *out);
 
+drmModeConnection
+reprobe_connector(struct data_chamelium_t *data, struct chamelium_port *port)
+{
+	drmModeConnector *connector;
+	drmModeConnection status;
+
+	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;
+
+	drmModeFreeConnector(connector);
+	return status;
+}
+
+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 */
+}
+
+void
+wait_for_connector(struct data_chamelium_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));
+}
+
 /**
  * chamelium_get_ports:
  * @chamelium: The Chamelium instance to use
diff --git a/lib/igt_chamelium.h b/lib/igt_chamelium.h
index 08705a9..3ce78a2 100644
--- a/lib/igt_chamelium.h
+++ b/lib/igt_chamelium.h
@@ -25,6 +25,8 @@
 
 #ifndef IGT_CHAMELIUM_H
 #define IGT_CHAMELIUM_H
+#define TEST_EDID_COUNT 2
+#define HOTPLUG_TIMEOUT 20
 
 #include "config.h"
 
@@ -32,6 +34,7 @@
 #include <xf86drmMode.h>
 
 #include "igt_debugfs.h"
+#include "igt_kms.h"
 
 struct igt_fb;
 struct edid;
@@ -81,6 +84,17 @@ struct chamelium_infoframe {
 
 struct chamelium_edid;
 
+struct data_chamelium_t {
+	struct chamelium *chamelium;
+	struct chamelium_port **ports;
+	igt_display_t display;
+	int port_count;
+
+	int drm_fd;
+
+	struct chamelium_edid *edids[TEST_EDID_COUNT];
+};
+
 /**
  * CHAMELIUM_MAX_PORTS: the maximum number of ports supported by igt_chamelium.
  *
@@ -210,4 +224,10 @@ void chamelium_destroy_frame_dump(struct chamelium_frame_dump *dump);
 void chamelium_destroy_audio_file(struct chamelium_audio_file *audio_file);
 void chamelium_infoframe_destroy(struct chamelium_infoframe *infoframe);
 
+drmModeConnection
+reprobe_connector(struct data_chamelium_t *data, struct chamelium_port *port);
+const char *connection_str(drmModeConnection c);
+void
+wait_for_connector(struct data_chamelium_t *data, struct chamelium_port *port,
+		   drmModeConnection status);
 #endif /* IGT_CHAMELIUM_H */
diff --git a/tests/kms_chamelium.c b/tests/kms_chamelium.c
index 5c4a189..da2037b 100644
--- a/tests/kms_chamelium.c
+++ b/tests/kms_chamelium.c
@@ -43,20 +43,9 @@ enum test_edid {
 	TEST_EDID_DP_AUDIO,
 	TEST_EDID_ASPECT_RATIO,
 };
-#define TEST_EDID_COUNT 5
 
-typedef struct {
-	struct chamelium *chamelium;
-	struct chamelium_port **ports;
-	igt_display_t display;
-	int port_count;
-
-	int drm_fd;
+typedef struct data_chamelium_t data_t;
 
-	struct chamelium_edid *edids[TEST_EDID_COUNT];
-} data_t;
-
-#define HOTPLUG_TIMEOUT 20 /* seconds */
 #define ONLINE_TIMEOUT 20 /* seconds */
 
 #define HPD_STORM_PULSE_INTERVAL_DP 100 /* ms */
@@ -106,57 +95,6 @@ require_connector_present(data_t *data, unsigned int type)
 		      kmstest_connector_type_str(type));
 }
 
-static drmModeConnection
-reprobe_connector(data_t *data, struct chamelium_port *port)
-{
-	drmModeConnector *connector;
-	drmModeConnection status;
-
-	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;
-
-	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));
-}
-
 static int chamelium_vga_modes[][2] = {
 	{ 1600, 1200 },
 	{ 1920, 1200 },
-- 
2.7.4

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

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

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

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

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Karthik B S <karthik.b.s@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       | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_kms.h       |   2 +
 6 files changed, 225 insertions(+)

diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
index 29949bb..08efca1 100644
--- a/lib/igt_chamelium.c
+++ b/lib/igt_chamelium.c
@@ -699,6 +699,33 @@ const struct edid *chamelium_edid_get_raw(struct chamelium_edid *edid,
 }
 
 /**
+ * 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
  * @port: The port on the Chamelium to set the EDID on
@@ -737,6 +764,46 @@ void chamelium_port_set_edid(struct chamelium *chamelium,
 }
 
 /**
+ * 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
  * @port: The port to change the DDC state on
diff --git a/lib/igt_chamelium.h b/lib/igt_chamelium.h
index 3ce78a2..c74ae57 100644
--- a/lib/igt_chamelium.h
+++ b/lib/igt_chamelium.h
@@ -146,9 +146,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 1c85486..b6edde8 100644
--- a/lib/igt_edid.c
+++ b/lib/igt_edid.c
@@ -313,10 +313,28 @@ 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.
  */
@@ -459,6 +477,15 @@ size_t edid_cea_data_block_set_speaker_alloc(struct edid_cea_data_block *block,
 }
 
 /**
+ * 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
  * CEA data blocks) followed by multiple Detailed Timing Descriptors.
diff --git a/lib/igt_edid.h b/lib/igt_edid.h
index 59b47a9..7c2ce12 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 d20daaa..b7df4e7 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -84,6 +84,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;
@@ -126,6 +129,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:
  *
@@ -261,6 +284,87 @@ 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 "IGT" (ASCII HEX) */
+		edid_tile->topology_id[0] = 0x49;
+		edid_tile->topology_id[1] = 0x47;
+		edid_tile->topology_id[2] = 0x54;
+	/* Product code "CH" (ASCII HEX) */
+		edid_tile->topology_id[3] = 0x43;
+		edid_tile->topology_id[4] = 0x48;
+	/* Serial Code */
+		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 6c919e9..1c43f0f 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -769,6 +769,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_base_tile_edid(void);
+struct edid **igt_kms_get_tiled_edid(uint8_t htile, uint8_t vtile);
 
 struct udev_monitor *igt_watch_hotplug(void);
 bool igt_hotplug_detected(struct udev_monitor *mon,
-- 
2.7.4

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

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

* [igt-dev] [PATCH i-g-t 3/3] Added a subtest where chamelium acts as a tiled panel.
  2019-12-26 10:50 [igt-dev] [PATCH i-g-t 0/3] Test tiled display with aid of chamelium Kunal Joshi
  2019-12-26 10:50 ` [igt-dev] [PATCH i-g-t 1/3] Make basic chamelium function accessible to other tests Kunal Joshi
  2019-12-26 10:50 ` [igt-dev] [PATCH i-g-t 2/3] Added structures and functions to generate tiled edids Kunal Joshi
@ 2019-12-26 10:50 ` Kunal Joshi
  2019-12-26 11:28 ` [igt-dev] ✗ GitLab.Pipeline: warning for Test tiled display with aid of chamelium Patchwork
  2019-12-26 11:54 ` [igt-dev] ✗ Fi.CI.BAT: failure " Patchwork
  4 siblings, 0 replies; 6+ messages in thread
From: Kunal Joshi @ 2019-12-26 10:50 UTC (permalink / raw)
  To: igt-dev; +Cc: Kunal Joshi

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

Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Karthik B S <karthik.b.s@intel.com>
---
 tests/kms_dp_tiled_display.c | 109 +++++++++++++++++++++++++++++++++++--------
 1 file changed, 89 insertions(+), 20 deletions(-)

diff --git a/tests/kms_dp_tiled_display.c b/tests/kms_dp_tiled_display.c
index 219de01..c83a8e6 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");
 
@@ -61,6 +62,11 @@ typedef struct {
 	struct timeval first_ts;
 } data_t;
 
+void basic_test(data_t data, drmEventContext drm_event, struct pollfd pfd);
+
+void
+require_displayport_connector_present(struct data_chamelium_t *data);
+
 static int drm_property_is_tile(drmModePropertyPtr prop)
 {
 	return (strcmp(prop->name, "TILE") ? 0 : 1) &&
@@ -380,13 +386,90 @@ static bool got_all_page_flips(data_t *data)
 	return true;
 }
 
+void
+require_displayport_connector_present(struct data_chamelium_t *data)
+{
+	int i, count = 0;
+	bool found = false;
+	int type_dp = 10;
+
+	for (i = 0; i < data->port_count && !found; i++) {
+		if (chamelium_port_get_type(data->ports[i]) == type_dp)
+			count++;
+		if (count == 2)
+			found = true;
+	}
+	igt_require_f(found,
+		"Need atleast 2 ports of type %s connected, found %d\n",
+		"DisplayPort", count);
+}
+
+static void test_with_chamelium(data_t data)
+{
+	struct data_chamelium_t data_cham = {0};
+	int i, count = 0;
+	uint8_t htile = 2, vtile = 1;
+	struct edid **edid;
+
+	data_cham.chamelium = chamelium_init(data.drm_fd);
+	igt_assert(data_cham.chamelium);
+	data_cham.ports = chamelium_get_ports
+		(data_cham.chamelium, &data_cham.port_count);
+	require_displayport_connector_present(&data_cham);
+	edid = igt_kms_get_tiled_edid(htile-1, vtile-1);
+
+	for (i = 0; i < 2; i++)
+		data_cham.edids[i] =
+			chamelium_new_edid(data_cham.chamelium, edid[i]);
+
+	for (i = 0; i < data_cham.port_count; i++) {
+		if (chamelium_port_get_type(data_cham.ports[i]) ==
+				DRM_MODE_CONNECTOR_DisplayPort) {
+
+			chamelium_port_set_tiled_edid(data_cham.chamelium,
+				data_cham.ports[i], data_cham.edids[i]);
+			chamelium_plug(data_cham.chamelium, data_cham.ports[i]);
+			wait_for_connector(&data_cham, data_cham.ports[i],
+				DRM_MODE_CONNECTED);
+			count++;
+		}
+		if (count == 2)
+			break;
+	}
+}
+
+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);
+		}
+
+		test_cleanup(&data);
+}
+
 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);
@@ -402,31 +485,17 @@ 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);
+	igt_subtest("basic-test-pattern-with-chamelium") {
+		test_with_chamelium(data);
+		basic_test(data, drm_event, pfd);
 	}
 
 	igt_fixture {
-- 
2.7.4

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

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

* [igt-dev] ✗ GitLab.Pipeline: warning for Test tiled display with aid of chamelium.
  2019-12-26 10:50 [igt-dev] [PATCH i-g-t 0/3] Test tiled display with aid of chamelium Kunal Joshi
                   ` (2 preceding siblings ...)
  2019-12-26 10:50 ` [igt-dev] [PATCH i-g-t 3/3] Added a subtest where chamelium acts as a tiled panel Kunal Joshi
@ 2019-12-26 11:28 ` Patchwork
  2019-12-26 11:54 ` [igt-dev] ✗ Fi.CI.BAT: failure " Patchwork
  4 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2019-12-26 11:28 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: igt-dev

== Series Details ==

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

== Summary ==

Did not get list of undocumented tests for this run, something is wrong!

Other than that, pipeline status: FAILED.

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

build:tests-debian-meson-armhf has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/1233218):
      chamelium_plug(data_cham.chamelium, data_cham.ports[i]);
      ^~~~~~~~~~~~~~
  ../tests/kms_dp_tiled_display.c:431:4: warning: nested extern declaration of ‘chamelium_plug’ [-Wnested-externs]
  ../tests/kms_dp_tiled_display.c:432:4: error: implicit declaration of function ‘wait_for_connector’; did you mean ‘get_connectors’? [-Werror=implicit-function-declaration]
      wait_for_connector(&data_cham, data_cham.ports[i],
      ^~~~~~~~~~~~~~~~~~
      get_connectors
  ../tests/kms_dp_tiled_display.c:432:4: warning: nested extern declaration of ‘wait_for_connector’ [-Wnested-externs]
  ../tests/kms_dp_tiled_display.c:409:26: warning: unused variable ‘data_cham’ [-Wunused-variable]
    struct data_chamelium_t data_cham = {0};
                            ^~~~~~~~~
  cc1: some warnings being treated as errors
  ninja: build stopped: subcommand failed.
  section_end:1577359619:build_script
  ^[[0Ksection_start:1577359619:after_script
  ^[[0Ksection_end:1577359620:after_script
  ^[[0Ksection_start:1577359620:upload_artifacts_on_failure
  ^[[0Ksection_end:1577359622:upload_artifacts_on_failure
  ^[[0K^[[31;1mERROR: Job failed: exit code 1
  ^[[0;m

build:tests-debian-meson-arm64 has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/1233219):
      chamelium_plug(data_cham.chamelium, data_cham.ports[i]);
      ^~~~~~~~~~~~~~
  ../tests/kms_dp_tiled_display.c:431:4: warning: nested extern declaration of ‘chamelium_plug’ [-Wnested-externs]
  ../tests/kms_dp_tiled_display.c:432:4: error: implicit declaration of function ‘wait_for_connector’; did you mean ‘get_connectors’? [-Werror=implicit-function-declaration]
      wait_for_connector(&data_cham, data_cham.ports[i],
      ^~~~~~~~~~~~~~~~~~
      get_connectors
  ../tests/kms_dp_tiled_display.c:432:4: warning: nested extern declaration of ‘wait_for_connector’ [-Wnested-externs]
  ../tests/kms_dp_tiled_display.c:409:26: warning: unused variable ‘data_cham’ [-Wunused-variable]
    struct data_chamelium_t data_cham = {0};
                            ^~~~~~~~~
  cc1: some warnings being treated as errors
  ninja: build stopped: subcommand failed.
  section_end:1577359625:build_script
  ^[[0Ksection_start:1577359625:after_script
  ^[[0Ksection_end:1577359626:after_script
  ^[[0Ksection_start:1577359626:upload_artifacts_on_failure
  ^[[0Ksection_end:1577359627:upload_artifacts_on_failure
  ^[[0K^[[31;1mERROR: Job failed: exit code 1
  ^[[0;m

build:tests-debian-meson-mips has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/1233220):
  ../tests/kms_dp_tiled_display.c:431:4: error: implicit declaration of function ‘chamelium_plug’ [-Werror=implicit-function-declaration]
      chamelium_plug(data_cham.chamelium, data_cham.ports[i]);
      ^~~~~~~~~~~~~~
  ../tests/kms_dp_tiled_display.c:431:4: warning: nested extern declaration of ‘chamelium_plug’ [-Wnested-externs]
  ../tests/kms_dp_tiled_display.c:432:4: error: implicit declaration of function ‘wait_for_connector’ [-Werror=implicit-function-declaration]
      wait_for_connector(&data_cham, data_cham.ports[i],
      ^~~~~~~~~~~~~~~~~~
  ../tests/kms_dp_tiled_display.c:432:4: warning: nested extern declaration of ‘wait_for_connector’ [-Wnested-externs]
  ../tests/kms_dp_tiled_display.c:409:26: warning: unused variable ‘data_cham’ [-Wunused-variable]
    struct data_chamelium_t data_cham = {0};
                            ^~~~~~~~~
  cc1: some warnings being treated as errors
  ninja: build stopped: subcommand failed.
  section_end:1577359593:build_script
  ^[[0Ksection_start:1577359593:after_script
  ^[[0Ksection_end:1577359594:after_script
  ^[[0Ksection_start:1577359594:upload_artifacts_on_failure
  ^[[0Ksection_end:1577359595:upload_artifacts_on_failure
  ^[[0K^[[31;1mERROR: Job failed: exit code 1
  ^[[0;m

== Logs ==

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

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

* [igt-dev] ✗ Fi.CI.BAT: failure for Test tiled display with aid of chamelium.
  2019-12-26 10:50 [igt-dev] [PATCH i-g-t 0/3] Test tiled display with aid of chamelium Kunal Joshi
                   ` (3 preceding siblings ...)
  2019-12-26 11:28 ` [igt-dev] ✗ GitLab.Pipeline: warning for Test tiled display with aid of chamelium Patchwork
@ 2019-12-26 11:54 ` Patchwork
  4 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2019-12-26 11:54 UTC (permalink / raw)
  To: Kunal Joshi; +Cc: igt-dev

== Series Details ==

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

== Summary ==

CI Bug Log - changes from CI_DRM_7636 -> IGTPW_3885
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_3885 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_3885, 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_3885/index.html

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-skl-6600u:       [PASS][1] -> [DMESG-WARN][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-skl-6600u/igt@i915_module_load@reload-with-fault-injection.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-skl-6600u/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_rpm@module-reload:
    - fi-skl-6600u:       [PASS][3] -> [FAIL][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-skl-6600u/igt@i915_pm_rpm@module-reload.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-skl-6600u/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live_hangcheck:
    - fi-bwr-2160:        [PASS][5] -> [FAIL][6] +1 similar issue
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-bwr-2160/igt@i915_selftest@live_hangcheck.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-bwr-2160/igt@i915_selftest@live_hangcheck.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_close_race@basic-threads:
    - fi-byt-j1900:       [PASS][7] -> [TIMEOUT][8] ([i915#816])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-byt-j1900/igt@gem_close_race@basic-threads.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-byt-j1900/igt@gem_close_race@basic-threads.html
    - fi-byt-n2820:       [PASS][9] -> [TIMEOUT][10] ([i915#816])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-byt-n2820/igt@gem_close_race@basic-threads.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-byt-n2820/igt@gem_close_race@basic-threads.html

  * igt@i915_pm_rpm@module-reload:
    - fi-skl-6770hq:      [PASS][11] -> [FAIL][12] ([i915#178])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-skl-6770hq/igt@i915_pm_rpm@module-reload.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-kbl-7500u:       [PASS][13] -> [FAIL][14] ([fdo#111096] / [i915#323])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html

  
#### Possible fixes ####

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-bxt-dsi:         [INCOMPLETE][15] ([fdo#103927]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-bxt-dsi/igt@i915_module_load@reload-with-fault-injection.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-bxt-dsi/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_selftest@live_blt:
    - fi-hsw-4770:        [DMESG-FAIL][17] ([i915#553] / [i915#725]) -> [PASS][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-hsw-4770/igt@i915_selftest@live_blt.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-hsw-4770/igt@i915_selftest@live_blt.html

  * igt@i915_selftest@live_gem_contexts:
    - fi-cfl-8700k:       [INCOMPLETE][19] ([i915#424]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-cfl-8700k/igt@i915_selftest@live_gem_contexts.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-cfl-8700k/igt@i915_selftest@live_gem_contexts.html

  * igt@i915_selftest@live_hugepages:
    - fi-bwr-2160:        [FAIL][21] -> [PASS][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-bwr-2160/igt@i915_selftest@live_hugepages.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-bwr-2160/igt@i915_selftest@live_hugepages.html

  
#### Warnings ####

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-kbl-x1275:       [INCOMPLETE][23] ([i915#879]) -> [DMESG-WARN][24] ([i915#62] / [i915#92] / [i915#95])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-kbl-x1275/igt@i915_module_load@reload-with-fault-injection.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-kbl-x1275/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_selftest@live_blt:
    - fi-hsw-4770r:       [DMESG-FAIL][25] ([i915#725]) -> [DMESG-FAIL][26] ([i915#553] / [i915#725])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-hsw-4770r/igt@i915_selftest@live_blt.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-hsw-4770r/igt@i915_selftest@live_blt.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
    - fi-kbl-x1275:       [DMESG-WARN][27] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][28] ([i915#62] / [i915#92]) +8 similar issues
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-kbl-x1275/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-kbl-x1275/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html

  * igt@kms_flip@basic-flip-vs-modeset:
    - fi-kbl-x1275:       [DMESG-WARN][29] ([i915#62] / [i915#92]) -> [DMESG-WARN][30] ([i915#62] / [i915#92] / [i915#95]) +7 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7636/fi-kbl-x1275/igt@kms_flip@basic-flip-vs-modeset.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/fi-kbl-x1275/igt@kms_flip@basic-flip-vs-modeset.html

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

  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#111096]: https://bugs.freedesktop.org/show_bug.cgi?id=111096
  [fdo#111736]: https://bugs.freedesktop.org/show_bug.cgi?id=111736
  [i915#178]: https://gitlab.freedesktop.org/drm/intel/issues/178
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#424]: https://gitlab.freedesktop.org/drm/intel/issues/424
  [i915#435]: https://gitlab.freedesktop.org/drm/intel/issues/435
  [i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725
  [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816
  [i915#879]: https://gitlab.freedesktop.org/drm/intel/issues/879
  [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (47 -> 46)
------------------------------

  Additional (5): fi-gdg-551 fi-bsw-kefka fi-skl-lmem fi-tgl-y fi-snb-2600 
  Missing    (6): fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


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

  * CI: CI-20190529 -> None
  * IGT: IGT_5352 -> IGTPW_3885

  CI-20190529: 20190529
  CI_DRM_7636: 57c982a802fb336cf9c10d811dfd88dd49103f48 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_3885: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3885/index.html
  IGT_5352: 0586d205f651674e575351c2d5a7d0760716c9f1 @ 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_3885/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

end of thread, other threads:[~2019-12-26 11:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-26 10:50 [igt-dev] [PATCH i-g-t 0/3] Test tiled display with aid of chamelium Kunal Joshi
2019-12-26 10:50 ` [igt-dev] [PATCH i-g-t 1/3] Make basic chamelium function accessible to other tests Kunal Joshi
2019-12-26 10:50 ` [igt-dev] [PATCH i-g-t 2/3] Added structures and functions to generate tiled edids Kunal Joshi
2019-12-26 10:50 ` [igt-dev] [PATCH i-g-t 3/3] Added a subtest where chamelium acts as a tiled panel Kunal Joshi
2019-12-26 11:28 ` [igt-dev] ✗ GitLab.Pipeline: warning for Test tiled display with aid of chamelium Patchwork
2019-12-26 11:54 ` [igt-dev] ✗ Fi.CI.BAT: failure " 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.