* [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 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.