All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling
@ 2024-03-22 16:32 Ville Syrjala
  2024-03-22 16:32 ` [PATCH i-g-t 1/5] tools/intel_vbt_decode: Extract dump_panel() Ville Syrjala
                   ` (9 more replies)
  0 siblings, 10 replies; 20+ messages in thread
From: Ville Syrjala @ 2024-03-22 16:32 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Implement real support for panel_type2, and for handling
panel_type==255.

Ville Syrjälä (5):
  tools/intel_vbt_decode: Extract dump_panel()
  tools/intel_vbt_decode: Extract panel_str()
  tools/intel_vbt_decode: Change panel indicator from * to (1)
  tools/intel_vbt_decode: Also dump the second panel (panel_type2)
  tools/intel_vbt_decode: Optionally determine panel type from EDID

 tools/intel_vbt_decode.c | 184 +++++++++++++++++++++++++++++++++------
 1 file changed, 157 insertions(+), 27 deletions(-)

-- 
2.43.2


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

* [PATCH i-g-t 1/5] tools/intel_vbt_decode: Extract dump_panel()
  2024-03-22 16:32 [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling Ville Syrjala
@ 2024-03-22 16:32 ` Ville Syrjala
  2024-03-25 14:56   ` Jani Nikula
  2024-03-22 16:32 ` [PATCH i-g-t 2/5] tools/intel_vbt_decode: Extract panel_str() Ville Syrjala
                   ` (8 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Ville Syrjala @ 2024-03-22 16:32 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Pull the repeated "dump this panel?" expression
into a small helper.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 tools/intel_vbt_decode.c | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index fd8118772845..9a65a67b42bf 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -84,6 +84,12 @@ struct context {
 	bool hexdump;
 };
 
+static bool dump_panel(const struct context *context, int panel_type)
+{
+	return panel_type == context->panel_type ||
+		context->dump_all_panel_types;
+}
+
 /* Get BDB block size given a pointer to Block ID. */
 static uint32_t _get_blocksize(const uint8_t *block_base)
 {
@@ -607,7 +613,7 @@ static void dump_backlight_info(struct context *context,
 	}
 
 	for (i = 0; i < ARRAY_SIZE(backlight->data); i++) {
-		if (i != context->panel_type && !context->dump_all_panel_types)
+		if (!dump_panel(context, i))
 			continue;
 
 		printf("\tPanel %d%s\n", i,
@@ -1222,7 +1228,7 @@ static void dump_lvds_options(struct context *context,
 	for (int i = 0; i < 16; i++) {
 		unsigned int val;
 
-		if (i != context->panel_type && !context->dump_all_panel_types)
+		if (!dump_panel(context, i))
 			continue;
 
 		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
@@ -1289,7 +1295,7 @@ static void dump_lvds_ptr_data(struct context *context,
 	printf("\tNumber of entries: %d\n", ptrs->lvds_entries);
 
 	for (int i = 0; i < 16; i++) {
-		if (i != context->panel_type && !context->dump_all_panel_types)
+		if (!dump_panel(context, i))
 			continue;
 
 		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
@@ -1361,7 +1367,7 @@ static void dump_lvds_data(struct context *context,
 			block_data(block) + ptrs->panel_name.offset;
 		char mfg[4];
 
-		if (i != context->panel_type && !context->dump_all_panel_types)
+		if (!dump_panel(context, i))
 			continue;
 
 		hdisplay = _H_ACTIVE(timing_data);
@@ -1571,7 +1577,7 @@ static void dump_edp(struct context *context,
 	int i;
 
 	for (i = 0; i < 16; i++) {
-		if (i != context->panel_type && !context->dump_all_panel_types)
+		if (!dump_panel(context, i))
 			continue;
 
 		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
@@ -1714,7 +1720,7 @@ static void dump_psr(struct context *context,
 	for (i = 0; i < 16; i++) {
 		const struct psr_table *psr = &psr_block->psr_table[i];
 
-		if (i != context->panel_type && !context->dump_all_panel_types)
+		if (!dump_panel(context, i))
 			continue;
 
 		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
@@ -1791,7 +1797,7 @@ static void dump_lfp_power(struct context *context,
 		return;
 
 	for (i = 0; i < 16; i++) {
-		if (i != context->panel_type && !context->dump_all_panel_types)
+		if (!dump_panel(context, i))
 			continue;
 
 		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
@@ -1923,7 +1929,7 @@ static void dump_mipi_config(struct context *context,
 		const struct edp_pwm_delays *pwm_delays =
 			&start->pwm_delays[context->panel_type];
 
-		if (i != context->panel_type && !context->dump_all_panel_types)
+		if (!dump_panel(context, i))
 			continue;
 
 		printf("\tPanel %d%s\n", i,
@@ -2372,7 +2378,7 @@ static void dump_mipi_sequence(struct context *context,
 		uint32_t seq_size;
 		int index = 0;
 
-		if (i != context->panel_type && !context->dump_all_panel_types)
+		if (!dump_panel(context, i))
 			continue;
 
 		data = find_panel_sequence_block(sequence, i,
@@ -2467,7 +2473,7 @@ static void dump_compression_parameters(struct context *context,
 		/* FIXME: need to handle sizeof(*data) != dsc->entry_size */
 		data = &dsc->data[i];
 
-		if (i != context->panel_type && !context->dump_all_panel_types)
+		if (!dump_panel(context, i))
 			continue;
 
 		printf("\tDSC block %d%s\n", i,
-- 
2.43.2


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

* [PATCH i-g-t 2/5] tools/intel_vbt_decode: Extract panel_str()
  2024-03-22 16:32 [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling Ville Syrjala
  2024-03-22 16:32 ` [PATCH i-g-t 1/5] tools/intel_vbt_decode: Extract dump_panel() Ville Syrjala
@ 2024-03-22 16:32 ` Ville Syrjala
  2024-03-25 14:56   ` Jani Nikula
  2024-03-22 16:32 ` [PATCH i-g-t 3/5] tools/intel_vbt_decode: Change panel indicator from * to (1) Ville Syrjala
                   ` (7 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Ville Syrjala @ 2024-03-22 16:32 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Extract the code to generate the palen==panel_type indicator
string to a small helper.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 tools/intel_vbt_decode.c | 29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 9a65a67b42bf..2473812cca6d 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -90,6 +90,11 @@ static bool dump_panel(const struct context *context, int panel_type)
 		context->dump_all_panel_types;
 }
 
+static const char *panel_str(const struct context *context, int panel_type)
+{
+	return panel_type == context->panel_type ? " *" : "";
+}
+
 /* Get BDB block size given a pointer to Block ID. */
 static uint32_t _get_blocksize(const uint8_t *block_base)
 {
@@ -616,8 +621,7 @@ static void dump_backlight_info(struct context *context,
 		if (!dump_panel(context, i))
 			continue;
 
-		printf("\tPanel %d%s\n", i,
-		       context->panel_type == i ? " *" : "");
+		printf("\tPanel %d%s\n", i, panel_str(context, i));
 
 		blc = &backlight->data[i];
 
@@ -1231,7 +1235,7 @@ static void dump_lvds_options(struct context *context,
 		if (!dump_panel(context, i))
 			continue;
 
-		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
+		printf("\tPanel %d%s\n", i, panel_str(context, i));
 
 		val = panel_bits(options->lvds_panel_channel_bits, i, 2);
 		printf("\t\tChannel type: %s (0x%x)\n",
@@ -1298,7 +1302,7 @@ static void dump_lvds_ptr_data(struct context *context,
 		if (!dump_panel(context, i))
 			continue;
 
-		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
+		printf("\tPanel %d%s\n", i, panel_str(context, i));
 
 		if (ptrs->lvds_entries >= 1) {
 			printf("\t\tFP timing offset: %d\n",
@@ -1381,7 +1385,7 @@ static void dump_lvds_data(struct context *context,
 		vtotal = vdisplay + _V_BLANK(timing_data);
 		clock = _PIXEL_CLOCK(timing_data) / 1000;
 
-		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
+		printf("\tPanel %d%s\n", i, panel_str(context, i));
 		printf("\t\t%dx%d clock %d\n",
 		       fp_timing->x_res, fp_timing->y_res,
 		       _PIXEL_CLOCK(timing_data));
@@ -1580,7 +1584,7 @@ static void dump_edp(struct context *context,
 		if (!dump_panel(context, i))
 			continue;
 
-		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
+		printf("\tPanel %d%s\n", i, panel_str(context, i));
 
 		printf("\t\tPower Sequence: T3 %d T7 %d T9 %d T10 %d T12 %d\n",
 		       edp->power_seqs[i].t3,
@@ -1723,7 +1727,7 @@ static void dump_psr(struct context *context,
 		if (!dump_panel(context, i))
 			continue;
 
-		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
+		printf("\tPanel %d%s\n", i, panel_str(context, i));
 
 		printf("\t\tFull link: %s\n", YESNO(psr->full_link));
 		printf("\t\tRequire AUX to wakeup: %s\n", YESNO(psr->require_aux_to_wakeup));
@@ -1800,7 +1804,7 @@ static void dump_lfp_power(struct context *context,
 		if (!dump_panel(context, i))
 			continue;
 
-		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
+		printf("\tPanel %d%s\n", i, panel_str(context, i));
 
 		printf("\t\tDisplay Power Saving Technology (DPST): %s\n",
 		       YESNO(panel_bool(lfp_block->dpst, i)));
@@ -1932,8 +1936,7 @@ static void dump_mipi_config(struct context *context,
 		if (!dump_panel(context, i))
 			continue;
 
-		printf("\tPanel %d%s\n", i,
-		       context->panel_type == i ? " *" : "");
+		printf("\tPanel %d%s\n", i, panel_str(context, i));
 
 		printf("\t\tGeneral Param\n");
 		printf("\t\t\t BTA disable: %s\n", config->bta ? "Disabled" : "Enabled");
@@ -2386,8 +2389,7 @@ static void dump_mipi_sequence(struct context *context,
 		if (!data)
 			return;
 
-		printf("\tPanel %d%s\n", i,
-		       context->panel_type == i ? " *" : "");
+		printf("\tPanel %d%s\n", i, panel_str(context, i));
 
 		/* Parse the sequences. Corresponds to VBT parsing in the kernel. */
 		for (;;) {
@@ -2476,8 +2478,7 @@ static void dump_compression_parameters(struct context *context,
 		if (!dump_panel(context, i))
 			continue;
 
-		printf("\tDSC block %d%s\n", i,
-		       i == context->panel_type ? " *" : "");
+		printf("\tDSC block %d%s\n", i, panel_str(context, i));
 		printf("\t\tDSC version: %u.%u\n", data->version_major,
 		       data->version_minor);
 		printf("\t\tActual buffer size: %d\n",
-- 
2.43.2


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

* [PATCH i-g-t 3/5] tools/intel_vbt_decode: Change panel indicator from * to (1)
  2024-03-22 16:32 [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling Ville Syrjala
  2024-03-22 16:32 ` [PATCH i-g-t 1/5] tools/intel_vbt_decode: Extract dump_panel() Ville Syrjala
  2024-03-22 16:32 ` [PATCH i-g-t 2/5] tools/intel_vbt_decode: Extract panel_str() Ville Syrjala
@ 2024-03-22 16:32 ` Ville Syrjala
  2024-03-25 14:57   ` Jani Nikula
  2024-03-22 16:32 ` [PATCH i-g-t 4/5] tools/intel_vbt_decode: Also dump the second panel (panel_type2) Ville Syrjala
                   ` (6 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Ville Syrjala @ 2024-03-22 16:32 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

In preparation for also indicating the second panel (panel_type2)
change the indicator for the first panel (panel_type) to "(1)"
from "*".

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 tools/intel_vbt_decode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 2473812cca6d..98f64d0822c6 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -92,7 +92,7 @@ static bool dump_panel(const struct context *context, int panel_type)
 
 static const char *panel_str(const struct context *context, int panel_type)
 {
-	return panel_type == context->panel_type ? " *" : "";
+	return panel_type == context->panel_type ? " (1)" : "";
 }
 
 /* Get BDB block size given a pointer to Block ID. */
-- 
2.43.2


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

* [PATCH i-g-t 4/5] tools/intel_vbt_decode: Also dump the second panel (panel_type2)
  2024-03-22 16:32 [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling Ville Syrjala
                   ` (2 preceding siblings ...)
  2024-03-22 16:32 ` [PATCH i-g-t 3/5] tools/intel_vbt_decode: Change panel indicator from * to (1) Ville Syrjala
@ 2024-03-22 16:32 ` Ville Syrjala
  2024-03-25 15:04   ` Jani Nikula
  2024-03-25 16:33   ` [PATCH i-g-t v2 " Ville Syrjala
  2024-03-22 16:32 ` [PATCH i-g-t 5/5] tools/intel_vbt_decode: Optionally determine panel type from EDID Ville Syrjala
                   ` (5 subsequent siblings)
  9 siblings, 2 replies; 20+ messages in thread
From: Ville Syrjala @ 2024-03-22 16:32 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Modern VBTs can declare two panel types in order to support
dual panel systems. Dump the panel information for the second
panel as well. Since panel_type2 could also be declared as 255
(== match pnpid to EDID) we also add a new command line knob
to select panel_type2 by hand.

Data for the second panel will be indicated by "(2)", as opposed
to "(1)" for the first panel.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 tools/intel_vbt_decode.c | 38 ++++++++++++++++++++++++++++++++------
 1 file changed, 32 insertions(+), 6 deletions(-)

diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 98f64d0822c6..f223ce2bf5a1 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -79,7 +79,7 @@ struct context {
 	int size;
 
 	uint32_t devid;
-	int panel_type;
+	int panel_type, panel_type2;
 	bool dump_all_panel_types;
 	bool hexdump;
 };
@@ -87,12 +87,16 @@ struct context {
 static bool dump_panel(const struct context *context, int panel_type)
 {
 	return panel_type == context->panel_type ||
+		panel_type == context->panel_type2 ||
 		context->dump_all_panel_types;
 }
 
 static const char *panel_str(const struct context *context, int panel_type)
 {
-	return panel_type == context->panel_type ? " (1)" : "";
+	return panel_type == context->panel_type &&
+		panel_type == context->panel_type2 ? " (1)(2)" :
+		panel_type == context->panel_type ? " (1)" :
+		panel_type == context->panel_type2 ? " (2)" : "";
 }
 
 /* Get BDB block size given a pointer to Block ID. */
@@ -2503,18 +2507,21 @@ static void dump_compression_parameters(struct context *context,
 }
 
 /* get panel type from lvds options block, or -1 if block not found */
-static int get_panel_type(struct context *context)
+static int get_panel_type(struct context *context, bool is_panel_type2)
 {
 	struct bdb_block *block;
 	const struct bdb_lvds_options *options;
-	int panel_type;
+	int panel_type = -1;
 
 	block = find_section(context, BDB_LVDS_OPTIONS);
 	if (!block)
 		return -1;
 
 	options = block_data(block);
-	panel_type = options->panel_type;
+	if (!is_panel_type2)
+		panel_type = options->panel_type;
+	else if (context->bdb->version >= 212)
+		panel_type = options->panel_type2;
 
 	free(block);
 
@@ -2776,6 +2783,7 @@ enum opt {
 	OPT_FILE,
 	OPT_DEVID,
 	OPT_PANEL_TYPE,
+	OPT_PANEL_TYPE2,
 	OPT_ALL_PANELS,
 	OPT_HEXDUMP,
 	OPT_BLOCK,
@@ -2812,6 +2820,7 @@ int main(int argc, char **argv)
 	int size;
 	struct context context = {
 		.panel_type = -1,
+		.panel_type2 = -1,
 	};
 	char *endp;
 	int block_number = -1;
@@ -2821,6 +2830,7 @@ int main(int argc, char **argv)
 		{ "file",	required_argument,	NULL,	OPT_FILE },
 		{ "devid",	required_argument,	NULL,	OPT_DEVID },
 		{ "panel-type",	required_argument,	NULL,	OPT_PANEL_TYPE },
+		{ "panel-type2",	required_argument,	NULL,	OPT_PANEL_TYPE2 },
 		{ "all-panels",	no_argument,		NULL,	OPT_ALL_PANELS },
 		{ "hexdump",	no_argument,		NULL,	OPT_HEXDUMP },
 		{ "block",	required_argument,	NULL,	OPT_BLOCK },
@@ -2852,6 +2862,14 @@ int main(int argc, char **argv)
 				return EXIT_FAILURE;
 			}
 			break;
+		case OPT_PANEL_TYPE2:
+			context.panel_type2 = strtoul(optarg, &endp, 0);
+			if (*endp || context.panel_type2 > 15) {
+				fprintf(stderr, "invalid panel type2 '%s'\n",
+					optarg);
+				return EXIT_FAILURE;
+			}
+			break;
 		case OPT_ALL_PANELS:
 			context.dump_all_panel_types = true;
 			break;
@@ -2969,12 +2987,20 @@ int main(int argc, char **argv)
 		fprintf(stderr, "Warning: could not find PCI device ID!\n");
 
 	if (context.panel_type == -1)
-		context.panel_type = get_panel_type(&context);
+		context.panel_type = get_panel_type(&context, false);
 	if (context.panel_type == -1) {
 		fprintf(stderr, "Warning: panel type not set, using 0\n");
 		context.panel_type = 0;
 	}
 
+	if (context.panel_type2 == -1)
+		context.panel_type2 = get_panel_type(&context, true);
+	if (context.panel_type2 != -1 && context.bdb->version < 212) {
+		fprintf(stderr, "Warning: panel type2 not valid for BDB version %d\n",
+			context.bdb->version);
+		context.panel_type2 = -1;
+	}
+
 	if (describe) {
 		print_description(&context);
 	} else if (header_only) {
-- 
2.43.2


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

* [PATCH i-g-t 5/5] tools/intel_vbt_decode: Optionally determine panel type from EDID
  2024-03-22 16:32 [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling Ville Syrjala
                   ` (3 preceding siblings ...)
  2024-03-22 16:32 ` [PATCH i-g-t 4/5] tools/intel_vbt_decode: Also dump the second panel (panel_type2) Ville Syrjala
@ 2024-03-22 16:32 ` Ville Syrjala
  2024-03-25 15:08   ` Jani Nikula
  2024-03-25 16:36   ` [PATCH i-g-t v2 " Ville Syrjala
  2024-03-22 18:51 ` ✓ CI.xeBAT: success for tools/intel_vbt_decode: Improve panel type handling Patchwork
                   ` (4 subsequent siblings)
  9 siblings, 2 replies; 20+ messages in thread
From: Ville Syrjala @ 2024-03-22 16:32 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

VBT may declare panel type as 255, which means we should match the
EDID PnP ID against the panel entries in the VBT to determine the
correct panel type. Implemnt support for this by allowing the user
to optionally provide the EDID via a command like parameter.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 tools/intel_vbt_decode.c | 96 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 96 insertions(+)

diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index f223ce2bf5a1..9aeb8ea04d06 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -84,6 +84,12 @@ struct context {
 	bool hexdump;
 };
 
+struct edid {
+	uint8_t header[8];
+	struct lvds_pnp_id pnpid;
+	/* ... */
+} __packed;
+
 static bool dump_panel(const struct context *context, int panel_type)
 {
 	return panel_type == context->panel_type ||
@@ -2506,6 +2512,70 @@ static void dump_compression_parameters(struct context *context,
 	}
 }
 
+static int get_panel_type_pnpid(const struct context *context,
+				const char *edid_file)
+{
+	struct bdb_block *ptrs_block, *data_block;
+	const struct bdb_lvds_lfp_data *data;
+	const struct bdb_lvds_lfp_data_ptrs *ptrs;
+	struct lvds_pnp_id edid_id, edid_id_nodate;
+	const struct edid *edid;
+	int fd, best = -1;
+
+	fd =  open(edid_file, O_RDONLY);
+	if (fd < 0) {
+		fprintf(stderr, "Unable to open EDID file %s\n", edid_file);
+		return -1;
+	}
+
+	edid = mmap(0, sizeof(*edid), PROT_READ, MAP_SHARED, fd, 0);
+	close(fd);
+	if (edid == MAP_FAILED) {
+		fprintf(stderr, "Unable to read EDID file %s\n", edid_file);
+		return -1;
+	}
+	edid_id = edid->pnpid;
+	munmap((void*)edid, sizeof(*edid));
+
+	edid_id_nodate = edid_id;
+	edid_id_nodate.mfg_week = 0;
+	edid_id_nodate.mfg_year = 0;
+
+	ptrs_block = find_section(context, BDB_LVDS_LFP_DATA_PTRS);
+	if (!ptrs_block)
+		return -1;
+
+	data_block = find_section(context, BDB_LVDS_LFP_DATA);
+	if (!data_block)
+		return -1;
+
+	ptrs = block_data(ptrs_block);
+	data = block_data(data_block);
+
+	for (int i = 0; i < 16; i++) {
+		const struct lvds_pnp_id *vbt_id =
+			(const void*)data + ptrs->ptr[i].panel_pnp_id.offset;
+
+		/* full match? */
+		if (!memcmp(vbt_id, &edid_id, sizeof(*vbt_id)))
+			return i;
+
+		/*
+		 * Accept a match w/o date if no full match is found,
+		 * and the VBT entry does not specify a date.
+		 */
+		if (best < 0 &&
+		    !memcmp(vbt_id, &edid_id_nodate, sizeof(*vbt_id)))
+			best = i;
+	}
+
+	if (best >= 0) {
+		// ... dump
+	}
+
+	return best;
+}
+
 /* get panel type from lvds options block, or -1 if block not found */
 static int get_panel_type(struct context *context, bool is_panel_type2)
 {
@@ -2784,6 +2854,8 @@ enum opt {
 	OPT_DEVID,
 	OPT_PANEL_TYPE,
 	OPT_PANEL_TYPE2,
+	OPT_PANEL_EDID,
+	OPT_PANEL_EDID2,
 	OPT_ALL_PANELS,
 	OPT_HEXDUMP,
 	OPT_BLOCK,
@@ -2798,6 +2870,9 @@ static void usage(const char *toolname)
 	fprintf(stderr, " --file=<rom_file>"
 			" [--devid=<device_id>]"
 			" [--panel-type=<panel_type>]"
+			" [--panel-type2=<panel_type>]"
+			" [--panel-edid=<edid file>]"
+			" [--panel-edid2=<edid file>]"
 			" [--all-panels]"
 			" [--hexdump]"
 			" [--block=<block_no>]"
@@ -2822,6 +2897,7 @@ int main(int argc, char **argv)
 		.panel_type = -1,
 		.panel_type2 = -1,
 	};
+	const char *panel_edid = NULL, *panel_edid2 = NULL;
 	char *endp;
 	int block_number = -1;
 	bool header_only = false, describe = false;
@@ -2830,7 +2906,9 @@ int main(int argc, char **argv)
 		{ "file",	required_argument,	NULL,	OPT_FILE },
 		{ "devid",	required_argument,	NULL,	OPT_DEVID },
 		{ "panel-type",	required_argument,	NULL,	OPT_PANEL_TYPE },
+		{ "panel-edid",	required_argument,	NULL,	OPT_PANEL_EDID },
 		{ "panel-type2",	required_argument,	NULL,	OPT_PANEL_TYPE2 },
+		{ "panel-edid2",	required_argument,	NULL,	OPT_PANEL_EDID2 },
 		{ "all-panels",	no_argument,		NULL,	OPT_ALL_PANELS },
 		{ "hexdump",	no_argument,		NULL,	OPT_HEXDUMP },
 		{ "block",	required_argument,	NULL,	OPT_BLOCK },
@@ -2870,6 +2948,12 @@ int main(int argc, char **argv)
 				return EXIT_FAILURE;
 			}
 			break;
+		case OPT_PANEL_EDID:
+			panel_edid = optarg;
+			break;
+		case OPT_PANEL_EDID2:
+			panel_edid2 = optarg;
+			break;
 		case OPT_ALL_PANELS:
 			context.dump_all_panel_types = true;
 			break;
@@ -2988,6 +3072,12 @@ int main(int argc, char **argv)
 
 	if (context.panel_type == -1)
 		context.panel_type = get_panel_type(&context, false);
+	if (context.panel_type == 255 && !panel_edid) {
+		fprintf(stderr, "Warning: panel type depends on EDID (use --panel-edid), ignoring\n");
+		context.panel_type = -1;
+	} else if (context.panel_type == 255) {
+		context.panel_type = get_panel_type_pnpid(&context, panel_edid);
+	}
 	if (context.panel_type == -1) {
 		fprintf(stderr, "Warning: panel type not set, using 0\n");
 		context.panel_type = 0;
@@ -2995,6 +3085,12 @@ int main(int argc, char **argv)
 
 	if (context.panel_type2 == -1)
 		context.panel_type2 = get_panel_type(&context, true);
+	if (context.panel_type2 == 255 && !panel_edid2) {
+		fprintf(stderr, "Warning: panel type2 depends on EDID (use --panel-edid2), ignoring\n");
+		context.panel_type2 = -1;
+	} else if (context.panel_type2 == 255) {
+		context.panel_type2 = get_panel_type_pnpid(&context, panel_edid2);
+	}
 	if (context.panel_type2 != -1 && context.bdb->version < 212) {
 		fprintf(stderr, "Warning: panel type2 not valid for BDB version %d\n",
 			context.bdb->version);
-- 
2.43.2


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

* ✓ CI.xeBAT: success for tools/intel_vbt_decode: Improve panel type handling
  2024-03-22 16:32 [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling Ville Syrjala
                   ` (4 preceding siblings ...)
  2024-03-22 16:32 ` [PATCH i-g-t 5/5] tools/intel_vbt_decode: Optionally determine panel type from EDID Ville Syrjala
@ 2024-03-22 18:51 ` Patchwork
  2024-03-22 18:56 ` ✓ Fi.CI.BAT: " Patchwork
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2024-03-22 18:51 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 2012 bytes --]

== Series Details ==

Series: tools/intel_vbt_decode: Improve panel type handling
URL   : https://patchwork.freedesktop.org/series/131502/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_7778_BAT -> XEIGTPW_10887_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible fixes ####

  * igt@kms_frontbuffer_tracking@basic:
    - bat-adlp-7:         [FAIL][1] ([Intel XE#616]) -> [PASS][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7778/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10887/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html

  * igt@xe_evict@evict-cm-threads-small:
    - bat-dg2-oem2:       [TIMEOUT][3] ([Intel XE#1259]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7778/bat-dg2-oem2/igt@xe_evict@evict-cm-threads-small.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10887/bat-dg2-oem2/igt@xe_evict@evict-cm-threads-small.html

  
  [Intel XE#1259]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1259
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616


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

  * IGT: IGT_7778 -> IGTPW_10887
  * Linux: xe-978-b89042d4d087c1e037c1f7904b4c223e48919b88 -> xe-980-4ebd744e5c696e7c40464e1afa0a7ead0c740621

  IGTPW_10887: 10887
  IGT_7778: 0f63f0cf1fefbf7933ca33441c7a89966e85d8c8 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-978-b89042d4d087c1e037c1f7904b4c223e48919b88: b89042d4d087c1e037c1f7904b4c223e48919b88
  xe-980-4ebd744e5c696e7c40464e1afa0a7ead0c740621: 4ebd744e5c696e7c40464e1afa0a7ead0c740621

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10887/index.html

[-- Attachment #2: Type: text/html, Size: 2623 bytes --]

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

* ✓ Fi.CI.BAT: success for tools/intel_vbt_decode: Improve panel type handling
  2024-03-22 16:32 [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling Ville Syrjala
                   ` (5 preceding siblings ...)
  2024-03-22 18:51 ` ✓ CI.xeBAT: success for tools/intel_vbt_decode: Improve panel type handling Patchwork
@ 2024-03-22 18:56 ` Patchwork
  2024-03-23 21:17 ` ✗ Fi.CI.IGT: failure " Patchwork
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2024-03-22 18:56 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 5563 bytes --]

== Series Details ==

Series: tools/intel_vbt_decode: Improve panel type handling
URL   : https://patchwork.freedesktop.org/series/131502/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_14471 -> IGTPW_10887
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (40 -> 35)
------------------------------

  Missing    (5): fi-snb-2520m fi-cfl-8109u bat-dg2-11 bat-jsl-1 bat-mtlp-8 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_lmem_swapping@parallel-random-engines:
    - bat-adlm-1:         NOTRUN -> [SKIP][1] ([i915#4613]) +3 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-adlm-1/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@i915_pm_rps@basic-api:
    - bat-adlm-1:         NOTRUN -> [SKIP][2] ([i915#6621])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-adlm-1/igt@i915_pm_rps@basic-api.html

  * igt@i915_selftest@live@guc_hang:
    - bat-dg2-9:          [PASS][3] -> [ABORT][4] ([i915#10366])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/bat-dg2-9/igt@i915_selftest@live@guc_hang.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-dg2-9/igt@i915_selftest@live@guc_hang.html

  * igt@i915_selftest@live@uncore:
    - bat-dg2-8:          [PASS][5] -> [ABORT][6] ([i915#10366])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/bat-dg2-8/igt@i915_selftest@live@uncore.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-dg2-8/igt@i915_selftest@live@uncore.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-adlm-1:         NOTRUN -> [SKIP][7]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-adlm-1/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-adlm-1:         NOTRUN -> [SKIP][8] ([i915#1849] / [i915#4342])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-adlm-1/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_pipe_crc_basic@hang-read-crc:
    - bat-adlm-1:         NOTRUN -> [SKIP][9] ([i915#9875] / [i915#9900]) +6 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-adlm-1/igt@kms_pipe_crc_basic@hang-read-crc.html

  * igt@kms_pm_backlight@basic-brightness:
    - bat-adlm-1:         NOTRUN -> [SKIP][10] ([i915#5354])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-adlm-1/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr@psr-sprite-plane-onoff:
    - bat-adlm-1:         NOTRUN -> [SKIP][11] ([i915#9673] / [i915#9732]) +3 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-adlm-1/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-adlm-1:         NOTRUN -> [SKIP][12] ([i915#3555])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-adlm-1/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-adlm-1:         NOTRUN -> [SKIP][13] ([i915#3708] / [i915#9900])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-adlm-1/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-write:
    - bat-adlm-1:         NOTRUN -> [SKIP][14] ([i915#3708]) +2 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/bat-adlm-1/igt@prime_vgem@basic-write.html

  
#### Possible fixes ####

  * igt@dmabuf@all-tests@dma_fence_chain:
    - fi-kbl-8809g:       [INCOMPLETE][15] ([i915#10454]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/fi-kbl-8809g/igt@dmabuf@all-tests@dma_fence_chain.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/fi-kbl-8809g/igt@dmabuf@all-tests@dma_fence_chain.html

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

  [i915#10366]: https://gitlab.freedesktop.org/drm/intel/issues/10366
  [i915#10436]: https://gitlab.freedesktop.org/drm/intel/issues/10436
  [i915#10454]: https://gitlab.freedesktop.org/drm/intel/issues/10454
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#4342]: https://gitlab.freedesktop.org/drm/intel/issues/4342
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#9673]: https://gitlab.freedesktop.org/drm/intel/issues/9673
  [i915#9732]: https://gitlab.freedesktop.org/drm/intel/issues/9732
  [i915#9875]: https://gitlab.freedesktop.org/drm/intel/issues/9875
  [i915#9900]: https://gitlab.freedesktop.org/drm/intel/issues/9900


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7778 -> IGTPW_10887

  CI-20190529: 20190529
  CI_DRM_14471: 4ebd744e5c696e7c40464e1afa0a7ead0c740621 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_10887: 10887
  IGT_7778: 0f63f0cf1fefbf7933ca33441c7a89966e85d8c8 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

[-- Attachment #2: Type: text/html, Size: 6614 bytes --]

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

* ✗ Fi.CI.IGT: failure for tools/intel_vbt_decode: Improve panel type handling
  2024-03-22 16:32 [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling Ville Syrjala
                   ` (6 preceding siblings ...)
  2024-03-22 18:56 ` ✓ Fi.CI.BAT: " Patchwork
@ 2024-03-23 21:17 ` Patchwork
  2024-03-25 19:39 ` ✗ Fi.CI.BAT: failure for tools/intel_vbt_decode: Improve panel type handling (rev3) Patchwork
  2024-03-25 19:42 ` ✓ CI.xeBAT: success " Patchwork
  9 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2024-03-23 21:17 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 96645 bytes --]

== Series Details ==

Series: tools/intel_vbt_decode: Improve panel type handling
URL   : https://patchwork.freedesktop.org/series/131502/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_14471_full -> IGTPW_10887_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_10887_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_10887_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) 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_10887/index.html

Participating hosts (9 -> 9)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-tglu:         [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-tglu-4/igt@i915_module_load@reload-with-fault-injection.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-10/igt@i915_module_load@reload-with-fault-injection.html

  
#### Warnings ####

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-wc:
    - shard-snb:          [SKIP][3] -> [ABORT][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-snb6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-snb6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@blit-reloc-keep-cache:
    - shard-dg2:          NOTRUN -> [SKIP][5] ([i915#8411])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-2/igt@api_intel_bb@blit-reloc-keep-cache.html
    - shard-rkl:          NOTRUN -> [SKIP][6] ([i915#8411])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@api_intel_bb@blit-reloc-keep-cache.html

  * igt@api_intel_bb@object-reloc-purge-cache:
    - shard-dg1:          NOTRUN -> [SKIP][7] ([i915#8411])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@api_intel_bb@object-reloc-purge-cache.html

  * igt@api_intel_bb@render-ccs:
    - shard-dg2:          NOTRUN -> [FAIL][8] ([i915#10380])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@api_intel_bb@render-ccs.html

  * igt@debugfs_test@basic-hwmon:
    - shard-rkl:          NOTRUN -> [SKIP][9] ([i915#9318])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@debugfs_test@basic-hwmon.html

  * igt@drm_fdinfo@isolation@vecs0:
    - shard-dg1:          NOTRUN -> [SKIP][10] ([i915#8414]) +11 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@drm_fdinfo@isolation@vecs0.html

  * igt@drm_fdinfo@most-busy-idle-check-all@rcs0:
    - shard-rkl:          NOTRUN -> [FAIL][11] ([i915#7742])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html

  * igt@drm_fdinfo@most-busy-idle-check-all@vecs1:
    - shard-dg2:          NOTRUN -> [SKIP][12] ([i915#8414]) +30 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-2/igt@drm_fdinfo@most-busy-idle-check-all@vecs1.html

  * igt@drm_fdinfo@virtual-busy:
    - shard-mtlp:         NOTRUN -> [SKIP][13] ([i915#8414]) +1 other test skip
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-4/igt@drm_fdinfo@virtual-busy.html

  * igt@gem_basic@multigpu-create-close:
    - shard-dg1:          NOTRUN -> [SKIP][14] ([i915#7697]) +1 other test skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@gem_basic@multigpu-create-close.html
    - shard-mtlp:         NOTRUN -> [SKIP][15] ([i915#7697])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-5/igt@gem_basic@multigpu-create-close.html

  * igt@gem_ccs@suspend-resume:
    - shard-mtlp:         NOTRUN -> [SKIP][16] ([i915#9323])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-5/igt@gem_ccs@suspend-resume.html

  * igt@gem_close_race@multigpu-basic-threads:
    - shard-tglu:         NOTRUN -> [SKIP][17] ([i915#7697])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-8/igt@gem_close_race@multigpu-basic-threads.html

  * igt@gem_compute@compute-square:
    - shard-mtlp:         NOTRUN -> [SKIP][18] ([i915#9310])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-6/igt@gem_compute@compute-square.html

  * igt@gem_create@create-ext-cpu-access-big:
    - shard-dg2:          [PASS][19] -> [ABORT][20] ([i915#9846])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg2-8/igt@gem_create@create-ext-cpu-access-big.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-3/igt@gem_create@create-ext-cpu-access-big.html

  * igt@gem_create@create-ext-cpu-access-sanity-check:
    - shard-tglu:         NOTRUN -> [SKIP][21] ([i915#6335])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-7/igt@gem_create@create-ext-cpu-access-sanity-check.html
    - shard-mtlp:         NOTRUN -> [SKIP][22] ([i915#6335]) +1 other test skip
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-7/igt@gem_create@create-ext-cpu-access-sanity-check.html
    - shard-rkl:          NOTRUN -> [SKIP][23] ([i915#6335])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@gem_create@create-ext-cpu-access-sanity-check.html

  * igt@gem_create@create-ext-set-pat:
    - shard-dg1:          NOTRUN -> [SKIP][24] ([i915#8562])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@gem_create@create-ext-set-pat.html

  * igt@gem_ctx_persistence@heartbeat-stop:
    - shard-dg2:          NOTRUN -> [SKIP][25] ([i915#8555])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-5/igt@gem_ctx_persistence@heartbeat-stop.html

  * igt@gem_ctx_persistence@saturated-hostile-nopreempt@ccs0:
    - shard-dg2:          NOTRUN -> [SKIP][26] ([i915#5882]) +9 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@gem_ctx_persistence@saturated-hostile-nopreempt@ccs0.html

  * igt@gem_ctx_sseu@invalid-sseu:
    - shard-dg1:          NOTRUN -> [SKIP][27] ([i915#280])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@gem_ctx_sseu@invalid-sseu.html

  * igt@gem_eio@kms:
    - shard-tglu:         [PASS][28] -> [INCOMPLETE][29] ([i915#10513])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-tglu-5/igt@gem_eio@kms.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-3/igt@gem_eio@kms.html

  * igt@gem_eio@unwedge-stress:
    - shard-dg1:          [PASS][30] -> [FAIL][31] ([i915#5784]) +1 other test fail
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg1-17/igt@gem_eio@unwedge-stress.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_balancer@bonded-dual:
    - shard-mtlp:         NOTRUN -> [SKIP][32] ([i915#4771])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-3/igt@gem_exec_balancer@bonded-dual.html

  * igt@gem_exec_balancer@bonded-sync:
    - shard-dg2:          NOTRUN -> [SKIP][33] ([i915#4771])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-7/igt@gem_exec_balancer@bonded-sync.html

  * igt@gem_exec_balancer@parallel-ordering:
    - shard-rkl:          NOTRUN -> [SKIP][34] ([i915#4525])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@gem_exec_balancer@parallel-ordering.html

  * igt@gem_exec_capture@capture-invisible@smem0:
    - shard-glk:          NOTRUN -> [SKIP][35] ([i915#6334])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk9/igt@gem_exec_capture@capture-invisible@smem0.html

  * igt@gem_exec_capture@many-4k-zero:
    - shard-dg2:          NOTRUN -> [FAIL][36] ([i915#9606])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-5/igt@gem_exec_capture@many-4k-zero.html

  * igt@gem_exec_fair@basic-none:
    - shard-dg1:          NOTRUN -> [SKIP][37] ([i915#3539] / [i915#4852]) +6 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-17/igt@gem_exec_fair@basic-none.html

  * igt@gem_exec_fair@basic-none-share:
    - shard-dg2:          NOTRUN -> [SKIP][38] ([i915#3539] / [i915#4852]) +4 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@gem_exec_fair@basic-none-share.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-tglu:         NOTRUN -> [FAIL][39] ([i915#2842])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-7/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none-vip:
    - shard-mtlp:         NOTRUN -> [SKIP][40] ([i915#4473] / [i915#4771]) +1 other test skip
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-1/igt@gem_exec_fair@basic-none-vip.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-rkl:          NOTRUN -> [FAIL][41] ([i915#2842])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace@rcs0:
    - shard-tglu:         [PASS][42] -> [FAIL][43] ([i915#2842])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-tglu-6/igt@gem_exec_fair@basic-pace@rcs0.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-6/igt@gem_exec_fair@basic-pace@rcs0.html

  * igt@gem_exec_fair@basic-pace@vcs0:
    - shard-rkl:          [PASS][44] -> [FAIL][45] ([i915#2842])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-rkl-3/igt@gem_exec_fair@basic-pace@vcs0.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-2/igt@gem_exec_fair@basic-pace@vcs0.html

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][46] ([i915#2842]) +1 other test fail
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk1/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@gem_exec_fence@submit:
    - shard-dg1:          NOTRUN -> [SKIP][47] ([i915#4812]) +2 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@gem_exec_fence@submit.html
    - shard-mtlp:         NOTRUN -> [SKIP][48] ([i915#4812]) +5 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-1/igt@gem_exec_fence@submit.html

  * igt@gem_exec_fence@submit67:
    - shard-dg2:          NOTRUN -> [SKIP][49] ([i915#4812]) +1 other test skip
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@gem_exec_fence@submit67.html

  * igt@gem_exec_flush@basic-uc-prw-default:
    - shard-dg1:          NOTRUN -> [SKIP][50] ([i915#3539])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@gem_exec_flush@basic-uc-prw-default.html

  * igt@gem_exec_reloc@basic-cpu-read-noreloc:
    - shard-mtlp:         NOTRUN -> [SKIP][51] ([i915#3281]) +12 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@gem_exec_reloc@basic-cpu-read-noreloc.html

  * igt@gem_exec_reloc@basic-softpin:
    - shard-dg2:          NOTRUN -> [SKIP][52] ([i915#3281]) +8 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-10/igt@gem_exec_reloc@basic-softpin.html

  * igt@gem_exec_reloc@basic-wc-read:
    - shard-dg1:          NOTRUN -> [SKIP][53] ([i915#3281]) +15 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@gem_exec_reloc@basic-wc-read.html

  * igt@gem_exec_reloc@basic-wc-read-noreloc:
    - shard-rkl:          NOTRUN -> [SKIP][54] ([i915#3281]) +12 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@gem_exec_reloc@basic-wc-read-noreloc.html

  * igt@gem_exec_schedule@preempt-queue:
    - shard-mtlp:         NOTRUN -> [SKIP][55] ([i915#4537] / [i915#4812])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-8/igt@gem_exec_schedule@preempt-queue.html

  * igt@gem_exec_schedule@preempt-queue-contexts-chain:
    - shard-dg2:          NOTRUN -> [SKIP][56] ([i915#4537] / [i915#4812])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-6/igt@gem_exec_schedule@preempt-queue-contexts-chain.html

  * igt@gem_fence_thrash@bo-write-verify-x:
    - shard-mtlp:         NOTRUN -> [SKIP][57] ([i915#4860])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@gem_fence_thrash@bo-write-verify-x.html

  * igt@gem_fence_thrash@bo-write-verify-y:
    - shard-dg2:          NOTRUN -> [SKIP][58] ([i915#4860]) +1 other test skip
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-6/igt@gem_fence_thrash@bo-write-verify-y.html

  * igt@gem_fenced_exec_thrash@no-spare-fences:
    - shard-dg1:          NOTRUN -> [SKIP][59] ([i915#4860]) +3 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@gem_fenced_exec_thrash@no-spare-fences.html

  * igt@gem_huc_copy@huc-copy:
    - shard-rkl:          NOTRUN -> [SKIP][60] ([i915#2190])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@heavy-verify-multi:
    - shard-tglu:         NOTRUN -> [SKIP][61] ([i915#4613]) +1 other test skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-9/igt@gem_lmem_swapping@heavy-verify-multi.html

  * igt@gem_lmem_swapping@heavy-verify-multi-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][62] ([i915#4613]) +3 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-8/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html

  * igt@gem_lmem_swapping@heavy-verify-random@lmem0:
    - shard-dg2:          [PASS][63] -> [FAIL][64] ([i915#10378])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg2-8/igt@gem_lmem_swapping@heavy-verify-random@lmem0.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@gem_lmem_swapping@heavy-verify-random@lmem0.html

  * igt@gem_lmem_swapping@parallel-random-verify-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][65] ([i915#4613]) +4 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@gem_lmem_swapping@parallel-random-verify-ccs.html

  * igt@gem_lmem_swapping@random-engines:
    - shard-glk:          NOTRUN -> [SKIP][66] ([i915#4613]) +3 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk3/igt@gem_lmem_swapping@random-engines.html

  * igt@gem_media_vme:
    - shard-mtlp:         NOTRUN -> [SKIP][67] ([i915#284])
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-1/igt@gem_media_vme.html

  * igt@gem_mmap@bad-offset:
    - shard-dg1:          NOTRUN -> [SKIP][68] ([i915#4083]) +11 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-14/igt@gem_mmap@bad-offset.html

  * igt@gem_mmap_gtt@cpuset-big-copy-odd:
    - shard-dg2:          NOTRUN -> [SKIP][69] ([i915#4077]) +8 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@gem_mmap_gtt@cpuset-big-copy-odd.html

  * igt@gem_mmap_wc@write-gtt-read-wc:
    - shard-mtlp:         NOTRUN -> [SKIP][70] ([i915#4083]) +3 other tests skip
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-3/igt@gem_mmap_wc@write-gtt-read-wc.html

  * igt@gem_mmap_wc@write-wc-read-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][71] ([i915#4083]) +2 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@gem_mmap_wc@write-wc-read-gtt.html

  * igt@gem_partial_pwrite_pread@writes-after-reads:
    - shard-rkl:          NOTRUN -> [SKIP][72] ([i915#3282]) +4 other tests skip
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@gem_partial_pwrite_pread@writes-after-reads.html

  * igt@gem_pread@snoop:
    - shard-dg1:          NOTRUN -> [SKIP][73] ([i915#3282]) +8 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@gem_pread@snoop.html

  * igt@gem_pxp@create-regular-buffer:
    - shard-rkl:          NOTRUN -> [SKIP][74] ([i915#4270]) +2 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@gem_pxp@create-regular-buffer.html

  * igt@gem_pxp@create-regular-context-1:
    - shard-mtlp:         NOTRUN -> [SKIP][75] ([i915#4270]) +3 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-6/igt@gem_pxp@create-regular-context-1.html

  * igt@gem_pxp@create-valid-protected-context:
    - shard-dg2:          NOTRUN -> [SKIP][76] ([i915#4270]) +3 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-11/igt@gem_pxp@create-valid-protected-context.html

  * igt@gem_pxp@reject-modify-context-protection-off-3:
    - shard-dg1:          NOTRUN -> [SKIP][77] ([i915#4270]) +3 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@gem_pxp@reject-modify-context-protection-off-3.html

  * igt@gem_pxp@verify-pxp-execution-after-suspend-resume:
    - shard-tglu:         NOTRUN -> [SKIP][78] ([i915#4270])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-7/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html

  * igt@gem_readwrite@beyond-eob:
    - shard-dg2:          NOTRUN -> [SKIP][79] ([i915#3282]) +5 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@gem_readwrite@beyond-eob.html

  * igt@gem_readwrite@new-obj:
    - shard-mtlp:         NOTRUN -> [SKIP][80] ([i915#3282]) +2 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-5/igt@gem_readwrite@new-obj.html

  * igt@gem_render_copy@y-tiled-ccs-to-yf-tiled-mc-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][81] ([i915#8428]) +6 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-7/igt@gem_render_copy@y-tiled-ccs-to-yf-tiled-mc-ccs.html

  * igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-y-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][82] ([i915#5190] / [i915#8428]) +5 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-y-tiled.html

  * igt@gem_render_tiled_blits@basic:
    - shard-dg1:          NOTRUN -> [SKIP][83] ([i915#4079])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@gem_render_tiled_blits@basic.html
    - shard-mtlp:         NOTRUN -> [SKIP][84] ([i915#4079]) +1 other test skip
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-5/igt@gem_render_tiled_blits@basic.html

  * igt@gem_softpin@evict-snoop-interruptible:
    - shard-mtlp:         NOTRUN -> [SKIP][85] ([i915#4885])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-3/igt@gem_softpin@evict-snoop-interruptible.html

  * igt@gem_tiled_partial_pwrite_pread@writes-after-reads:
    - shard-dg1:          NOTRUN -> [SKIP][86] ([i915#4077]) +15 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-18/igt@gem_tiled_partial_pwrite_pread@writes-after-reads.html

  * igt@gem_tiling_max_stride:
    - shard-mtlp:         NOTRUN -> [SKIP][87] ([i915#4077]) +7 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@gem_tiling_max_stride.html

  * igt@gem_userptr_blits@create-destroy-unsync:
    - shard-dg2:          NOTRUN -> [SKIP][88] ([i915#3297]) +7 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@gem_userptr_blits@create-destroy-unsync.html

  * igt@gem_userptr_blits@map-fixed-invalidate:
    - shard-dg1:          NOTRUN -> [SKIP][89] ([i915#3297] / [i915#4880])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-17/igt@gem_userptr_blits@map-fixed-invalidate.html

  * igt@gem_userptr_blits@map-fixed-invalidate-busy:
    - shard-mtlp:         NOTRUN -> [SKIP][90] ([i915#3297]) +1 other test skip
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-1/igt@gem_userptr_blits@map-fixed-invalidate-busy.html

  * igt@gem_userptr_blits@unsync-unmap-cycles:
    - shard-rkl:          NOTRUN -> [SKIP][91] ([i915#3297]) +2 other tests skip
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-5/igt@gem_userptr_blits@unsync-unmap-cycles.html
    - shard-dg1:          NOTRUN -> [SKIP][92] ([i915#3297]) +1 other test skip
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@gem_userptr_blits@unsync-unmap-cycles.html
    - shard-tglu:         NOTRUN -> [SKIP][93] ([i915#3297])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-8/igt@gem_userptr_blits@unsync-unmap-cycles.html

  * igt@gen9_exec_parse@basic-rejected:
    - shard-tglu:         NOTRUN -> [SKIP][94] ([i915#2527] / [i915#2856])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-8/igt@gen9_exec_parse@basic-rejected.html
    - shard-mtlp:         NOTRUN -> [SKIP][95] ([i915#2856])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-5/igt@gen9_exec_parse@basic-rejected.html

  * igt@gen9_exec_parse@bb-large:
    - shard-dg1:          NOTRUN -> [SKIP][96] ([i915#2527]) +2 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@gen9_exec_parse@bb-large.html

  * igt@gen9_exec_parse@shadow-peek:
    - shard-dg2:          NOTRUN -> [SKIP][97] ([i915#2856]) +6 other tests skip
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@gen9_exec_parse@shadow-peek.html

  * igt@gen9_exec_parse@unaligned-access:
    - shard-rkl:          NOTRUN -> [SKIP][98] ([i915#2527]) +7 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@gen9_exec_parse@unaligned-access.html

  * igt@i915_module_load@load:
    - shard-dg1:          NOTRUN -> [SKIP][99] ([i915#6227])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@i915_module_load@load.html
    - shard-tglu:         NOTRUN -> [SKIP][100] ([i915#6227])
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-2/igt@i915_module_load@load.html

  * igt@i915_pm_freq_mult@media-freq@gt0:
    - shard-rkl:          NOTRUN -> [SKIP][101] ([i915#6590])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@i915_pm_freq_mult@media-freq@gt0.html
    - shard-dg1:          NOTRUN -> [SKIP][102] ([i915#6590])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-14/igt@i915_pm_freq_mult@media-freq@gt0.html

  * igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0:
    - shard-dg1:          [PASS][103] -> [FAIL][104] ([i915#3591])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg1-18/igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0.html
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@i915_pm_rc6_residency@rc6-idle@gt0-vecs0.html

  * igt@i915_pm_rpm@gem-mmap-type@gtt-smem0:
    - shard-mtlp:         NOTRUN -> [SKIP][105] ([i915#8431])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-7/igt@i915_pm_rpm@gem-mmap-type@gtt-smem0.html

  * igt@i915_pm_rps@min-max-config-loaded:
    - shard-dg1:          NOTRUN -> [SKIP][106] ([i915#6621])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@i915_pm_rps@min-max-config-loaded.html

  * igt@i915_pm_rps@thresholds-idle-park@gt0:
    - shard-mtlp:         NOTRUN -> [SKIP][107] ([i915#8925])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@i915_pm_rps@thresholds-idle-park@gt0.html

  * igt@i915_pm_rps@thresholds-idle-park@gt1:
    - shard-mtlp:         NOTRUN -> [SKIP][108] ([i915#3555] / [i915#8925])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@i915_pm_rps@thresholds-idle-park@gt1.html

  * igt@i915_pm_rps@thresholds-idle@gt0:
    - shard-dg1:          NOTRUN -> [SKIP][109] ([i915#8925]) +1 other test skip
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@i915_pm_rps@thresholds-idle@gt0.html

  * igt@i915_pm_rps@thresholds@gt0:
    - shard-dg2:          NOTRUN -> [SKIP][110] ([i915#8925])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-1/igt@i915_pm_rps@thresholds@gt0.html

  * igt@i915_pm_sseu@full-enable:
    - shard-dg2:          NOTRUN -> [SKIP][111] ([i915#4387])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-6/igt@i915_pm_sseu@full-enable.html

  * igt@i915_power@sanity:
    - shard-rkl:          NOTRUN -> [SKIP][112] ([i915#7984])
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-5/igt@i915_power@sanity.html

  * igt@i915_selftest@mock@memory_region:
    - shard-rkl:          NOTRUN -> [DMESG-WARN][113] ([i915#9311])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@i915_selftest@mock@memory_region.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-rkl:          [PASS][114] -> [FAIL][115] ([i915#10031])
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-rkl-5/igt@i915_suspend@basic-s3-without-i915.html
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling:
    - shard-mtlp:         NOTRUN -> [SKIP][116] ([i915#4212]) +3 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-6/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@basic-x-tiled-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][117] ([i915#4212]) +1 other test skip
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_addfb_basic@basic-x-tiled-legacy.html
    - shard-dg1:          NOTRUN -> [SKIP][118] ([i915#4212]) +2 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@kms_addfb_basic@basic-x-tiled-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - shard-dg1:          NOTRUN -> [SKIP][119] ([i915#4215])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_async_flips@alternate-sync-async-flip@pipe-b-hdmi-a-1:
    - shard-tglu:         [PASS][120] -> [FAIL][121] ([i915#2521])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-tglu-5/igt@kms_async_flips@alternate-sync-async-flip@pipe-b-hdmi-a-1.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-7/igt@kms_async_flips@alternate-sync-async-flip@pipe-b-hdmi-a-1.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc:
    - shard-rkl:          NOTRUN -> [SKIP][122] ([i915#8709]) +3 other tests skip
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-hdmi-a-1-4-mc-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][123] ([i915#8709]) +11 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-hdmi-a-1-4-mc-ccs.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-glk:          NOTRUN -> [SKIP][124] ([i915#1769])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk9/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-90:
    - shard-dg1:          NOTRUN -> [SKIP][125] ([i915#4538] / [i915#5286]) +7 other tests skip
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-14/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html
    - shard-tglu:         NOTRUN -> [SKIP][126] ([i915#5286]) +1 other test skip
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-3/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-0:
    - shard-rkl:          NOTRUN -> [SKIP][127] ([i915#5286]) +8 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-5/igt@kms_big_fb@4-tiled-8bpp-rotate-0.html

  * igt@kms_big_fb@linear-32bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][128] ([i915#3638]) +2 other tests skip
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@kms_big_fb@linear-32bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-270:
    - shard-dg1:          NOTRUN -> [SKIP][129] ([i915#3638]) +3 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-addfb-size-overflow:
    - shard-dg2:          NOTRUN -> [SKIP][130] ([i915#5190])
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-5/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
    - shard-mtlp:         NOTRUN -> [SKIP][131] ([i915#6187]) +1 other test skip
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-7/igt@kms_big_fb@y-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - shard-tglu:         [PASS][132] -> [FAIL][133] ([i915#3743])
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-tglu-7/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-6/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-tglu:         NOTRUN -> [FAIL][134] ([i915#3743])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-2/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
    - shard-dg2:          NOTRUN -> [SKIP][135] ([i915#4538] / [i915#5190]) +9 other tests skip
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-180:
    - shard-mtlp:         NOTRUN -> [SKIP][136] +25 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-8/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0:
    - shard-dg1:          NOTRUN -> [SKIP][137] ([i915#4538]) +7 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-14/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-tglu:         NOTRUN -> [SKIP][138] +36 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-5/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_joiner@2x-modeset:
    - shard-rkl:          NOTRUN -> [SKIP][139] ([i915#2705]) +1 other test skip
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-5/igt@kms_big_joiner@2x-modeset.html

  * igt@kms_big_joiner@basic:
    - shard-dg2:          NOTRUN -> [SKIP][140] ([i915#2705]) +1 other test skip
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-7/igt@kms_big_joiner@basic.html

  * igt@kms_big_joiner@invalid-modeset:
    - shard-dg1:          NOTRUN -> [SKIP][141] ([i915#2705])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@kms_big_joiner@invalid-modeset.html
    - shard-tglu:         NOTRUN -> [SKIP][142] ([i915#2705])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-9/igt@kms_big_joiner@invalid-modeset.html

  * igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-d-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][143] ([i915#10307]) +136 other tests skip
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-2/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-d-hdmi-a-2.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][144] ([i915#10307] / [i915#10434]) +2 other tests skip
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][145] ([i915#6095]) +15 other tests skip
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-3/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs@pipe-b-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][146] ([i915#6095]) +95 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs@pipe-b-hdmi-a-3.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][147] ([i915#10278])
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs@pipe-c-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][148] ([i915#6095]) +39 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-mc-ccs@pipe-c-edp-1.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-xe2-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][149] ([i915#10278])
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-xe2-ccs.html

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-b-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][150] ([i915#6095]) +67 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-5/igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-xe2-ccs:
    - shard-dg1:          NOTRUN -> [SKIP][151] ([i915#10278])
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@kms_ccs@random-ccs-data-4-tiled-xe2-ccs.html
    - shard-tglu:         NOTRUN -> [SKIP][152] ([i915#10278])
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-3/igt@kms_ccs@random-ccs-data-4-tiled-xe2-ccs.html

  * igt@kms_cdclk@mode-transition:
    - shard-dg1:          NOTRUN -> [SKIP][153] ([i915#3742])
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-18/igt@kms_cdclk@mode-transition.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-rkl:          NOTRUN -> [SKIP][154] ([i915#3742])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-2/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_cdclk@mode-transition@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][155] ([i915#7213] / [i915#9010]) +3 other tests skip
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@kms_cdclk@mode-transition@pipe-b-edp-1.html

  * igt@kms_chamelium_audio@dp-audio:
    - shard-mtlp:         NOTRUN -> [SKIP][156] ([i915#7828]) +9 other tests skip
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-4/igt@kms_chamelium_audio@dp-audio.html

  * igt@kms_chamelium_edid@dp-edid-read:
    - shard-dg2:          NOTRUN -> [SKIP][157] ([i915#7828]) +9 other tests skip
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-7/igt@kms_chamelium_edid@dp-edid-read.html

  * igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe:
    - shard-tglu:         NOTRUN -> [SKIP][158] ([i915#7828]) +4 other tests skip
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-6/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html

  * igt@kms_chamelium_hpd@vga-hpd-fast:
    - shard-rkl:          NOTRUN -> [SKIP][159] ([i915#7828]) +11 other tests skip
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@kms_chamelium_hpd@vga-hpd-fast.html
    - shard-dg1:          NOTRUN -> [SKIP][160] ([i915#7828]) +10 other tests skip
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@kms_chamelium_hpd@vga-hpd-fast.html

  * igt@kms_color@deep-color:
    - shard-dg2:          NOTRUN -> [SKIP][161] ([i915#3555]) +6 other tests skip
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-3/igt@kms_color@deep-color.html

  * igt@kms_content_protection@atomic:
    - shard-rkl:          NOTRUN -> [SKIP][162] ([i915#7118] / [i915#9424])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@kms_content_protection@atomic.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][163] ([i915#7118] / [i915#9424]) +1 other test skip
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-6/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@atomic@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [TIMEOUT][164] ([i915#7173])
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-11/igt@kms_content_protection@atomic@pipe-a-dp-4.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-mtlp:         NOTRUN -> [SKIP][165] ([i915#3299])
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-8/igt@kms_content_protection@dp-mst-lic-type-0.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-dg1:          NOTRUN -> [SKIP][166] ([i915#3299])
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-14/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-rkl:          NOTRUN -> [SKIP][167] ([i915#3116])
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-5/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@lic-type-0:
    - shard-dg2:          NOTRUN -> [SKIP][168] ([i915#9424])
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-2/igt@kms_content_protection@lic-type-0.html

  * igt@kms_content_protection@lic-type-1:
    - shard-dg1:          NOTRUN -> [SKIP][169] ([i915#9424])
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-18/igt@kms_content_protection@lic-type-1.html

  * igt@kms_cursor_crc@cursor-offscreen-32x10:
    - shard-mtlp:         NOTRUN -> [SKIP][170] ([i915#3555] / [i915#8814]) +1 other test skip
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-7/igt@kms_cursor_crc@cursor-offscreen-32x10.html

  * igt@kms_cursor_crc@cursor-offscreen-512x170:
    - shard-tglu:         NOTRUN -> [SKIP][171] ([i915#3359])
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-6/igt@kms_cursor_crc@cursor-offscreen-512x170.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-dg2:          NOTRUN -> [SKIP][172] ([i915#3359])
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-11/igt@kms_cursor_crc@cursor-onscreen-512x512.html
    - shard-dg1:          NOTRUN -> [SKIP][173] ([i915#3359]) +2 other tests skip
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-17/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-rkl:          NOTRUN -> [SKIP][174] ([i915#3359]) +3 other tests skip
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-random-64x21:
    - shard-mtlp:         NOTRUN -> [SKIP][175] ([i915#8814]) +1 other test skip
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-8/igt@kms_cursor_crc@cursor-random-64x21.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-mtlp:         NOTRUN -> [SKIP][176] ([i915#3359]) +2 other tests skip
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-1/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
    - shard-mtlp:         NOTRUN -> [SKIP][177] ([i915#9809]) +1 other test skip
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-8/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
    - shard-rkl:          NOTRUN -> [SKIP][178] ([i915#4103]) +1 other test skip
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-dg2:          NOTRUN -> [SKIP][179] ([i915#4103] / [i915#4213])
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-2/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
    - shard-dg1:          NOTRUN -> [SKIP][180] ([i915#4103] / [i915#4213])
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
    - shard-dg1:          NOTRUN -> [SKIP][181] ([i915#9723])
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html

  * igt@kms_dirtyfb@fbc-dirtyfb-ioctl@a-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][182] ([i915#9227])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-3/igt@kms_dirtyfb@fbc-dirtyfb-ioctl@a-hdmi-a-2.html

  * igt@kms_dirtyfb@psr-dirtyfb-ioctl:
    - shard-rkl:          NOTRUN -> [SKIP][183] ([i915#9723]) +1 other test skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html

  * igt@kms_draw_crc@draw-method-mmap-wc:
    - shard-dg1:          NOTRUN -> [SKIP][184] ([i915#8812])
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-17/igt@kms_draw_crc@draw-method-mmap-wc.html

  * igt@kms_dsc@dsc-fractional-bpp:
    - shard-dg1:          NOTRUN -> [SKIP][185] ([i915#3840])
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@kms_dsc@dsc-fractional-bpp.html

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc:
    - shard-mtlp:         NOTRUN -> [SKIP][186] ([i915#3840])
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-4/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html

  * igt@kms_dsc@dsc-with-bpc:
    - shard-dg2:          NOTRUN -> [SKIP][187] ([i915#3555] / [i915#3840])
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-7/igt@kms_dsc@dsc-with-bpc.html

  * igt@kms_dsc@dsc-with-formats:
    - shard-mtlp:         NOTRUN -> [SKIP][188] ([i915#3555] / [i915#3840])
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@kms_dsc@dsc-with-formats.html

  * igt@kms_feature_discovery@display-2x:
    - shard-tglu:         NOTRUN -> [SKIP][189] ([i915#1839])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-7/igt@kms_feature_discovery@display-2x.html

  * igt@kms_feature_discovery@display-3x:
    - shard-dg1:          NOTRUN -> [SKIP][190] ([i915#1839]) +1 other test skip
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-14/igt@kms_feature_discovery@display-3x.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-rkl:          NOTRUN -> [SKIP][191] ([i915#9337])
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_feature_discovery@psr1:
    - shard-dg1:          NOTRUN -> [SKIP][192] ([i915#658])
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-17/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip@2x-dpms-vs-vblank-race:
    - shard-mtlp:         NOTRUN -> [SKIP][193] ([i915#3637]) +7 other tests skip
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-1/igt@kms_flip@2x-dpms-vs-vblank-race.html

  * igt@kms_flip@2x-flip-vs-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][194] +56 other tests skip
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@kms_flip@2x-flip-vs-dpms.html

  * igt@kms_flip@2x-flip-vs-fences:
    - shard-dg1:          NOTRUN -> [SKIP][195] ([i915#8381]) +1 other test skip
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@kms_flip@2x-flip-vs-fences.html

  * igt@kms_flip@2x-modeset-vs-vblank-race:
    - shard-dg2:          NOTRUN -> [SKIP][196] +20 other tests skip
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_flip@2x-modeset-vs-vblank-race.html

  * igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
    - shard-dg1:          NOTRUN -> [SKIP][197] ([i915#9934]) +3 other tests skip
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
    - shard-tglu:         NOTRUN -> [SKIP][198] ([i915#3637]) +6 other tests skip
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-9/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html

  * igt@kms_flip@flip-vs-fences:
    - shard-dg2:          NOTRUN -> [SKIP][199] ([i915#8381])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-10/igt@kms_flip@flip-vs-fences.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode:
    - shard-dg1:          NOTRUN -> [SKIP][200] ([i915#2587] / [i915#2672]) +4 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][201] ([i915#2672]) +3 other tests skip
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-3/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][202] ([i915#2672]) +1 other test skip
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-6/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html
    - shard-tglu:         NOTRUN -> [SKIP][203] ([i915#2587] / [i915#2672])
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-2/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][204] ([i915#2672] / [i915#3555])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][205] ([i915#3555] / [i915#8810])
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][206] ([i915#2672])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-default-mode.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - shard-mtlp:         NOTRUN -> [SKIP][207] ([i915#5274])
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-7/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt:
    - shard-dg2:          NOTRUN -> [SKIP][208] ([i915#5354]) +33 other tests skip
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-4:
    - shard-rkl:          NOTRUN -> [SKIP][209] ([i915#5439])
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@kms_frontbuffer_tracking@fbc-tiling-4.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][210] ([i915#8708]) +21 other tests skip
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-shrfb-fliptrack-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
    - shard-mtlp:         NOTRUN -> [SKIP][211] ([i915#10055])
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-8/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html

  * igt@kms_frontbuffer_tracking@plane-fbc-rte:
    - shard-dg1:          NOTRUN -> [SKIP][212] ([i915#10070])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@kms_frontbuffer_tracking@plane-fbc-rte.html
    - shard-tglu:         NOTRUN -> [SKIP][213] ([i915#10070])
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-8/igt@kms_frontbuffer_tracking@plane-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-dg1:          NOTRUN -> [SKIP][214] ([i915#8708]) +25 other tests skip
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt:
    - shard-rkl:          NOTRUN -> [SKIP][215] ([i915#3023]) +30 other tests skip
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-blt:
    - shard-dg2:          NOTRUN -> [SKIP][216] ([i915#3458]) +17 other tests skip
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt:
    - shard-mtlp:         NOTRUN -> [SKIP][217] ([i915#1825]) +29 other tests skip
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-1/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt:
    - shard-rkl:          NOTRUN -> [SKIP][218] ([i915#1825]) +50 other tests skip
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu:
    - shard-dg1:          NOTRUN -> [SKIP][219] ([i915#3458]) +21 other tests skip
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][220] ([i915#8708]) +9 other tests skip
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt.html

  * igt@kms_hdr@invalid-hdr:
    - shard-rkl:          NOTRUN -> [SKIP][221] ([i915#3555] / [i915#8228]) +1 other test skip
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-2/igt@kms_hdr@invalid-hdr.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-mtlp:         NOTRUN -> [SKIP][222] ([i915#3555] / [i915#8228]) +1 other test skip
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-5/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_hdr@static-toggle:
    - shard-dg1:          NOTRUN -> [SKIP][223] ([i915#3555] / [i915#8228])
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@kms_hdr@static-toggle.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-dg2:          NOTRUN -> [SKIP][224] ([i915#3555] / [i915#8228]) +1 other test skip
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-7/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_panel_fitting@atomic-fastset:
    - shard-rkl:          NOTRUN -> [SKIP][225] ([i915#6301])
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@kms_panel_fitting@atomic-fastset.html

  * igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1:
    - shard-glk:          NOTRUN -> [FAIL][226] ([i915#7862]) +1 other test fail
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk1/igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1.html

  * igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1:
    - shard-glk:          NOTRUN -> [FAIL][227] ([i915#4573]) +1 other test fail
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk3/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1.html

  * igt@kms_plane_lowres@tiling-4:
    - shard-tglu:         NOTRUN -> [SKIP][228] ([i915#3555]) +1 other test skip
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-9/igt@kms_plane_lowres@tiling-4.html

  * igt@kms_plane_lowres@tiling-none@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][229] ([i915#3582]) +7 other tests skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-5/igt@kms_plane_lowres@tiling-none@pipe-b-edp-1.html

  * igt@kms_plane_lowres@tiling-yf:
    - shard-rkl:          NOTRUN -> [SKIP][230] ([i915#3555]) +9 other tests skip
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-5/igt@kms_plane_lowres@tiling-yf.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [FAIL][231] ([i915#8292])
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-2.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][232] ([i915#9423]) +9 other tests skip
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-b-hdmi-a-2.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-1:
    - shard-glk:          NOTRUN -> [SKIP][233] +422 other tests skip
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk1/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-1.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][234] ([i915#9423]) +7 other tests skip
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-1/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-3.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][235] ([i915#9423]) +23 other tests skip
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-14/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a-hdmi-a-4.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-d-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][236] ([i915#9423]) +3 other tests skip
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-8/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-d-hdmi-a-1.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][237] ([i915#5235] / [i915#9423] / [i915#9728]) +7 other tests skip
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-2/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-d-hdmi-a-2.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][238] ([i915#5235]) +9 other tests skip
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-3/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-a-edp-1.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-c-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][239] ([i915#5235]) +11 other tests skip
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-17/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-c-hdmi-a-4.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][240] ([i915#5235] / [i915#9423]) +11 other tests skip
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-3/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-2.html
    - shard-rkl:          NOTRUN -> [SKIP][241] ([i915#5235]) +5 other tests skip
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a-hdmi-a-2.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][242] ([i915#3555] / [i915#5235]) +1 other test skip
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-d-edp-1.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][243] ([i915#5235]) +3 other tests skip
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-2/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d-hdmi-a-1.html

  * igt@kms_pm_backlight@basic-brightness:
    - shard-rkl:          NOTRUN -> [SKIP][244] ([i915#5354])
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-dg1:          NOTRUN -> [SKIP][245] ([i915#5354])
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-18/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-tglu:         [PASS][246] -> [FAIL][247] ([i915#9295])
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-tglu-4/igt@kms_pm_dc@dc6-dpms.html
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-7/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-dg2:          NOTRUN -> [SKIP][248] ([i915#9340])
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-2/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_lpsp@screens-disabled:
    - shard-dg2:          NOTRUN -> [SKIP][249] ([i915#8430])
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_pm_lpsp@screens-disabled.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-dg2:          NOTRUN -> [SKIP][250] ([i915#9519])
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-2/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-rkl:          NOTRUN -> [SKIP][251] ([i915#9519]) +1 other test skip
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
    - shard-rkl:          [PASS][252] -> [SKIP][253] ([i915#9519])
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-rkl-5/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@kms_pm_rpm@modeset-non-lpsp:
    - shard-mtlp:         NOTRUN -> [SKIP][254] ([i915#9519])
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-1/igt@kms_pm_rpm@modeset-non-lpsp.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-dg2:          [PASS][255] -> [SKIP][256] ([i915#9519])
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg2-6/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_prime@basic-crc-hybrid:
    - shard-mtlp:         NOTRUN -> [SKIP][257] ([i915#6524])
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-8/igt@kms_prime@basic-crc-hybrid.html

  * igt@kms_prime@basic-modeset-hybrid:
    - shard-dg2:          NOTRUN -> [SKIP][258] ([i915#6524] / [i915#6805])
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_prime@basic-modeset-hybrid.html

  * igt@kms_prime@d3hot:
    - shard-rkl:          NOTRUN -> [SKIP][259] ([i915#6524])
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@kms_prime@d3hot.html

  * igt@kms_psr2_sf@cursor-plane-move-continuous-sf:
    - shard-dg1:          NOTRUN -> [SKIP][260] +52 other tests skip
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@kms_psr2_sf@cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-sf@psr2-pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][261] ([i915#9808]) +1 other test skip
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-5/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-sf@psr2-pipe-a-edp-1.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-dg2:          NOTRUN -> [SKIP][262] ([i915#9683])
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-10/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-rkl:          NOTRUN -> [SKIP][263] ([i915#9683]) +1 other test skip
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-3/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@fbc-pr-primary-blt:
    - shard-mtlp:         NOTRUN -> [SKIP][264] ([i915#9688]) +16 other tests skip
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@kms_psr@fbc-pr-primary-blt.html

  * igt@kms_psr@fbc-pr-primary-page-flip:
    - shard-dg2:          NOTRUN -> [SKIP][265] ([i915#9673] / [i915#9732]) +2 other tests skip
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-11/igt@kms_psr@fbc-pr-primary-page-flip.html

  * igt@kms_psr@fbc-psr2-cursor-render:
    - shard-dg2:          NOTRUN -> [SKIP][266] ([i915#9732]) +12 other tests skip
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-6/igt@kms_psr@fbc-psr2-cursor-render.html

  * igt@kms_psr@fbc-psr2-primary-mmap-gtt:
    - shard-tglu:         NOTRUN -> [SKIP][267] ([i915#9732]) +6 other tests skip
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-3/igt@kms_psr@fbc-psr2-primary-mmap-gtt.html

  * igt@kms_psr@pr-sprite-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][268] ([i915#9732]) +29 other tests skip
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-3/igt@kms_psr@pr-sprite-mmap-gtt.html

  * igt@kms_psr@psr2-sprite-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][269] ([i915#9732]) +25 other tests skip
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@kms_psr@psr2-sprite-mmap-gtt.html

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
    - shard-dg1:          NOTRUN -> [SKIP][270] ([i915#5289])
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-17/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-180:
    - shard-rkl:          [PASS][271] -> [INCOMPLETE][272] ([i915#8875] / [i915#9569])
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-rkl-4/igt@kms_rotation_crc@primary-y-tiled-reflect-x-180.html
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@kms_rotation_crc@primary-y-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
    - shard-mtlp:         NOTRUN -> [SKIP][273] ([i915#4235]) +1 other test skip
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-5/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-mtlp:         NOTRUN -> [SKIP][274] ([i915#5289])
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-rkl:          NOTRUN -> [SKIP][275] ([i915#5289])
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

  * igt@kms_rotation_crc@sprite-rotation-270:
    - shard-dg2:          NOTRUN -> [SKIP][276] ([i915#4235])
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_rotation_crc@sprite-rotation-270.html

  * igt@kms_scaling_modes@scaling-mode-center:
    - shard-dg1:          NOTRUN -> [SKIP][277] ([i915#3555]) +9 other tests skip
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@kms_scaling_modes@scaling-mode-center.html

  * igt@kms_setmode@basic@pipe-a-hdmi-a-1:
    - shard-snb:          [PASS][278] -> [FAIL][279] ([i915#5465]) +1 other test fail
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-snb1/igt@kms_setmode@basic@pipe-a-hdmi-a-1.html
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-snb5/igt@kms_setmode@basic@pipe-a-hdmi-a-1.html

  * igt@kms_setmode@invalid-clone-single-crtc-stealing:
    - shard-mtlp:         NOTRUN -> [SKIP][280] ([i915#3555] / [i915#8809])
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-5/igt@kms_setmode@invalid-clone-single-crtc-stealing.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-rkl:          NOTRUN -> [SKIP][281] ([i915#8623])
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-dg1:          NOTRUN -> [SKIP][282] ([i915#8623])
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [FAIL][283] ([i915#9196]) +1 other test fail
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-5/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1:
    - shard-tglu:         [PASS][284] -> [FAIL][285] ([i915#9196]) +1 other test fail
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-tglu-8/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-8/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1:
    - shard-dg2:          [PASS][286] -> [FAIL][287] ([i915#9196])
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg2-8/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html

  * igt@kms_vrr@flip-basic-fastset:
    - shard-dg2:          NOTRUN -> [SKIP][288] ([i915#9906])
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-6/igt@kms_vrr@flip-basic-fastset.html

  * igt@kms_vrr@flip-dpms:
    - shard-mtlp:         NOTRUN -> [SKIP][289] ([i915#3555] / [i915#8808]) +1 other test skip
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-1/igt@kms_vrr@flip-dpms.html

  * igt@kms_vrr@max-min:
    - shard-rkl:          NOTRUN -> [SKIP][290] ([i915#9906])
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-5/igt@kms_vrr@max-min.html

  * igt@kms_writeback@writeback-check-output:
    - shard-dg2:          NOTRUN -> [SKIP][291] ([i915#2437]) +1 other test skip
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-3/igt@kms_writeback@writeback-check-output.html

  * igt@kms_writeback@writeback-check-output-xrgb2101010:
    - shard-dg1:          NOTRUN -> [SKIP][292] ([i915#2437] / [i915#9412])
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-18/igt@kms_writeback@writeback-check-output-xrgb2101010.html
    - shard-tglu:         NOTRUN -> [SKIP][293] ([i915#2437] / [i915#9412])
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-10/igt@kms_writeback@writeback-check-output-xrgb2101010.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-glk:          NOTRUN -> [SKIP][294] ([i915#2437]) +2 other tests skip
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk8/igt@kms_writeback@writeback-fb-id.html
    - shard-dg1:          NOTRUN -> [SKIP][295] ([i915#2437])
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-18/igt@kms_writeback@writeback-fb-id.html

  * igt@perf@gen8-unprivileged-single-ctx-counters:
    - shard-mtlp:         NOTRUN -> [SKIP][296] ([i915#7387])
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-3/igt@perf@gen8-unprivileged-single-ctx-counters.html
    - shard-dg2:          NOTRUN -> [SKIP][297] ([i915#2436] / [i915#7387])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@perf@gen8-unprivileged-single-ctx-counters.html
    - shard-rkl:          NOTRUN -> [SKIP][298] ([i915#2436])
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@perf@gen8-unprivileged-single-ctx-counters.html

  * igt@perf@mi-rpc:
    - shard-rkl:          NOTRUN -> [SKIP][299] ([i915#2434])
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@perf@mi-rpc.html

  * igt@perf@per-context-mode-unprivileged:
    - shard-dg1:          NOTRUN -> [SKIP][300] ([i915#2433])
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-14/igt@perf@per-context-mode-unprivileged.html

  * igt@perf_pmu@cpu-hotplug:
    - shard-mtlp:         NOTRUN -> [SKIP][301] ([i915#8850])
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-7/igt@perf_pmu@cpu-hotplug.html

  * igt@perf_pmu@frequency@gt0:
    - shard-dg1:          NOTRUN -> [FAIL][302] ([i915#6806])
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-18/igt@perf_pmu@frequency@gt0.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-rkl:          NOTRUN -> [SKIP][303] ([i915#8516])
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@perf_pmu@rc6-all-gts.html

  * igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem:
    - shard-dg2:          NOTRUN -> [CRASH][304] ([i915#9351])
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-2/igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem.html

  * igt@prime_vgem@basic-fence-read:
    - shard-rkl:          NOTRUN -> [SKIP][305] ([i915#3291] / [i915#3708])
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-5/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@fence-flip-hang:
    - shard-dg1:          NOTRUN -> [SKIP][306] ([i915#3708]) +1 other test skip
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-16/igt@prime_vgem@fence-flip-hang.html
    - shard-dg2:          NOTRUN -> [SKIP][307] ([i915#3708])
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@prime_vgem@fence-flip-hang.html

  * igt@prime_vgem@fence-read-hang:
    - shard-rkl:          NOTRUN -> [SKIP][308] ([i915#3708]) +1 other test skip
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@prime_vgem@fence-read-hang.html

  * igt@sriov_basic@enable-vfs-autoprobe-on:
    - shard-rkl:          NOTRUN -> [SKIP][309] ([i915#9917])
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-3/igt@sriov_basic@enable-vfs-autoprobe-on.html

  * igt@tools_test@sysfs_l3_parity:
    - shard-mtlp:         NOTRUN -> [SKIP][310] ([i915#4818])
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-7/igt@tools_test@sysfs_l3_parity.html

  * igt@v3d/v3d_perfmon@create-perfmon-exceed:
    - shard-mtlp:         NOTRUN -> [SKIP][311] ([i915#2575]) +9 other tests skip
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-8/igt@v3d/v3d_perfmon@create-perfmon-exceed.html

  * igt@v3d/v3d_perfmon@get-values-invalid-pad:
    - shard-dg1:          NOTRUN -> [SKIP][312] ([i915#2575]) +14 other tests skip
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-17/igt@v3d/v3d_perfmon@get-values-invalid-pad.html

  * igt@v3d/v3d_submit_cl@bad-perfmon:
    - shard-dg2:          NOTRUN -> [SKIP][313] ([i915#2575]) +9 other tests skip
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@v3d/v3d_submit_cl@bad-perfmon.html

  * igt@vc4/vc4_perfmon@create-single-perfmon:
    - shard-tglu:         NOTRUN -> [SKIP][314] ([i915#2575]) +8 other tests skip
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-4/igt@vc4/vc4_perfmon@create-single-perfmon.html

  * igt@vc4/vc4_purgeable_bo@access-purgeable-bo-mem:
    - shard-dg1:          NOTRUN -> [SKIP][315] ([i915#7711]) +11 other tests skip
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-15/igt@vc4/vc4_purgeable_bo@access-purgeable-bo-mem.html

  * igt@vc4/vc4_purgeable_bo@access-purged-bo-mem:
    - shard-mtlp:         NOTRUN -> [SKIP][316] ([i915#7711]) +5 other tests skip
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-2/igt@vc4/vc4_purgeable_bo@access-purged-bo-mem.html

  * igt@vc4/vc4_purgeable_bo@mark-purgeable:
    - shard-rkl:          NOTRUN -> [SKIP][317] ([i915#7711]) +13 other tests skip
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-6/igt@vc4/vc4_purgeable_bo@mark-purgeable.html

  * igt@vc4/vc4_tiling@get-bad-modifier:
    - shard-dg2:          NOTRUN -> [SKIP][318] ([i915#7711]) +5 other tests skip
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-7/igt@vc4/vc4_tiling@get-bad-modifier.html

  
#### Possible fixes ####

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-tglu:         [FAIL][319] ([i915#2842]) -> [PASS][320]
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-tglu-5/igt@gem_exec_fair@basic-pace-solo@rcs0.html
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-4/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@gem_exec_fair@basic-pace@vecs0:
    - shard-rkl:          [FAIL][321] ([i915#2842]) -> [PASS][322]
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-rkl-3/igt@gem_exec_fair@basic-pace@vecs0.html
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-2/igt@gem_exec_fair@basic-pace@vecs0.html

  * igt@gem_lmem_swapping@heavy-multi@lmem0:
    - shard-dg1:          [FAIL][323] ([i915#10378]) -> [PASS][324]
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg1-15/igt@gem_lmem_swapping@heavy-multi@lmem0.html
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-13/igt@gem_lmem_swapping@heavy-multi@lmem0.html

  * igt@gem_lmem_swapping@heavy-verify-multi@lmem0:
    - shard-dg2:          [FAIL][325] ([i915#10378]) -> [PASS][326] +1 other test pass
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg2-10/igt@gem_lmem_swapping@heavy-verify-multi@lmem0.html
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-2/igt@gem_lmem_swapping@heavy-verify-multi@lmem0.html

  * igt@gem_softpin@allocator-evict@ccs0:
    - shard-mtlp:         [INCOMPLETE][327] -> [PASS][328]
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-mtlp-6/igt@gem_softpin@allocator-evict@ccs0.html
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-8/igt@gem_softpin@allocator-evict@ccs0.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-mtlp:         [FAIL][329] ([i915#5138]) -> [PASS][330]
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-mtlp-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-mtlp-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_flip@2x-blocking-wf_vblank@ab-vga1-hdmi-a1:
    - shard-snb:          [FAIL][331] ([i915#2122]) -> [PASS][332]
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-snb7/igt@kms_flip@2x-blocking-wf_vblank@ab-vga1-hdmi-a1.html
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-snb7/igt@kms_flip@2x-blocking-wf_vblank@ab-vga1-hdmi-a1.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-dg2:          [SKIP][333] ([i915#9519]) -> [PASS][334]
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg2-6/igt@kms_pm_rpm@dpms-lpsp.html
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@i2c:
    - shard-glk:          [FAIL][335] ([i915#8717]) -> [PASS][336]
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-glk5/igt@kms_pm_rpm@i2c.html
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk9/igt@kms_pm_rpm@i2c.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-rkl:          [SKIP][337] ([i915#9519]) -> [PASS][338] +1 other test pass
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-rkl-5/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-1/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_sysfs_edid_timing:
    - shard-snb:          [FAIL][339] ([IGT#2] / [i915#6493]) -> [PASS][340]
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-snb7/igt@kms_sysfs_edid_timing.html
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-snb2/igt@kms_sysfs_edid_timing.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1:
    - shard-snb:          [FAIL][341] ([i915#9196]) -> [PASS][342]
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-snb5/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-snb7/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html
    - shard-dg2:          [FAIL][343] ([i915#9196]) -> [PASS][344]
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg2-8/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-8/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1:
    - shard-tglu:         [FAIL][345] ([i915#9196]) -> [PASS][346]
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-tglu-8/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-8/igt@kms_universal_plane@cursor-fb-leak@pipe-c-hdmi-a-1.html

  * igt@perf@non-zero-reason@0-rcs0:
    - shard-glk:          [INCOMPLETE][347] -> [PASS][348]
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-glk2/igt@perf@non-zero-reason@0-rcs0.html
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk8/igt@perf@non-zero-reason@0-rcs0.html

  
#### Warnings ####

  * igt@gem_eio@kms:
    - shard-dg1:          [INCOMPLETE][349] ([i915#10513]) -> [FAIL][350] ([i915#5784])
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg1-17/igt@gem_eio@kms.html
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-14/igt@gem_eio@kms.html

  * igt@gem_pread@exhaustion:
    - shard-glk:          [INCOMPLETE][351] -> [WARN][352] ([i915#2658])
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-glk8/igt@gem_pread@exhaustion.html
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk3/igt@gem_pread@exhaustion.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-dg1:          [INCOMPLETE][353] ([i915#9820] / [i915#9849]) -> [INCOMPLETE][354] ([i915#9849])
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg1-15/igt@i915_module_load@reload-with-fault-injection.html
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg1-18/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0:
    - shard-tglu:         [WARN][355] ([i915#2681]) -> [FAIL][356] ([i915#3591]) +1 other test fail
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-tglu-2/igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0.html
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-tglu-7/igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0.html

  * igt@kms_content_protection@type1:
    - shard-dg2:          [SKIP][357] ([i915#7118] / [i915#7162] / [i915#9424]) -> [SKIP][358] ([i915#7118] / [i915#9424])
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg2-11/igt@kms_content_protection@type1.html
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-10/igt@kms_content_protection@type1.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-rkl:          [SKIP][359] ([i915#4070] / [i915#4816]) -> [SKIP][360] ([i915#4816])
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-rkl-5/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-rkl-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_psr@fbc-psr-primary-blt:
    - shard-dg2:          [SKIP][361] ([i915#9732]) -> [SKIP][362] ([i915#9673] / [i915#9732]) +4 other tests skip
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg2-5/igt@kms_psr@fbc-psr-primary-blt.html
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-11/igt@kms_psr@fbc-psr-primary-blt.html

  * igt@kms_psr@psr2-cursor-plane-move:
    - shard-dg2:          [SKIP][363] ([i915#9673] / [i915#9732]) -> [SKIP][364] ([i915#9732]) +3 other tests skip
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-dg2-11/igt@kms_psr@psr2-cursor-plane-move.html
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-dg2-1/igt@kms_psr@psr2-cursor-plane-move.html

  * igt@runner@aborted:
    - shard-glk:          [FAIL][365] -> [FAIL][366] ([i915#10291])
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14471/shard-glk9/igt@runner@aborted.html
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10887/shard-glk1/igt@runner@aborted.html

  
  [IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
  [i915#10031]: https://gitlab.freedesktop.org/drm/intel/issues/10031
  [i915#10055]: https://gitlab.freedesktop.org/drm/intel/issues/10055
  [i915#10070]: https://gitlab.freedesktop.org/drm/intel/issues/10070
  [i915#10278]: https://gitlab.freedesktop.org/drm/intel/issues/10278
  [i915#10291]: https://gitlab.freedesktop.org/drm/intel/issues/10291
  [i915#10307]: https://gitlab.freedesktop.org/drm/intel/issues/10307
  [i915#10378]: https://gitlab.freedesktop.org/drm/intel/issues/10378
  [i915#10380]: https://gitlab.freedesktop.org/drm/intel/issues/10380
  [i915#10434]: https://gitlab.freedesktop.org/drm/intel/issues/10434
  [i915#10513]: https://gitlab.freedesktop.org/drm/intel/issues/10513
  [i915#1769]: https://gitlab.freedesktop.org/drm/intel/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#2122]: https://gitlab.freedesktop.org/drm/intel/issues/2122
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2433]: https://gitlab.freedesktop.org/drm/intel/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/intel/issues/2434
  [i915#2436]: https://gitlab.freedesktop.org/drm/intel/issues/2436
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2521]: https://gitlab.freedesktop.org/drm/intel/issues/2521
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/intel/issues/3023
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3582]: https://gitlab.freedesktop.org/drm/intel/issues/3582
  [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3743]: https://gitlab.freedesktop.org/drm/intel/issues/3743
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215
  [i915#4235]: https://gitlab.freedesktop.org/drm/intel/issues/4235
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4473]: https://gitlab.freedesktop.org/drm/intel/issues/4473
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4537]: https://gitlab.freedesktop.org/drm/intel/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4573]: https://gitlab.freedesktop.org/drm/intel/issues/4573
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4816]: https://gitlab.freedesktop.org/drm/intel/issues/4816
  [i915#4818]: https://gitlab.freedesktop.org/drm/intel/issues/4818
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
  [i915#4885]: https://gitlab.freedesktop.org/drm/intel/issues/4885
  [i915#5138]: https://gitlab.freedesktop.org/drm/intel/issues/5138
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
  [i915#5465]: https://gitlab.freedesktop.org/drm/intel/issues/5465
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#5882]: https://gitlab.freedesktop.org/drm/intel/issues/5882
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6187]: https://gitlab.freedesktop.org/drm/intel/issues/6187
  [i915#6227]: https://gitlab.freedesktop.org/drm/intel/issues/6227
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334
  [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
  [i915#6493]: https://gitlab.freedesktop.org/drm/intel/issues/6493
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6590]: https://gitlab.freedesktop.org/drm/intel/issues/6590
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#6805]: https://gitlab.freedesktop.org/drm/intel/issues/6805
  [i915#6806]: https://gitlab.freedesktop.org/drm/intel/issues/6806
  [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
  [i915#7162]: https://gitlab.freedesktop.org/drm/intel/issues/7162
  [i915#7173]: https://gitlab.freedesktop.org/drm/intel/issues/7173
  [i915#7213]: https://gitlab.freedesktop.org/drm/intel/issues/7213
  [i915#7387]: https://gitlab.freedesktop.org/drm/intel/issues/7387
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7862]: https://gitlab.freedesktop.org/drm/intel/issues/7862
  [i915#7984]: https://gitlab.freedesktop.org/drm/intel/issues/7984
  [i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228
  [i915#8292]: https://gitlab.freedesktop.org/drm/intel/issues/8292
  [i915#8381]: https://gitlab.freedesktop.org/drm/intel/issues/8381
  [i915#8411]: https://gitlab.freedesktop.org/drm/intel/issues/8411
  [i915#8414]: https://gitlab.freedesktop.org/drm/intel/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/intel/issues/8428
  [i915#8430]: https://gitlab.freedesktop.org/drm/intel/issues/8430
  [i915#8431]: https://gitlab.freedesktop.org/drm/intel/issues/8431
  [i915#8516]: https://gitlab.freedesktop.org/drm/intel/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/intel/issues/8555
  [i915#8562]: https://gitlab.freedesktop.org/drm/intel/issues/8562
  [i915#8623]: https://gitlab.freedesktop.org/drm/intel/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/intel/issues/8708
  [i915#8709]: https://gitlab.freedesktop.org/drm/intel/issues/8709
  [i915#8717]: https://gitlab.freedesktop.org/drm/intel/issues/8717
  [i915#8808]: https://gitlab.freedesktop.org/drm/intel/issues/8808
  [i915#8809]: https://gitlab.freedesktop.org/drm/intel/issues/8809
  [i915#8810]: https://gitlab.freedesktop.org/drm/intel/issues/8810
  [i915#8812]: https://gitlab.freedesktop.org/drm/intel/issues/8812
  [i915#8814]: https://gitlab.freedesktop.org/drm/intel/issues/8814
  [i915#8850]: https://gitlab.freedesktop.org/drm/intel/issues/8850
  [i915#8875]: https://gitlab.freedesktop.org/drm/intel/issues/8875
  [i915#8925]: https://gitlab.freedesktop.org/drm/intel/issues/8925
  [i915#9010]: https://gitlab.freedesktop.org/drm/intel/issues/9010
  [i915#9196]: https://gitlab.freedesktop.org/drm/intel/issues/9196
  [i915#9227]: https://gitlab.freedesktop.org/drm/intel/issues/9227
  [i915#9295]: https://gitlab.freedesktop.org/drm/intel/issues/9295
  [i915#9310]: https://gitlab.freedesktop.org/drm/intel/issues/9310
  [i915#9311]: https://gitlab.freedesktop.org/drm/intel/issues/9311
  [i915#9318]: https://gitlab.freedesktop.org/drm/intel/issues/9318
  [i915#9323]: https://gitlab.freedesktop.org/drm/intel/issues/9323
  [i915#9337]: https://gitlab.freedesktop.org/drm/intel/issues/9337
  [i915#9340]: https://gitlab.freedesktop.org/drm/intel/issues/9340
  [i915#9351]: https://gitlab.freedesktop.org/drm/intel/issues/9351
  [i915#9412]: https://gitlab.freedesktop.org/drm/intel/issues/9412
  [i915#9423]: https://gitlab.freedesktop.org/drm/intel/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/intel/issues/9424
  [i915#9519]: https://gitlab.freedesktop.org/drm/intel/issues/9519
  [i915#9569]: https://gitlab.freedesktop.org/drm/intel/issues/9569
  [i915#9606]: https://gitlab.freedesktop.org/drm/intel/issues/9606
  [i915#9673]: https://gitlab.freedesktop.org/drm/intel/issues/9673
  [i915#9683]: https://gitlab.freedesktop.org/drm/intel/issues/9683
  [i915#9688]: https://gitlab.freedesktop.org/drm/intel/issues/9688
  [i915#9723]: https://gitlab.freedesktop.org/drm/intel/issues/9723
  [i915#9728]: https://gitlab.freedesktop.org/drm/intel/issues/9728
  [i915#9732]: https://gitlab.freedesktop.org/drm/intel/issues/9732
  [i915#9808]: https://gitlab.freedesktop.org/drm/intel/issues/9808
  [i915#9809]: https://gitlab.freedesktop.org/drm/intel/issues/9809
  [i915#9820]: https://gitlab.freedesktop.org/drm/intel/issues/9820
  [i915#9846]: https://gitlab.freedesktop.org/drm/intel/issues/9846
  [i915#9849]: https://gitlab.freedesktop.org/drm/intel/issues/9849
  [i915#9906]: https://gitlab.freedesktop.org/drm/intel/issues/9906
  [i915#9917]: https://gitlab.freedesktop.org/drm/intel/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/intel/issues/9934


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7778 -> IGTPW_10887

  CI-20190529: 20190529
  CI_DRM_14471: 4ebd744e5c696e7c40464e1afa0a7ead0c740621 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_10887: 10887
  IGT_7778: 0f63f0cf1fefbf7933ca33441c7a89966e85d8c8 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

[-- Attachment #2: Type: text/html, Size: 118112 bytes --]

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

* Re: [PATCH i-g-t 1/5] tools/intel_vbt_decode: Extract dump_panel()
  2024-03-22 16:32 ` [PATCH i-g-t 1/5] tools/intel_vbt_decode: Extract dump_panel() Ville Syrjala
@ 2024-03-25 14:56   ` Jani Nikula
  0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2024-03-25 14:56 UTC (permalink / raw)
  To: Ville Syrjala, igt-dev

On Fri, 22 Mar 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Pull the repeated "dump this panel?" expression
> into a small helper.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  tools/intel_vbt_decode.c | 26 ++++++++++++++++----------
>  1 file changed, 16 insertions(+), 10 deletions(-)
>
> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
> index fd8118772845..9a65a67b42bf 100644
> --- a/tools/intel_vbt_decode.c
> +++ b/tools/intel_vbt_decode.c
> @@ -84,6 +84,12 @@ struct context {
>  	bool hexdump;
>  };
>  
> +static bool dump_panel(const struct context *context, int panel_type)
> +{
> +	return panel_type == context->panel_type ||
> +		context->dump_all_panel_types;
> +}
> +
>  /* Get BDB block size given a pointer to Block ID. */
>  static uint32_t _get_blocksize(const uint8_t *block_base)
>  {
> @@ -607,7 +613,7 @@ static void dump_backlight_info(struct context *context,
>  	}
>  
>  	for (i = 0; i < ARRAY_SIZE(backlight->data); i++) {
> -		if (i != context->panel_type && !context->dump_all_panel_types)
> +		if (!dump_panel(context, i))
>  			continue;
>  
>  		printf("\tPanel %d%s\n", i,
> @@ -1222,7 +1228,7 @@ static void dump_lvds_options(struct context *context,
>  	for (int i = 0; i < 16; i++) {
>  		unsigned int val;
>  
> -		if (i != context->panel_type && !context->dump_all_panel_types)
> +		if (!dump_panel(context, i))
>  			continue;
>  
>  		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
> @@ -1289,7 +1295,7 @@ static void dump_lvds_ptr_data(struct context *context,
>  	printf("\tNumber of entries: %d\n", ptrs->lvds_entries);
>  
>  	for (int i = 0; i < 16; i++) {
> -		if (i != context->panel_type && !context->dump_all_panel_types)
> +		if (!dump_panel(context, i))
>  			continue;
>  
>  		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
> @@ -1361,7 +1367,7 @@ static void dump_lvds_data(struct context *context,
>  			block_data(block) + ptrs->panel_name.offset;
>  		char mfg[4];
>  
> -		if (i != context->panel_type && !context->dump_all_panel_types)
> +		if (!dump_panel(context, i))
>  			continue;
>  
>  		hdisplay = _H_ACTIVE(timing_data);
> @@ -1571,7 +1577,7 @@ static void dump_edp(struct context *context,
>  	int i;
>  
>  	for (i = 0; i < 16; i++) {
> -		if (i != context->panel_type && !context->dump_all_panel_types)
> +		if (!dump_panel(context, i))
>  			continue;
>  
>  		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
> @@ -1714,7 +1720,7 @@ static void dump_psr(struct context *context,
>  	for (i = 0; i < 16; i++) {
>  		const struct psr_table *psr = &psr_block->psr_table[i];
>  
> -		if (i != context->panel_type && !context->dump_all_panel_types)
> +		if (!dump_panel(context, i))
>  			continue;
>  
>  		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
> @@ -1791,7 +1797,7 @@ static void dump_lfp_power(struct context *context,
>  		return;
>  
>  	for (i = 0; i < 16; i++) {
> -		if (i != context->panel_type && !context->dump_all_panel_types)
> +		if (!dump_panel(context, i))
>  			continue;
>  
>  		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
> @@ -1923,7 +1929,7 @@ static void dump_mipi_config(struct context *context,
>  		const struct edp_pwm_delays *pwm_delays =
>  			&start->pwm_delays[context->panel_type];
>  
> -		if (i != context->panel_type && !context->dump_all_panel_types)
> +		if (!dump_panel(context, i))
>  			continue;
>  
>  		printf("\tPanel %d%s\n", i,
> @@ -2372,7 +2378,7 @@ static void dump_mipi_sequence(struct context *context,
>  		uint32_t seq_size;
>  		int index = 0;
>  
> -		if (i != context->panel_type && !context->dump_all_panel_types)
> +		if (!dump_panel(context, i))
>  			continue;
>  
>  		data = find_panel_sequence_block(sequence, i,
> @@ -2467,7 +2473,7 @@ static void dump_compression_parameters(struct context *context,
>  		/* FIXME: need to handle sizeof(*data) != dsc->entry_size */
>  		data = &dsc->data[i];
>  
> -		if (i != context->panel_type && !context->dump_all_panel_types)
> +		if (!dump_panel(context, i))
>  			continue;
>  
>  		printf("\tDSC block %d%s\n", i,

-- 
Jani Nikula, Intel

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

* Re: [PATCH i-g-t 2/5] tools/intel_vbt_decode: Extract panel_str()
  2024-03-22 16:32 ` [PATCH i-g-t 2/5] tools/intel_vbt_decode: Extract panel_str() Ville Syrjala
@ 2024-03-25 14:56   ` Jani Nikula
  0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2024-03-25 14:56 UTC (permalink / raw)
  To: Ville Syrjala, igt-dev

On Fri, 22 Mar 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Extract the code to generate the palen==panel_type indicator
> string to a small helper.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  tools/intel_vbt_decode.c | 29 +++++++++++++++--------------
>  1 file changed, 15 insertions(+), 14 deletions(-)
>
> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
> index 9a65a67b42bf..2473812cca6d 100644
> --- a/tools/intel_vbt_decode.c
> +++ b/tools/intel_vbt_decode.c
> @@ -90,6 +90,11 @@ static bool dump_panel(const struct context *context, int panel_type)
>  		context->dump_all_panel_types;
>  }
>  
> +static const char *panel_str(const struct context *context, int panel_type)
> +{
> +	return panel_type == context->panel_type ? " *" : "";
> +}
> +
>  /* Get BDB block size given a pointer to Block ID. */
>  static uint32_t _get_blocksize(const uint8_t *block_base)
>  {
> @@ -616,8 +621,7 @@ static void dump_backlight_info(struct context *context,
>  		if (!dump_panel(context, i))
>  			continue;
>  
> -		printf("\tPanel %d%s\n", i,
> -		       context->panel_type == i ? " *" : "");
> +		printf("\tPanel %d%s\n", i, panel_str(context, i));
>  
>  		blc = &backlight->data[i];
>  
> @@ -1231,7 +1235,7 @@ static void dump_lvds_options(struct context *context,
>  		if (!dump_panel(context, i))
>  			continue;
>  
> -		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
> +		printf("\tPanel %d%s\n", i, panel_str(context, i));
>  
>  		val = panel_bits(options->lvds_panel_channel_bits, i, 2);
>  		printf("\t\tChannel type: %s (0x%x)\n",
> @@ -1298,7 +1302,7 @@ static void dump_lvds_ptr_data(struct context *context,
>  		if (!dump_panel(context, i))
>  			continue;
>  
> -		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
> +		printf("\tPanel %d%s\n", i, panel_str(context, i));
>  
>  		if (ptrs->lvds_entries >= 1) {
>  			printf("\t\tFP timing offset: %d\n",
> @@ -1381,7 +1385,7 @@ static void dump_lvds_data(struct context *context,
>  		vtotal = vdisplay + _V_BLANK(timing_data);
>  		clock = _PIXEL_CLOCK(timing_data) / 1000;
>  
> -		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
> +		printf("\tPanel %d%s\n", i, panel_str(context, i));
>  		printf("\t\t%dx%d clock %d\n",
>  		       fp_timing->x_res, fp_timing->y_res,
>  		       _PIXEL_CLOCK(timing_data));
> @@ -1580,7 +1584,7 @@ static void dump_edp(struct context *context,
>  		if (!dump_panel(context, i))
>  			continue;
>  
> -		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
> +		printf("\tPanel %d%s\n", i, panel_str(context, i));
>  
>  		printf("\t\tPower Sequence: T3 %d T7 %d T9 %d T10 %d T12 %d\n",
>  		       edp->power_seqs[i].t3,
> @@ -1723,7 +1727,7 @@ static void dump_psr(struct context *context,
>  		if (!dump_panel(context, i))
>  			continue;
>  
> -		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
> +		printf("\tPanel %d%s\n", i, panel_str(context, i));
>  
>  		printf("\t\tFull link: %s\n", YESNO(psr->full_link));
>  		printf("\t\tRequire AUX to wakeup: %s\n", YESNO(psr->require_aux_to_wakeup));
> @@ -1800,7 +1804,7 @@ static void dump_lfp_power(struct context *context,
>  		if (!dump_panel(context, i))
>  			continue;
>  
> -		printf("\tPanel %d%s\n", i, context->panel_type == i ? " *" : "");
> +		printf("\tPanel %d%s\n", i, panel_str(context, i));
>  
>  		printf("\t\tDisplay Power Saving Technology (DPST): %s\n",
>  		       YESNO(panel_bool(lfp_block->dpst, i)));
> @@ -1932,8 +1936,7 @@ static void dump_mipi_config(struct context *context,
>  		if (!dump_panel(context, i))
>  			continue;
>  
> -		printf("\tPanel %d%s\n", i,
> -		       context->panel_type == i ? " *" : "");
> +		printf("\tPanel %d%s\n", i, panel_str(context, i));
>  
>  		printf("\t\tGeneral Param\n");
>  		printf("\t\t\t BTA disable: %s\n", config->bta ? "Disabled" : "Enabled");
> @@ -2386,8 +2389,7 @@ static void dump_mipi_sequence(struct context *context,
>  		if (!data)
>  			return;
>  
> -		printf("\tPanel %d%s\n", i,
> -		       context->panel_type == i ? " *" : "");
> +		printf("\tPanel %d%s\n", i, panel_str(context, i));
>  
>  		/* Parse the sequences. Corresponds to VBT parsing in the kernel. */
>  		for (;;) {
> @@ -2476,8 +2478,7 @@ static void dump_compression_parameters(struct context *context,
>  		if (!dump_panel(context, i))
>  			continue;
>  
> -		printf("\tDSC block %d%s\n", i,
> -		       i == context->panel_type ? " *" : "");
> +		printf("\tDSC block %d%s\n", i, panel_str(context, i));
>  		printf("\t\tDSC version: %u.%u\n", data->version_major,
>  		       data->version_minor);
>  		printf("\t\tActual buffer size: %d\n",

-- 
Jani Nikula, Intel

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

* Re: [PATCH i-g-t 3/5] tools/intel_vbt_decode: Change panel indicator from * to (1)
  2024-03-22 16:32 ` [PATCH i-g-t 3/5] tools/intel_vbt_decode: Change panel indicator from * to (1) Ville Syrjala
@ 2024-03-25 14:57   ` Jani Nikula
  0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2024-03-25 14:57 UTC (permalink / raw)
  To: Ville Syrjala, igt-dev

On Fri, 22 Mar 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> In preparation for also indicating the second panel (panel_type2)
> change the indicator for the first panel (panel_type) to "(1)"
> from "*".
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  tools/intel_vbt_decode.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
> index 2473812cca6d..98f64d0822c6 100644
> --- a/tools/intel_vbt_decode.c
> +++ b/tools/intel_vbt_decode.c
> @@ -92,7 +92,7 @@ static bool dump_panel(const struct context *context, int panel_type)
>  
>  static const char *panel_str(const struct context *context, int panel_type)
>  {
> -	return panel_type == context->panel_type ? " *" : "";
> +	return panel_type == context->panel_type ? " (1)" : "";
>  }
>  
>  /* Get BDB block size given a pointer to Block ID. */

-- 
Jani Nikula, Intel

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

* Re: [PATCH i-g-t 4/5] tools/intel_vbt_decode: Also dump the second panel (panel_type2)
  2024-03-22 16:32 ` [PATCH i-g-t 4/5] tools/intel_vbt_decode: Also dump the second panel (panel_type2) Ville Syrjala
@ 2024-03-25 15:04   ` Jani Nikula
  2024-03-25 15:08     ` Ville Syrjälä
  2024-03-25 16:33   ` [PATCH i-g-t v2 " Ville Syrjala
  1 sibling, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2024-03-25 15:04 UTC (permalink / raw)
  To: Ville Syrjala, igt-dev

On Fri, 22 Mar 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Modern VBTs can declare two panel types in order to support
> dual panel systems. Dump the panel information for the second
> panel as well. Since panel_type2 could also be declared as 255
> (== match pnpid to EDID) we also add a new command line knob
> to select panel_type2 by hand.
>
> Data for the second panel will be indicated by "(2)", as opposed
> to "(1)" for the first panel.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  tools/intel_vbt_decode.c | 38 ++++++++++++++++++++++++++++++++------
>  1 file changed, 32 insertions(+), 6 deletions(-)
>
> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
> index 98f64d0822c6..f223ce2bf5a1 100644
> --- a/tools/intel_vbt_decode.c
> +++ b/tools/intel_vbt_decode.c
> @@ -79,7 +79,7 @@ struct context {
>  	int size;
>  
>  	uint32_t devid;
> -	int panel_type;
> +	int panel_type, panel_type2;
>  	bool dump_all_panel_types;
>  	bool hexdump;
>  };
> @@ -87,12 +87,16 @@ struct context {
>  static bool dump_panel(const struct context *context, int panel_type)
>  {
>  	return panel_type == context->panel_type ||
> +		panel_type == context->panel_type2 ||
>  		context->dump_all_panel_types;
>  }
>  
>  static const char *panel_str(const struct context *context, int panel_type)
>  {
> -	return panel_type == context->panel_type ? " (1)" : "";
> +	return panel_type == context->panel_type &&
> +		panel_type == context->panel_type2 ? " (1)(2)" :
> +		panel_type == context->panel_type ? " (1)" :
> +		panel_type == context->panel_type2 ? " (2)" : "";

This might be better broken down to regular if statements for clarity.

Please clue me in, when is it possible for both panel types to match?


Other than that,

Reviewed-by: Jani Nikula <jani.nikula@intel.com>


>  }
>  
>  /* Get BDB block size given a pointer to Block ID. */
> @@ -2503,18 +2507,21 @@ static void dump_compression_parameters(struct context *context,
>  }
>  
>  /* get panel type from lvds options block, or -1 if block not found */
> -static int get_panel_type(struct context *context)
> +static int get_panel_type(struct context *context, bool is_panel_type2)
>  {
>  	struct bdb_block *block;
>  	const struct bdb_lvds_options *options;
> -	int panel_type;
> +	int panel_type = -1;
>  
>  	block = find_section(context, BDB_LVDS_OPTIONS);
>  	if (!block)
>  		return -1;
>  
>  	options = block_data(block);
> -	panel_type = options->panel_type;
> +	if (!is_panel_type2)
> +		panel_type = options->panel_type;
> +	else if (context->bdb->version >= 212)
> +		panel_type = options->panel_type2;
>  
>  	free(block);
>  
> @@ -2776,6 +2783,7 @@ enum opt {
>  	OPT_FILE,
>  	OPT_DEVID,
>  	OPT_PANEL_TYPE,
> +	OPT_PANEL_TYPE2,
>  	OPT_ALL_PANELS,
>  	OPT_HEXDUMP,
>  	OPT_BLOCK,
> @@ -2812,6 +2820,7 @@ int main(int argc, char **argv)
>  	int size;
>  	struct context context = {
>  		.panel_type = -1,
> +		.panel_type2 = -1,
>  	};
>  	char *endp;
>  	int block_number = -1;
> @@ -2821,6 +2830,7 @@ int main(int argc, char **argv)
>  		{ "file",	required_argument,	NULL,	OPT_FILE },
>  		{ "devid",	required_argument,	NULL,	OPT_DEVID },
>  		{ "panel-type",	required_argument,	NULL,	OPT_PANEL_TYPE },
> +		{ "panel-type2",	required_argument,	NULL,	OPT_PANEL_TYPE2 },
>  		{ "all-panels",	no_argument,		NULL,	OPT_ALL_PANELS },
>  		{ "hexdump",	no_argument,		NULL,	OPT_HEXDUMP },
>  		{ "block",	required_argument,	NULL,	OPT_BLOCK },
> @@ -2852,6 +2862,14 @@ int main(int argc, char **argv)
>  				return EXIT_FAILURE;
>  			}
>  			break;
> +		case OPT_PANEL_TYPE2:
> +			context.panel_type2 = strtoul(optarg, &endp, 0);
> +			if (*endp || context.panel_type2 > 15) {
> +				fprintf(stderr, "invalid panel type2 '%s'\n",
> +					optarg);
> +				return EXIT_FAILURE;
> +			}
> +			break;
>  		case OPT_ALL_PANELS:
>  			context.dump_all_panel_types = true;
>  			break;
> @@ -2969,12 +2987,20 @@ int main(int argc, char **argv)
>  		fprintf(stderr, "Warning: could not find PCI device ID!\n");
>  
>  	if (context.panel_type == -1)
> -		context.panel_type = get_panel_type(&context);
> +		context.panel_type = get_panel_type(&context, false);
>  	if (context.panel_type == -1) {
>  		fprintf(stderr, "Warning: panel type not set, using 0\n");
>  		context.panel_type = 0;
>  	}
>  
> +	if (context.panel_type2 == -1)
> +		context.panel_type2 = get_panel_type(&context, true);
> +	if (context.panel_type2 != -1 && context.bdb->version < 212) {
> +		fprintf(stderr, "Warning: panel type2 not valid for BDB version %d\n",
> +			context.bdb->version);
> +		context.panel_type2 = -1;
> +	}
> +
>  	if (describe) {
>  		print_description(&context);
>  	} else if (header_only) {

-- 
Jani Nikula, Intel

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

* Re: [PATCH i-g-t 4/5] tools/intel_vbt_decode: Also dump the second panel (panel_type2)
  2024-03-25 15:04   ` Jani Nikula
@ 2024-03-25 15:08     ` Ville Syrjälä
  0 siblings, 0 replies; 20+ messages in thread
From: Ville Syrjälä @ 2024-03-25 15:08 UTC (permalink / raw)
  To: Jani Nikula; +Cc: igt-dev

On Mon, Mar 25, 2024 at 05:04:40PM +0200, Jani Nikula wrote:
> On Fri, 22 Mar 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Modern VBTs can declare two panel types in order to support
> > dual panel systems. Dump the panel information for the second
> > panel as well. Since panel_type2 could also be declared as 255
> > (== match pnpid to EDID) we also add a new command line knob
> > to select panel_type2 by hand.
> >
> > Data for the second panel will be indicated by "(2)", as opposed
> > to "(1)" for the first panel.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  tools/intel_vbt_decode.c | 38 ++++++++++++++++++++++++++++++++------
> >  1 file changed, 32 insertions(+), 6 deletions(-)
> >
> > diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
> > index 98f64d0822c6..f223ce2bf5a1 100644
> > --- a/tools/intel_vbt_decode.c
> > +++ b/tools/intel_vbt_decode.c
> > @@ -79,7 +79,7 @@ struct context {
> >  	int size;
> >  
> >  	uint32_t devid;
> > -	int panel_type;
> > +	int panel_type, panel_type2;
> >  	bool dump_all_panel_types;
> >  	bool hexdump;
> >  };
> > @@ -87,12 +87,16 @@ struct context {
> >  static bool dump_panel(const struct context *context, int panel_type)
> >  {
> >  	return panel_type == context->panel_type ||
> > +		panel_type == context->panel_type2 ||
> >  		context->dump_all_panel_types;
> >  }
> >  
> >  static const char *panel_str(const struct context *context, int panel_type)
> >  {
> > -	return panel_type == context->panel_type ? " (1)" : "";
> > +	return panel_type == context->panel_type &&
> > +		panel_type == context->panel_type2 ? " (1)(2)" :
> > +		panel_type == context->panel_type ? " (1)" :
> > +		panel_type == context->panel_type2 ? " (2)" : "";
> 
> This might be better broken down to regular if statements for clarity.

Sure.

> 
> Please clue me in, when is it possible for both panel types to match?

Either the VBT is junk, or we can have cases like
panel_type==255 + panel_type2==0 where we can't figure
out what the 255 actually means and just fall back
using panel_type==0.

> Other than that,
> 
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> 
> 
> >  }
> >  
> >  /* Get BDB block size given a pointer to Block ID. */
> > @@ -2503,18 +2507,21 @@ static void dump_compression_parameters(struct context *context,
> >  }
> >  
> >  /* get panel type from lvds options block, or -1 if block not found */
> > -static int get_panel_type(struct context *context)
> > +static int get_panel_type(struct context *context, bool is_panel_type2)
> >  {
> >  	struct bdb_block *block;
> >  	const struct bdb_lvds_options *options;
> > -	int panel_type;
> > +	int panel_type = -1;
> >  
> >  	block = find_section(context, BDB_LVDS_OPTIONS);
> >  	if (!block)
> >  		return -1;
> >  
> >  	options = block_data(block);
> > -	panel_type = options->panel_type;
> > +	if (!is_panel_type2)
> > +		panel_type = options->panel_type;
> > +	else if (context->bdb->version >= 212)
> > +		panel_type = options->panel_type2;
> >  
> >  	free(block);
> >  
> > @@ -2776,6 +2783,7 @@ enum opt {
> >  	OPT_FILE,
> >  	OPT_DEVID,
> >  	OPT_PANEL_TYPE,
> > +	OPT_PANEL_TYPE2,
> >  	OPT_ALL_PANELS,
> >  	OPT_HEXDUMP,
> >  	OPT_BLOCK,
> > @@ -2812,6 +2820,7 @@ int main(int argc, char **argv)
> >  	int size;
> >  	struct context context = {
> >  		.panel_type = -1,
> > +		.panel_type2 = -1,
> >  	};
> >  	char *endp;
> >  	int block_number = -1;
> > @@ -2821,6 +2830,7 @@ int main(int argc, char **argv)
> >  		{ "file",	required_argument,	NULL,	OPT_FILE },
> >  		{ "devid",	required_argument,	NULL,	OPT_DEVID },
> >  		{ "panel-type",	required_argument,	NULL,	OPT_PANEL_TYPE },
> > +		{ "panel-type2",	required_argument,	NULL,	OPT_PANEL_TYPE2 },
> >  		{ "all-panels",	no_argument,		NULL,	OPT_ALL_PANELS },
> >  		{ "hexdump",	no_argument,		NULL,	OPT_HEXDUMP },
> >  		{ "block",	required_argument,	NULL,	OPT_BLOCK },
> > @@ -2852,6 +2862,14 @@ int main(int argc, char **argv)
> >  				return EXIT_FAILURE;
> >  			}
> >  			break;
> > +		case OPT_PANEL_TYPE2:
> > +			context.panel_type2 = strtoul(optarg, &endp, 0);
> > +			if (*endp || context.panel_type2 > 15) {
> > +				fprintf(stderr, "invalid panel type2 '%s'\n",
> > +					optarg);
> > +				return EXIT_FAILURE;
> > +			}
> > +			break;
> >  		case OPT_ALL_PANELS:
> >  			context.dump_all_panel_types = true;
> >  			break;
> > @@ -2969,12 +2987,20 @@ int main(int argc, char **argv)
> >  		fprintf(stderr, "Warning: could not find PCI device ID!\n");
> >  
> >  	if (context.panel_type == -1)
> > -		context.panel_type = get_panel_type(&context);
> > +		context.panel_type = get_panel_type(&context, false);
> >  	if (context.panel_type == -1) {
> >  		fprintf(stderr, "Warning: panel type not set, using 0\n");
> >  		context.panel_type = 0;
> >  	}
> >  
> > +	if (context.panel_type2 == -1)
> > +		context.panel_type2 = get_panel_type(&context, true);
> > +	if (context.panel_type2 != -1 && context.bdb->version < 212) {
> > +		fprintf(stderr, "Warning: panel type2 not valid for BDB version %d\n",
> > +			context.bdb->version);
> > +		context.panel_type2 = -1;
> > +	}
> > +
> >  	if (describe) {
> >  		print_description(&context);
> >  	} else if (header_only) {
> 
> -- 
> Jani Nikula, Intel

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH i-g-t 5/5] tools/intel_vbt_decode: Optionally determine panel type from EDID
  2024-03-22 16:32 ` [PATCH i-g-t 5/5] tools/intel_vbt_decode: Optionally determine panel type from EDID Ville Syrjala
@ 2024-03-25 15:08   ` Jani Nikula
  2024-03-25 15:16     ` Ville Syrjälä
  2024-03-25 16:36   ` [PATCH i-g-t v2 " Ville Syrjala
  1 sibling, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2024-03-25 15:08 UTC (permalink / raw)
  To: Ville Syrjala, igt-dev

On Fri, 22 Mar 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> VBT may declare panel type as 255, which means we should match the
> EDID PnP ID against the panel entries in the VBT to determine the
> correct panel type. Implemnt support for this by allowing the user
> to optionally provide the EDID via a command like parameter.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  tools/intel_vbt_decode.c | 96 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 96 insertions(+)
>
> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
> index f223ce2bf5a1..9aeb8ea04d06 100644
> --- a/tools/intel_vbt_decode.c
> +++ b/tools/intel_vbt_decode.c
> @@ -84,6 +84,12 @@ struct context {
>  	bool hexdump;
>  };
>  
> +struct edid {
> +	uint8_t header[8];
> +	struct lvds_pnp_id pnpid;
> +	/* ... */
> +} __packed;
> +
>  static bool dump_panel(const struct context *context, int panel_type)
>  {
>  	return panel_type == context->panel_type ||
> @@ -2506,6 +2512,70 @@ static void dump_compression_parameters(struct context *context,
>  	}
>  }
>  
> +static int get_panel_type_pnpid(const struct context *context,
> +				const char *edid_file)
> +{
> +	struct bdb_block *ptrs_block, *data_block;
> +	const struct bdb_lvds_lfp_data *data;
> +	const struct bdb_lvds_lfp_data_ptrs *ptrs;
> +	struct lvds_pnp_id edid_id, edid_id_nodate;
> +	const struct edid *edid;
> +	int fd, best = -1;
> +
> +	fd =  open(edid_file, O_RDONLY);
            ^

superfluous space.

> +	if (fd < 0) {
> +		fprintf(stderr, "Unable to open EDID file %s\n", edid_file);
> +		return -1;
> +	}
> +
> +	edid = mmap(0, sizeof(*edid), PROT_READ, MAP_SHARED, fd, 0);
> +	close(fd);
> +	if (edid == MAP_FAILED) {
> +		fprintf(stderr, "Unable to read EDID file %s\n", edid_file);
> +		return -1;
> +	}
> +	edid_id = edid->pnpid;
> +	munmap((void*)edid, sizeof(*edid));
> +
> +	edid_id_nodate = edid_id;
> +	edid_id_nodate.mfg_week = 0;
> +	edid_id_nodate.mfg_year = 0;
> +
> +	ptrs_block = find_section(context, BDB_LVDS_LFP_DATA_PTRS);
> +	if (!ptrs_block)
> +		return -1;
> +
> +	data_block = find_section(context, BDB_LVDS_LFP_DATA);
> +	if (!data_block)
> +		return -1;
> +
> +	ptrs = block_data(ptrs_block);
> +	data = block_data(data_block);
> +
> +	for (int i = 0; i < 16; i++) {
> +		const struct lvds_pnp_id *vbt_id =
> +			(const void*)data + ptrs->ptr[i].panel_pnp_id.offset;
> +
> +		/* full match? */
> +		if (!memcmp(vbt_id, &edid_id, sizeof(*vbt_id)))
> +			return i;
> +
> +		/*
> +		 * Accept a match w/o date if no full match is found,
> +		 * and the VBT entry does not specify a date.
> +		 */
> +		if (best < 0 &&
> +		    !memcmp(vbt_id, &edid_id_nodate, sizeof(*vbt_id)))
> +			best = i;
> +	}
> +
> +	if (best >= 0) {
> +		// ... dump
> +	}

Maybe drop this?

Other than that,

Reviewed-by: Jani Nikula <jani.nikula@intel.com>


> +
> +	return best;
> +}
> +
>  /* get panel type from lvds options block, or -1 if block not found */
>  static int get_panel_type(struct context *context, bool is_panel_type2)
>  {
> @@ -2784,6 +2854,8 @@ enum opt {
>  	OPT_DEVID,
>  	OPT_PANEL_TYPE,
>  	OPT_PANEL_TYPE2,
> +	OPT_PANEL_EDID,
> +	OPT_PANEL_EDID2,
>  	OPT_ALL_PANELS,
>  	OPT_HEXDUMP,
>  	OPT_BLOCK,
> @@ -2798,6 +2870,9 @@ static void usage(const char *toolname)
>  	fprintf(stderr, " --file=<rom_file>"
>  			" [--devid=<device_id>]"
>  			" [--panel-type=<panel_type>]"
> +			" [--panel-type2=<panel_type>]"
> +			" [--panel-edid=<edid file>]"
> +			" [--panel-edid2=<edid file>]"
>  			" [--all-panels]"
>  			" [--hexdump]"
>  			" [--block=<block_no>]"
> @@ -2822,6 +2897,7 @@ int main(int argc, char **argv)
>  		.panel_type = -1,
>  		.panel_type2 = -1,
>  	};
> +	const char *panel_edid = NULL, *panel_edid2 = NULL;
>  	char *endp;
>  	int block_number = -1;
>  	bool header_only = false, describe = false;
> @@ -2830,7 +2906,9 @@ int main(int argc, char **argv)
>  		{ "file",	required_argument,	NULL,	OPT_FILE },
>  		{ "devid",	required_argument,	NULL,	OPT_DEVID },
>  		{ "panel-type",	required_argument,	NULL,	OPT_PANEL_TYPE },
> +		{ "panel-edid",	required_argument,	NULL,	OPT_PANEL_EDID },
>  		{ "panel-type2",	required_argument,	NULL,	OPT_PANEL_TYPE2 },
> +		{ "panel-edid2",	required_argument,	NULL,	OPT_PANEL_EDID2 },
>  		{ "all-panels",	no_argument,		NULL,	OPT_ALL_PANELS },
>  		{ "hexdump",	no_argument,		NULL,	OPT_HEXDUMP },
>  		{ "block",	required_argument,	NULL,	OPT_BLOCK },
> @@ -2870,6 +2948,12 @@ int main(int argc, char **argv)
>  				return EXIT_FAILURE;
>  			}
>  			break;
> +		case OPT_PANEL_EDID:
> +			panel_edid = optarg;
> +			break;
> +		case OPT_PANEL_EDID2:
> +			panel_edid2 = optarg;
> +			break;
>  		case OPT_ALL_PANELS:
>  			context.dump_all_panel_types = true;
>  			break;
> @@ -2988,6 +3072,12 @@ int main(int argc, char **argv)
>  
>  	if (context.panel_type == -1)
>  		context.panel_type = get_panel_type(&context, false);
> +	if (context.panel_type == 255 && !panel_edid) {
> +		fprintf(stderr, "Warning: panel type depends on EDID (use --panel-edid), ignoring\n");
> +		context.panel_type = -1;
> +	} else if (context.panel_type == 255) {
> +		context.panel_type = get_panel_type_pnpid(&context, panel_edid);
> +	}
>  	if (context.panel_type == -1) {
>  		fprintf(stderr, "Warning: panel type not set, using 0\n");
>  		context.panel_type = 0;
> @@ -2995,6 +3085,12 @@ int main(int argc, char **argv)
>  
>  	if (context.panel_type2 == -1)
>  		context.panel_type2 = get_panel_type(&context, true);
> +	if (context.panel_type2 == 255 && !panel_edid2) {
> +		fprintf(stderr, "Warning: panel type2 depends on EDID (use --panel-edid2), ignoring\n");
> +		context.panel_type2 = -1;
> +	} else if (context.panel_type2 == 255) {
> +		context.panel_type2 = get_panel_type_pnpid(&context, panel_edid2);
> +	}
>  	if (context.panel_type2 != -1 && context.bdb->version < 212) {
>  		fprintf(stderr, "Warning: panel type2 not valid for BDB version %d\n",
>  			context.bdb->version);

-- 
Jani Nikula, Intel

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

* Re: [PATCH i-g-t 5/5] tools/intel_vbt_decode: Optionally determine panel type from EDID
  2024-03-25 15:08   ` Jani Nikula
@ 2024-03-25 15:16     ` Ville Syrjälä
  0 siblings, 0 replies; 20+ messages in thread
From: Ville Syrjälä @ 2024-03-25 15:16 UTC (permalink / raw)
  To: Jani Nikula; +Cc: igt-dev

On Mon, Mar 25, 2024 at 05:08:57PM +0200, Jani Nikula wrote:
> On Fri, 22 Mar 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > VBT may declare panel type as 255, which means we should match the
> > EDID PnP ID against the panel entries in the VBT to determine the
> > correct panel type. Implemnt support for this by allowing the user
> > to optionally provide the EDID via a command like parameter.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  tools/intel_vbt_decode.c | 96 ++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 96 insertions(+)
> >
> > diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
> > index f223ce2bf5a1..9aeb8ea04d06 100644
> > --- a/tools/intel_vbt_decode.c
> > +++ b/tools/intel_vbt_decode.c
> > @@ -84,6 +84,12 @@ struct context {
> >  	bool hexdump;
> >  };
> >  
> > +struct edid {
> > +	uint8_t header[8];
> > +	struct lvds_pnp_id pnpid;
> > +	/* ... */
> > +} __packed;
> > +
> >  static bool dump_panel(const struct context *context, int panel_type)
> >  {
> >  	return panel_type == context->panel_type ||
> > @@ -2506,6 +2512,70 @@ static void dump_compression_parameters(struct context *context,
> >  	}
> >  }
> >  
> > +static int get_panel_type_pnpid(const struct context *context,
> > +				const char *edid_file)
> > +{
> > +	struct bdb_block *ptrs_block, *data_block;
> > +	const struct bdb_lvds_lfp_data *data;
> > +	const struct bdb_lvds_lfp_data_ptrs *ptrs;
> > +	struct lvds_pnp_id edid_id, edid_id_nodate;
> > +	const struct edid *edid;
> > +	int fd, best = -1;
> > +
> > +	fd =  open(edid_file, O_RDONLY);
>             ^
> 
> superfluous space.

ack

> 
> > +	if (fd < 0) {
> > +		fprintf(stderr, "Unable to open EDID file %s\n", edid_file);
> > +		return -1;
> > +	}
> > +
> > +	edid = mmap(0, sizeof(*edid), PROT_READ, MAP_SHARED, fd, 0);
> > +	close(fd);
> > +	if (edid == MAP_FAILED) {
> > +		fprintf(stderr, "Unable to read EDID file %s\n", edid_file);
> > +		return -1;
> > +	}
> > +	edid_id = edid->pnpid;
> > +	munmap((void*)edid, sizeof(*edid));
> > +
> > +	edid_id_nodate = edid_id;
> > +	edid_id_nodate.mfg_week = 0;
> > +	edid_id_nodate.mfg_year = 0;
> > +
> > +	ptrs_block = find_section(context, BDB_LVDS_LFP_DATA_PTRS);
> > +	if (!ptrs_block)
> > +		return -1;
> > +
> > +	data_block = find_section(context, BDB_LVDS_LFP_DATA);
> > +	if (!data_block)
> > +		return -1;
> > +
> > +	ptrs = block_data(ptrs_block);
> > +	data = block_data(data_block);
> > +
> > +	for (int i = 0; i < 16; i++) {
> > +		const struct lvds_pnp_id *vbt_id =
> > +			(const void*)data + ptrs->ptr[i].panel_pnp_id.offset;
> > +
> > +		/* full match? */
> > +		if (!memcmp(vbt_id, &edid_id, sizeof(*vbt_id)))
> > +			return i;
> > +
> > +		/*
> > +		 * Accept a match w/o date if no full match is found,
> > +		 * and the VBT entry does not specify a date.
> > +		 */
> > +		if (best < 0 &&
> > +		    !memcmp(vbt_id, &edid_id_nodate, sizeof(*vbt_id)))
> > +			best = i;
> > +	}
> > +
> > +	if (best >= 0) {
> > +		// ... dump
> > +	}
> 
> Maybe drop this?

Yeah, I had some stuff to dump the pnpids here while
debugging, and looks like this piece ended up in the
wrong patch.

> 
> Other than that,
> 
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>

Thanks.

> 
> 
> > +
> > +	return best;
> > +}
> > +
> >  /* get panel type from lvds options block, or -1 if block not found */
> >  static int get_panel_type(struct context *context, bool is_panel_type2)
> >  {
> > @@ -2784,6 +2854,8 @@ enum opt {
> >  	OPT_DEVID,
> >  	OPT_PANEL_TYPE,
> >  	OPT_PANEL_TYPE2,
> > +	OPT_PANEL_EDID,
> > +	OPT_PANEL_EDID2,
> >  	OPT_ALL_PANELS,
> >  	OPT_HEXDUMP,
> >  	OPT_BLOCK,
> > @@ -2798,6 +2870,9 @@ static void usage(const char *toolname)
> >  	fprintf(stderr, " --file=<rom_file>"
> >  			" [--devid=<device_id>]"
> >  			" [--panel-type=<panel_type>]"
> > +			" [--panel-type2=<panel_type>]"
> > +			" [--panel-edid=<edid file>]"
> > +			" [--panel-edid2=<edid file>]"
> >  			" [--all-panels]"
> >  			" [--hexdump]"
> >  			" [--block=<block_no>]"
> > @@ -2822,6 +2897,7 @@ int main(int argc, char **argv)
> >  		.panel_type = -1,
> >  		.panel_type2 = -1,
> >  	};
> > +	const char *panel_edid = NULL, *panel_edid2 = NULL;
> >  	char *endp;
> >  	int block_number = -1;
> >  	bool header_only = false, describe = false;
> > @@ -2830,7 +2906,9 @@ int main(int argc, char **argv)
> >  		{ "file",	required_argument,	NULL,	OPT_FILE },
> >  		{ "devid",	required_argument,	NULL,	OPT_DEVID },
> >  		{ "panel-type",	required_argument,	NULL,	OPT_PANEL_TYPE },
> > +		{ "panel-edid",	required_argument,	NULL,	OPT_PANEL_EDID },
> >  		{ "panel-type2",	required_argument,	NULL,	OPT_PANEL_TYPE2 },
> > +		{ "panel-edid2",	required_argument,	NULL,	OPT_PANEL_EDID2 },
> >  		{ "all-panels",	no_argument,		NULL,	OPT_ALL_PANELS },
> >  		{ "hexdump",	no_argument,		NULL,	OPT_HEXDUMP },
> >  		{ "block",	required_argument,	NULL,	OPT_BLOCK },
> > @@ -2870,6 +2948,12 @@ int main(int argc, char **argv)
> >  				return EXIT_FAILURE;
> >  			}
> >  			break;
> > +		case OPT_PANEL_EDID:
> > +			panel_edid = optarg;
> > +			break;
> > +		case OPT_PANEL_EDID2:
> > +			panel_edid2 = optarg;
> > +			break;
> >  		case OPT_ALL_PANELS:
> >  			context.dump_all_panel_types = true;
> >  			break;
> > @@ -2988,6 +3072,12 @@ int main(int argc, char **argv)
> >  
> >  	if (context.panel_type == -1)
> >  		context.panel_type = get_panel_type(&context, false);
> > +	if (context.panel_type == 255 && !panel_edid) {
> > +		fprintf(stderr, "Warning: panel type depends on EDID (use --panel-edid), ignoring\n");
> > +		context.panel_type = -1;
> > +	} else if (context.panel_type == 255) {
> > +		context.panel_type = get_panel_type_pnpid(&context, panel_edid);
> > +	}
> >  	if (context.panel_type == -1) {
> >  		fprintf(stderr, "Warning: panel type not set, using 0\n");
> >  		context.panel_type = 0;
> > @@ -2995,6 +3085,12 @@ int main(int argc, char **argv)
> >  
> >  	if (context.panel_type2 == -1)
> >  		context.panel_type2 = get_panel_type(&context, true);
> > +	if (context.panel_type2 == 255 && !panel_edid2) {
> > +		fprintf(stderr, "Warning: panel type2 depends on EDID (use --panel-edid2), ignoring\n");
> > +		context.panel_type2 = -1;
> > +	} else if (context.panel_type2 == 255) {
> > +		context.panel_type2 = get_panel_type_pnpid(&context, panel_edid2);
> > +	}
> >  	if (context.panel_type2 != -1 && context.bdb->version < 212) {
> >  		fprintf(stderr, "Warning: panel type2 not valid for BDB version %d\n",
> >  			context.bdb->version);
> 
> -- 
> Jani Nikula, Intel

-- 
Ville Syrjälä
Intel

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

* [PATCH i-g-t v2 4/5] tools/intel_vbt_decode: Also dump the second panel (panel_type2)
  2024-03-22 16:32 ` [PATCH i-g-t 4/5] tools/intel_vbt_decode: Also dump the second panel (panel_type2) Ville Syrjala
  2024-03-25 15:04   ` Jani Nikula
@ 2024-03-25 16:33   ` Ville Syrjala
  1 sibling, 0 replies; 20+ messages in thread
From: Ville Syrjala @ 2024-03-25 16:33 UTC (permalink / raw)
  To: igt-dev; +Cc: Jani Nikula

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Modern VBTs can declare two panel types in order to support
dual panel systems. Dump the panel information for the second
panel as well. Since panel_type2 could also be declared as 255
(== match pnpid to EDID) we also add a new command line knob
to select panel_type2 by hand.

Data for the second panel will be indicated by "(2)", as opposed
to "(1)" for the first panel.

We can also end up in a situation where panel_type==panel_type2.
The reasons being a dodgy VBT, or the VBT might declare
panel_type==255 and panel_type2=0, and if we can't determine
which panel the 255 refers to (via pnpid) then we just default
to panel_type==0.

v2: Break the ?: into separate ifs (Jani)
    Clarify why we can end up with panel_type==panel_type2 (Jani)

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 tools/intel_vbt_decode.c | 45 ++++++++++++++++++++++++++++++++++------
 1 file changed, 39 insertions(+), 6 deletions(-)

diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 98f64d0822c6..788c2903e4a1 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -79,7 +79,7 @@ struct context {
 	int size;
 
 	uint32_t devid;
-	int panel_type;
+	int panel_type, panel_type2;
 	bool dump_all_panel_types;
 	bool hexdump;
 };
@@ -87,12 +87,23 @@ struct context {
 static bool dump_panel(const struct context *context, int panel_type)
 {
 	return panel_type == context->panel_type ||
+		panel_type == context->panel_type2 ||
 		context->dump_all_panel_types;
 }
 
 static const char *panel_str(const struct context *context, int panel_type)
 {
-	return panel_type == context->panel_type ? " (1)" : "";
+	if (panel_type == context->panel_type &&
+	    panel_type == context->panel_type2)
+		return " (1)(2)";
+
+	if (panel_type == context->panel_type)
+		return " (1)";
+
+	if (panel_type == context->panel_type2)
+		return " (2)";
+
+	return "";
 }
 
 /* Get BDB block size given a pointer to Block ID. */
@@ -2503,18 +2514,21 @@ static void dump_compression_parameters(struct context *context,
 }
 
 /* get panel type from lvds options block, or -1 if block not found */
-static int get_panel_type(struct context *context)
+static int get_panel_type(struct context *context, bool is_panel_type2)
 {
 	struct bdb_block *block;
 	const struct bdb_lvds_options *options;
-	int panel_type;
+	int panel_type = -1;
 
 	block = find_section(context, BDB_LVDS_OPTIONS);
 	if (!block)
 		return -1;
 
 	options = block_data(block);
-	panel_type = options->panel_type;
+	if (!is_panel_type2)
+		panel_type = options->panel_type;
+	else if (context->bdb->version >= 212)
+		panel_type = options->panel_type2;
 
 	free(block);
 
@@ -2776,6 +2790,7 @@ enum opt {
 	OPT_FILE,
 	OPT_DEVID,
 	OPT_PANEL_TYPE,
+	OPT_PANEL_TYPE2,
 	OPT_ALL_PANELS,
 	OPT_HEXDUMP,
 	OPT_BLOCK,
@@ -2812,6 +2827,7 @@ int main(int argc, char **argv)
 	int size;
 	struct context context = {
 		.panel_type = -1,
+		.panel_type2 = -1,
 	};
 	char *endp;
 	int block_number = -1;
@@ -2821,6 +2837,7 @@ int main(int argc, char **argv)
 		{ "file",	required_argument,	NULL,	OPT_FILE },
 		{ "devid",	required_argument,	NULL,	OPT_DEVID },
 		{ "panel-type",	required_argument,	NULL,	OPT_PANEL_TYPE },
+		{ "panel-type2",	required_argument,	NULL,	OPT_PANEL_TYPE2 },
 		{ "all-panels",	no_argument,		NULL,	OPT_ALL_PANELS },
 		{ "hexdump",	no_argument,		NULL,	OPT_HEXDUMP },
 		{ "block",	required_argument,	NULL,	OPT_BLOCK },
@@ -2852,6 +2869,14 @@ int main(int argc, char **argv)
 				return EXIT_FAILURE;
 			}
 			break;
+		case OPT_PANEL_TYPE2:
+			context.panel_type2 = strtoul(optarg, &endp, 0);
+			if (*endp || context.panel_type2 > 15) {
+				fprintf(stderr, "invalid panel type2 '%s'\n",
+					optarg);
+				return EXIT_FAILURE;
+			}
+			break;
 		case OPT_ALL_PANELS:
 			context.dump_all_panel_types = true;
 			break;
@@ -2969,12 +2994,20 @@ int main(int argc, char **argv)
 		fprintf(stderr, "Warning: could not find PCI device ID!\n");
 
 	if (context.panel_type == -1)
-		context.panel_type = get_panel_type(&context);
+		context.panel_type = get_panel_type(&context, false);
 	if (context.panel_type == -1) {
 		fprintf(stderr, "Warning: panel type not set, using 0\n");
 		context.panel_type = 0;
 	}
 
+	if (context.panel_type2 == -1)
+		context.panel_type2 = get_panel_type(&context, true);
+	if (context.panel_type2 != -1 && context.bdb->version < 212) {
+		fprintf(stderr, "Warning: panel type2 not valid for BDB version %d\n",
+			context.bdb->version);
+		context.panel_type2 = -1;
+	}
+
 	if (describe) {
 		print_description(&context);
 	} else if (header_only) {
-- 
2.43.2


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

* [PATCH i-g-t v2 5/5] tools/intel_vbt_decode: Optionally determine panel type from EDID
  2024-03-22 16:32 ` [PATCH i-g-t 5/5] tools/intel_vbt_decode: Optionally determine panel type from EDID Ville Syrjala
  2024-03-25 15:08   ` Jani Nikula
@ 2024-03-25 16:36   ` Ville Syrjala
  1 sibling, 0 replies; 20+ messages in thread
From: Ville Syrjala @ 2024-03-25 16:36 UTC (permalink / raw)
  To: igt-dev; +Cc: Jani Nikula

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

VBT may declare panel type as 255, which means we should match the
EDID PnP ID against the panel entries in the VBT to determine the
correct panel type. Implemnt support for this by allowing the user
to optionally provide the EDID via a command like parameter.

v2: Drop extra ' ' and some lefover debug junk (Jani)

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 tools/intel_vbt_decode.c | 92 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)

diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 788c2903e4a1..c50f13886e96 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -84,6 +84,12 @@ struct context {
 	bool hexdump;
 };
 
+struct edid {
+	uint8_t header[8];
+	struct lvds_pnp_id pnpid;
+	/* ... */
+} __packed;
+
 static bool dump_panel(const struct context *context, int panel_type)
 {
 	return panel_type == context->panel_type ||
@@ -2513,6 +2519,66 @@ static void dump_compression_parameters(struct context *context,
 	}
 }
 
+static int get_panel_type_pnpid(const struct context *context,
+				const char *edid_file)
+{
+	struct bdb_block *ptrs_block, *data_block;
+	const struct bdb_lvds_lfp_data *data;
+	const struct bdb_lvds_lfp_data_ptrs *ptrs;
+	struct lvds_pnp_id edid_id, edid_id_nodate;
+	const struct edid *edid;
+	int fd, best = -1;
+
+	fd = open(edid_file, O_RDONLY);
+	if (fd < 0) {
+		fprintf(stderr, "Unable to open EDID file %s\n", edid_file);
+		return -1;
+	}
+
+	edid = mmap(0, sizeof(*edid), PROT_READ, MAP_SHARED, fd, 0);
+	close(fd);
+	if (edid == MAP_FAILED) {
+		fprintf(stderr, "Unable to read EDID file %s\n", edid_file);
+		return -1;
+	}
+	edid_id = edid->pnpid;
+	munmap((void*)edid, sizeof(*edid));
+
+	edid_id_nodate = edid_id;
+	edid_id_nodate.mfg_week = 0;
+	edid_id_nodate.mfg_year = 0;
+
+	ptrs_block = find_section(context, BDB_LVDS_LFP_DATA_PTRS);
+	if (!ptrs_block)
+		return -1;
+
+	data_block = find_section(context, BDB_LVDS_LFP_DATA);
+	if (!data_block)
+		return -1;
+
+	ptrs = block_data(ptrs_block);
+	data = block_data(data_block);
+
+	for (int i = 0; i < 16; i++) {
+		const struct lvds_pnp_id *vbt_id =
+			(const void*)data + ptrs->ptr[i].panel_pnp_id.offset;
+
+		/* full match? */
+		if (!memcmp(vbt_id, &edid_id, sizeof(*vbt_id)))
+			return i;
+
+		/*
+		 * Accept a match w/o date if no full match is found,
+		 * and the VBT entry does not specify a date.
+		 */
+		if (best < 0 &&
+		    !memcmp(vbt_id, &edid_id_nodate, sizeof(*vbt_id)))
+			best = i;
+	}
+
+	return best;
+}
+
 /* get panel type from lvds options block, or -1 if block not found */
 static int get_panel_type(struct context *context, bool is_panel_type2)
 {
@@ -2791,6 +2857,8 @@ enum opt {
 	OPT_DEVID,
 	OPT_PANEL_TYPE,
 	OPT_PANEL_TYPE2,
+	OPT_PANEL_EDID,
+	OPT_PANEL_EDID2,
 	OPT_ALL_PANELS,
 	OPT_HEXDUMP,
 	OPT_BLOCK,
@@ -2805,6 +2873,9 @@ static void usage(const char *toolname)
 	fprintf(stderr, " --file=<rom_file>"
 			" [--devid=<device_id>]"
 			" [--panel-type=<panel_type>]"
+			" [--panel-type2=<panel_type>]"
+			" [--panel-edid=<edid file>]"
+			" [--panel-edid2=<edid file>]"
 			" [--all-panels]"
 			" [--hexdump]"
 			" [--block=<block_no>]"
@@ -2829,6 +2900,7 @@ int main(int argc, char **argv)
 		.panel_type = -1,
 		.panel_type2 = -1,
 	};
+	const char *panel_edid = NULL, *panel_edid2 = NULL;
 	char *endp;
 	int block_number = -1;
 	bool header_only = false, describe = false;
@@ -2837,7 +2909,9 @@ int main(int argc, char **argv)
 		{ "file",	required_argument,	NULL,	OPT_FILE },
 		{ "devid",	required_argument,	NULL,	OPT_DEVID },
 		{ "panel-type",	required_argument,	NULL,	OPT_PANEL_TYPE },
+		{ "panel-edid",	required_argument,	NULL,	OPT_PANEL_EDID },
 		{ "panel-type2",	required_argument,	NULL,	OPT_PANEL_TYPE2 },
+		{ "panel-edid2",	required_argument,	NULL,	OPT_PANEL_EDID2 },
 		{ "all-panels",	no_argument,		NULL,	OPT_ALL_PANELS },
 		{ "hexdump",	no_argument,		NULL,	OPT_HEXDUMP },
 		{ "block",	required_argument,	NULL,	OPT_BLOCK },
@@ -2877,6 +2951,12 @@ int main(int argc, char **argv)
 				return EXIT_FAILURE;
 			}
 			break;
+		case OPT_PANEL_EDID:
+			panel_edid = optarg;
+			break;
+		case OPT_PANEL_EDID2:
+			panel_edid2 = optarg;
+			break;
 		case OPT_ALL_PANELS:
 			context.dump_all_panel_types = true;
 			break;
@@ -2995,6 +3075,12 @@ int main(int argc, char **argv)
 
 	if (context.panel_type == -1)
 		context.panel_type = get_panel_type(&context, false);
+	if (context.panel_type == 255 && !panel_edid) {
+		fprintf(stderr, "Warning: panel type depends on EDID (use --panel-edid), ignoring\n");
+		context.panel_type = -1;
+	} else if (context.panel_type == 255) {
+		context.panel_type = get_panel_type_pnpid(&context, panel_edid);
+	}
 	if (context.panel_type == -1) {
 		fprintf(stderr, "Warning: panel type not set, using 0\n");
 		context.panel_type = 0;
@@ -3002,6 +3088,12 @@ int main(int argc, char **argv)
 
 	if (context.panel_type2 == -1)
 		context.panel_type2 = get_panel_type(&context, true);
+	if (context.panel_type2 == 255 && !panel_edid2) {
+		fprintf(stderr, "Warning: panel type2 depends on EDID (use --panel-edid2), ignoring\n");
+		context.panel_type2 = -1;
+	} else if (context.panel_type2 == 255) {
+		context.panel_type2 = get_panel_type_pnpid(&context, panel_edid2);
+	}
 	if (context.panel_type2 != -1 && context.bdb->version < 212) {
 		fprintf(stderr, "Warning: panel type2 not valid for BDB version %d\n",
 			context.bdb->version);
-- 
2.43.2


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

* ✗ Fi.CI.BAT: failure for tools/intel_vbt_decode: Improve panel type handling (rev3)
  2024-03-22 16:32 [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling Ville Syrjala
                   ` (7 preceding siblings ...)
  2024-03-23 21:17 ` ✗ Fi.CI.IGT: failure " Patchwork
@ 2024-03-25 19:39 ` Patchwork
  2024-03-25 19:42 ` ✓ CI.xeBAT: success " Patchwork
  9 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2024-03-25 19:39 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 16282 bytes --]

== Series Details ==

Series: tools/intel_vbt_decode: Improve panel type handling (rev3)
URL   : https://patchwork.freedesktop.org/series/131502/
State : failure

== Summary ==

CI Bug Log - changes from IGT_7782 -> IGTPW_10903
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_10903 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_10903, please notify your bug team (I915-ci-infra@lists.freedesktop.org) 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_10903/index.html

Participating hosts (34 -> 35)
------------------------------

  Additional (4): bat-dg1-7 bat-kbl-2 fi-bsw-nick bat-mtlp-8 
  Missing    (3): fi-glk-j4005 bat-jsl-1 fi-snb-2520m 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live@execlists:
    - fi-bsw-nick:        NOTRUN -> [ABORT][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/fi-bsw-nick/igt@i915_selftest@live@execlists.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
    - {bat-mtlp-9}:       [PASS][2] -> [DMESG-WARN][3]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7782/bat-mtlp-9/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-9/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@debugfs_test@basic-hwmon:
    - bat-mtlp-8:         NOTRUN -> [SKIP][4] ([i915#9318])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@debugfs_test@basic-hwmon.html

  * igt@fbdev@info:
    - bat-kbl-2:          NOTRUN -> [SKIP][5] ([i915#1849])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-kbl-2/igt@fbdev@info.html

  * igt@gem_huc_copy@huc-copy:
    - fi-cfl-8109u:       NOTRUN -> [SKIP][6] ([i915#2190])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/fi-cfl-8109u/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - fi-bsw-nick:        NOTRUN -> [SKIP][7] +19 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/fi-bsw-nick/igt@gem_lmem_swapping@parallel-random-engines.html
    - bat-kbl-2:          NOTRUN -> [SKIP][8] +39 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-kbl-2/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@gem_lmem_swapping@verify-random:
    - fi-cfl-8109u:       NOTRUN -> [SKIP][9] ([i915#4613]) +3 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/fi-cfl-8109u/igt@gem_lmem_swapping@verify-random.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][10] ([i915#4613]) +3 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@gem_lmem_swapping@verify-random.html

  * igt@gem_mmap@basic:
    - bat-dg1-7:          NOTRUN -> [SKIP][11] ([i915#4083])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@gem_mmap@basic.html
    - bat-dg2-11:         NOTRUN -> [SKIP][12] ([i915#4083])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@gem_mmap@basic.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][13] ([i915#4083])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@gem_mmap@basic.html

  * igt@gem_mmap_gtt@basic:
    - bat-mtlp-8:         NOTRUN -> [SKIP][14] ([i915#4077]) +2 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@gem_mmap_gtt@basic.html

  * igt@gem_render_tiled_blits@basic:
    - bat-mtlp-8:         NOTRUN -> [SKIP][15] ([i915#4079]) +1 other test skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@gem_render_tiled_blits@basic.html

  * igt@gem_tiled_fence_blits@basic:
    - bat-dg1-7:          NOTRUN -> [SKIP][16] ([i915#4077]) +2 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@gem_tiled_fence_blits@basic.html
    - bat-dg2-11:         NOTRUN -> [SKIP][17] ([i915#4077]) +2 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@gem_tiled_fence_blits@basic.html

  * igt@gem_tiled_pread_basic:
    - bat-dg1-7:          NOTRUN -> [SKIP][18] ([i915#4079]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@gem_tiled_pread_basic.html
    - bat-dg2-11:         NOTRUN -> [SKIP][19] ([i915#4079]) +1 other test skip
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_rps@basic-api:
    - bat-dg1-7:          NOTRUN -> [SKIP][20] ([i915#6621])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@i915_pm_rps@basic-api.html
    - bat-dg2-11:         NOTRUN -> [SKIP][21] ([i915#6621])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@i915_pm_rps@basic-api.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][22] ([i915#6621])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@i915_pm_rps@basic-api.html

  * igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
    - bat-dg1-7:          NOTRUN -> [SKIP][23] ([i915#4212]) +7 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html
    - bat-dg2-11:         NOTRUN -> [SKIP][24] ([i915#4212]) +7 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-mtlp-8:         NOTRUN -> [SKIP][25] ([i915#5190])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-dg2-11:         NOTRUN -> [SKIP][26] ([i915#5190])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - bat-mtlp-8:         NOTRUN -> [SKIP][27] ([i915#4212]) +8 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg1-7:          NOTRUN -> [SKIP][28] ([i915#4215])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-11:         NOTRUN -> [SKIP][29] ([i915#4215] / [i915#5190])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - bat-dg2-11:         NOTRUN -> [SKIP][30] ([i915#4103] / [i915#4213]) +1 other test skip
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-mtlp-8:         NOTRUN -> [SKIP][31] ([i915#4213]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - bat-dg1-7:          NOTRUN -> [SKIP][32] ([i915#4103] / [i915#4213]) +1 other test skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-dg2-11:         NOTRUN -> [SKIP][33] ([i915#3555] / [i915#3840])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@kms_dsc@dsc-basic.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][34] ([i915#3555] / [i915#3840] / [i915#9159])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@kms_dsc@dsc-basic.html
    - bat-dg1-7:          NOTRUN -> [SKIP][35] ([i915#3555] / [i915#3840])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-mtlp-8:         NOTRUN -> [SKIP][36]
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@kms_force_connector_basic@force-load-detect.html
    - bat-dg1-7:          NOTRUN -> [SKIP][37]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@kms_force_connector_basic@force-load-detect.html
    - bat-dg2-11:         NOTRUN -> [SKIP][38]
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-dg2-11:         NOTRUN -> [SKIP][39] ([i915#5274])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@kms_force_connector_basic@prune-stale-modes.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][40] ([i915#5274])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_hdmi_inject@inject-audio:
    - bat-dg1-7:          NOTRUN -> [SKIP][41] ([i915#433])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_pm_backlight@basic-brightness:
    - bat-dg1-7:          NOTRUN -> [SKIP][42] ([i915#5354])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@kms_pm_backlight@basic-brightness.html
    - bat-dg2-11:         NOTRUN -> [SKIP][43] ([i915#5354])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@kms_pm_backlight@basic-brightness.html
    - fi-cfl-8109u:       NOTRUN -> [SKIP][44] +11 other tests skip
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/fi-cfl-8109u/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr@psr-primary-mmap-gtt@edp-1:
    - bat-mtlp-8:         NOTRUN -> [SKIP][45] ([i915#4077] / [i915#9688])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@kms_psr@psr-primary-mmap-gtt@edp-1.html

  * igt@kms_psr@psr-primary-page-flip:
    - bat-dg1-7:          NOTRUN -> [SKIP][46] ([i915#1072] / [i915#9732]) +3 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@kms_psr@psr-primary-page-flip.html

  * igt@kms_psr@psr-sprite-plane-onoff:
    - bat-dg2-11:         NOTRUN -> [SKIP][47] ([i915#1072] / [i915#9732]) +3 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-dg2-11:         NOTRUN -> [SKIP][48] ([i915#3555])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][49] ([i915#3555] / [i915#8809])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-dg1-7:          NOTRUN -> [SKIP][50] ([i915#3555])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-dg1-7:          NOTRUN -> [SKIP][51] ([i915#3708]) +3 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@prime_vgem@basic-fence-flip.html
    - bat-dg2-11:         NOTRUN -> [SKIP][52] ([i915#3708])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-fence-mmap:
    - bat-dg1-7:          NOTRUN -> [SKIP][53] ([i915#3708] / [i915#4077]) +1 other test skip
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg1-7/igt@prime_vgem@basic-fence-mmap.html
    - bat-dg2-11:         NOTRUN -> [SKIP][54] ([i915#3708] / [i915#4077]) +1 other test skip
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@prime_vgem@basic-fence-mmap.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][55] ([i915#3708] / [i915#4077]) +1 other test skip
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-fence-read:
    - bat-mtlp-8:         NOTRUN -> [SKIP][56] ([i915#3708]) +1 other test skip
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@basic-read:
    - bat-dg2-11:         NOTRUN -> [SKIP][57] ([i915#3291] / [i915#3708]) +2 other tests skip
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-11/igt@prime_vgem@basic-read.html

  * igt@prime_vgem@basic-write:
    - bat-mtlp-8:         NOTRUN -> [SKIP][58] ([i915#10216] / [i915#3708])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-mtlp-8/igt@prime_vgem@basic-write.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@guc_multi_lrc:
    - bat-dg2-9:          [ABORT][59] ([i915#10366]) -> [PASS][60]
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7782/bat-dg2-9/igt@i915_selftest@live@guc_multi_lrc.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/bat-dg2-9/igt@i915_selftest@live@guc_multi_lrc.html

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

  [i915#10216]: https://gitlab.freedesktop.org/drm/intel/issues/10216
  [i915#10366]: https://gitlab.freedesktop.org/drm/intel/issues/10366
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215
  [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#8809]: https://gitlab.freedesktop.org/drm/intel/issues/8809
  [i915#9159]: https://gitlab.freedesktop.org/drm/intel/issues/9159
  [i915#9318]: https://gitlab.freedesktop.org/drm/intel/issues/9318
  [i915#9688]: https://gitlab.freedesktop.org/drm/intel/issues/9688
  [i915#9732]: https://gitlab.freedesktop.org/drm/intel/issues/9732


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7782 -> IGTPW_10903

  CI-20190529: 20190529
  CI_DRM_14479: d1ecfbbbb194e8f7941bd84f77f7c938b461ce14 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_10903: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/index.html
  IGT_7782: a404f73182948e843640d00cc279883391cf6ef4 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

[-- Attachment #2: Type: text/html, Size: 20429 bytes --]

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

* ✓ CI.xeBAT: success for tools/intel_vbt_decode: Improve panel type handling (rev3)
  2024-03-22 16:32 [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling Ville Syrjala
                   ` (8 preceding siblings ...)
  2024-03-25 19:39 ` ✗ Fi.CI.BAT: failure for tools/intel_vbt_decode: Improve panel type handling (rev3) Patchwork
@ 2024-03-25 19:42 ` Patchwork
  9 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2024-03-25 19:42 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 1629 bytes --]

== Series Details ==

Series: tools/intel_vbt_decode: Improve panel type handling (rev3)
URL   : https://patchwork.freedesktop.org/series/131502/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_7782_BAT -> XEIGTPW_10903_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (4 -> 3)
------------------------------

  Missing    (1): bat-dg2-oem2 

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

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

### IGT changes ###

#### Warnings ####

  * igt@xe_exec_threads@threads-mixed-userptr-invalidate:
    - bat-adlp-7:         [INCOMPLETE][1] ([Intel XE#1044] / [Intel XE#1376]) -> [INCOMPLETE][2] ([Intel XE#1044])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_7782/bat-adlp-7/igt@xe_exec_threads@threads-mixed-userptr-invalidate.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10903/bat-adlp-7/igt@xe_exec_threads@threads-mixed-userptr-invalidate.html

  
  [Intel XE#1044]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1044
  [Intel XE#1376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1376


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

  * IGT: IGT_7782 -> IGTPW_10903

  IGTPW_10903: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_10903/index.html
  IGT_7782: a404f73182948e843640d00cc279883391cf6ef4 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-988-d1ecfbbbb194e8f7941bd84f77f7c938b461ce14: d1ecfbbbb194e8f7941bd84f77f7c938b461ce14

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_10903/index.html

[-- Attachment #2: Type: text/html, Size: 2253 bytes --]

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

end of thread, other threads:[~2024-03-25 19:42 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-22 16:32 [PATCH i-g-t 0/5] tools/intel_vbt_decode: Improve panel type handling Ville Syrjala
2024-03-22 16:32 ` [PATCH i-g-t 1/5] tools/intel_vbt_decode: Extract dump_panel() Ville Syrjala
2024-03-25 14:56   ` Jani Nikula
2024-03-22 16:32 ` [PATCH i-g-t 2/5] tools/intel_vbt_decode: Extract panel_str() Ville Syrjala
2024-03-25 14:56   ` Jani Nikula
2024-03-22 16:32 ` [PATCH i-g-t 3/5] tools/intel_vbt_decode: Change panel indicator from * to (1) Ville Syrjala
2024-03-25 14:57   ` Jani Nikula
2024-03-22 16:32 ` [PATCH i-g-t 4/5] tools/intel_vbt_decode: Also dump the second panel (panel_type2) Ville Syrjala
2024-03-25 15:04   ` Jani Nikula
2024-03-25 15:08     ` Ville Syrjälä
2024-03-25 16:33   ` [PATCH i-g-t v2 " Ville Syrjala
2024-03-22 16:32 ` [PATCH i-g-t 5/5] tools/intel_vbt_decode: Optionally determine panel type from EDID Ville Syrjala
2024-03-25 15:08   ` Jani Nikula
2024-03-25 15:16     ` Ville Syrjälä
2024-03-25 16:36   ` [PATCH i-g-t v2 " Ville Syrjala
2024-03-22 18:51 ` ✓ CI.xeBAT: success for tools/intel_vbt_decode: Improve panel type handling Patchwork
2024-03-22 18:56 ` ✓ Fi.CI.BAT: " Patchwork
2024-03-23 21:17 ` ✗ Fi.CI.IGT: failure " Patchwork
2024-03-25 19:39 ` ✗ Fi.CI.BAT: failure for tools/intel_vbt_decode: Improve panel type handling (rev3) Patchwork
2024-03-25 19:42 ` ✓ CI.xeBAT: success " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.