* [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium.
@ 2020-01-20 4:20 Kunal Joshi
2020-01-20 4:20 ` [igt-dev] [PATCH i-g-t v2 1/3] Make basic chamelium function accessible to other tests Kunal Joshi
` (5 more replies)
0 siblings, 6 replies; 8+ messages in thread
From: Kunal Joshi @ 2020-01-20 4:20 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi, martin.peres
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 | 152 +++++++++++++++++++++++++++++++++++++++++++
lib/igt_chamelium.h | 33 ++++++++++
lib/igt_edid.c | 27 ++++++++
lib/igt_edid.h | 20 ++++++
lib/igt_kms.c | 102 +++++++++++++++++++++++++++++
lib/igt_kms.h | 2 +
tests/kms_chamelium.c | 81 +----------------------
tests/kms_dp_tiled_display.c | 111 ++++++++++++++++++++++++-------
8 files changed, 424 insertions(+), 104 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] 8+ messages in thread
* [igt-dev] [PATCH i-g-t v2 1/3] Make basic chamelium function accessible to other tests.
2020-01-20 4:20 [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium Kunal Joshi
@ 2020-01-20 4:20 ` Kunal Joshi
2020-03-11 8:23 ` Petri Latvala
2020-01-20 4:20 ` [igt-dev] [PATCH i-g-t v2 2/3] Added structures and functions to generate tiled edids Kunal Joshi
` (4 subsequent siblings)
5 siblings, 1 reply; 8+ messages in thread
From: Kunal Joshi @ 2020-01-20 4:20 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi, martin.peres
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.
Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Karthik B S <karthik.b.s@intel.com>
---
lib/igt_chamelium.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_chamelium.h | 28 +++++++++++++++++
tests/kms_chamelium.c | 81 +-----------------------------------------------
3 files changed, 114 insertions(+), 80 deletions(-)
diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
index 9971f51..8b910bf 100644
--- a/lib/igt_chamelium.c
+++ b/lib/igt_chamelium.c
@@ -132,6 +132,91 @@ static struct chamelium *cleanup_instance;
static void chamelium_do_calculate_fb_crc(cairo_surface_t *fb_surface,
igt_crc_t *out);
+void
+require_displayport_connector_present(struct data_chamelium_t *data,
+ unsigned int type)
+{
+ int i, count = 0;
+ bool found = false;
+
+ for (i = 0; i < data->port_count && !found; i++) {
+ if (chamelium_port_get_type(data->ports[i]) == type)
+ count++;
+ if (count == 2)
+ found = true;
+ }
+ igt_require_f(found,
+ "Need atleast 2 ports of type %s connected, found %d\n",
+ kmstest_connector_type_str(type), count);
+}
+
+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));
+}
+
+void
+reset_state(struct data_chamelium_t *data, struct chamelium_port *port)
+{
+ int p;
+
+ 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);
+ }
+ }
+}
+
/**
* chamelium_get_ports:
* @chamelium: The Chamelium instance to use
diff --git a/lib/igt_chamelium.h b/lib/igt_chamelium.h
index 08705a9..71080f4 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 5
+#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,18 @@ 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);
+void
+require_displayport_connector_present(struct data_chamelium_t *data,
+ unsigned int type);
+
+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);
+void
+reset_state(struct data_chamelium_t *data, struct chamelium_port *port);
#endif /* IGT_CHAMELIUM_H */
diff --git a/tests/kms_chamelium.c b/tests/kms_chamelium.c
index 5c4a189..972f045 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;
-
- struct chamelium_edid *edids[TEST_EDID_COUNT];
-} data_t;
+typedef struct data_chamelium_t 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 },
@@ -225,23 +163,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;
-
- 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 const char test_basic_hotplug_desc[] =
"Check that we get uevents and updated connector status on "
"hotplug and unplug";
--
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] 8+ messages in thread
* [igt-dev] [PATCH i-g-t v2 2/3] Added structures and functions to generate tiled edids.
2020-01-20 4:20 [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium Kunal Joshi
2020-01-20 4:20 ` [igt-dev] [PATCH i-g-t v2 1/3] Make basic chamelium function accessible to other tests Kunal Joshi
@ 2020-01-20 4:20 ` Kunal Joshi
2020-01-20 4:20 ` [igt-dev] [PATCH i-g-t v2 3/3] Added a subtest where chamelium acts as a tiled panel Kunal Joshi
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Kunal Joshi @ 2020-01-20 4:20 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi, martin.peres
Generating the tiled edid which can be flashed on chamelium and added
some functions to support the same.
v2: No change.
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 | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++
lib/igt_kms.h | 2 ++
6 files changed, 223 insertions(+)
diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
index 8b910bf..19c4484 100644
--- a/lib/igt_chamelium.c
+++ b/lib/igt_chamelium.c
@@ -734,6 +734,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
@@ -772,6 +799,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 71080f4..654c469 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..0be14bb 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,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 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] 8+ messages in thread
* [igt-dev] [PATCH i-g-t v2 3/3] Added a subtest where chamelium acts as a tiled panel.
2020-01-20 4:20 [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium Kunal Joshi
2020-01-20 4:20 ` [igt-dev] [PATCH i-g-t v2 1/3] Make basic chamelium function accessible to other tests Kunal Joshi
2020-01-20 4:20 ` [igt-dev] [PATCH i-g-t v2 2/3] Added structures and functions to generate tiled edids Kunal Joshi
@ 2020-01-20 4:20 ` Kunal Joshi
2020-01-20 22:34 ` [igt-dev] ✓ Fi.CI.BAT: success for Test tiled display with aid of chamelium. (rev2) Patchwork
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Kunal Joshi @ 2020-01-20 4:20 UTC (permalink / raw)
To: igt-dev; +Cc: Kunal Joshi, martin.peres
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
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 | 111 +++++++++++++++++++++++++++++++++----------
1 file changed, 87 insertions(+), 24 deletions(-)
diff --git a/tests/kms_dp_tiled_display.c b/tests/kms_dp_tiled_display.c
index b1160fe..21c13d9 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,13 @@ typedef struct {
struct timeval first_ts;
} 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,
+ struct data_chamelium_t *data_cham);
+#endif
+
static int drm_property_is_tile(drmModePropertyPtr prop)
{
return (strcmp(prop->name, "TILE") ? 0 : 1) &&
@@ -206,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;
@@ -380,21 +387,84 @@ static bool got_all_page_flips(data_t *data)
return true;
}
+#ifdef HAVE_CHAMELIUM
+static void test_with_chamelium(data_t data,
+ struct data_chamelium_t *data_cham)
+{
+ 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, DRM_MODE_CONNECTOR_DisplayPort);
+ 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;
+ }
+}
+#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};
+ #ifdef HAVE_CHAMELIUM
+ struct data_chamelium_t data_cham = {0};
+ #endif
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;
@@ -402,33 +472,26 @@ 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, &data_cham);
+ basic_test(&data, &drm_event, &pfd);
+ test_cleanup(&data);
+ for (i = 0; i < data_cham.port_count; i++)
+ reset_state(&data_cham, data_cham.ports[i]);
+ }
+ #endif
igt_fixture {
free(data.conns);
close(data.drm_fd);
--
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] 8+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for Test tiled display with aid of chamelium. (rev2)
2020-01-20 4:20 [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium Kunal Joshi
` (2 preceding siblings ...)
2020-01-20 4:20 ` [igt-dev] [PATCH i-g-t v2 3/3] Added a subtest where chamelium acts as a tiled panel Kunal Joshi
@ 2020-01-20 22:34 ` Patchwork
2020-01-21 6:33 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2020-03-10 19:43 ` [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium Manasi Navare
5 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2020-01-20 22:34 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
== Series Details ==
Series: Test tiled display with aid of chamelium. (rev2)
URL : https://patchwork.freedesktop.org/series/71393/
State : success
== Summary ==
CI Bug Log - changes from IGT_5373 -> IGTPW_3950
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/index.html
Known issues
------------
Here are the changes found in IGTPW_3950 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live_hangcheck:
- fi-icl-guc: [PASS][1] -> [INCOMPLETE][2] ([fdo#108569] / [i915#140])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/fi-icl-guc/igt@i915_selftest@live_hangcheck.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/fi-icl-guc/igt@i915_selftest@live_hangcheck.html
* igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u: [PASS][3] -> [FAIL][4] ([i915#217])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html
#### Possible fixes ####
* igt@gem_close_race@basic-threads:
- fi-byt-j1900: [TIMEOUT][5] ([fdo#112271] / [i915#816]) -> [PASS][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/fi-byt-j1900/igt@gem_close_race@basic-threads.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/fi-byt-j1900/igt@gem_close_race@basic-threads.html
* igt@i915_module_load@reload-with-fault-injection:
- fi-kbl-7500u: [INCOMPLETE][7] ([i915#879]) -> [PASS][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/fi-kbl-7500u/igt@i915_module_load@reload-with-fault-injection.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/fi-kbl-7500u/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_selftest@live_blt:
- fi-ivb-3770: [DMESG-FAIL][9] ([i915#563]) -> [PASS][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/fi-ivb-3770/igt@i915_selftest@live_blt.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/fi-ivb-3770/igt@i915_selftest@live_blt.html
- fi-hsw-4770: [DMESG-FAIL][11] ([i915#563]) -> [PASS][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/fi-hsw-4770/igt@i915_selftest@live_blt.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/fi-hsw-4770/igt@i915_selftest@live_blt.html
#### Warnings ####
* igt@i915_module_load@reload-with-fault-injection:
- fi-skl-lmem: [INCOMPLETE][13] ([i915#671]) -> [DMESG-WARN][14] ([i915#889])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/fi-skl-lmem/igt@i915_module_load@reload-with-fault-injection.html
[fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
[fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
[i915#140]: https://gitlab.freedesktop.org/drm/intel/issues/140
[i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217
[i915#563]: https://gitlab.freedesktop.org/drm/intel/issues/563
[i915#671]: https://gitlab.freedesktop.org/drm/intel/issues/671
[i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816
[i915#879]: https://gitlab.freedesktop.org/drm/intel/issues/879
[i915#889]: https://gitlab.freedesktop.org/drm/intel/issues/889
Participating hosts (49 -> 43)
------------------------------
Missing (6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_5373 -> IGTPW_3950
CI-20190529: 20190529
CI_DRM_7778: 8442e59b2b3aa0f081ee31fc13dcd0f31e5981e5 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3950: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/index.html
IGT_5373: 224e565df36693ab8ae8f58eb6ae42600c2464e2 @ 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_3950/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 8+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for Test tiled display with aid of chamelium. (rev2)
2020-01-20 4:20 [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium Kunal Joshi
` (3 preceding siblings ...)
2020-01-20 22:34 ` [igt-dev] ✓ Fi.CI.BAT: success for Test tiled display with aid of chamelium. (rev2) Patchwork
@ 2020-01-21 6:33 ` Patchwork
2020-03-10 19:43 ` [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium Manasi Navare
5 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2020-01-21 6:33 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev
== Series Details ==
Series: Test tiled display with aid of chamelium. (rev2)
URL : https://patchwork.freedesktop.org/series/71393/
State : failure
== Summary ==
CI Bug Log - changes from IGT_5373_full -> IGTPW_3950_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with IGTPW_3950_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_3950_full, 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_3950/index.html
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_3950_full:
### IGT changes ###
#### Possible regressions ####
* igt@kms_dp_tiled_display@basic-test-pattern:
- shard-tglb: NOTRUN -> [SKIP][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb2/igt@kms_dp_tiled_display@basic-test-pattern.html
* {igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium} (NEW):
- shard-apl: NOTRUN -> [FAIL][2]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-apl8/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
- shard-tglb: NOTRUN -> [FAIL][3]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb1/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
- shard-glk: NOTRUN -> [FAIL][4]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-glk7/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
- shard-snb: NOTRUN -> [FAIL][5]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-snb2/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
- shard-iclb: NOTRUN -> [FAIL][6]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb8/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
- shard-hsw: NOTRUN -> [FAIL][7]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-hsw2/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
- shard-kbl: NOTRUN -> [FAIL][8]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-kbl4/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html
#### Warnings ####
* igt@kms_dp_tiled_display@basic-test-pattern:
- shard-iclb: [SKIP][9] ([i915#426]) -> [SKIP][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb1/igt@kms_dp_tiled_display@basic-test-pattern.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb3/igt@kms_dp_tiled_display@basic-test-pattern.html
New tests
---------
New tests have been introduced between IGT_5373_full and IGTPW_3950_full:
### New IGT tests (1) ###
* igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium:
- Statuses : 7 fail(s)
- Exec time: [0.01, 0.99] s
Known issues
------------
Here are the changes found in IGTPW_3950_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_busy@busy-vcs1:
- shard-iclb: [PASS][11] -> [SKIP][12] ([fdo#112080]) +7 similar issues
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb4/igt@gem_busy@busy-vcs1.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb3/igt@gem_busy@busy-vcs1.html
* igt@gem_busy@close-race:
- shard-tglb: [PASS][13] -> [INCOMPLETE][14] ([i915#472] / [i915#977])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb8/igt@gem_busy@close-race.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb3/igt@gem_busy@close-race.html
* igt@gem_ctx_persistence@vcs1-mixed-process:
- shard-iclb: [PASS][15] -> [SKIP][16] ([fdo#109276] / [fdo#112080]) +4 similar issues
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb1/igt@gem_ctx_persistence@vcs1-mixed-process.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb8/igt@gem_ctx_persistence@vcs1-mixed-process.html
* igt@gem_ctx_shared@q-smoketest-vebox:
- shard-tglb: [PASS][17] -> [INCOMPLETE][18] ([fdo#111735] / [i915#472])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb2/igt@gem_ctx_shared@q-smoketest-vebox.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb4/igt@gem_ctx_shared@q-smoketest-vebox.html
* igt@gem_exec_create@madvise:
- shard-tglb: [PASS][19] -> [INCOMPLETE][20] ([i915#472])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb1/igt@gem_exec_create@madvise.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb8/igt@gem_exec_create@madvise.html
* igt@gem_exec_schedule@pi-userfault-bsd:
- shard-iclb: [PASS][21] -> [SKIP][22] ([i915#677])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb8/igt@gem_exec_schedule@pi-userfault-bsd.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb1/igt@gem_exec_schedule@pi-userfault-bsd.html
* igt@gem_exec_schedule@preempt-queue-bsd:
- shard-iclb: [PASS][23] -> [SKIP][24] ([fdo#112146]) +1 similar issue
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb3/igt@gem_exec_schedule@preempt-queue-bsd.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb1/igt@gem_exec_schedule@preempt-queue-bsd.html
* igt@gem_exec_schedule@preempt-queue-bsd1:
- shard-tglb: [PASS][25] -> [INCOMPLETE][26] ([fdo#111677] / [i915#472])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb2/igt@gem_exec_schedule@preempt-queue-bsd1.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb6/igt@gem_exec_schedule@preempt-queue-bsd1.html
* igt@gem_exec_schedule@promotion-bsd1:
- shard-iclb: [PASS][27] -> [SKIP][28] ([fdo#109276]) +15 similar issues
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb2/igt@gem_exec_schedule@promotion-bsd1.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb8/igt@gem_exec_schedule@promotion-bsd1.html
* igt@gem_exec_suspend@basic:
- shard-tglb: [PASS][29] -> [INCOMPLETE][30] ([i915#460] / [i915#472])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb7/igt@gem_exec_suspend@basic.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb3/igt@gem_exec_suspend@basic.html
* igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing:
- shard-apl: [PASS][31] -> [INCOMPLETE][32] ([CI#80] / [fdo#103927] / [i915#530])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-apl2/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-apl8/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html
- shard-iclb: [PASS][33] -> [INCOMPLETE][34] ([CI#80] / [i915#140] / [i915#530])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb3/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb3/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html
* igt@gem_persistent_relocs@forked-interruptible-thrash-inactive:
- shard-kbl: [PASS][35] -> [TIMEOUT][36] ([fdo#112271] / [i915#530])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-kbl2/igt@gem_persistent_relocs@forked-interruptible-thrash-inactive.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-kbl6/igt@gem_persistent_relocs@forked-interruptible-thrash-inactive.html
* igt@gem_set_tiling_vs_gtt:
- shard-snb: [PASS][37] -> [DMESG-WARN][38] ([i915#478])
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-snb1/igt@gem_set_tiling_vs_gtt.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-snb2/igt@gem_set_tiling_vs_gtt.html
* igt@gem_userptr_blits@map-fixed-invalidate-busy:
- shard-snb: [PASS][39] -> [DMESG-WARN][40] ([fdo#111870] / [i915#478])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-snb2/igt@gem_userptr_blits@map-fixed-invalidate-busy.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-snb6/igt@gem_userptr_blits@map-fixed-invalidate-busy.html
* igt@i915_pm_dc@dc6-psr:
- shard-iclb: [PASS][41] -> [FAIL][42] ([i915#454])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb1/igt@i915_pm_dc@dc6-psr.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb6/igt@i915_pm_dc@dc6-psr.html
* igt@i915_selftest@mock_requests:
- shard-glk: [PASS][43] -> [INCOMPLETE][44] ([i915#58] / [k.org#198133])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-glk4/igt@i915_selftest@mock_requests.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-glk8/igt@i915_selftest@mock_requests.html
* igt@kms_cursor_crc@pipe-b-cursor-alpha-opaque:
- shard-apl: [PASS][45] -> [FAIL][46] ([i915#54])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-apl6/igt@kms_cursor_crc@pipe-b-cursor-alpha-opaque.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-apl7/igt@kms_cursor_crc@pipe-b-cursor-alpha-opaque.html
- shard-kbl: [PASS][47] -> [FAIL][48] ([i915#54])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-kbl7/igt@kms_cursor_crc@pipe-b-cursor-alpha-opaque.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-kbl4/igt@kms_cursor_crc@pipe-b-cursor-alpha-opaque.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-kbl: [PASS][49] -> [FAIL][50] ([i915#79])
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-kbl3/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-kbl4/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-apl: [PASS][51] -> [DMESG-WARN][52] ([i915#180]) +3 similar issues
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-apl6/igt@kms_flip@flip-vs-suspend-interruptible.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-apl6/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_force_connector_basic@prune-stale-modes:
- shard-snb: [PASS][53] -> [INCOMPLETE][54] ([CI#80] / [i915#82])
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-snb4/igt@kms_force_connector_basic@prune-stale-modes.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-snb4/igt@kms_force_connector_basic@prune-stale-modes.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-pwrite:
- shard-tglb: [PASS][55] -> [FAIL][56] ([i915#49])
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-pwrite.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-pwrite.html
* igt@kms_psr2_su@frontbuffer:
- shard-iclb: [PASS][57] -> [SKIP][58] ([fdo#109642] / [fdo#111068])
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb2/igt@kms_psr2_su@frontbuffer.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb7/igt@kms_psr2_su@frontbuffer.html
* igt@kms_psr@psr2_primary_blt:
- shard-iclb: [PASS][59] -> [SKIP][60] ([fdo#109441])
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb2/igt@kms_psr@psr2_primary_blt.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb8/igt@kms_psr@psr2_primary_blt.html
* igt@kms_vblank@pipe-b-query-busy:
- shard-hsw: [PASS][61] -> [DMESG-WARN][62] ([i915#44])
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-hsw5/igt@kms_vblank@pipe-b-query-busy.html
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-hsw5/igt@kms_vblank@pipe-b-query-busy.html
* igt@kms_vblank@pipe-c-ts-continuation-suspend:
- shard-kbl: [PASS][63] -> [DMESG-WARN][64] ([i915#180]) +3 similar issues
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-kbl1/igt@kms_vblank@pipe-c-ts-continuation-suspend.html
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-kbl4/igt@kms_vblank@pipe-c-ts-continuation-suspend.html
#### Possible fixes ####
* igt@gem_ctx_isolation@vcs1-none:
- shard-iclb: [SKIP][65] ([fdo#109276] / [fdo#112080]) -> [PASS][66] +2 similar issues
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb8/igt@gem_ctx_isolation@vcs1-none.html
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb1/igt@gem_ctx_isolation@vcs1-none.html
* igt@gem_ctx_persistence@vecs0-mixed-process:
- shard-apl: [FAIL][67] ([i915#679]) -> [PASS][68]
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-apl4/igt@gem_ctx_persistence@vecs0-mixed-process.html
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-apl6/igt@gem_ctx_persistence@vecs0-mixed-process.html
* igt@gem_ctx_shared@q-smoketest-bsd:
- shard-tglb: [INCOMPLETE][69] ([i915#461] / [i915#472]) -> [PASS][70]
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb6/igt@gem_ctx_shared@q-smoketest-bsd.html
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb5/igt@gem_ctx_shared@q-smoketest-bsd.html
* igt@gem_exec_create@basic:
- shard-tglb: [INCOMPLETE][71] ([fdo#111736] / [i915#472]) -> [PASS][72]
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb3/igt@gem_exec_create@basic.html
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb4/igt@gem_exec_create@basic.html
* igt@gem_exec_parallel@vcs1-fds:
- shard-iclb: [SKIP][73] ([fdo#112080]) -> [PASS][74] +9 similar issues
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb6/igt@gem_exec_parallel@vcs1-fds.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb2/igt@gem_exec_parallel@vcs1-fds.html
* igt@gem_exec_schedule@pi-common-bsd:
- shard-iclb: [SKIP][75] ([i915#677]) -> [PASS][76]
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb1/igt@gem_exec_schedule@pi-common-bsd.html
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb3/igt@gem_exec_schedule@pi-common-bsd.html
* igt@gem_exec_schedule@preempt-bsd:
- shard-iclb: [SKIP][77] ([fdo#112146]) -> [PASS][78] +5 similar issues
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb4/igt@gem_exec_schedule@preempt-bsd.html
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb6/igt@gem_exec_schedule@preempt-bsd.html
* igt@gem_exec_schedule@preempt-queue-bsd1:
- shard-iclb: [SKIP][79] ([fdo#109276]) -> [PASS][80] +20 similar issues
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb6/igt@gem_exec_schedule@preempt-queue-bsd1.html
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb1/igt@gem_exec_schedule@preempt-queue-bsd1.html
* igt@gem_exec_schedule@smoketest-bsd1:
- shard-tglb: [INCOMPLETE][81] ([i915#463] / [i915#472]) -> [PASS][82] +1 similar issue
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb4/igt@gem_exec_schedule@smoketest-bsd1.html
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb2/igt@gem_exec_schedule@smoketest-bsd1.html
* igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing:
- shard-kbl: [TIMEOUT][83] ([fdo#112271] / [i915#530]) -> [PASS][84]
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-kbl2/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-kbl7/igt@gem_persistent_relocs@forked-interruptible-faulting-reloc-thrashing.html
* igt@gem_persistent_relocs@forked-interruptible-thrashing:
- shard-apl: [INCOMPLETE][85] ([CI#80] / [fdo#103927] / [i915#530]) -> [PASS][86]
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-apl8/igt@gem_persistent_relocs@forked-interruptible-thrashing.html
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-apl8/igt@gem_persistent_relocs@forked-interruptible-thrashing.html
* igt@gem_persistent_relocs@forked-thrashing:
- shard-hsw: [INCOMPLETE][87] ([i915#530] / [i915#61]) -> [PASS][88]
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-hsw2/igt@gem_persistent_relocs@forked-thrashing.html
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-hsw6/igt@gem_persistent_relocs@forked-thrashing.html
* igt@gem_softpin@noreloc-s3:
- shard-hsw: [DMESG-WARN][89] -> [PASS][90]
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-hsw6/igt@gem_softpin@noreloc-s3.html
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-hsw7/igt@gem_softpin@noreloc-s3.html
* igt@gem_sync@basic-each:
- shard-tglb: [INCOMPLETE][91] ([i915#472] / [i915#707]) -> [PASS][92]
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb3/igt@gem_sync@basic-each.html
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb4/igt@gem_sync@basic-each.html
* igt@gem_sync@basic-store-all:
- shard-tglb: [INCOMPLETE][93] ([i915#472]) -> [PASS][94]
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb1/igt@gem_sync@basic-store-all.html
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb2/igt@gem_sync@basic-store-all.html
* igt@gem_tiled_partial_pwrite_pread@reads:
- shard-hsw: [FAIL][95] -> [PASS][96]
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-hsw1/igt@gem_tiled_partial_pwrite_pread@reads.html
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-hsw1/igt@gem_tiled_partial_pwrite_pread@reads.html
* igt@gem_userptr_blits@dmabuf-sync:
- shard-snb: [DMESG-WARN][97] ([fdo#111870] / [i915#478]) -> [PASS][98]
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-snb1/igt@gem_userptr_blits@dmabuf-sync.html
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-snb2/igt@gem_userptr_blits@dmabuf-sync.html
* igt@gen9_exec_parse@allowed-all:
- shard-glk: [DMESG-WARN][99] ([i915#716]) -> [PASS][100]
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-glk9/igt@gen9_exec_parse@allowed-all.html
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-glk3/igt@gen9_exec_parse@allowed-all.html
* igt@i915_selftest@live_gt_timelines:
- shard-tglb: [INCOMPLETE][101] ([i915#455] / [i915#472]) -> [PASS][102]
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb8/igt@i915_selftest@live_gt_timelines.html
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb7/igt@i915_selftest@live_gt_timelines.html
* igt@i915_selftest@mock_requests:
- shard-apl: [INCOMPLETE][103] ([fdo#103927]) -> [PASS][104]
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-apl6/igt@i915_selftest@mock_requests.html
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-apl4/igt@i915_selftest@mock_requests.html
* igt@i915_suspend@fence-restore-tiled2untiled:
- shard-apl: [DMESG-WARN][105] ([i915#180]) -> [PASS][106]
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-apl3/igt@i915_suspend@fence-restore-tiled2untiled.html
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-apl4/igt@i915_suspend@fence-restore-tiled2untiled.html
* igt@kms_cursor_crc@pipe-a-cursor-128x128-random:
- shard-kbl: [INCOMPLETE][107] ([CI#80] / [fdo#103665]) -> [PASS][108]
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-kbl2/igt@kms_cursor_crc@pipe-a-cursor-128x128-random.html
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-kbl1/igt@kms_cursor_crc@pipe-a-cursor-128x128-random.html
- shard-snb: [INCOMPLETE][109] ([CI#80] / [i915#82]) -> [PASS][110]
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-snb6/igt@kms_cursor_crc@pipe-a-cursor-128x128-random.html
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-snb4/igt@kms_cursor_crc@pipe-a-cursor-128x128-random.html
* igt@kms_cursor_crc@pipe-c-cursor-suspend:
- shard-kbl: [DMESG-WARN][111] ([i915#180]) -> [PASS][112] +5 similar issues
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-kbl7/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-kbl7/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt:
- shard-tglb: [FAIL][113] ([i915#49]) -> [PASS][114]
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt.html
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt.html
* igt@kms_psr@psr2_sprite_render:
- shard-iclb: [SKIP][115] ([fdo#109441]) -> [PASS][116] +3 similar issues
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb6/igt@kms_psr@psr2_sprite_render.html
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb2/igt@kms_psr@psr2_sprite_render.html
* igt@kms_setmode@basic:
- shard-apl: [FAIL][117] ([i915#31]) -> [PASS][118]
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-apl2/igt@kms_setmode@basic.html
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-apl7/igt@kms_setmode@basic.html
* igt@perf_pmu@cpu-hotplug:
- shard-hsw: [INCOMPLETE][119] ([i915#61]) -> [PASS][120]
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-hsw1/igt@perf_pmu@cpu-hotplug.html
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-hsw5/igt@perf_pmu@cpu-hotplug.html
#### Warnings ####
* igt@gem_ctx_isolation@vcs1-nonpriv:
- shard-iclb: [SKIP][121] ([fdo#109276] / [fdo#112080]) -> [FAIL][122] ([IGT#28])
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-iclb6/igt@gem_ctx_isolation@vcs1-nonpriv.html
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-iclb2/igt@gem_ctx_isolation@vcs1-nonpriv.html
* igt@gem_eio@kms:
- shard-snb: [DMESG-WARN][123] ([i915#444]) -> [INCOMPLETE][124] ([i915#82])
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-snb5/igt@gem_eio@kms.html
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-snb2/igt@gem_eio@kms.html
* igt@gem_tiled_blits@normal:
- shard-hsw: [FAIL][125] ([i915#818]) -> [FAIL][126] ([i915#694])
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-hsw7/igt@gem_tiled_blits@normal.html
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-hsw5/igt@gem_tiled_blits@normal.html
* igt@gem_userptr_blits@sync-unmap-after-close:
- shard-snb: [DMESG-WARN][127] ([fdo#110789] / [fdo#111870] / [i915#478]) -> [DMESG-WARN][128] ([fdo#111870] / [i915#478])
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-snb2/igt@gem_userptr_blits@sync-unmap-after-close.html
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-snb1/igt@gem_userptr_blits@sync-unmap-after-close.html
* igt@i915_pm_dc@dc6-dpms:
- shard-snb: [SKIP][129] ([fdo#109271]) -> [INCOMPLETE][130] ([i915#82])
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-snb6/igt@i915_pm_dc@dc6-dpms.html
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-snb6/igt@i915_pm_dc@dc6-dpms.html
* igt@i915_pm_dc@dc6-psr:
- shard-tglb: [FAIL][131] ([i915#454]) -> [SKIP][132] ([i915#468])
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-tglb4/igt@i915_pm_dc@dc6-psr.html
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-tglb3/igt@i915_pm_dc@dc6-psr.html
* igt@kms_cursor_crc@pipe-b-cursor-suspend:
- shard-kbl: [DMESG-WARN][133] ([i915#180]) -> [INCOMPLETE][134] ([fdo#103665])
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-kbl4/igt@kms_cursor_crc@pipe-b-cursor-suspend.html
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-kbl6/igt@kms_cursor_crc@pipe-b-cursor-suspend.html
* igt@runner@aborted:
- shard-apl: ([FAIL][135], [FAIL][136]) ([i915#873] / [i915#997]) -> ([FAIL][137], [FAIL][138]) ([i915#997])
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-apl6/igt@runner@aborted.html
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-apl8/igt@runner@aborted.html
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-apl3/igt@runner@aborted.html
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-apl2/igt@runner@aborted.html
- shard-glk: ([FAIL][139], [FAIL][140]) ([i915#997] / [k.org#202321]) -> ([FAIL][141], [FAIL][142], [FAIL][143]) ([i915#873] / [i915#997] / [k.org#202321])
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-glk9/igt@runner@aborted.html
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5373/shard-glk9/igt@runner@aborted.html
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-glk5/igt@runner@aborted.html
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-glk6/igt@runner@aborted.html
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/shard-glk8/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).
[CI#80]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/80
[IGT#28]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/28
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#110789]: https://bugs.freedesktop.org/show_bug.cgi?id=110789
[fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
[fdo#111677]: https://bugs.freedesktop.org/show_bug.cgi?id=111677
[fdo#111735]: https://bugs.freedesktop.org/show_bug.cgi?id=111735
[fdo#111736]: https://bugs.freedesktop.org/show_bug.cgi?id=111736
[fdo#111870]: https://bugs.freedesktop.org/show_bug.cgi?id=111870
[fdo#112080]: https://bugs.freedesktop.org/show_bug.cgi?id=112080
[fdo#112146]: https://bugs.freedesktop.org/show_bug.cgi?id=112146
[fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271
[i915#140]: https://gitlab.freedesktop.org/drm/intel/issues/140
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#31]: https://gitlab.freedesktop.org/drm/intel/issues/31
[i915#426]: https://gitlab.freedesktop.org/drm/intel/issues/426
[i915#44]: https://gitlab.freedesktop.org/drm/intel/issues/44
[i915#444]: https://gitlab.freedesktop.org/drm/intel/issues/444
[i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
[i915#455]: https://gitlab.freedesktop.org/drm/intel/issues/455
[i915#460]: https://gitlab.freedesktop.org/drm/intel/issues/460
[i915#461]: https://gitlab.freedesktop.org/drm/intel/issues/461
[i915#463]: https://gitlab.freedesktop.org/drm/intel/issues/463
[i915#468]: https://gitlab.freedesktop.org/drm/intel/issues/468
[i915#472]: https://gitlab.freedesktop.org/drm/intel/issues/472
[i915#478]: https://gitlab.freedesktop.org/drm/intel/issues/478
[i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
[i915#530]: https://gitlab.freedesktop.org/drm/intel/issues/530
[i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
[i915#58]: https://gitlab.freedesktop.org/drm/intel/issues/58
[i915#61]: https://gitlab.freedesktop.org/drm/intel/issues/61
[i915#677]: https://gitlab.freedesktop.org/drm/intel/issues/677
[i915#679]: https://gitlab.freedesktop.org/drm/intel/issues/679
[i915#694]: https://gitlab.freedesktop.org/drm/intel/issues/694
[i915#707]: https://gitlab.freedesktop.org/drm/intel/issues/707
[i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
[i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
[i915#818]: https://gitlab.freedesktop.org/drm/intel/issues/818
[i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82
[i915#873]: https://gitlab.freedesktop.org/drm/intel/issues/873
[i915#973]: https://gitlab.freedesktop.org/drm/intel/issues/973
[i915#977]: https://gitlab.freedesktop.org/drm/intel/issues/977
[i915#997]: https://gitlab.freedesktop.org/drm/intel/issues/997
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133
[k.org#202321]: https://bugzilla.kernel.org/show_bug.cgi?id=202321
Participating hosts (8 -> 8)
------------------------------
No changes in participating hosts
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_5373 -> IGTPW_3950
CI-20190529: 20190529
CI_DRM_7778: 8442e59b2b3aa0f081ee31fc13dcd0f31e5981e5 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3950: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3950/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium.
2020-01-20 4:20 [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium Kunal Joshi
` (4 preceding siblings ...)
2020-01-21 6:33 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
@ 2020-03-10 19:43 ` Manasi Navare
5 siblings, 0 replies; 8+ messages in thread
From: Manasi Navare @ 2020-03-10 19:43 UTC (permalink / raw)
To: Kunal Joshi; +Cc: igt-dev, martin.peres
So one qq, on the Chamelium board we do expect the first subtest of basic test pattern
will be skipped right?
In general, Series
Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>
Could you Ankit or Karthik also add a tested by tag?
Manasi
On Mon, Jan 20, 2020 at 09:50:24AM +0530, Kunal Joshi wrote:
> 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 | 152 +++++++++++++++++++++++++++++++++++++++++++
> lib/igt_chamelium.h | 33 ++++++++++
> lib/igt_edid.c | 27 ++++++++
> lib/igt_edid.h | 20 ++++++
> lib/igt_kms.c | 102 +++++++++++++++++++++++++++++
> lib/igt_kms.h | 2 +
> tests/kms_chamelium.c | 81 +----------------------
> tests/kms_dp_tiled_display.c | 111 ++++++++++++++++++++++++-------
> 8 files changed, 424 insertions(+), 104 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] 8+ messages in thread
* Re: [igt-dev] [PATCH i-g-t v2 1/3] Make basic chamelium function accessible to other tests.
2020-01-20 4:20 ` [igt-dev] [PATCH i-g-t v2 1/3] Make basic chamelium function accessible to other tests Kunal Joshi
@ 2020-03-11 8:23 ` Petri Latvala
0 siblings, 0 replies; 8+ messages in thread
From: Petri Latvala @ 2020-03-11 8:23 UTC (permalink / raw)
To: Kunal Joshi, Arkadiusz Hiler; +Cc: igt-dev, martin.peres
On Mon, Jan 20, 2020 at 09:50:25AM +0530, Kunal Joshi wrote:
> 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.
>
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
> ---
> lib/igt_chamelium.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++
> lib/igt_chamelium.h | 28 +++++++++++++++++
> tests/kms_chamelium.c | 81 +-----------------------------------------------
> 3 files changed, 114 insertions(+), 80 deletions(-)
>
> diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
> index 9971f51..8b910bf 100644
> --- a/lib/igt_chamelium.c
> +++ b/lib/igt_chamelium.c
> @@ -132,6 +132,91 @@ static struct chamelium *cleanup_instance;
> static void chamelium_do_calculate_fb_crc(cairo_surface_t *fb_surface,
> igt_crc_t *out);
>
> +void
> +require_displayport_connector_present(struct data_chamelium_t *data,
> + unsigned int type)
> +{
> + int i, count = 0;
> + bool found = false;
> +
> + for (i = 0; i < data->port_count && !found; i++) {
> + if (chamelium_port_get_type(data->ports[i]) == type)
> + count++;
> + if (count == 2)
> + found = true;
> + }
> + igt_require_f(found,
> + "Need atleast 2 ports of type %s connected, found %d\n",
> + kmstest_connector_type_str(type), count);
> +}
For a helper, this could use some generalizing. It's called "require
displayport connector" but requires exactly 2 connectors of a given
type, not displayport. The name also needs to be prefixed with
chamelium_. chamelium_require_connectors(chamelium, type, count)?
Comment below for data_chamelium_t usage.
> +
> +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;
> +}
As a library function, this functions looks redundant. Just keep
copies of that function in the tests IMHO.
> +
> +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 */
> +}
Isn't this just kmstest_connector_status_str()?
> +
> +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));
> +}
> +
> +void
> +reset_state(struct data_chamelium_t *data, struct chamelium_port *port)
> +{
> + int p;
> +
> + 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);
> + }
> + }
> +}
> +
I'm fairly certain we already have helpers for doing these operations,
or if we don't, we don't need them in lib.
> /**
> * chamelium_get_ports:
> * @chamelium: The Chamelium instance to use
> diff --git a/lib/igt_chamelium.h b/lib/igt_chamelium.h
> index 08705a9..71080f4 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 5
> +#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];
> +};
> +
This struct is entirely tests/kms_chamelium.c specific. Make the new
lib helpers take a struct chamelium* instead. Why kms_chamelium even
has this intermediary storage for all this data is beyond my expertise
but I'm not seeing it.
From a quick look, the only thing the new lib functions would need is
access to the chamelium ports, and they can be retrieved with
chamelium_get_ports().
CC'ing Arek for comments with his chamelium lib expertise.
--
Petri Latvala
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-03-11 8:23 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-01-20 4:20 [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium Kunal Joshi
2020-01-20 4:20 ` [igt-dev] [PATCH i-g-t v2 1/3] Make basic chamelium function accessible to other tests Kunal Joshi
2020-03-11 8:23 ` Petri Latvala
2020-01-20 4:20 ` [igt-dev] [PATCH i-g-t v2 2/3] Added structures and functions to generate tiled edids Kunal Joshi
2020-01-20 4:20 ` [igt-dev] [PATCH i-g-t v2 3/3] Added a subtest where chamelium acts as a tiled panel Kunal Joshi
2020-01-20 22:34 ` [igt-dev] ✓ Fi.CI.BAT: success for Test tiled display with aid of chamelium. (rev2) Patchwork
2020-01-21 6:33 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2020-03-10 19:43 ` [igt-dev] [PATCH i-g-t v2 0/3] Test tiled display with aid of chamelium Manasi Navare
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox