Skip to contentSkip to conversation

Add audio EDID tests to Chamelium

PATCH In review Simon Ser 5 participants 25 messages May 31, 2019 – Jun 4, 2019

Subsystems (2)
lore
Share & tools
lore

Simon Ser

author
#0 lore raw

cover Add audio EDID tests to Chamelium

This series isolates the EDID-Like Data procfs parsing library and uses it from Chamelium tests.

This series superseedes the previous one beginning with "lib/igt_eld: introduce an ELD library".

Simon Ser (5):
lib/igt_eld: introduce an ELD library lib/igt_eld: consolidate ELD parsing
lib/igt_eld: parse Short Audio Descriptors lib/igt_eld: allow retrieving an ELD entry per monitor name tests/kms_chamelium: add an audio EDID test

 lib/igt_edid.h          |   2 +
 lib/igt_eld.c           | 214 ++++++++++++++++++++++++++++++++++++++++
 lib/igt_eld.h           |  54 ++++++++++
 lib/meson.build         |   1 +
 tests/kms_chamelium.c   |  69 ++++++++++++-
 tests/kms_hdmi_inject.c |  86 ++--------------
 6 files changed, 342 insertions(+), 84 deletions(-)
 create mode 100644 lib/igt_eld.c
 create mode 100644 lib/igt_eld.h

--
2.21.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#1 lore raw

PATCH 1/5 lib/igt_eld: introduce an ELD library

There are two reasons why I want to introduce this library:

- I want to use it from the Chamelium tests for DisplayPort
- I want to expand it to also check that audio parameters parsed by ALSA are correct (formats, sampling rates, sample sizes and so on)

---
 lib/igt_eld.c           | 111 ++++++++++++++++++++++++++++++++++++++++
 lib/igt_eld.h           |  35 +++++++++++++
 lib/meson.build         |   1 +
 tests/kms_hdmi_inject.c |  80 ++---------------------------
 4 files changed, 152 insertions(+), 75 deletions(-)
 create mode 100644 lib/igt_eld.c
 create mode 100644 lib/igt_eld.h
lib/igt_eld.c new file +111 -0
new file mode 100644
index 000000000000..8e0dcc306e85
@@ -0,0 +1,111 @@
+/*
+ * Copyright © 2019 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors: Simon Ser <[email protected]>
+ */
+
+#include "config.h"
+
+#include <dirent.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "igt_eld.h"
+
+/**
+ * EDID-Like Data (ELD) is metadata parsed and exposed by ALSA for HDMI and
+ * DisplayPort connectors supporting audio. This includes the monitor name and
+ * the supported audio parameters (formats, sampling rates, sample sizes and so
+ * on).
+ */
+
+/** eld_entry_is_igt: checks whether an ELD entry is mapped to the IGT EDID */
+static bool eld_entry_is_igt(const char *path)
+{
+	FILE *in;
+	char buf[1024];
+	uint8_t eld_valid = 0;
+	uint8_t mon_valid = 0;
+
+	in = fopen(path, "r");
+	if (!in)
+		return false;
+
+	memset(buf, 0, 1024);
+
+	while ((fgets(buf, 1024, in)) != NULL) {
+		char *line = buf;
+
+		if (!strncasecmp(line, "eld_valid", 9) &&
+				strstr(line, "1")) {
+			eld_valid++;
+		}
+
+		if (!strncasecmp(line, "monitor_name", 12) &&
+				strstr(line, "IGT")) {
+			mon_valid++;
+		}
+	}
+
+	fclose(in);
+	if (mon_valid && eld_valid)
+		return true;
+
+	return false;
+}
+
+/** eld_has_igt: check whether ALSA has detected the audio-capable IGT EDID by
+ * parsing ELD entries */
+bool eld_has_igt(void)
+{
+	DIR *dir;
+	struct dirent *snd_hda;
+	int i;
+
+	for (i = 0; i < 8; i++) {
+		char cards[128];
+
+		snprintf(cards, sizeof(cards), "/proc/asound/card%d", i);
+		dir = opendir(cards);
+		if (!dir)
+			continue;
+
+		while ((snd_hda = readdir(dir))) {
+			char fpath[PATH_MAX];
+
+			if (*snd_hda->d_name == '.' ||
+			    strstr(snd_hda->d_name, "eld") == 0)
+				continue;
+
+			snprintf(fpath, sizeof(fpath), "%s/%s", cards,
+				 snd_hda->d_name);
+			if (eld_entry_is_igt(fpath)) {
+				closedir(dir);
+				return true;
+			}
+		}
+		closedir(dir);
+	}
+
+	return false;
+}
lib/igt_eld.h new file +35 -0
new file mode 100644
index 000000000000..27f876d9f631
@@ -0,0 +1,35 @@
+/*
+ * Copyright © 2019 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors: Simon Ser <[email protected]>
+ */
+
+#ifndef IGT_ELD_H
+#define IGT_ELD_H
+
+#include "config.h"
+
+#include <stdbool.h>
+
+bool eld_has_igt(void);
+
+#endif
lib/meson.build +1 -0
index cdb450e1e762..844e0abcd919 100644
@@ -59,6 +59,7 @@ lib_sources = [
 	'igt_psr.c',
 	'igt_amd.c',
 	'igt_edid.c',
+	'igt_eld.c',
 ]
 
 lib_deps = [
tests/kms_hdmi_inject.c +5 -75

100 lines not on this page · raw message

Signature · 6 lines
2.21.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
Reviewed-by on v1 1/5
#2 lore raw

Re: [igt-dev] [PATCH i-g-t 1/5] lib/igt_eld: introduce an ELD library

Quoted 73 lines · Simon Ser

There are two reasons why I want to introduce this library:

- I want to use it from the Chamelium tests for DisplayPort
- I want to expand it to also check that audio parameters parsed by ALSA are correct (formats, sampling rates, sample sizes and so on)

---
 lib/igt_eld.c           | 111 ++++++++++++++++++++++++++++++++++++++++
 lib/igt_eld.h           |  35 +++++++++++++
 lib/meson.build         |   1 +
 tests/kms_hdmi_inject.c |  80 ++---------------------------
 4 files changed, 152 insertions(+), 75 deletions(-)
 create mode 100644 lib/igt_eld.c
 create mode 100644 lib/igt_eld.h
lib/igt_eld.c new file +51 -0
new file mode 100644
index 000000000000..8e0dcc306e85
@@ -0,0 +1,111 @@
+/*
+ * Copyright © 2019 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors: Simon Ser <[email protected]>
+ */
+
+#include "config.h"
+
+#include <dirent.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "igt_eld.h"
+
+/**
+ * EDID-Like Data (ELD) is metadata parsed and exposed by ALSA for HDMI and
+ * DisplayPort connectors supporting audio. This includes the monitor name and
+ * the supported audio parameters (formats, sampling rates, sample sizes and so
+ * on).
+ */
+
+/** eld_entry_is_igt: checks whether an ELD entry is mapped to the IGT EDID */
+static bool eld_entry_is_igt(const char *path)
+{
+	FILE *in;
+	char buf[1024];
+	uint8_t eld_valid = 0;
+	uint8_t mon_valid = 0;
+
+	in = fopen(path, "r");
+	if (!in)

lib/igt_eld.c line 61

Quoted 10 lines
lib/igt_eld.c new file +10 -0
+		return false;
+
+	memset(buf, 0, 1024);
+
+	while ((fgets(buf, 1024, in)) != NULL) {
+		char *line = buf;
+
+		if (!strncasecmp(line, "eld_valid", 9) &&
+				strstr(line, "1")) {
+			eld_valid++;

I understand that you are just copy-pasting the previous implementation, but this is not exactly the nicest way of making a boolean. How about just setting it to 1, to make it clear that we are not counting anything?

This could be done in another patch or merged in this one.

Quoted 203 lines
lib/igt_eld.c new file +50 -0
+		}
+
+		if (!strncasecmp(line, "monitor_name", 12) &&
+				strstr(line, "IGT")) {
+			mon_valid++;
+		}
+	}
+
+	fclose(in);
+	if (mon_valid && eld_valid)
+		return true;
+
+	return false;
+}
+
+/** eld_has_igt: check whether ALSA has detected the audio-capable IGT EDID by
+ * parsing ELD entries */
+bool eld_has_igt(void)
+{
+	DIR *dir;
+	struct dirent *snd_hda;
+	int i;
+
+	for (i = 0; i < 8; i++) {
+		char cards[128];
+
+		snprintf(cards, sizeof(cards), "/proc/asound/card%d", i);
+		dir = opendir(cards);
+		if (!dir)
+			continue;
+
+		while ((snd_hda = readdir(dir))) {
+			char fpath[PATH_MAX];
+
+			if (*snd_hda->d_name == '.' ||
+			    strstr(snd_hda->d_name, "eld") == 0)
+				continue;
+
+			snprintf(fpath, sizeof(fpath), "%s/%s", cards,
+				 snd_hda->d_name);
+			if (eld_entry_is_igt(fpath)) {
+				closedir(dir);
+				return true;
+			}
+		}
+		closedir(dir);
+	}
+
+	return false;
+}
lib/igt_eld.h new file +35 -0
new file mode 100644
index 000000000000..27f876d9f631
@@ -0,0 +1,35 @@
+/*
+ * Copyright © 2019 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * Authors: Simon Ser <[email protected]>
+ */
+
+#ifndef IGT_ELD_H
+#define IGT_ELD_H
+
+#include "config.h"
+
+#include <stdbool.h>
+
+bool eld_has_igt(void);
+
+#endif
lib/meson.build +1 -0
index cdb450e1e762..844e0abcd919 100644
@@ -59,6 +59,7 @@ lib_sources = [
 	'igt_psr.c',
 	'igt_amd.c',
 	'igt_edid.c',
+	'igt_eld.c',
 ]
 
 lib_deps = [
tests/kms_hdmi_inject.c +4 -74
index a24061042c20..eba25046cead 100644
@@ -22,8 +22,12 @@
  *
  */
 
+#include "config.h"
+
 #include <dirent.h>
+
 #include "igt.h"
+#include "igt_eld.h"
 
 #define HDISPLAY_4K	3840
 #define VDISPLAY_4K	2160
@@ -134,80 +138,6 @@ hdmi_inject_4k(int drm_fd, drmModeConnector *connector)
 	free(edid);
 }
 
-/** eld_entry_is_igt: checks whether an ELD entry is mapped to the IGT EDID */
-static bool
-eld_entry_is_igt(const char* path)
-{
-	FILE *in;
-	char buf[1024];
-	uint8_t eld_valid = 0;
-	uint8_t mon_valid = 0;
-
-	in = fopen(path, "r");
-	if (!in)
-		return false;
-
-	memset(buf, 0, 1024);
-
-	while ((fgets(buf, 1024, in)) != NULL) {
-
-		char *line = buf;
-
-		if (!strncasecmp(line, "eld_valid", 9) &&
-				strstr(line, "1")) {
-			eld_valid++;
-		}
-
-		if (!strncasecmp(line, "monitor_name", 12) &&
-				strstr(line, "IGT")) {
-			mon_valid++;
-		}
-	}
-
-	fclose(in);
-	if (mon_valid && eld_valid)
-		return true;
-
-	return false;
-}
-
-/** eld_is_valid: check whether ALSA has detected the audio-capable IGT EDID by
- * parsing ELD entries */
-static bool
-eld_is_valid(void)
-{
-	DIR *dir;
-	struct dirent *snd_hda;
-	int i;
-
-	for (i = 0; i < 8; i++) {
-		char cards[128];
-
-		snprintf(cards, sizeof(cards), "/proc/asound/card%d", i);
-		dir = opendir(cards);
-		if (!dir)
-			continue;
-
-		while ((snd_hda = readdir(dir))) {
-			char fpath[PATH_MAX];
-
-			if (*snd_hda->d_name == '.' ||
-			    strstr(snd_hda->d_name, "eld") == 0)
-				continue;
-
-			snprintf(fpath, sizeof(fpath), "%s/%s", cards,
-				 snd_hda->d_name);
-			if (eld_entry_is_igt(fpath)) {
-				closedir(dir);
-				return true;
-			}
-		}
-		closedir(dir);
-	}
-
-	return false;
-}
-
 static void
 hdmi_inject_audio(int drm_fd, drmModeConnector *connector)
 {

tests/kms_hdmi_inject.c hdmi_inject_audio(int drm_fd, drmModeConnector *connector) · line 188

Quoted 8 lines
tests/kms_hdmi_inject.c +1 -1
@@ -252,7 +182,7 @@ hdmi_inject_audio(int drm_fd, drmModeConnector *connector)
 	 * Test if we have /proc/asound/HDMI/eld#0.0 and is its contents are
 	 * valid.
 	 */
-	igt_assert(eld_is_valid());
+	igt_assert(eld_has_igt());
 
 	igt_remove_fb(drm_fd, &fb);
 

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#3 lore raw

PATCH 2/5 lib/igt_eld: consolidate ELD parsing

In reply to Simon Ser

Make the ELD enumeration more robust, and implement proper parsing for ELD fields. This will become useful when other ELD fields (formats, sample rates, sample sizes) will be parsed and checked.

---
 lib/igt_eld.c | 94 +++++++++++++++++++++++++++++++--------------------
 lib/igt_eld.h |  5 +++
 2 files changed, 63 insertions(+), 36 deletions(-)
lib/igt_eld.c +58 -36
index 8e0dcc306e85..a198001a56d7 100644
@@ -30,8 +30,12 @@
 #include <stdio.h>
 #include <string.h>
 
+#include "igt_core.h"
 #include "igt_eld.h"
 
+#define ELD_PREFIX "eld#"
+#define ELD_DELIM " \t"
+
 /**
  * EDID-Like Data (ELD) is metadata parsed and exposed by ALSA for HDMI and
  * DisplayPort connectors supporting audio. This includes the monitor name and
@@ -39,39 +43,49 @@
  * on).
  */
 
-/** eld_entry_is_igt: checks whether an ELD entry is mapped to the IGT EDID */
-static bool eld_entry_is_igt(const char *path)
+static bool eld_parse_entry(const char *path, struct eld_entry *eld)
 {
-	FILE *in;
+	FILE *f;
 	char buf[1024];
-	uint8_t eld_valid = 0;
-	uint8_t mon_valid = 0;
-
-	in = fopen(path, "r");
-	if (!in)
-		return false;
+	char *key, *value;
+	size_t len;
+	bool monitor_present;
 
-	memset(buf, 0, 1024);
+	memset(eld, 0, sizeof(*eld));
 
-	while ((fgets(buf, 1024, in)) != NULL) {
-		char *line = buf;
+	f = fopen(path, "r");
+	if (!f) {
+		igt_debug("Failed to open ELD file: %s\n", path);
+		return false;
+	}
 
-		if (!strncasecmp(line, "eld_valid", 9) &&
-				strstr(line, "1")) {
-			eld_valid++;
-		}
+	while ((fgets(buf, sizeof(buf), f)) != NULL) {
+		len = strlen(buf);
+		if (buf[len - 1] == '\n')
+			buf[len - 1] = '\0';
+
+		key = strtok(buf, ELD_DELIM);
+		value = strtok(NULL, "");
+		/* Skip whitespace at the beginning */
+		value += strspn(value, ELD_DELIM);
+
+		if (strcmp(key, "monitor_present") == 0)
+			monitor_present = strcmp(value, "1") == 0;
+		else if (strcmp(key, "eld_valid") == 0)
+			eld->valid = strcmp(value, "1") == 0;
+		else if (strcmp(key, "monitor_name") == 0)
+			snprintf(eld->monitor_name, sizeof(eld->monitor_name),
+				 "%s", value);
+	}
 
-		if (!strncasecmp(line, "monitor_name", 12) &&
-				strstr(line, "IGT")) {
-			mon_valid++;
-		}
+	if (ferror(f) != 0) {
+		igt_debug("Failed to read ELD file: %d\n", ferror(f));
+		return false;
 	}
 
-	fclose(in);
-	if (mon_valid && eld_valid)
-		return true;
+	fclose(f);
 
-	return false;
+	return monitor_present;
 }
 
 /** eld_has_igt: check whether ALSA has detected the audio-capable IGT EDID by
@@ -79,27 +93,35 @@ static bool eld_entry_is_igt(const char *path)
 bool eld_has_igt(void)
 {
 	DIR *dir;
-	struct dirent *snd_hda;
+	struct dirent *dirent;
 	int i;
+	char card[64];
+	char path[PATH_MAX];
+	struct eld_entry eld;
 
 	for (i = 0; i < 8; i++) {
-		char cards[128];
-
-		snprintf(cards, sizeof(cards), "/proc/asound/card%d", i);
-		dir = opendir(cards);
+		snprintf(card, sizeof(card), "/proc/asound/card%d", i);
+		dir = opendir(card);
 		if (!dir)
 			continue;
 
-		while ((snd_hda = readdir(dir))) {
-			char fpath[PATH_MAX];
+		while ((dirent = readdir(dir))) {
+			if (strncmp(dirent->d_name, ELD_PREFIX,
+				    strlen(ELD_PREFIX)) != 0)
+				continue;
+
+			snprintf(path, sizeof(path), "%s/%s", card,
+				 dirent->d_name);
+			if (!eld_parse_entry(path, &eld)) {
+				continue;
+			}
 
-			if (*snd_hda->d_name == '.' ||
-			    strstr(snd_hda->d_name, "eld") == 0)
+			if (!eld.valid) {
+				igt_debug("Skipping invalid ELD: %s\n", path);
 				continue;
+			}
 
-			snprintf(fpath, sizeof(fpath), "%s/%s", cards,
-				 snd_hda->d_name);
-			if (eld_entry_is_igt(fpath)) {
+			if (strcmp(eld.monitor_name, "IGT") == 0) {
 				closedir(dir);
 				return true;
 			}
lib/igt_eld.h +5 -0
index 27f876d9f631..21fe3537acf9 100644
@@ -30,6 +30,11 @@
 
 #include <stdbool.h>
 
+struct eld_entry {
+	bool valid;
+	char monitor_name[16];
+};
+
 bool eld_has_igt(void);
 
 #endif
Signature · 6 lines
2.21.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
Reviewed-by on v1 2/5
#4 lore raw

Re: [igt-dev] [PATCH i-g-t 2/5] lib/igt_eld: consolidate ELD parsing

Quoted 28 lines · Simon Ser

Make the ELD enumeration more robust, and implement proper parsing for ELD fields. This will become useful when other ELD fields (formats, sample rates, sample sizes) will be parsed and checked.

---
 lib/igt_eld.c | 94 +++++++++++++++++++++++++++++++--------------------
 lib/igt_eld.h |  5 +++
 2 files changed, 63 insertions(+), 36 deletions(-)
lib/igt_eld.c +4 -0
index 8e0dcc306e85..a198001a56d7 100644
@@ -30,8 +30,12 @@
 #include <stdio.h>
 #include <string.h>
 
+#include "igt_core.h"
 #include "igt_eld.h"
 
+#define ELD_PREFIX "eld#"
+#define ELD_DELIM " \t"
+
 /**
  * EDID-Like Data (ELD) is metadata parsed and exposed by ALSA for HDMI and
  * DisplayPort connectors supporting audio. This includes the monitor name and

lib/igt_eld.c line 42

Quoted 4 lines
lib/igt_eld.c +0 -1
@@ -39,39 +43,49 @@
  * on).
  */
 
-/** eld_entry_is_igt: checks whether an ELD entry is mapped to the IGT EDID */

Posting an example of eld here would be helpful:

$ cat /proc/asound/card0/eld#0.2
monitor_present         1
eld_valid               1
monitor_name            U2879G6
connection_type         DisplayPort
eld_version             [0x2] CEA-861D or below
edid_version            [0x3] CEA-861-B, C or D
manufacture_id          0xe305
product_id              0x2879
port_id                 0x800
support_hdcp            0
support_ai              0
audio_sync_delay        0
speakers                [0x1] FL/FR
sad_count               1
sad0_coding_type        [0x1] LPCM
sad0_channels           2
sad0_rates              [0xe0] 32000 44100 48000
sad0_bits               [0xe0000] 16 20 24
Quoted 21 lines
lib/igt_eld.c +6 -11
-static bool eld_entry_is_igt(const char *path)
+static bool eld_parse_entry(const char *path, struct eld_entry *eld)
 {
-	FILE *in;
+	FILE *f;
 	char buf[1024];
-	uint8_t eld_valid = 0;
-	uint8_t mon_valid = 0;
-
-	in = fopen(path, "r");
-	if (!in)
-		return false;
+	char *key, *value;
+	size_t len;
+	bool monitor_present;
 
-	memset(buf, 0, 1024);
+	memset(eld, 0, sizeof(*eld));
 
-	while ((fgets(buf, 1024, in)) != NULL) {
-		char *line = buf;

lib/igt_eld.c line 62

Quoted 10 lines
lib/igt_eld.c +5 -4
+	f = fopen(path, "r");
+	if (!f) {
+		igt_debug("Failed to open ELD file: %s\n", path);
+		return false;
+	}
 
-		if (!strncasecmp(line, "eld_valid", 9) &&
-				strstr(line, "1")) {
-			eld_valid++;
-		}

Good riddance! Ignore my comment from patch 1!

lib/igt_eld.c line 68

Quoted 7 lines
lib/igt_eld.c +7 -0
+	while ((fgets(buf, sizeof(buf), f)) != NULL) {
+		len = strlen(buf);
+		if (buf[len - 1] == '\n')
+			buf[len - 1] = '\0';
+
+		key = strtok(buf, ELD_DELIM);
+		value = strtok(NULL, "");

Hmm, I had forgotten that strok was stateful when str == NULL!

lib/igt_eld.c line 70

Quoted 2 lines
lib/igt_eld.c +2 -0
+		/* Skip whitespace at the beginning */
+		value += strspn(value, ELD_DELIM);

Thanks for teaching me a new function :) This is quite practical!

After doing more python work, going back to parsing with C is a little rough :D Not as bad as ASM though!

Quoted 57 lines
lib/igt_eld.c +25 -15
+
+		if (strcmp(key, "monitor_present") == 0)
+			monitor_present = strcmp(value, "1") == 0;
+		else if (strcmp(key, "eld_valid") == 0)
+			eld->valid = strcmp(value, "1") == 0;
+		else if (strcmp(key, "monitor_name") == 0)
+			snprintf(eld->monitor_name, sizeof(eld->monitor_name),
+				 "%s", value);
+	}
 
-		if (!strncasecmp(line, "monitor_name", 12) &&
-				strstr(line, "IGT")) {
-			mon_valid++;
-		}
+	if (ferror(f) != 0) {
+		igt_debug("Failed to read ELD file: %d\n", ferror(f));
+		return false;
 	}
 
-	fclose(in);
-	if (mon_valid && eld_valid)
-		return true;
+	fclose(f);
 
-	return false;
+	return monitor_present;
 }
 
 /** eld_has_igt: check whether ALSA has detected the audio-capable IGT EDID by
@@ -79,27 +93,35 @@ static bool eld_entry_is_igt(const char *path)
 bool eld_has_igt(void)
 {
 	DIR *dir;
-	struct dirent *snd_hda;
+	struct dirent *dirent;
 	int i;
+	char card[64];
+	char path[PATH_MAX];
+	struct eld_entry eld;
 
 	for (i = 0; i < 8; i++) {
-		char cards[128];
-
-		snprintf(cards, sizeof(cards), "/proc/asound/card%d", i);
-		dir = opendir(cards);
+		snprintf(card, sizeof(card), "/proc/asound/card%d", i);
+		dir = opendir(card);
 		if (!dir)
 			continue;
 
-		while ((snd_hda = readdir(dir))) {
-			char fpath[PATH_MAX];
+		while ((dirent = readdir(dir))) {
+			if (strncmp(dirent->d_name, ELD_PREFIX,
+				    strlen(ELD_PREFIX)) != 0)
+				continue;
+

lib/igt_eld.c static bool eld_entry_is_igt(const char *path) · line 120

Quoted 10 lines
lib/igt_eld.c +7 -2
+			snprintf(path, sizeof(path), "%s/%s", card,
+				 dirent->d_name);
+			if (!eld_parse_entry(path, &eld)) {
+				continue;
+			}
 
-			if (*snd_hda->d_name == '.' ||
-			    strstr(snd_hda->d_name, "eld") == 0)
+			if (!eld.valid) {
+				igt_debug("Skipping invalid ELD: %s\n", path);

The message is a little confusing. How about "Skipping non-ELD file:
%s\n" instead?

Anyway, I like where this is going!

Quoted 17 lines
lib/igt_eld.c +2 -3
 				continue;
+			}
 
-			snprintf(fpath, sizeof(fpath), "%s/%s", cards,
-				 snd_hda->d_name);
-			if (eld_entry_is_igt(fpath)) {
+			if (strcmp(eld.monitor_name, "IGT") == 0) {
 				closedir(dir);
 				return true;
 			}
lib/igt_eld.h +0 -0
index 27f876d9f631..21fe3537acf9 100644
@@ -30,6 +30,11 @@
 

lib/igt_eld.h line 40

Quoted 10 lines
lib/igt_eld.h +5 -0
 #include <stdbool.h>
 
+struct eld_entry {
+	bool valid;
+	char monitor_name[16];
+};
+
 bool eld_has_igt(void);
 
 #endif

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#5 lore raw

Re: [igt-dev] [PATCH i-g-t 2/5] lib/igt_eld: consolidate ELD parsing

Quoted 101 lines · Martin Peres
Quoted 28 lines · Simon Ser

Make the ELD enumeration more robust, and implement proper parsing for ELD fields. This will become useful when other ELD fields (formats, sample rates, sample sizes) will be parsed and checked.

---
 lib/igt_eld.c | 94 +++++++++++++++++++++++++++++++--------------------
 lib/igt_eld.h |  5 +++
 2 files changed, 63 insertions(+), 36 deletions(-)
lib/igt_eld.c +4 -0
index 8e0dcc306e85..a198001a56d7 100644
@@ -30,8 +30,12 @@
 #include <stdio.h>
 #include <string.h>
 
+#include "igt_core.h"
 #include "igt_eld.h"
 
+#define ELD_PREFIX "eld#"
+#define ELD_DELIM " \t"
+
 /**
  * EDID-Like Data (ELD) is metadata parsed and exposed by ALSA for HDMI and
  * DisplayPort connectors supporting audio. This includes the monitor name and

lib/igt_eld.c line 42

Quoted 4 lines
lib/igt_eld.c +0 -1
@@ -39,39 +43,49 @@
  * on).
  */
 
-/** eld_entry_is_igt: checks whether an ELD entry is mapped to the IGT EDID */

Posting an example of eld here would be helpful:

$ cat /proc/asound/card0/eld#0.2
monitor_present         1
eld_valid               1
monitor_name            U2879G6
connection_type         DisplayPort
eld_version             [0x2] CEA-861D or below
edid_version            [0x3] CEA-861-B, C or D
manufacture_id          0xe305
product_id              0x2879
port_id                 0x800
support_hdcp            0
support_ai              0
audio_sync_delay        0
speakers                [0x1] FL/FR
sad_count               1
sad0_coding_type        [0x1] LPCM
sad0_channels           2
sad0_rates              [0xe0] 32000 44100 48000
sad0_bits               [0xe0000] 16 20 24
Quoted 21 lines
lib/igt_eld.c +6 -11
-static bool eld_entry_is_igt(const char *path)
+static bool eld_parse_entry(const char *path, struct eld_entry *eld)
 {
-	FILE *in;
+	FILE *f;
 	char buf[1024];
-	uint8_t eld_valid = 0;
-	uint8_t mon_valid = 0;
-
-	in = fopen(path, "r");
-	if (!in)
-		return false;
+	char *key, *value;
+	size_t len;
+	bool monitor_present;
 
-	memset(buf, 0, 1024);
+	memset(eld, 0, sizeof(*eld));
 
-	while ((fgets(buf, 1024, in)) != NULL) {
-		char *line = buf;

lib/igt_eld.c line 62

Quoted 10 lines
lib/igt_eld.c +5 -4
+	f = fopen(path, "r");
+	if (!f) {
+		igt_debug("Failed to open ELD file: %s\n", path);
+		return false;
+	}
 
-		if (!strncasecmp(line, "eld_valid", 9) &&
-				strstr(line, "1")) {
-			eld_valid++;
-		}

Good riddance! Ignore my comment from patch 1!

lib/igt_eld.c line 68

Quoted 7 lines
lib/igt_eld.c +7 -0
+	while ((fgets(buf, sizeof(buf), f)) != NULL) {
+		len = strlen(buf);
+		if (buf[len - 1] == '\n')
+			buf[len - 1] = '\0';
+
+		key = strtok(buf, ELD_DELIM);
+		value = strtok(NULL, "");

Hmm, I had forgotten that strok was stateful when str == NULL!

Quoted 7 lines

lib/igt_eld.c line 70

Quoted 2 lines
lib/igt_eld.c +2 -0
+		/* Skip whitespace at the beginning */
+		value += strspn(value, ELD_DELIM);

Thanks for teaching me a new function :) This is quite practical!

After doing more python work, going back to parsing with C is a little rough :D Not as bad as ASM though!

Eheh, I can imagine that :P

Quoted 63 lines
Quoted 63 lines
lib/igt_eld.c +30 -15
+
+		if (strcmp(key, "monitor_present") == 0)
+			monitor_present = strcmp(value, "1") == 0;
+		else if (strcmp(key, "eld_valid") == 0)
+			eld->valid = strcmp(value, "1") == 0;
+		else if (strcmp(key, "monitor_name") == 0)
+			snprintf(eld->monitor_name, sizeof(eld->monitor_name),
+				 "%s", value);
+	}
 
-		if (!strncasecmp(line, "monitor_name", 12) &&
-				strstr(line, "IGT")) {
-			mon_valid++;
-		}
+	if (ferror(f) != 0) {
+		igt_debug("Failed to read ELD file: %d\n", ferror(f));
+		return false;
 	}
 
-	fclose(in);
-	if (mon_valid && eld_valid)
-		return true;
+	fclose(f);
 
-	return false;
+	return monitor_present;
 }
 
 /** eld_has_igt: check whether ALSA has detected the audio-capable IGT EDID by
@@ -79,27 +93,35 @@ static bool eld_entry_is_igt(const char *path)
 bool eld_has_igt(void)
 {
 	DIR *dir;
-	struct dirent *snd_hda;
+	struct dirent *dirent;
 	int i;
+	char card[64];
+	char path[PATH_MAX];
+	struct eld_entry eld;
 
 	for (i = 0; i < 8; i++) {
-		char cards[128];
-
-		snprintf(cards, sizeof(cards), "/proc/asound/card%d", i);
-		dir = opendir(cards);
+		snprintf(card, sizeof(card), "/proc/asound/card%d", i);
+		dir = opendir(card);
 		if (!dir)
 			continue;
 
-		while ((snd_hda = readdir(dir))) {
-			char fpath[PATH_MAX];
+		while ((dirent = readdir(dir))) {
+			if (strncmp(dirent->d_name, ELD_PREFIX,
+				    strlen(ELD_PREFIX)) != 0)
+				continue;
+
+			snprintf(path, sizeof(path), "%s/%s", card,
+				 dirent->d_name);
+			if (!eld_parse_entry(path, &eld)) {
+				continue;
+			}
 
Quoted 7 lines

lib/igt_eld.c static bool eld_entry_is_igt(const char *path) · line 120

Quoted 4 lines
lib/igt_eld.c +2 -2
-			if (*snd_hda->d_name == '.' ||
-			    strstr(snd_hda->d_name, "eld") == 0)
+			if (!eld.valid) {
+				igt_debug("Skipping invalid ELD: %s\n", path);

The message is a little confusing. How about "Skipping non-ELD file:
%s\n" instead?

So, this is not exactly a non-ELD file: this happens when the EDID isn't valid (e.g. if some field is malformed).

Is it okay if I change it to: "Skipping ELD entry with invalid=1"?

Quoted 29 lines

Anyway, I like where this is going!

Quoted 25 lines
lib/igt_eld.c +2 -3
 				continue;
+			}
 
-			snprintf(fpath, sizeof(fpath), "%s/%s", cards,
-				 snd_hda->d_name);
-			if (eld_entry_is_igt(fpath)) {
+			if (strcmp(eld.monitor_name, "IGT") == 0) {
 				closedir(dir);
 				return true;
 			}
lib/igt_eld.h +5 -0
index 27f876d9f631..21fe3537acf9 100644
@@ -30,6 +30,11 @@
 
 #include <stdbool.h>
 
+struct eld_entry {
+	bool valid;
+	char monitor_name[16];
+};
+
 bool eld_has_igt(void);
 
Quoted 2 lines

lib/igt_eld.h line 40

Quoted 2 lines
lib/igt_eld.h +0 -0
 #endif

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#6 lore raw

Re: [igt-dev] [PATCH i-g-t 2/5] lib/igt_eld: consolidate ELD parsing

Quoted 183 lines · Simon
Quoted 101 lines · Martin Peres
Quoted 28 lines · Simon Ser

Make the ELD enumeration more robust, and implement proper parsing for ELD fields. This will become useful when other ELD fields (formats, sample rates, sample sizes) will be parsed and checked.

---
 lib/igt_eld.c | 94 +++++++++++++++++++++++++++++++--------------------
 lib/igt_eld.h |  5 +++
 2 files changed, 63 insertions(+), 36 deletions(-)
lib/igt_eld.c +4 -0
index 8e0dcc306e85..a198001a56d7 100644
@@ -30,8 +30,12 @@
 #include <stdio.h>
 #include <string.h>
 
+#include "igt_core.h"
 #include "igt_eld.h"
 
+#define ELD_PREFIX "eld#"
+#define ELD_DELIM " \t"
+
 /**
  * EDID-Like Data (ELD) is metadata parsed and exposed by ALSA for HDMI and
  * DisplayPort connectors supporting audio. This includes the monitor name and

lib/igt_eld.c line 42

Quoted 4 lines
lib/igt_eld.c +0 -1
@@ -39,39 +43,49 @@
  * on).
  */
 
-/** eld_entry_is_igt: checks whether an ELD entry is mapped to the IGT EDID */

Posting an example of eld here would be helpful:

$ cat /proc/asound/card0/eld#0.2
monitor_present         1
eld_valid               1
monitor_name            U2879G6
connection_type         DisplayPort
eld_version             [0x2] CEA-861D or below
edid_version            [0x3] CEA-861-B, C or D
manufacture_id          0xe305
product_id              0x2879
port_id                 0x800
support_hdcp            0
support_ai              0
audio_sync_delay        0
speakers                [0x1] FL/FR
sad_count               1
sad0_coding_type        [0x1] LPCM
sad0_channels           2
sad0_rates              [0xe0] 32000 44100 48000
sad0_bits               [0xe0000] 16 20 24
Quoted 21 lines
lib/igt_eld.c +6 -11
-static bool eld_entry_is_igt(const char *path)
+static bool eld_parse_entry(const char *path, struct eld_entry *eld)
 {
-	FILE *in;
+	FILE *f;
 	char buf[1024];
-	uint8_t eld_valid = 0;
-	uint8_t mon_valid = 0;
-
-	in = fopen(path, "r");
-	if (!in)
-		return false;
+	char *key, *value;
+	size_t len;
+	bool monitor_present;
 
-	memset(buf, 0, 1024);
+	memset(eld, 0, sizeof(*eld));
 
-	while ((fgets(buf, 1024, in)) != NULL) {
-		char *line = buf;

lib/igt_eld.c line 62

Quoted 10 lines
lib/igt_eld.c +5 -4
+	f = fopen(path, "r");
+	if (!f) {
+		igt_debug("Failed to open ELD file: %s\n", path);
+		return false;
+	}
 
-		if (!strncasecmp(line, "eld_valid", 9) &&
-				strstr(line, "1")) {
-			eld_valid++;
-		}

Good riddance! Ignore my comment from patch 1!

lib/igt_eld.c line 68

Quoted 7 lines
lib/igt_eld.c +7 -0
+	while ((fgets(buf, sizeof(buf), f)) != NULL) {
+		len = strlen(buf);
+		if (buf[len - 1] == '\n')
+			buf[len - 1] = '\0';
+
+		key = strtok(buf, ELD_DELIM);
+		value = strtok(NULL, "");

Hmm, I had forgotten that strok was stateful when str == NULL!

Quoted 7 lines

lib/igt_eld.c line 70

Quoted 2 lines
lib/igt_eld.c +2 -0
+		/* Skip whitespace at the beginning */
+		value += strspn(value, ELD_DELIM);

Thanks for teaching me a new function :) This is quite practical!

After doing more python work, going back to parsing with C is a little rough :D Not as bad as ASM though!

Eheh, I can imagine that :P

Quoted 63 lines
Quoted 63 lines
lib/igt_eld.c +30 -15
+
+		if (strcmp(key, "monitor_present") == 0)
+			monitor_present = strcmp(value, "1") == 0;
+		else if (strcmp(key, "eld_valid") == 0)
+			eld->valid = strcmp(value, "1") == 0;
+		else if (strcmp(key, "monitor_name") == 0)
+			snprintf(eld->monitor_name, sizeof(eld->monitor_name),
+				 "%s", value);
+	}
 
-		if (!strncasecmp(line, "monitor_name", 12) &&
-				strstr(line, "IGT")) {
-			mon_valid++;
-		}
+	if (ferror(f) != 0) {
+		igt_debug("Failed to read ELD file: %d\n", ferror(f));
+		return false;
 	}
 
-	fclose(in);
-	if (mon_valid && eld_valid)
-		return true;
+	fclose(f);
 
-	return false;
+	return monitor_present;
 }
 
 /** eld_has_igt: check whether ALSA has detected the audio-capable IGT EDID by
@@ -79,27 +93,35 @@ static bool eld_entry_is_igt(const char *path)
 bool eld_has_igt(void)
 {
 	DIR *dir;
-	struct dirent *snd_hda;
+	struct dirent *dirent;
 	int i;
+	char card[64];
+	char path[PATH_MAX];
+	struct eld_entry eld;
 
 	for (i = 0; i < 8; i++) {
-		char cards[128];
-
-		snprintf(cards, sizeof(cards), "/proc/asound/card%d", i);
-		dir = opendir(cards);
+		snprintf(card, sizeof(card), "/proc/asound/card%d", i);
+		dir = opendir(card);
 		if (!dir)
 			continue;
 
-		while ((snd_hda = readdir(dir))) {
-			char fpath[PATH_MAX];
+		while ((dirent = readdir(dir))) {
+			if (strncmp(dirent->d_name, ELD_PREFIX,
+				    strlen(ELD_PREFIX)) != 0)
+				continue;
+
+			snprintf(path, sizeof(path), "%s/%s", card,
+				 dirent->d_name);
+			if (!eld_parse_entry(path, &eld)) {
+				continue;
+			}
 
Quoted 7 lines

lib/igt_eld.c static bool eld_entry_is_igt(const char *path) · line 120

Quoted 4 lines
lib/igt_eld.c +2 -2
-			if (*snd_hda->d_name == '.' ||
-			    strstr(snd_hda->d_name, "eld") == 0)
+			if (!eld.valid) {
+				igt_debug("Skipping invalid ELD: %s\n", path);

The message is a little confusing. How about "Skipping non-ELD file:
%s\n" instead?

Quoted 2 lines

So, this is not exactly a non-ELD file: this happens when the EDID isn't valid (e.g. if some field is malformed).

Right, that was the previous code that was checking that, but you moved it to the top with the strcmp.

Quoted 2 lines

Is it okay if I change it to: "Skipping ELD entry with invalid=1"?

I think your original message was better. Sorry for the noise! Feel free to merge!

Quoted 30 lines
Quoted 30 lines

Anyway, I like where this is going!

Quoted 25 lines
lib/igt_eld.c +2 -3
 				continue;
+			}
 
-			snprintf(fpath, sizeof(fpath), "%s/%s", cards,
-				 snd_hda->d_name);
-			if (eld_entry_is_igt(fpath)) {
+			if (strcmp(eld.monitor_name, "IGT") == 0) {
 				closedir(dir);
 				return true;
 			}
lib/igt_eld.h +5 -0
index 27f876d9f631..21fe3537acf9 100644
@@ -30,6 +30,11 @@
 
 #include <stdbool.h>
 
+struct eld_entry {
+	bool valid;
+	char monitor_name[16];
+};
+
 bool eld_has_igt(void);
 
Quoted 3 lines
Quoted 2 lines

lib/igt_eld.h line 40

Quoted 2 lines
lib/igt_eld.h +0 -0
 #endif

---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki
Business Identity Code: 0357606 - 4
Domiciled in Helsinki

This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#7 lore raw

PATCH 3/5 lib/igt_eld: parse Short Audio Descriptors

In reply to Simon Ser

Each valid ELD entry can contain zero, one or more Short Audio Descriptor blocks. These are exposed in sadN_* fields (N being the index of the SAD).

We need to parse them to be able to check that ALSA has properly processed them.

---
 lib/igt_edid.h |  2 ++
 lib/igt_eld.c  | 85 +++++++++++++++++++++++++++++++++++++++++++++++++-
 lib/igt_eld.h  | 14 +++++++++
 3 files changed, 100 insertions(+), 1 deletion(-)
lib/igt_edid.h +2 -0
index 7edd7e38f41e..1d0c6aa29578 100644
@@ -30,6 +30,8 @@
 
 #include <stdint.h>
 
+#include <xf86drmMode.h>
+
 struct est_timings {
 	uint8_t t1;
 	uint8_t t2;
lib/igt_eld.c +84 -1

109 lines not on this page · raw message

lib/igt_eld.h +14 -0
index 21fe3537acf9..e16187884d4b 100644
@@ -30,9 +30,23 @@
 
 #include <stdbool.h>
 
+#include "igt_edid.h"
+
+#define ELD_SADS_CAP 4
+
+/** eld_sad: Short Audio Descriptor */
+struct eld_sad {
+	enum cea_sad_format coding_type;
+	int channels;
+	unsigned int rates; /* enum cea_sad_sampling_rate */
+	unsigned int bits; /* enum cea_sad_pcm_sample_size */
+};
+
 struct eld_entry {
 	bool valid;
 	char monitor_name[16];
+	size_t sads_len;
+	struct eld_sad sads[ELD_SADS_CAP];
 };
 
 bool eld_has_igt(void);
Signature · 6 lines
2.21.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
Reviewed-by on v1 3/5
#8 lore raw

Re: [igt-dev] [PATCH i-g-t 3/5] lib/igt_eld: parse Short Audio Descriptors

Quoted 18 lines · Simon Ser

Each valid ELD entry can contain zero, one or more Short Audio Descriptor blocks. These are exposed in sadN_* fields (N being the index of the SAD).

We need to parse them to be able to check that ALSA has properly processed them.

---
 lib/igt_edid.h |  2 ++
 lib/igt_eld.c  | 85 +++++++++++++++++++++++++++++++++++++++++++++++++-
 lib/igt_eld.h  | 14 +++++++++
 3 files changed, 100 insertions(+), 1 deletion(-)
lib/igt_edid.h +0 -0
index 7edd7e38f41e..1d0c6aa29578 100644

lib/igt_edid.h line 34

Quoted 5 lines
lib/igt_edid.h +2 -0
@@ -30,6 +30,8 @@
 
 #include <stdint.h>
 
+#include <xf86drmMode.h>
+

Are you sure this change belongs to this commit? Can't find anything here that would need this header.

Quoted 88 lines
lib/igt_edid.h +0 -0
 struct est_timings {
 	uint8_t t1;
 	uint8_t t2;
lib/igt_eld.c +70 -0
index a198001a56d7..732bbabd2d7c 100644
@@ -35,6 +35,7 @@
 
 #define ELD_PREFIX "eld#"
 #define ELD_DELIM " \t"
+#define SAD_FMT "sad%d_%ms"
 
 /**
  * EDID-Like Data (ELD) is metadata parsed and exposed by ALSA for HDMI and
@@ -43,13 +44,87 @@
  * on).
  */
 
+static enum cea_sad_format parse_sad_coding_type(const char *value)
+{
+	if (strcmp(value, "LPCM") == 0)
+		return CEA_SAD_FORMAT_PCM;
+	else
+		return 0;
+}
+
+static enum cea_sad_sampling_rate parse_sad_rate(const char *value)
+{
+	switch (atoi(value)) {
+	case 32000:
+		return CEA_SAD_SAMPLING_RATE_32KHZ;
+	case 44100:
+		return CEA_SAD_SAMPLING_RATE_44KHZ;
+	case 48000:
+		return CEA_SAD_SAMPLING_RATE_48KHZ;
+	case 88000:
+		return CEA_SAD_SAMPLING_RATE_88KHZ;
+	case 96000:
+		return CEA_SAD_SAMPLING_RATE_96KHZ;
+	case 176000:
+		return CEA_SAD_SAMPLING_RATE_176KHZ;
+	case 192000:
+		return CEA_SAD_SAMPLING_RATE_192KHZ;
+	default:
+		return 0;
+	}
+}
+
+static enum cea_sad_pcm_sample_size parse_sad_bit(const char *value)
+{
+	switch (atoi(value)) {
+	case 16:
+		return CEA_SAD_SAMPLE_SIZE_16;
+	case 20:
+		return CEA_SAD_SAMPLE_SIZE_20;
+	case 24:
+		return CEA_SAD_SAMPLE_SIZE_24;
+	default:
+		return 0;
+	}
+}
+
+static void parse_sad_field(struct eld_sad *sad, const char *key, char *value)
+{
+	char *tok;
+
+	/* Some fields are prefixed with the raw hex value, strip it */
+	if (value[0] == '[') {
+		value = strchr(value, ' ');
+		igt_assert(value != NULL);
+		value++; /* skip the space */
+	}
+
+	/* Single-value fields */
+	if (strcmp(key, "coding_type") == 0)
+		sad->coding_type = parse_sad_coding_type(value);
+	else if (strcmp(key, "channels") == 0)
+		sad->channels = atoi(value);
+
+	/* Multiple-value fields */
+	tok = strtok(value, " ");
+	while (tok) {
+		if (strcmp(key, "rates") == 0)
+			sad->rates |= parse_sad_rate(tok);
+		else if (strcmp(key, "bits") == 0)
+			sad->bits |= parse_sad_bit(tok);
+

lib/igt_eld.c line 124

Quoted 10 lines
lib/igt_eld.c +5 -1
+		tok = strtok(NULL, " ");
+	}
+}
+
 static bool eld_parse_entry(const char *path, struct eld_entry *eld)
 {
 	FILE *f;
 	char buf[1024];
-	char *key, *value;
+	char *key, *value, *sad_key;

Poor key, why are you sad? :D

More seriously, a little documentation in this file about the acronyms would be appreciated!

Quoted 7 lines
lib/igt_eld.c +1 -0
 	size_t len;
 	bool monitor_present;
+	int sad_index;
 
 	memset(eld, 0, sizeof(*eld));
 

lib/igt_eld.c static bool eld_parse_entry(const char *path, struct eld_entry *eld) · line 158

Quoted 8 lines
lib/igt_eld.c +5 -0
@@ -76,6 +151,14 @@ static bool eld_parse_entry(const char *path, struct eld_entry *eld)
 		else if (strcmp(key, "monitor_name") == 0)
 			snprintf(eld->monitor_name, sizeof(eld->monitor_name),
 				 "%s", value);
+		else if (strcmp(key, "sad_count") == 0)
+			eld->sads_len = atoi(value);
+		else if (sscanf(key, "sad%d_%ms", &sad_index, &sad_key) == 2) {
+			igt_assert(sad_index < ELD_SADS_CAP);
+			igt_assert(sad_index < eld->sads_len);

Good that you added that! This patch looks good:

Quoted 25 lines
lib/igt_eld.c +3 -0
+			parse_sad_field(&eld->sads[sad_index], sad_key, value);
+			free(sad_key);
+		}
 	}
 
 	if (ferror(f) != 0) {
lib/igt_eld.h +10 -0
index 21fe3537acf9..e16187884d4b 100644
@@ -30,9 +30,23 @@
 
 #include <stdbool.h>
 
+#include "igt_edid.h"
+
+#define ELD_SADS_CAP 4
+
+/** eld_sad: Short Audio Descriptor */
+struct eld_sad {
+	enum cea_sad_format coding_type;
+	int channels;
+	unsigned int rates; /* enum cea_sad_sampling_rate */
+	unsigned int bits; /* enum cea_sad_pcm_sample_size */

lib/igt_eld.h line 52

Quoted 10 lines
lib/igt_eld.h +4 -0
+};
+
 struct eld_entry {
 	bool valid;
 	char monitor_name[16];
+	size_t sads_len;
+	struct eld_sad sads[ELD_SADS_CAP];
 };
 
 bool eld_has_igt(void);

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#9 lore raw

Re: [igt-dev] [PATCH i-g-t 3/5] lib/igt_eld: parse Short Audio Descriptors

Quoted 20 lines · Martin Peres
Quoted 19 lines · Simon Ser

Each valid ELD entry can contain zero, one or more Short Audio Descriptor blocks. These are exposed in sadN_* fields (N being the index of the SAD).

We need to parse them to be able to check that ALSA has properly processed them.

---
 lib/igt_edid.h |  2 ++
 lib/igt_eld.c  | 85 +++++++++++++++++++++++++++++++++++++++++++++++++-
 lib/igt_eld.h  | 14 +++++++++
 3 files changed, 100 insertions(+), 1 deletion(-)
lib/igt_edid.h +0 -0
index 7edd7e38f41e..1d0c6aa29578 100644
@@ -30,6 +30,8 @@
 
Quoted 7 lines

lib/igt_edid.h line 34

Quoted 4 lines
lib/igt_edid.h +2 -0
 #include <stdint.h>
 
+#include <xf86drmMode.h>
+

Are you sure this change belongs to this commit? Can't find anything here that would need this header.

Fair, I've split it into another commit

Quoted 92 lines
Quoted 92 lines
lib/igt_edid.h +0 -0
 struct est_timings {
 	uint8_t t1;
 	uint8_t t2;
lib/igt_eld.c +74 -0
index a198001a56d7..732bbabd2d7c 100644
@@ -35,6 +35,7 @@
 
 #define ELD_PREFIX "eld#"
 #define ELD_DELIM " \t"
+#define SAD_FMT "sad%d_%ms"
 
 /**
  * EDID-Like Data (ELD) is metadata parsed and exposed by ALSA for HDMI and
@@ -43,13 +44,87 @@
  * on).
  */
 
+static enum cea_sad_format parse_sad_coding_type(const char *value)
+{
+	if (strcmp(value, "LPCM") == 0)
+		return CEA_SAD_FORMAT_PCM;
+	else
+		return 0;
+}
+
+static enum cea_sad_sampling_rate parse_sad_rate(const char *value)
+{
+	switch (atoi(value)) {
+	case 32000:
+		return CEA_SAD_SAMPLING_RATE_32KHZ;
+	case 44100:
+		return CEA_SAD_SAMPLING_RATE_44KHZ;
+	case 48000:
+		return CEA_SAD_SAMPLING_RATE_48KHZ;
+	case 88000:
+		return CEA_SAD_SAMPLING_RATE_88KHZ;
+	case 96000:
+		return CEA_SAD_SAMPLING_RATE_96KHZ;
+	case 176000:
+		return CEA_SAD_SAMPLING_RATE_176KHZ;
+	case 192000:
+		return CEA_SAD_SAMPLING_RATE_192KHZ;
+	default:
+		return 0;
+	}
+}
+
+static enum cea_sad_pcm_sample_size parse_sad_bit(const char *value)
+{
+	switch (atoi(value)) {
+	case 16:
+		return CEA_SAD_SAMPLE_SIZE_16;
+	case 20:
+		return CEA_SAD_SAMPLE_SIZE_20;
+	case 24:
+		return CEA_SAD_SAMPLE_SIZE_24;
+	default:
+		return 0;
+	}
+}
+
+static void parse_sad_field(struct eld_sad *sad, const char *key, char *value)
+{
+	char *tok;
+
+	/* Some fields are prefixed with the raw hex value, strip it */
+	if (value[0] == '[') {
+		value = strchr(value, ' ');
+		igt_assert(value != NULL);
+		value++; /* skip the space */
+	}
+
+	/* Single-value fields */
+	if (strcmp(key, "coding_type") == 0)
+		sad->coding_type = parse_sad_coding_type(value);
+	else if (strcmp(key, "channels") == 0)
+		sad->channels = atoi(value);
+
+	/* Multiple-value fields */
+	tok = strtok(value, " ");
+	while (tok) {
+		if (strcmp(key, "rates") == 0)
+			sad->rates |= parse_sad_rate(tok);
+		else if (strcmp(key, "bits") == 0)
+			sad->bits |= parse_sad_bit(tok);
+
+		tok = strtok(NULL, " ");
+	}
+}
+
Quoted 8 lines

lib/igt_eld.c line 124

Quoted 6 lines
lib/igt_eld.c +1 -1
 static bool eld_parse_entry(const char *path, struct eld_entry *eld)
 {
 	FILE *f;
 	char buf[1024];
-	char *key, *value;
+	char *key, *value, *sad_key;

Poor key, why are you sad? :D

So many sad symbols! It's a shame EDID doesn't include any HAPPY fields…

Quoted 2 lines

More seriously, a little documentation in this file about the acronyms would be appreciated!

Agreed. I'll add a note about this. And I'll send a patch for igt_edid docs.

Quoted 53 lines
Quoted 7 lines
lib/igt_eld.c +1 -0
 	size_t len;
 	bool monitor_present;
+	int sad_index;
 
 	memset(eld, 0, sizeof(*eld));
 

lib/igt_eld.c static bool eld_parse_entry(const char *path, struct eld_entry *eld) · line 158

Quoted 8 lines
lib/igt_eld.c +5 -0
@@ -76,6 +151,14 @@ static bool eld_parse_entry(const char *path, struct eld_entry *eld)
 		else if (strcmp(key, "monitor_name") == 0)
 			snprintf(eld->monitor_name, sizeof(eld->monitor_name),
 				 "%s", value);
+		else if (strcmp(key, "sad_count") == 0)
+			eld->sads_len = atoi(value);
+		else if (sscanf(key, "sad%d_%ms", &sad_index, &sad_key) == 2) {
+			igt_assert(sad_index < ELD_SADS_CAP);
+			igt_assert(sad_index < eld->sads_len);

Good that you added that! This patch looks good:

Quoted 33 lines
lib/igt_eld.c +3 -0
+			parse_sad_field(&eld->sads[sad_index], sad_key, value);
+			free(sad_key);
+		}
 	}
 
 	if (ferror(f) != 0) {
lib/igt_eld.h +14 -0
index 21fe3537acf9..e16187884d4b 100644
@@ -30,9 +30,23 @@
 
 #include <stdbool.h>
 
+#include "igt_edid.h"
+
+#define ELD_SADS_CAP 4
+
+/** eld_sad: Short Audio Descriptor */
+struct eld_sad {
+	enum cea_sad_format coding_type;
+	int channels;
+	unsigned int rates; /* enum cea_sad_sampling_rate */
+	unsigned int bits; /* enum cea_sad_pcm_sample_size */
+};
+
 struct eld_entry {
 	bool valid;
 	char monitor_name[16];
+	size_t sads_len;
+	struct eld_sad sads[ELD_SADS_CAP];
 };
 
Quoted 6 lines

lib/igt_eld.h line 52

Quoted 2 lines
lib/igt_eld.h +0 -0
 bool eld_has_igt(void);

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#10 lore raw

PATCH 4/5 lib/igt_eld: allow retrieving an ELD entry per monitor name

In reply to Simon Ser

The previous function eld_has_igt (1) assumed the monitor name was always "IGT" and (2) didn't provide a way to access the ELD data.

(1) is an issue for EDIDs that don't have "IGT" as the monitor name. This is the case for the Chamelium default EDID, but this will also become an issue with MST where each monitor will need to have a unique name (to be able to tell them apart).

(2) makes it impossible to check ELD audio parameters.

This commit fixes both (1) and (2).

---
 lib/igt_eld.c           | 12 +++++-------
 lib/igt_eld.h           |  2 +-
 tests/kms_hdmi_inject.c |  8 +++-----
 3 files changed, 9 insertions(+), 13 deletions(-)
lib/igt_eld.c +5 -7
index 732bbabd2d7c..53655c5e18f1 100644
@@ -171,16 +171,14 @@ static bool eld_parse_entry(const char *path, struct eld_entry *eld)
 	return monitor_present;
 }
 
-/** eld_has_igt: check whether ALSA has detected the audio-capable IGT EDID by
- * parsing ELD entries */
-bool eld_has_igt(void)
+/** eld_from_monitor_name: retrieve an ELD entry from a monitor name */
+bool eld_from_monitor_name(struct eld_entry *eld, const char *monitor_name)
 {
 	DIR *dir;
 	struct dirent *dirent;
 	int i;
 	char card[64];
 	char path[PATH_MAX];
-	struct eld_entry eld;
 
 	for (i = 0; i < 8; i++) {
 		snprintf(card, sizeof(card), "/proc/asound/card%d", i);
@@ -195,16 +193,16 @@ bool eld_has_igt(void)
 
 			snprintf(path, sizeof(path), "%s/%s", card,
 				 dirent->d_name);
-			if (!eld_parse_entry(path, &eld)) {
+			if (!eld_parse_entry(path, eld)) {
 				continue;
 			}
 
-			if (!eld.valid) {
+			if (!eld->valid) {
 				igt_debug("Skipping invalid ELD: %s\n", path);
 				continue;
 			}
 
-			if (strcmp(eld.monitor_name, "IGT") == 0) {
+			if (strcmp(eld->monitor_name, monitor_name) == 0) {
 				closedir(dir);
 				return true;
 			}
lib/igt_eld.h +1 -1
index e16187884d4b..1f34f784749b 100644
@@ -49,6 +49,6 @@ struct eld_entry {
 	struct eld_sad sads[ELD_SADS_CAP];
 };
 
-bool eld_has_igt(void);
+bool eld_from_monitor_name(struct eld_entry *eld, const char *monitor_name);
 
 #endif
tests/kms_hdmi_inject.c +3 -5
index eba25046cead..31ddda731d7b 100644
@@ -146,6 +146,7 @@ hdmi_inject_audio(int drm_fd, drmModeConnector *connector)
 	int fb_id, cid, ret, crtc_mask = -1;
 	struct igt_fb fb;
 	struct kmstest_connector_config config;
+	struct eld_entry eld;
 
 	kmstest_edid_add_audio(igt_kms_get_base_edid(), EDID_LENGTH, &edid,
 			       &length);
@@ -178,11 +179,8 @@ hdmi_inject_audio(int drm_fd, drmModeConnector *connector)
 
 	igt_assert(ret == 0);
 
-	/*
-	 * Test if we have /proc/asound/HDMI/eld#0.0 and is its contents are
-	 * valid.
-	 */
-	igt_assert(eld_has_igt());
+	/* Check whether ALSA has properly detected the audio-capable EDID */
+	igt_assert(eld_from_monitor_name(&eld, "IGT"));
 
 	igt_remove_fb(drm_fd, &fb);
 
Signature · 6 lines
2.21.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
#11 lore raw

Re: [igt-dev] [PATCH i-g-t 4/5] lib/igt_eld: allow retrieving an ELD entry per monitor name

Quoted 7 lines · Simon Ser

The previous function eld_has_igt (1) assumed the monitor name was always "IGT" and (2) didn't provide a way to access the ELD data.

(1) is an issue for EDIDs that don't have "IGT" as the monitor name. This is the case for the Chamelium default EDID, but this will also become an issue with MST where each monitor will need to have a unique name (to be able to tell them apart).

I dislike the idea of not checking that the EDID has been generated by IGT, but I understand that you might want some freedom there.

How about checking that the monitor name STARTS with IGT.

Given that Arek is also complaining about something like in patch 5, how about merging 1-4, then reviewing/merging your DP patches, then re-spinning the last two patches of this series?

Martin

Quoted 84 lines

(2) makes it impossible to check ELD audio parameters.

This commit fixes both (1) and (2).

---
 lib/igt_eld.c           | 12 +++++-------
 lib/igt_eld.h           |  2 +-
 tests/kms_hdmi_inject.c |  8 +++-----
 3 files changed, 9 insertions(+), 13 deletions(-)
lib/igt_eld.c +5 -7
index 732bbabd2d7c..53655c5e18f1 100644
@@ -171,16 +171,14 @@ static bool eld_parse_entry(const char *path, struct eld_entry *eld)
 	return monitor_present;
 }
 
-/** eld_has_igt: check whether ALSA has detected the audio-capable IGT EDID by
- * parsing ELD entries */
-bool eld_has_igt(void)
+/** eld_from_monitor_name: retrieve an ELD entry from a monitor name */
+bool eld_from_monitor_name(struct eld_entry *eld, const char *monitor_name)
 {
 	DIR *dir;
 	struct dirent *dirent;
 	int i;
 	char card[64];
 	char path[PATH_MAX];
-	struct eld_entry eld;
 
 	for (i = 0; i < 8; i++) {
 		snprintf(card, sizeof(card), "/proc/asound/card%d", i);
@@ -195,16 +193,16 @@ bool eld_has_igt(void)
 
 			snprintf(path, sizeof(path), "%s/%s", card,
 				 dirent->d_name);
-			if (!eld_parse_entry(path, &eld)) {
+			if (!eld_parse_entry(path, eld)) {
 				continue;
 			}
 
-			if (!eld.valid) {
+			if (!eld->valid) {
 				igt_debug("Skipping invalid ELD: %s\n", path);
 				continue;
 			}
 
-			if (strcmp(eld.monitor_name, "IGT") == 0) {
+			if (strcmp(eld->monitor_name, monitor_name) == 0) {
 				closedir(dir);
 				return true;
 			}
lib/igt_eld.h +1 -1
index e16187884d4b..1f34f784749b 100644
@@ -49,6 +49,6 @@ struct eld_entry {
 	struct eld_sad sads[ELD_SADS_CAP];
 };
 
-bool eld_has_igt(void);
+bool eld_from_monitor_name(struct eld_entry *eld, const char *monitor_name);
 
 #endif
tests/kms_hdmi_inject.c +1 -0
index eba25046cead..31ddda731d7b 100644
@@ -146,6 +146,7 @@ hdmi_inject_audio(int drm_fd, drmModeConnector *connector)
 	int fb_id, cid, ret, crtc_mask = -1;
 	struct igt_fb fb;
 	struct kmstest_connector_config config;
+	struct eld_entry eld;
 
 	kmstest_edid_add_audio(igt_kms_get_base_edid(), EDID_LENGTH, &edid,
 			       &length);
@@ -178,11 +179,8 @@ hdmi_inject_audio(int drm_fd, drmModeConnector *connector)
 
 	igt_assert(ret == 0);
 

tests/kms_hdmi_inject.c hdmi_inject_audio(int drm_fd, drmModeConnector *connector) · line 186

Quoted 10 lines
tests/kms_hdmi_inject.c +2 -5
-	/*
-	 * Test if we have /proc/asound/HDMI/eld#0.0 and is its contents are
-	 * valid.
-	 */
-	igt_assert(eld_has_igt());
+	/* Check whether ALSA has properly detected the audio-capable EDID */
+	igt_assert(eld_from_monitor_name(&eld, "IGT"));
 
 	igt_remove_fb(drm_fd, &fb);
 

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#12 lore raw

Re: [igt-dev] [PATCH i-g-t 4/5] lib/igt_eld: allow retrieving an ELD entry per monitor name

Quoted 9 lines · Martin Peres
Quoted 7 lines · Simon Ser

The previous function eld_has_igt (1) assumed the monitor name was always "IGT" and (2) didn't provide a way to access the ELD data.

(1) is an issue for EDIDs that don't have "IGT" as the monitor name. This is the case for the Chamelium default EDID, but this will also become an issue with MST where each monitor will need to have a unique name (to be able to tell them apart).

Quoted 8 lines

I dislike the idea of not checking that the EDID has been generated by IGT, but I understand that you might want some freedom there.

How about checking that the monitor name STARTS with IGT.

Given that Arek is also complaining about something like in patch 5, how about merging 1-4, then reviewing/merging your DP patches, then re-spinning the last two patches of this series?

Good idea!

Quoted 92 lines

Martin

Quoted 90 lines

(2) makes it impossible to check ELD audio parameters.

This commit fixes both (1) and (2).

---
 lib/igt_eld.c           | 12 +++++-------
 lib/igt_eld.h           |  2 +-
 tests/kms_hdmi_inject.c |  8 +++-----
 3 files changed, 9 insertions(+), 13 deletions(-)
lib/igt_eld.c +5 -7
index 732bbabd2d7c..53655c5e18f1 100644
@@ -171,16 +171,14 @@ static bool eld_parse_entry(const char *path, struct eld_entry *eld)
 	return monitor_present;
 }
 
-/** eld_has_igt: check whether ALSA has detected the audio-capable IGT EDID by
- * parsing ELD entries */
-bool eld_has_igt(void)
+/** eld_from_monitor_name: retrieve an ELD entry from a monitor name */
+bool eld_from_monitor_name(struct eld_entry *eld, const char *monitor_name)
 {
 	DIR *dir;
 	struct dirent *dirent;
 	int i;
 	char card[64];
 	char path[PATH_MAX];
-	struct eld_entry eld;
 
 	for (i = 0; i < 8; i++) {
 		snprintf(card, sizeof(card), "/proc/asound/card%d", i);
@@ -195,16 +193,16 @@ bool eld_has_igt(void)
 
 			snprintf(path, sizeof(path), "%s/%s", card,
 				 dirent->d_name);
-			if (!eld_parse_entry(path, &eld)) {
+			if (!eld_parse_entry(path, eld)) {
 				continue;
 			}
 
-			if (!eld.valid) {
+			if (!eld->valid) {
 				igt_debug("Skipping invalid ELD: %s\n", path);
 				continue;
 			}
 
-			if (strcmp(eld.monitor_name, "IGT") == 0) {
+			if (strcmp(eld->monitor_name, monitor_name) == 0) {
 				closedir(dir);
 				return true;
 			}
lib/igt_eld.h +1 -1
index e16187884d4b..1f34f784749b 100644
@@ -49,6 +49,6 @@ struct eld_entry {
 	struct eld_sad sads[ELD_SADS_CAP];
 };
 
-bool eld_has_igt(void);
+bool eld_from_monitor_name(struct eld_entry *eld, const char *monitor_name);
 
 #endif
tests/kms_hdmi_inject.c +3 -5
index eba25046cead..31ddda731d7b 100644
@@ -146,6 +146,7 @@ hdmi_inject_audio(int drm_fd, drmModeConnector *connector)
 	int fb_id, cid, ret, crtc_mask = -1;
 	struct igt_fb fb;
 	struct kmstest_connector_config config;
+	struct eld_entry eld;
 
 	kmstest_edid_add_audio(igt_kms_get_base_edid(), EDID_LENGTH, &edid,
 			       &length);
@@ -178,11 +179,8 @@ hdmi_inject_audio(int drm_fd, drmModeConnector *connector)
 
 	igt_assert(ret == 0);
 
-	/*
-	 * Test if we have /proc/asound/HDMI/eld#0.0 and is its contents are
-	 * valid.
-	 */
-	igt_assert(eld_has_igt());
+	/* Check whether ALSA has properly detected the audio-capable EDID */
+	igt_assert(eld_from_monitor_name(&eld, "IGT"));
 
Quoted 3 lines

tests/kms_hdmi_inject.c hdmi_inject_audio(int drm_fd, drmModeConnector *connector) · line 186

Quoted 3 lines
tests/kms_hdmi_inject.c +0 -0
 	igt_remove_fb(drm_fd, &fb);
 

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#13 lore raw

PATCH 5/5 tests/kms_chamelium: add an audio EDID test

In reply to Simon Ser

This test enables a Chamelium port with an audio-friendly EDID, and then checks that the EDID-Like Data exposed by ALSA matches our expectations.

Remove some high sampling rates from get_hdmi_audio_edid, since the Chamelium doesn't support them anyway. This makes the SAD check uniform for all ports.

---
 tests/kms_chamelium.c | 69 +++++++++++++++++++++++++++++++++++++++----
 1 file changed, 64 insertions(+), 5 deletions(-)
tests/kms_chamelium.c +64 -5
index 49c3de0b7beb..16d3a773bb2a 100644
@@ -28,6 +28,7 @@
 #include "igt.h"
 #include "igt_vc4.h"
 #include "igt_edid.h"
+#include "igt_eld.h"
 
 #include <fcntl.h>
 #include <pthread.h>
@@ -1426,6 +1427,60 @@ test_display_audio(data_t *data, struct chamelium_port *port,
 	free(alsa);
 }
 
+static void
+test_display_audio_edid(data_t *data, struct chamelium_port *port,
+			enum test_edid edid)
+{
+	igt_output_t *output;
+	igt_plane_t *primary;
+	struct igt_fb fb;
+	drmModeModeInfo *mode;
+	drmModeConnector *connector;
+	int fb_id;
+	struct eld_entry eld;
+	const char *monitor_name;
+	struct eld_sad *sad;
+
+	reset_state(data, port);
+
+	output = prepare_output(data, port, edid);
+	connector = chamelium_port_get_connector(data->chamelium, port, false);
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_assert(primary);
+
+	/* Enable the output because audio cannot be played on inactive
+	 * connectors. */
+	igt_assert(connector->count_modes > 0);
+	mode = &connector->modes[0];
+
+	fb_id = igt_create_color_pattern_fb(data->drm_fd,
+					    mode->hdisplay, mode->vdisplay,
+					    DRM_FORMAT_XRGB8888,
+					    LOCAL_DRM_FORMAT_MOD_NONE,
+					    0, 0, 0, &fb);
+	igt_assert(fb_id > 0);
+
+	enable_output(data, port, output, mode, &fb);
+
+	monitor_name = "IGT";
+	if (edid == TEST_EDID_CHAMELIUM_DEFAULT)
+		monitor_name = "AthenaDP";
+
+	igt_assert(eld_from_monitor_name(&eld, monitor_name));
+	igt_assert(eld.sads_len == 1);
+
+	sad = &eld.sads[0];
+	igt_assert(sad->coding_type == CEA_SAD_FORMAT_PCM);
+	igt_assert(sad->channels == 2);
+	igt_assert(sad->rates == (CEA_SAD_SAMPLING_RATE_32KHZ |
+		   CEA_SAD_SAMPLING_RATE_44KHZ | CEA_SAD_SAMPLING_RATE_48KHZ));
+	igt_assert(sad->bits == (CEA_SAD_SAMPLE_SIZE_16 |
+		   CEA_SAD_SAMPLE_SIZE_20 | CEA_SAD_SAMPLE_SIZE_24));
+
+	igt_remove_fb(data->drm_fd, &fb);
+
+	drmModeFreeConnector(connector);
+}
 
 static void randomize_plane_stride(data_t *data,
 				   uint32_t width, uint32_t height,
@@ -2005,11 +2060,7 @@ static unsigned const char *get_hdmi_audio_edid(void)
 	channels = 2; /* TODO: speaker alloc blocks for > 2 channels */
 	sampling_rates = CEA_SAD_SAMPLING_RATE_32KHZ |
 			 CEA_SAD_SAMPLING_RATE_44KHZ |
-			 CEA_SAD_SAMPLING_RATE_48KHZ |
-			 CEA_SAD_SAMPLING_RATE_88KHZ |
-			 CEA_SAD_SAMPLING_RATE_96KHZ |
-			 CEA_SAD_SAMPLING_RATE_176KHZ |
-			 CEA_SAD_SAMPLING_RATE_192KHZ;
+			 CEA_SAD_SAMPLING_RATE_48KHZ;
 	sample_sizes = CEA_SAD_SAMPLE_SIZE_16 |
 		       CEA_SAD_SAMPLE_SIZE_20 |
 		       CEA_SAD_SAMPLE_SIZE_24;
@@ -2174,6 +2225,10 @@ igt_main
 		connector_subtest("dp-audio", DisplayPort)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_CHAMELIUM_DEFAULT);
+
+		connector_subtest("dp-audio-edid", DisplayPort)
+			test_display_audio_edid(&data, port,
+						TEST_EDID_CHAMELIUM_DEFAULT);
 	}
 
 	igt_subtest_group {
@@ -2325,6 +2380,10 @@ igt_main
 		connector_subtest("hdmi-audio", HDMIA)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_HDMI_AUDIO);
+
+		connector_subtest("hdmi-audio-edid", HDMIA)
+			test_display_audio_edid(&data, port,
+						TEST_EDID_HDMI_AUDIO);
 	}
 
 	igt_subtest_group {
Signature · 6 lines
2.21.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev
#14 lore raw

Re: [igt-dev] [PATCH i-g-t 5/5] tests/kms_chamelium: add an audio EDID test

Quoted 55 lines · Simon Ser

This test enables a Chamelium port with an audio-friendly EDID, and then checks that the EDID-Like Data exposed by ALSA matches our expectations.

Remove some high sampling rates from get_hdmi_audio_edid, since the Chamelium doesn't support them anyway. This makes the SAD check uniform for all ports.

---
 tests/kms_chamelium.c | 69 +++++++++++++++++++++++++++++++++++++++----
 1 file changed, 64 insertions(+), 5 deletions(-)
tests/kms_chamelium.c +29 -0
index 49c3de0b7beb..16d3a773bb2a 100644
@@ -28,6 +28,7 @@
 #include "igt.h"
 #include "igt_vc4.h"
 #include "igt_edid.h"
+#include "igt_eld.h"
 
 #include <fcntl.h>
 #include <pthread.h>
@@ -1426,6 +1427,60 @@ test_display_audio(data_t *data, struct chamelium_port *port,
 	free(alsa);
 }
 
+static void
+test_display_audio_edid(data_t *data, struct chamelium_port *port,
+			enum test_edid edid)
+{
+	igt_output_t *output;
+	igt_plane_t *primary;
+	struct igt_fb fb;
+	drmModeModeInfo *mode;
+	drmModeConnector *connector;
+	int fb_id;
+	struct eld_entry eld;
+	const char *monitor_name;
+	struct eld_sad *sad;
+
+	reset_state(data, port);
+
+	output = prepare_output(data, port, edid);
+	connector = chamelium_port_get_connector(data->chamelium, port, false);
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_assert(primary);
+
+	/* Enable the output because audio cannot be played on inactive
+	 * connectors. */
+	igt_assert(connector->count_modes > 0);
+	mode = &connector->modes[0];
+
+	fb_id = igt_create_color_pattern_fb(data->drm_fd,
+					    mode->hdisplay, mode->vdisplay,

tests/kms_chamelium.c test_display_audio(data_t *data, struct chamelium_port *port, · line 1467

Quoted 10 lines
tests/kms_chamelium.c +10 -0
+					    DRM_FORMAT_XRGB8888,
+					    LOCAL_DRM_FORMAT_MOD_NONE,
+					    0, 0, 0, &fb);
+	igt_assert(fb_id > 0);
+
+	enable_output(data, port, output, mode, &fb);
+
+	monitor_name = "IGT";
+	if (edid == TEST_EDID_CHAMELIUM_DEFAULT)
+		monitor_name = "AthenaDP";

I am starting to grow less and less fond of using the default Chamelium's EDID. This will just make us build up on simillar checks over time. Let's just define our own copy and then use values from it directly.

"monitor_name" should probably be named manufacturer_id and be obtained by chamelium_get_manufacturer_id(edid_id) or smth.

And since you were talking about MST in one of the other patches, let's talk about MST :-) This would make it more future proof (WIP was defining a copy of EDID for each port using manufacturer id in form of "I-$CHAM_PORT_ID"). chamelium_get_manufacturer_id() can be extended later to also take chamelium_port as parameter.

Other than that the series looks good.

Quoted 57 lines
tests/kms_chamelium.c +25 -5
+
+	igt_assert(eld_from_monitor_name(&eld, monitor_name));
+	igt_assert(eld.sads_len == 1);
+
+	sad = &eld.sads[0];
+	igt_assert(sad->coding_type == CEA_SAD_FORMAT_PCM);
+	igt_assert(sad->channels == 2);
+	igt_assert(sad->rates == (CEA_SAD_SAMPLING_RATE_32KHZ |
+		   CEA_SAD_SAMPLING_RATE_44KHZ | CEA_SAD_SAMPLING_RATE_48KHZ));
+	igt_assert(sad->bits == (CEA_SAD_SAMPLE_SIZE_16 |
+		   CEA_SAD_SAMPLE_SIZE_20 | CEA_SAD_SAMPLE_SIZE_24));
+
+	igt_remove_fb(data->drm_fd, &fb);
+
+	drmModeFreeConnector(connector);
+}
 
 static void randomize_plane_stride(data_t *data,
 				   uint32_t width, uint32_t height,
@@ -2005,11 +2060,7 @@ static unsigned const char *get_hdmi_audio_edid(void)
 	channels = 2; /* TODO: speaker alloc blocks for > 2 channels */
 	sampling_rates = CEA_SAD_SAMPLING_RATE_32KHZ |
 			 CEA_SAD_SAMPLING_RATE_44KHZ |
-			 CEA_SAD_SAMPLING_RATE_48KHZ |
-			 CEA_SAD_SAMPLING_RATE_88KHZ |
-			 CEA_SAD_SAMPLING_RATE_96KHZ |
-			 CEA_SAD_SAMPLING_RATE_176KHZ |
-			 CEA_SAD_SAMPLING_RATE_192KHZ;
+			 CEA_SAD_SAMPLING_RATE_48KHZ;
 	sample_sizes = CEA_SAD_SAMPLE_SIZE_16 |
 		       CEA_SAD_SAMPLE_SIZE_20 |
 		       CEA_SAD_SAMPLE_SIZE_24;
@@ -2174,6 +2225,10 @@ igt_main
 		connector_subtest("dp-audio", DisplayPort)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_CHAMELIUM_DEFAULT);
+
+		connector_subtest("dp-audio-edid", DisplayPort)
+			test_display_audio_edid(&data, port,
+						TEST_EDID_CHAMELIUM_DEFAULT);
 	}
 
 	igt_subtest_group {
@@ -2325,6 +2380,10 @@ igt_main
 		connector_subtest("hdmi-audio", HDMIA)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_HDMI_AUDIO);
+
+		connector_subtest("hdmi-audio-edid", HDMIA)
+			test_display_audio_edid(&data, port,
+						TEST_EDID_HDMI_AUDIO);
 	}
 
 	igt_subtest_group {
Signature · 1 line
2.21.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#15 lore raw

Re: [igt-dev] [PATCH i-g-t 5/5] tests/kms_chamelium: add an audio EDID test

Quoted 72 lines · Arkadiusz Hiler
Quoted 55 lines · Simon Ser

This test enables a Chamelium port with an audio-friendly EDID, and then checks that the EDID-Like Data exposed by ALSA matches our expectations.

Remove some high sampling rates from get_hdmi_audio_edid, since the Chamelium doesn't support them anyway. This makes the SAD check uniform for all ports.

---
 tests/kms_chamelium.c | 69 +++++++++++++++++++++++++++++++++++++++----
 1 file changed, 64 insertions(+), 5 deletions(-)
tests/kms_chamelium.c +29 -0
index 49c3de0b7beb..16d3a773bb2a 100644
@@ -28,6 +28,7 @@
 #include "igt.h"
 #include "igt_vc4.h"
 #include "igt_edid.h"
+#include "igt_eld.h"
 
 #include <fcntl.h>
 #include <pthread.h>
@@ -1426,6 +1427,60 @@ test_display_audio(data_t *data, struct chamelium_port *port,
 	free(alsa);
 }
 
+static void
+test_display_audio_edid(data_t *data, struct chamelium_port *port,
+			enum test_edid edid)
+{
+	igt_output_t *output;
+	igt_plane_t *primary;
+	struct igt_fb fb;
+	drmModeModeInfo *mode;
+	drmModeConnector *connector;
+	int fb_id;
+	struct eld_entry eld;
+	const char *monitor_name;
+	struct eld_sad *sad;
+
+	reset_state(data, port);
+
+	output = prepare_output(data, port, edid);
+	connector = chamelium_port_get_connector(data->chamelium, port, false);
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_assert(primary);
+
+	/* Enable the output because audio cannot be played on inactive
+	 * connectors. */
+	igt_assert(connector->count_modes > 0);
+	mode = &connector->modes[0];
+
+	fb_id = igt_create_color_pattern_fb(data->drm_fd,
+					    mode->hdisplay, mode->vdisplay,

tests/kms_chamelium.c test_display_audio(data_t *data, struct chamelium_port *port, · line 1467

Quoted 10 lines
tests/kms_chamelium.c +10 -0
+					    DRM_FORMAT_XRGB8888,
+					    LOCAL_DRM_FORMAT_MOD_NONE,
+					    0, 0, 0, &fb);
+	igt_assert(fb_id > 0);
+
+	enable_output(data, port, output, mode, &fb);
+
+	monitor_name = "IGT";
+	if (edid == TEST_EDID_CHAMELIUM_DEFAULT)
+		monitor_name = "AthenaDP";

I am starting to grow less and less fond of using the default Chamelium's EDID. This will just make us build up on simillar checks over time. Let's just define our own copy and then use values from it directly.

Quoted 2 lines

"monitor_name" should probably be named manufacturer_id and be obtained by chamelium_get_manufacturer_id(edid_id) or smth.

Scratch the part about manufacturer_id, as AthenaDP is definately more than 3 letters and we are using here the actual monitor name. My bad.

Quoted 61 lines

And since you were talking about MST in one of the other patches, let's talk about MST :-) This would make it more future proof (WIP was defining a copy of EDID for each port using manufacturer id in form of "I-$CHAM_PORT_ID"). chamelium_get_manufacturer_id() can be extended later to also take chamelium_port as parameter.

Other than that the series looks good.

Quoted 53 lines
tests/kms_chamelium.c +25 -5
+
+	igt_assert(eld_from_monitor_name(&eld, monitor_name));
+	igt_assert(eld.sads_len == 1);
+
+	sad = &eld.sads[0];
+	igt_assert(sad->coding_type == CEA_SAD_FORMAT_PCM);
+	igt_assert(sad->channels == 2);
+	igt_assert(sad->rates == (CEA_SAD_SAMPLING_RATE_32KHZ |
+		   CEA_SAD_SAMPLING_RATE_44KHZ | CEA_SAD_SAMPLING_RATE_48KHZ));
+	igt_assert(sad->bits == (CEA_SAD_SAMPLE_SIZE_16 |
+		   CEA_SAD_SAMPLE_SIZE_20 | CEA_SAD_SAMPLE_SIZE_24));
+
+	igt_remove_fb(data->drm_fd, &fb);
+
+	drmModeFreeConnector(connector);
+}
 
 static void randomize_plane_stride(data_t *data,
 				   uint32_t width, uint32_t height,
@@ -2005,11 +2060,7 @@ static unsigned const char *get_hdmi_audio_edid(void)
 	channels = 2; /* TODO: speaker alloc blocks for > 2 channels */
 	sampling_rates = CEA_SAD_SAMPLING_RATE_32KHZ |
 			 CEA_SAD_SAMPLING_RATE_44KHZ |
-			 CEA_SAD_SAMPLING_RATE_48KHZ |
-			 CEA_SAD_SAMPLING_RATE_88KHZ |
-			 CEA_SAD_SAMPLING_RATE_96KHZ |
-			 CEA_SAD_SAMPLING_RATE_176KHZ |
-			 CEA_SAD_SAMPLING_RATE_192KHZ;
+			 CEA_SAD_SAMPLING_RATE_48KHZ;
 	sample_sizes = CEA_SAD_SAMPLE_SIZE_16 |
 		       CEA_SAD_SAMPLE_SIZE_20 |
 		       CEA_SAD_SAMPLE_SIZE_24;
@@ -2174,6 +2225,10 @@ igt_main
 		connector_subtest("dp-audio", DisplayPort)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_CHAMELIUM_DEFAULT);
+
+		connector_subtest("dp-audio-edid", DisplayPort)
+			test_display_audio_edid(&data, port,
+						TEST_EDID_CHAMELIUM_DEFAULT);
 	}
 
 	igt_subtest_group {
@@ -2325,6 +2380,10 @@ igt_main
 		connector_subtest("hdmi-audio", HDMIA)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_HDMI_AUDIO);
+
+		connector_subtest("hdmi-audio-edid", HDMIA)
+			test_display_audio_edid(&data, port,
+						TEST_EDID_HDMI_AUDIO);
 	}
 
Quoted 8 lines
Quoted 4 lines
tests/kms_chamelium.c +0 -0
 	igt_subtest_group {
Signature · 1 line
2.21.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#16 lore raw

Re: [igt-dev] [PATCH i-g-t 5/5] tests/kms_chamelium: add an audio EDID test

In reply to Arkadiusz Hiler
Quoted 63 lines · Arkadiusz Hiler
Quoted 62 lines · Simon Ser

This test enables a Chamelium port with an audio-friendly EDID, and then checks that the EDID-Like Data exposed by ALSA matches our expectations.

Remove some high sampling rates from get_hdmi_audio_edid, since the Chamelium doesn't support them anyway. This makes the SAD check uniform for all ports.

---
 tests/kms_chamelium.c | 69 +++++++++++++++++++++++++++++++++++++++----
 1 file changed, 64 insertions(+), 5 deletions(-)
tests/kms_chamelium.c +36 -0
index 49c3de0b7beb..16d3a773bb2a 100644
@@ -28,6 +28,7 @@
 #include "igt.h"
 #include "igt_vc4.h"
 #include "igt_edid.h"
+#include "igt_eld.h"
 
 #include <fcntl.h>
 #include <pthread.h>
@@ -1426,6 +1427,60 @@ test_display_audio(data_t *data, struct chamelium_port *port,
 	free(alsa);
 }
 
+static void
+test_display_audio_edid(data_t *data, struct chamelium_port *port,
+			enum test_edid edid)
+{
+	igt_output_t *output;
+	igt_plane_t *primary;
+	struct igt_fb fb;
+	drmModeModeInfo *mode;
+	drmModeConnector *connector;
+	int fb_id;
+	struct eld_entry eld;
+	const char *monitor_name;
+	struct eld_sad *sad;
+
+	reset_state(data, port);
+
+	output = prepare_output(data, port, edid);
+	connector = chamelium_port_get_connector(data->chamelium, port, false);
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_assert(primary);
+
+	/* Enable the output because audio cannot be played on inactive
+	 * connectors. */
+	igt_assert(connector->count_modes > 0);
+	mode = &connector->modes[0];
+
+	fb_id = igt_create_color_pattern_fb(data->drm_fd,
+					    mode->hdisplay, mode->vdisplay,
+					    DRM_FORMAT_XRGB8888,
+					    LOCAL_DRM_FORMAT_MOD_NONE,
+					    0, 0, 0, &fb);
+	igt_assert(fb_id > 0);
+
+	enable_output(data, port, output, mode, &fb);
+
Quoted 8 lines

tests/kms_chamelium.c test_display_audio(data_t *data, struct chamelium_port *port, · line 1467

Quoted 3 lines
tests/kms_chamelium.c +3 -0
+	monitor_name = "IGT";
+	if (edid == TEST_EDID_CHAMELIUM_DEFAULT)
+		monitor_name = "AthenaDP";

I am starting to grow less and less fond of using the default Chamelium's EDID. This will just make us build up on simillar checks over time. Let's just define our own copy and then use values from it directly.

I agree. I tried to add a DP audio EDID when implementing the HDMI audio EDID code, however this requires:

1. Comparing our generated EDID with the default Chamelium one
2. Trying to figure out what field in the diff could make audio work
3. Adding support for that field in igt_edid, praying that only this part was misisng
4. Goto 1

It took several rounds to get HDMI to work. At some point I just gave up for DP because we had a simple way to do it with Chamelium's default EDID.

I still think it would be better to generate all EDIDs. One of my recent patch series adds support for Speaker Allocation Data blocks ("the other SAD"). I'll try again and see if that works.

Quoted 8 lines

"monitor_name" should probably be named manufacturer_id and be obtained by chamelium_get_manufacturer_id(edid_id) or smth.

And since you were talking about MST in one of the other patches, let's talk about MST :-) This would make it more future proof (WIP was defining a copy of EDID for each port using manufacturer id in form of "I-$CHAM_PORT_ID"). chamelium_get_manufacturer_id() can be extended later to also take chamelium_port as parameter.

One other option would be to keep "IGT" for the manufacturer and use the serial number to tell EDIDs apart.

Note that this mechanism would also be useful for configuration-less Chamelium setup.

Quoted 1 line

Other than that the series looks good.

Thanks for the review!

Quoted 53 lines
Quoted 53 lines
tests/kms_chamelium.c +25 -5
+
+	igt_assert(eld_from_monitor_name(&eld, monitor_name));
+	igt_assert(eld.sads_len == 1);
+
+	sad = &eld.sads[0];
+	igt_assert(sad->coding_type == CEA_SAD_FORMAT_PCM);
+	igt_assert(sad->channels == 2);
+	igt_assert(sad->rates == (CEA_SAD_SAMPLING_RATE_32KHZ |
+		   CEA_SAD_SAMPLING_RATE_44KHZ | CEA_SAD_SAMPLING_RATE_48KHZ));
+	igt_assert(sad->bits == (CEA_SAD_SAMPLE_SIZE_16 |
+		   CEA_SAD_SAMPLE_SIZE_20 | CEA_SAD_SAMPLE_SIZE_24));
+
+	igt_remove_fb(data->drm_fd, &fb);
+
+	drmModeFreeConnector(connector);
+}
 
 static void randomize_plane_stride(data_t *data,
 				   uint32_t width, uint32_t height,
@@ -2005,11 +2060,7 @@ static unsigned const char *get_hdmi_audio_edid(void)
 	channels = 2; /* TODO: speaker alloc blocks for > 2 channels */
 	sampling_rates = CEA_SAD_SAMPLING_RATE_32KHZ |
 			 CEA_SAD_SAMPLING_RATE_44KHZ |
-			 CEA_SAD_SAMPLING_RATE_48KHZ |
-			 CEA_SAD_SAMPLING_RATE_88KHZ |
-			 CEA_SAD_SAMPLING_RATE_96KHZ |
-			 CEA_SAD_SAMPLING_RATE_176KHZ |
-			 CEA_SAD_SAMPLING_RATE_192KHZ;
+			 CEA_SAD_SAMPLING_RATE_48KHZ;
 	sample_sizes = CEA_SAD_SAMPLE_SIZE_16 |
 		       CEA_SAD_SAMPLE_SIZE_20 |
 		       CEA_SAD_SAMPLE_SIZE_24;
@@ -2174,6 +2225,10 @@ igt_main
 		connector_subtest("dp-audio", DisplayPort)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_CHAMELIUM_DEFAULT);
+
+		connector_subtest("dp-audio-edid", DisplayPort)
+			test_display_audio_edid(&data, port,
+						TEST_EDID_CHAMELIUM_DEFAULT);
 	}
 
 	igt_subtest_group {
@@ -2325,6 +2380,10 @@ igt_main
 		connector_subtest("hdmi-audio", HDMIA)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_HDMI_AUDIO);
+
+		connector_subtest("hdmi-audio-edid", HDMIA)
+			test_display_audio_edid(&data, port,
+						TEST_EDID_HDMI_AUDIO);
 	}
 
Quoted 4 lines
Quoted 4 lines
tests/kms_chamelium.c +0 -0
 	igt_subtest_group {
Signature · 1 line
2.21.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#17 lore raw

Re: [igt-dev] [PATCH i-g-t 5/5] tests/kms_chamelium: add an audio EDID test

In reply to Arkadiusz Hiler
Quoted 72 lines · Arkadiusz Hiler
Quoted 55 lines · Simon Ser

This test enables a Chamelium port with an audio-friendly EDID, and then checks that the EDID-Like Data exposed by ALSA matches our expectations.

Remove some high sampling rates from get_hdmi_audio_edid, since the Chamelium doesn't support them anyway. This makes the SAD check uniform for all ports.

---
 tests/kms_chamelium.c | 69 +++++++++++++++++++++++++++++++++++++++----
 1 file changed, 64 insertions(+), 5 deletions(-)
tests/kms_chamelium.c +29 -0
index 49c3de0b7beb..16d3a773bb2a 100644
@@ -28,6 +28,7 @@
 #include "igt.h"
 #include "igt_vc4.h"
 #include "igt_edid.h"
+#include "igt_eld.h"
 
 #include <fcntl.h>
 #include <pthread.h>
@@ -1426,6 +1427,60 @@ test_display_audio(data_t *data, struct chamelium_port *port,
 	free(alsa);
 }
 
+static void
+test_display_audio_edid(data_t *data, struct chamelium_port *port,
+			enum test_edid edid)
+{
+	igt_output_t *output;
+	igt_plane_t *primary;
+	struct igt_fb fb;
+	drmModeModeInfo *mode;
+	drmModeConnector *connector;
+	int fb_id;
+	struct eld_entry eld;
+	const char *monitor_name;
+	struct eld_sad *sad;
+
+	reset_state(data, port);
+
+	output = prepare_output(data, port, edid);
+	connector = chamelium_port_get_connector(data->chamelium, port, false);
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_assert(primary);
+
+	/* Enable the output because audio cannot be played on inactive
+	 * connectors. */
+	igt_assert(connector->count_modes > 0);
+	mode = &connector->modes[0];
+
+	fb_id = igt_create_color_pattern_fb(data->drm_fd,
+					    mode->hdisplay, mode->vdisplay,

tests/kms_chamelium.c test_display_audio(data_t *data, struct chamelium_port *port, · line 1467

Quoted 10 lines
tests/kms_chamelium.c +10 -0
+					    DRM_FORMAT_XRGB8888,
+					    LOCAL_DRM_FORMAT_MOD_NONE,
+					    0, 0, 0, &fb);
+	igt_assert(fb_id > 0);
+
+	enable_output(data, port, output, mode, &fb);
+
+	monitor_name = "IGT";
+	if (edid == TEST_EDID_CHAMELIUM_DEFAULT)
+		monitor_name = "AthenaDP";

I am starting to grow less and less fond of using the default Chamelium's EDID. This will just make us build up on simillar checks over time. Let's just define our own copy and then use values from it directly.

Quoted 8 lines

"monitor_name" should probably be named manufacturer_id and be obtained by chamelium_get_manufacturer_id(edid_id) or smth.

And since you were talking about MST in one of the other patches, let's talk about MST :-) This would make it more future proof (WIP was defining a copy of EDID for each port using manufacturer id in form of "I-$CHAM_PORT_ID"). chamelium_get_manufacturer_id() can be extended later to also take chamelium_port as parameter.

I now have a patch for another series that adds a DisplayPort EDID (depends on Speaker Allocation Data blocks, so can't be added to this one).

Quoted 55 lines

Other than that the series looks good.

Quoted 53 lines
tests/kms_chamelium.c +25 -5
+
+	igt_assert(eld_from_monitor_name(&eld, monitor_name));
+	igt_assert(eld.sads_len == 1);
+
+	sad = &eld.sads[0];
+	igt_assert(sad->coding_type == CEA_SAD_FORMAT_PCM);
+	igt_assert(sad->channels == 2);
+	igt_assert(sad->rates == (CEA_SAD_SAMPLING_RATE_32KHZ |
+		   CEA_SAD_SAMPLING_RATE_44KHZ | CEA_SAD_SAMPLING_RATE_48KHZ));
+	igt_assert(sad->bits == (CEA_SAD_SAMPLE_SIZE_16 |
+		   CEA_SAD_SAMPLE_SIZE_20 | CEA_SAD_SAMPLE_SIZE_24));
+
+	igt_remove_fb(data->drm_fd, &fb);
+
+	drmModeFreeConnector(connector);
+}
 
 static void randomize_plane_stride(data_t *data,
 				   uint32_t width, uint32_t height,
@@ -2005,11 +2060,7 @@ static unsigned const char *get_hdmi_audio_edid(void)
 	channels = 2; /* TODO: speaker alloc blocks for > 2 channels */
 	sampling_rates = CEA_SAD_SAMPLING_RATE_32KHZ |
 			 CEA_SAD_SAMPLING_RATE_44KHZ |
-			 CEA_SAD_SAMPLING_RATE_48KHZ |
-			 CEA_SAD_SAMPLING_RATE_88KHZ |
-			 CEA_SAD_SAMPLING_RATE_96KHZ |
-			 CEA_SAD_SAMPLING_RATE_176KHZ |
-			 CEA_SAD_SAMPLING_RATE_192KHZ;
+			 CEA_SAD_SAMPLING_RATE_48KHZ;
 	sample_sizes = CEA_SAD_SAMPLE_SIZE_16 |
 		       CEA_SAD_SAMPLE_SIZE_20 |
 		       CEA_SAD_SAMPLE_SIZE_24;
@@ -2174,6 +2225,10 @@ igt_main
 		connector_subtest("dp-audio", DisplayPort)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_CHAMELIUM_DEFAULT);
+
+		connector_subtest("dp-audio-edid", DisplayPort)
+			test_display_audio_edid(&data, port,
+						TEST_EDID_CHAMELIUM_DEFAULT);
 	}
 
 	igt_subtest_group {
@@ -2325,6 +2380,10 @@ igt_main
 		connector_subtest("hdmi-audio", HDMIA)
 			test_display_audio(&data, port, "HDMI",
 					   TEST_EDID_HDMI_AUDIO);
+
+		connector_subtest("hdmi-audio-edid", HDMIA)
+			test_display_audio_edid(&data, port,
+						TEST_EDID_HDMI_AUDIO);
 	}
 
Quoted 4 lines
Quoted 4 lines
tests/kms_chamelium.c +0 -0
 	igt_subtest_group {
Signature · 1 line
2.21.0

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#18 lore raw

[igt-dev] ✓ Fi.CI.BAT: success for Add audio EDID tests to Chamelium

In reply to Simon Ser
== Series Details ==

== Series Details ==

Series: Add audio EDID tests to Chamelium
URL : https://patchwork.freedesktop.org/series/61424/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6175 -> IGTPW_3090
====================================================

Summary
-------

**SUCCESS**

No regressions found.

External URL: https://patchwork.freedesktop.org/api/1.0/series/61424/revisions/1/mbox/

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

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

### IGT changes ###

#### Issues hit ####

* igt@i915_selftest@live_evict:
- fi-bsw-kefka: [PASS][1] -> [DMESG-WARN][2] ([fdo#107709])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/fi-bsw-kefka/igt@i915_selftest@live_evict.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/fi-bsw-kefka/igt@i915_selftest@live_evict.html

* igt@prime_vgem@basic-fence-wait-default:
- fi-icl-u3: [PASS][3] -> [DMESG-WARN][4] ([fdo#107724]) +1 similar issue
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/fi-icl-u3/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/fi-icl-u3/igt@[email protected]

#### Possible fixes ####

* igt@gem_exec_fence@basic-busy-default:
- {fi-icl-guc}: [INCOMPLETE][5] ([fdo#107713]) -> [PASS][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/fi-icl-guc/igt@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/fi-icl-guc/igt@[email protected]

* igt@i915_pm_rpm@module-reload:
- fi-icl-u3: [INCOMPLETE][7] ([fdo#107713] / [fdo#108840]) -> [PASS][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/fi-icl-u3/igt@[email protected]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/fi-icl-u3/igt@[email protected]

* {igt@i915_selftest@live_mman}:
- fi-icl-y: [TIMEOUT][9] -> [PASS][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/fi-icl-y/igt@i915_selftest@live_mman.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/fi-icl-y/igt@i915_selftest@live_mman.html

* igt@kms_addfb_basic@invalid-get-prop-any:
- fi-icl-u3: [DMESG-WARN][11] ([fdo#107724]) -> [PASS][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/fi-icl-u3/igt@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/fi-icl-u3/igt@[email protected]

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

[fdo#107709]: https://bugs.freedesktop.org/show_bug.cgi?id=107709
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
[fdo#108840]: https://bugs.freedesktop.org/show_bug.cgi?id=108840

Participating hosts (54 -> 46)
------------------------------

Missing (8): fi-ilk-m540 fi-hsw-4200u fi-bsw-n3050 fi-byt-squawks fi-bsw-cyan fi-kbl-7560u fi-byt-clapper fi-bdw-samus

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

* IGT: IGT_5026 -> IGTPW_3090

CI_DRM_6175: 0ebe1e37a70176b84d4e2d489f03c3533e0fcd1a @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3090: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/
IGT_5026: 4108c74c3b15460de25ab989f4e2031594559dfc @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Testlist changes ==

+igt@kms_chamelium@dp-audio-edid
+igt@kms_chamelium@hdmi-audio-edid

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#19 lore raw

[igt-dev] ✗ Fi.CI.IGT: failure for Add audio EDID tests to Chamelium

In reply to Simon Ser
== Series Details ==

== Series Details ==

Series: Add audio EDID tests to Chamelium
URL : https://patchwork.freedesktop.org/series/61424/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_6175_full -> IGTPW_3090_full
====================================================

Summary
-------

**FAILURE**

Serious unknown changes coming with IGTPW_3090_full absolutely need to be verified manually.

If you think the reported changes have nothing to do with the changes introduced in IGTPW_3090_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI.

External URL: https://patchwork.freedesktop.org/api/1.0/series/61424/revisions/1/mbox/

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

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

### IGT changes ###

#### Possible regressions ####

* igt@runner@aborted:
- shard-kbl: NOTRUN -> [FAIL][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-kbl1/igt@[email protected]

New tests
---------

New tests have been introduced between CI_DRM_6175_full and IGTPW_3090_full:

### New IGT tests (2) ###

* igt@kms_chamelium@dp-audio-edid:
- Statuses : 6 skip(s)
- Exec time: [0.0] s

* igt@kms_chamelium@hdmi-audio-edid:
- Statuses : 6 skip(s)
- Exec time: [0.0] s

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

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

### IGT changes ###

#### Issues hit ####

* igt@gem_linear_blits@interruptible:
- shard-glk: [PASS][2] -> [INCOMPLETE][3] ([fdo#103359] / [k.org#198133])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk1/igt@[email protected]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk1/igt@[email protected]
- shard-apl: [PASS][4] -> [INCOMPLETE][5] ([fdo#103927])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl1/igt@[email protected]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl1/igt@[email protected]

* igt@i915_suspend@debugfs-reader:
- shard-apl: [PASS][6] -> [DMESG-WARN][7] ([fdo#108566]) +7 similar issues
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl7/igt@[email protected]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl4/igt@[email protected]

* igt@i915_suspend@sysfs-reader:
- shard-kbl: [PASS][8] -> [DMESG-WARN][9] ([fdo#108566])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-kbl3/igt@[email protected]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-kbl2/igt@[email protected]

* igt@kms_cursor_crc@pipe-a-cursor-64x64-offscreen:
- shard-hsw: [PASS][10] -> [INCOMPLETE][11] ([fdo#103540])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-hsw4/igt@[email protected]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-hsw2/igt@[email protected]

* igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
- shard-glk: [PASS][12] -> [FAIL][13] ([fdo#104873])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk9/igt@[email protected]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk1/igt@[email protected]

* igt@kms_cursor_legacy@flip-vs-cursor-legacy:
- shard-apl: [PASS][14] -> [FAIL][15] ([fdo#102670])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl2/igt@[email protected]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl1/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
- shard-iclb: [PASS][16] -> [FAIL][17] ([fdo#103167]) +5 similar issues
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb7/igt@[email protected]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb1/igt@[email protected]

* igt@kms_plane_lowres@pipe-a-tiling-y:
- shard-iclb: [PASS][18] -> [FAIL][19] ([fdo#103166])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@[email protected]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb6/igt@[email protected]

* igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb: [PASS][20] -> [SKIP][21] ([fdo#109441]) +1 similar issue
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@kms_psr@psr2_sprite_plane_move.html

#### Possible fixes ####

* igt@gem_eio@in-flight-suspend:
- shard-glk: [FAIL][22] ([fdo#110667]) -> [PASS][23]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk5/igt@[email protected]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk6/igt@[email protected]

* igt@gem_mmap_gtt@forked-medium-copy-xy:
- shard-iclb: [INCOMPLETE][24] ([fdo#107713] / [fdo#109100]) -> [PASS][25] +1 similar issue
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@[email protected]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb4/igt@[email protected]

* igt@gem_persistent_relocs@forked:
- shard-iclb: [INCOMPLETE][26] ([fdo#107713]) -> [PASS][27]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb7/igt@[email protected]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@gem_softpin@softpin:
- shard-glk: [INCOMPLETE][28] ([fdo#103359] / [k.org#198133]) -> [PASS][29] +1 similar issue
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk4/igt@[email protected]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk5/igt@[email protected]

* igt@gem_tiled_swapping@non-threaded:
- shard-kbl: [FAIL][30] ([fdo#108686]) -> [PASS][31]
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-kbl7/igt@[email protected]
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-kbl1/igt@[email protected]

* igt@i915_suspend@fence-restore-untiled:
- shard-apl: [DMESG-WARN][32] ([fdo#108566]) -> [PASS][33] +5 similar issues
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl7/igt@[email protected]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl2/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite:
- shard-iclb: [FAIL][34] ([fdo#103167]) -> [PASS][35] +3 similar issues
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb1/igt@[email protected]
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@kms_plane_lowres@pipe-a-tiling-x:
- shard-iclb: [FAIL][36] ([fdo#103166]) -> [PASS][37]
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb6/igt@[email protected]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@kms_psr@psr2_cursor_mmap_cpu:
- shard-iclb: [SKIP][38] ([fdo#109441]) -> [PASS][39] +3 similar issues
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@kms_psr@psr2_cursor_mmap_cpu.html
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html

* igt@perf_pmu@rc6-runtime-pm-long:
- shard-glk: [FAIL][40] ([fdo#105010]) -> [PASS][41]
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk1/igt@[email protected]
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk5/igt@[email protected]

[fdo#102670]: https://bugs.freedesktop.org/show_bug.cgi?id=102670
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#104873]: https://bugs.freedesktop.org/show_bug.cgi?id=104873
[fdo#105010]: https://bugs.freedesktop.org/show_bug.cgi?id=105010
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686
[fdo#109100]: https://bugs.freedesktop.org/show_bug.cgi?id=109100
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#110667]: https://bugs.freedesktop.org/show_bug.cgi?id=110667
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133

Participating hosts (10 -> 6)
------------------------------

Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005

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

* IGT: IGT_5026 -> IGTPW_3090
* Piglit: piglit_4509 -> None

CI_DRM_6175: 0ebe1e37a70176b84d4e2d489f03c3533e0fcd1a @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3090: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/
IGT_5026: 4108c74c3b15460de25ab989f4e2031594559dfc @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

author
#20 lore raw

Re: [igt-dev] ✗ Fi.CI.IGT: failure for Add audio EDID tests to Chamelium

Quoted 30 lines · Patchwork

== Series Details ==

Series: Add audio EDID tests to Chamelium
URL : https://patchwork.freedesktop.org/series/61424/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_6175_full -> IGTPW_3090_full
====================================================

Summary
-------

**FAILURE**

Serious unknown changes coming with IGTPW_3090_full absolutely need to be verified manually.

If you think the reported changes have nothing to do with the changes introduced in IGTPW_3090_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI.

External URL: https://patchwork.freedesktop.org/api/1.0/series/61424/revisions/1/mbox/

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

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

Quoted 7 lines

### IGT changes ###

#### Possible regressions ####

* igt@runner@aborted:
- shard-kbl: NOTRUN -> [FAIL][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-kbl1/igt@[email protected]

Cc Martin

Quoted 158 lines

New tests
---------

New tests have been introduced between CI_DRM_6175_full and IGTPW_3090_full:

### New IGT tests (2) ###

* igt@kms_chamelium@dp-audio-edid:
- Statuses : 6 skip(s)
- Exec time: [0.0] s

* igt@kms_chamelium@hdmi-audio-edid:
- Statuses : 6 skip(s)
- Exec time: [0.0] s

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

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

### IGT changes ###

#### Issues hit ####

* igt@gem_linear_blits@interruptible:
- shard-glk: [PASS][2] -> [INCOMPLETE][3] ([fdo#103359] / [k.org#198133])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk1/igt@[email protected]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk1/igt@[email protected]
- shard-apl: [PASS][4] -> [INCOMPLETE][5] ([fdo#103927])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl1/igt@[email protected]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl1/igt@[email protected]

* igt@i915_suspend@debugfs-reader:
- shard-apl: [PASS][6] -> [DMESG-WARN][7] ([fdo#108566]) +7 similar issues
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl7/igt@[email protected]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl4/igt@[email protected]

* igt@i915_suspend@sysfs-reader:
- shard-kbl: [PASS][8] -> [DMESG-WARN][9] ([fdo#108566])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-kbl3/igt@[email protected]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-kbl2/igt@[email protected]

* igt@kms_cursor_crc@pipe-a-cursor-64x64-offscreen:
- shard-hsw: [PASS][10] -> [INCOMPLETE][11] ([fdo#103540])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-hsw4/igt@[email protected]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-hsw2/igt@[email protected]

* igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
- shard-glk: [PASS][12] -> [FAIL][13] ([fdo#104873])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk9/igt@[email protected]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk1/igt@[email protected]

* igt@kms_cursor_legacy@flip-vs-cursor-legacy:
- shard-apl: [PASS][14] -> [FAIL][15] ([fdo#102670])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl2/igt@[email protected]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl1/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
- shard-iclb: [PASS][16] -> [FAIL][17] ([fdo#103167]) +5 similar issues
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb7/igt@[email protected]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb1/igt@[email protected]

* igt@kms_plane_lowres@pipe-a-tiling-y:
- shard-iclb: [PASS][18] -> [FAIL][19] ([fdo#103166])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@[email protected]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb6/igt@[email protected]

* igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb: [PASS][20] -> [SKIP][21] ([fdo#109441]) +1 similar issue
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@kms_psr@psr2_sprite_plane_move.html

#### Possible fixes ####

* igt@gem_eio@in-flight-suspend:
- shard-glk: [FAIL][22] ([fdo#110667]) -> [PASS][23]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk5/igt@[email protected]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk6/igt@[email protected]

* igt@gem_mmap_gtt@forked-medium-copy-xy:
- shard-iclb: [INCOMPLETE][24] ([fdo#107713] / [fdo#109100]) -> [PASS][25] +1 similar issue
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@[email protected]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb4/igt@[email protected]

* igt@gem_persistent_relocs@forked:
- shard-iclb: [INCOMPLETE][26] ([fdo#107713]) -> [PASS][27]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb7/igt@[email protected]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@gem_softpin@softpin:
- shard-glk: [INCOMPLETE][28] ([fdo#103359] / [k.org#198133]) -> [PASS][29] +1 similar issue
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk4/igt@[email protected]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk5/igt@[email protected]

* igt@gem_tiled_swapping@non-threaded:
- shard-kbl: [FAIL][30] ([fdo#108686]) -> [PASS][31]
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-kbl7/igt@[email protected]
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-kbl1/igt@[email protected]

* igt@i915_suspend@fence-restore-untiled:
- shard-apl: [DMESG-WARN][32] ([fdo#108566]) -> [PASS][33] +5 similar issues
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl7/igt@[email protected]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl2/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite:
- shard-iclb: [FAIL][34] ([fdo#103167]) -> [PASS][35] +3 similar issues
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb1/igt@[email protected]
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@kms_plane_lowres@pipe-a-tiling-x:
- shard-iclb: [FAIL][36] ([fdo#103166]) -> [PASS][37]
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb6/igt@[email protected]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@kms_psr@psr2_cursor_mmap_cpu:
- shard-iclb: [SKIP][38] ([fdo#109441]) -> [PASS][39] +3 similar issues
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@kms_psr@psr2_cursor_mmap_cpu.html
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html

* igt@perf_pmu@rc6-runtime-pm-long:
- shard-glk: [FAIL][40] ([fdo#105010]) -> [PASS][41]
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk1/igt@[email protected]
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk5/igt@[email protected]

[fdo#102670]: https://bugs.freedesktop.org/show_bug.cgi?id=102670
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#104873]: https://bugs.freedesktop.org/show_bug.cgi?id=104873
[fdo#105010]: https://bugs.freedesktop.org/show_bug.cgi?id=105010
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686
[fdo#109100]: https://bugs.freedesktop.org/show_bug.cgi?id=109100
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#110667]: https://bugs.freedesktop.org/show_bug.cgi?id=110667
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133

Participating hosts (10 -> 6)
------------------------------

Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005

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

* IGT: IGT_5026 -> IGTPW_3090
* Piglit: piglit_4509 -> None

Quoted 8 lines

CI_DRM_6175: 0ebe1e37a70176b84d4e2d489f03c3533e0fcd1a @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3090: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/
IGT_5026: 4108c74c3b15460de25ab989f4e2031594559dfc @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#21 lore raw

Re: [igt-dev] ✗ Fi.CI.IGT: failure for Add audio EDID tests to Chamelium

Quoted 33 lines · Simon
Quoted 32 lines · Patchwork

== Series Details ==

Series: Add audio EDID tests to Chamelium
URL : https://patchwork.freedesktop.org/series/61424/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_6175_full -> IGTPW_3090_full
====================================================

Summary
-------

**FAILURE**

Serious unknown changes coming with IGTPW_3090_full absolutely need to be verified manually.

If you think the reported changes have nothing to do with the changes introduced in IGTPW_3090_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI.

External URL: https://patchwork.freedesktop.org/api/1.0/series/61424/revisions/1/mbox/

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

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

### IGT changes ###

Quoted 7 lines
Quoted 5 lines

#### Possible regressions ####

* igt@runner@aborted:
- shard-kbl: NOTRUN -> [FAIL][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-kbl1/igt@[email protected]

Cc Martin

Filed and re-reported!

https://bugs.freedesktop.org/show_bug.cgi?id=110827

Thanks,
Martin

Quoted 159 lines
Quoted 159 lines

New tests
---------

New tests have been introduced between CI_DRM_6175_full and IGTPW_3090_full:

### New IGT tests (2) ###

* igt@kms_chamelium@dp-audio-edid:
- Statuses : 6 skip(s)
- Exec time: [0.0] s

* igt@kms_chamelium@hdmi-audio-edid:
- Statuses : 6 skip(s)
- Exec time: [0.0] s

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

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

### IGT changes ###

#### Issues hit ####

* igt@gem_linear_blits@interruptible:
- shard-glk: [PASS][2] -> [INCOMPLETE][3] ([fdo#103359] / [k.org#198133])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk1/igt@[email protected]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk1/igt@[email protected]
- shard-apl: [PASS][4] -> [INCOMPLETE][5] ([fdo#103927])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl1/igt@[email protected]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl1/igt@[email protected]

* igt@i915_suspend@debugfs-reader:
- shard-apl: [PASS][6] -> [DMESG-WARN][7] ([fdo#108566]) +7 similar issues
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl7/igt@[email protected]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl4/igt@[email protected]

* igt@i915_suspend@sysfs-reader:
- shard-kbl: [PASS][8] -> [DMESG-WARN][9] ([fdo#108566])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-kbl3/igt@[email protected]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-kbl2/igt@[email protected]

* igt@kms_cursor_crc@pipe-a-cursor-64x64-offscreen:
- shard-hsw: [PASS][10] -> [INCOMPLETE][11] ([fdo#103540])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-hsw4/igt@[email protected]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-hsw2/igt@[email protected]

* igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
- shard-glk: [PASS][12] -> [FAIL][13] ([fdo#104873])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk9/igt@[email protected]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk1/igt@[email protected]

* igt@kms_cursor_legacy@flip-vs-cursor-legacy:
- shard-apl: [PASS][14] -> [FAIL][15] ([fdo#102670])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl2/igt@[email protected]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl1/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
- shard-iclb: [PASS][16] -> [FAIL][17] ([fdo#103167]) +5 similar issues
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb7/igt@[email protected]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb1/igt@[email protected]

* igt@kms_plane_lowres@pipe-a-tiling-y:
- shard-iclb: [PASS][18] -> [FAIL][19] ([fdo#103166])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@[email protected]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb6/igt@[email protected]

* igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb: [PASS][20] -> [SKIP][21] ([fdo#109441]) +1 similar issue
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@kms_psr@psr2_sprite_plane_move.html

#### Possible fixes ####

* igt@gem_eio@in-flight-suspend:
- shard-glk: [FAIL][22] ([fdo#110667]) -> [PASS][23]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk5/igt@[email protected]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk6/igt@[email protected]

* igt@gem_mmap_gtt@forked-medium-copy-xy:
- shard-iclb: [INCOMPLETE][24] ([fdo#107713] / [fdo#109100]) -> [PASS][25] +1 similar issue
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@[email protected]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb4/igt@[email protected]

* igt@gem_persistent_relocs@forked:
- shard-iclb: [INCOMPLETE][26] ([fdo#107713]) -> [PASS][27]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb7/igt@[email protected]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@gem_softpin@softpin:
- shard-glk: [INCOMPLETE][28] ([fdo#103359] / [k.org#198133]) -> [PASS][29] +1 similar issue
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk4/igt@[email protected]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk5/igt@[email protected]

* igt@gem_tiled_swapping@non-threaded:
- shard-kbl: [FAIL][30] ([fdo#108686]) -> [PASS][31]
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-kbl7/igt@[email protected]
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-kbl1/igt@[email protected]

* igt@i915_suspend@fence-restore-untiled:
- shard-apl: [DMESG-WARN][32] ([fdo#108566]) -> [PASS][33] +5 similar issues
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl7/igt@[email protected]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl2/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite:
- shard-iclb: [FAIL][34] ([fdo#103167]) -> [PASS][35] +3 similar issues
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb1/igt@[email protected]
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@kms_plane_lowres@pipe-a-tiling-x:
- shard-iclb: [FAIL][36] ([fdo#103166]) -> [PASS][37]
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb6/igt@[email protected]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@kms_psr@psr2_cursor_mmap_cpu:
- shard-iclb: [SKIP][38] ([fdo#109441]) -> [PASS][39] +3 similar issues
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@kms_psr@psr2_cursor_mmap_cpu.html
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html

* igt@perf_pmu@rc6-runtime-pm-long:
- shard-glk: [FAIL][40] ([fdo#105010]) -> [PASS][41]
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk1/igt@[email protected]
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk5/igt@[email protected]

[fdo#102670]: https://bugs.freedesktop.org/show_bug.cgi?id=102670
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#104873]: https://bugs.freedesktop.org/show_bug.cgi?id=104873
[fdo#105010]: https://bugs.freedesktop.org/show_bug.cgi?id=105010
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686
[fdo#109100]: https://bugs.freedesktop.org/show_bug.cgi?id=109100
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#110667]: https://bugs.freedesktop.org/show_bug.cgi?id=110667
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133

Participating hosts (10 -> 6)
------------------------------

Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005

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

* IGT: IGT_5026 -> IGTPW_3090
* Piglit: piglit_4509 -> None

Quoted 9 lines
Quoted 8 lines

CI_DRM_6175: 0ebe1e37a70176b84d4e2d489f03c3533e0fcd1a @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3090: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/
IGT_5026: 4108c74c3b15460de25ab989f4e2031594559dfc @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki
Business Identity Code: 0357606 - 4
Domiciled in Helsinki

This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#22 lore raw

[igt-dev] ✓ Fi.CI.IGT: success for Add audio EDID tests to Chamelium

In reply to Simon Ser
== Series Details ==

== Series Details ==

Series: Add audio EDID tests to Chamelium
URL : https://patchwork.freedesktop.org/series/61424/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6175_full -> IGTPW_3090_full
====================================================

Summary
-------

**SUCCESS**

No regressions found.

External URL: https://patchwork.freedesktop.org/api/1.0/series/61424/revisions/1/mbox/

New tests
---------

New tests have been introduced between CI_DRM_6175_full and IGTPW_3090_full:

### New IGT tests (2) ###

* igt@kms_chamelium@dp-audio-edid:
- Statuses : 6 skip(s)
- Exec time: [0.0] s

* igt@kms_chamelium@hdmi-audio-edid:
- Statuses : 6 skip(s)
- Exec time: [0.0] s

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

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

### IGT changes ###

#### Issues hit ####

* igt@gem_linear_blits@interruptible:
- shard-glk: [PASS][1] -> [INCOMPLETE][2] ([fdo#103359] / [k.org#198133])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk1/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk1/igt@[email protected]
- shard-apl: [PASS][3] -> [INCOMPLETE][4] ([fdo#103927])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl1/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl1/igt@[email protected]

* igt@i915_suspend@debugfs-reader:
- shard-apl: [PASS][5] -> [DMESG-WARN][6] ([fdo#108566]) +7 similar issues
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl7/igt@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl4/igt@[email protected]

* igt@i915_suspend@sysfs-reader:
- shard-kbl: [PASS][7] -> [DMESG-WARN][8] ([fdo#108566])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-kbl3/igt@[email protected]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-kbl2/igt@[email protected]

* igt@kms_cursor_crc@pipe-a-cursor-64x64-offscreen:
- shard-hsw: [PASS][9] -> [INCOMPLETE][10] ([fdo#103540])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-hsw4/igt@[email protected]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-hsw2/igt@[email protected]

* igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
- shard-glk: [PASS][11] -> [FAIL][12] ([fdo#104873])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk9/igt@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk1/igt@[email protected]

* igt@kms_cursor_legacy@flip-vs-cursor-legacy:
- shard-apl: [PASS][13] -> [FAIL][14] ([fdo#102670])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl2/igt@[email protected]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl1/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
- shard-iclb: [PASS][15] -> [FAIL][16] ([fdo#103167]) +5 similar issues
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb7/igt@[email protected]
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb1/igt@[email protected]

* igt@kms_plane_lowres@pipe-a-tiling-y:
- shard-iclb: [PASS][17] -> [FAIL][18] ([fdo#103166])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@[email protected]
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb6/igt@[email protected]

* igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#109441]) +1 similar issue
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@kms_psr@psr2_sprite_plane_move.html

#### Possible fixes ####

* igt@gem_eio@in-flight-suspend:
- shard-glk: [FAIL][21] ([fdo#110667]) -> [PASS][22]
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk5/igt@[email protected]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk6/igt@[email protected]

* igt@gem_mmap_gtt@forked-medium-copy-xy:
- shard-iclb: [INCOMPLETE][23] ([fdo#107713] / [fdo#109100]) -> [PASS][24] +1 similar issue
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@[email protected]
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb4/igt@[email protected]

* igt@gem_persistent_relocs@forked:
- shard-iclb: [INCOMPLETE][25] ([fdo#107713]) -> [PASS][26]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb7/igt@[email protected]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@gem_softpin@softpin:
- shard-glk: [INCOMPLETE][27] ([fdo#103359] / [k.org#198133]) -> [PASS][28] +1 similar issue
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk4/igt@[email protected]
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk5/igt@[email protected]

* igt@gem_tiled_swapping@non-threaded:
- shard-kbl: [FAIL][29] ([fdo#108686]) -> [PASS][30]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-kbl7/igt@[email protected]
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-kbl1/igt@[email protected]

* igt@i915_suspend@fence-restore-untiled:
- shard-apl: [DMESG-WARN][31] ([fdo#108566]) -> [PASS][32] +5 similar issues
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-apl7/igt@[email protected]
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-apl2/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite:
- shard-iclb: [FAIL][33] ([fdo#103167]) -> [PASS][34] +3 similar issues
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb1/igt@[email protected]
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@kms_plane_lowres@pipe-a-tiling-x:
- shard-iclb: [FAIL][35] ([fdo#103166]) -> [PASS][36]
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb6/igt@[email protected]
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb5/igt@[email protected]

* igt@kms_psr@psr2_cursor_mmap_cpu:
- shard-iclb: [SKIP][37] ([fdo#109441]) -> [PASS][38] +3 similar issues
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-iclb3/igt@kms_psr@psr2_cursor_mmap_cpu.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html

* igt@perf_pmu@rc6-runtime-pm-long:
- shard-glk: [FAIL][39] ([fdo#105010]) -> [PASS][40]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6175/shard-glk1/igt@[email protected]
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/shard-glk5/igt@[email protected]

[fdo#102670]: https://bugs.freedesktop.org/show_bug.cgi?id=102670
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#104873]: https://bugs.freedesktop.org/show_bug.cgi?id=104873
[fdo#105010]: https://bugs.freedesktop.org/show_bug.cgi?id=105010
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686
[fdo#109100]: https://bugs.freedesktop.org/show_bug.cgi?id=109100
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#110667]: https://bugs.freedesktop.org/show_bug.cgi?id=110667
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133

Participating hosts (10 -> 6)
------------------------------

Missing (4): pig-skl-6260u shard-skl pig-hsw-4770r pig-glk-j5005

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

* IGT: IGT_5026 -> IGTPW_3090
* Piglit: piglit_4509 -> None

CI_DRM_6175: 0ebe1e37a70176b84d4e2d489f03c3533e0fcd1a @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3090: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/
IGT_5026: 4108c74c3b15460de25ab989f4e2031594559dfc @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3090/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#23 lore raw

[igt-dev] ✓ Fi.CI.BAT: success for Add audio EDID tests to Chamelium (rev2)

In reply to Simon Ser
== Series Details ==

== Series Details ==

Series: Add audio EDID tests to Chamelium (rev2)
URL : https://patchwork.freedesktop.org/series/61424/
State : success

== Summary ==

CI Bug Log - changes from IGT_5028 -> IGTPW_3095
====================================================

Summary
-------

**SUCCESS**

No regressions found.

External URL: https://patchwork.freedesktop.org/api/1.0/series/61424/revisions/2/mbox/

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

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

### IGT changes ###

#### Issues hit ####

* igt@kms_addfb_basic@unused-offsets:
- fi-icl-u3: [PASS][1] -> [DMESG-WARN][2] ([fdo#107724]) +1 similar issue
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/fi-icl-u3/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/fi-icl-u3/igt@[email protected]

* igt@prime_vgem@basic-fence-read:
- fi-icl-dsi: [PASS][3] -> [INCOMPLETE][4] ([fdo#107713])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/fi-icl-dsi/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/fi-icl-dsi/igt@[email protected]

#### Possible fixes ####

* igt@gem_exec_suspend@basic-s3:
- fi-blb-e6850: [INCOMPLETE][5] ([fdo#107718]) -> [PASS][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/fi-blb-e6850/igt@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/fi-blb-e6850/igt@[email protected]

* igt@gem_exec_suspend@basic-s4-devices:
- fi-kbl-7500u: [DMESG-WARN][7] ([fdo#105128] / [fdo#107139]) -> [PASS][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/fi-kbl-7500u/igt@[email protected]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/fi-kbl-7500u/igt@[email protected]

* {igt@i915_selftest@live_mman}:
- fi-icl-u3: [TIMEOUT][9] ([fdo#110818 ]) -> [PASS][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/fi-icl-u3/igt@i915_selftest@live_mman.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/fi-icl-u3/igt@i915_selftest@live_mman.html

* igt@kms_chamelium@dp-crc-fast:
- fi-cml-u2: [FAIL][11] ([fdo#110627]) -> [PASS][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/fi-cml-u2/igt@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/fi-cml-u2/igt@[email protected]

* igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
- fi-icl-u3: [DMESG-WARN][13] ([fdo#107724]) -> [PASS][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/fi-icl-u3/igt@[email protected]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/fi-icl-u3/igt@[email protected]

* igt@kms_frontbuffer_tracking@basic:
- fi-hsw-peppy: [DMESG-WARN][15] ([fdo#102614]) -> [PASS][16]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/fi-hsw-peppy/igt@[email protected]
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/fi-hsw-peppy/igt@[email protected]

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

[fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
[fdo#105128]: https://bugs.freedesktop.org/show_bug.cgi?id=105128
[fdo#107139]: https://bugs.freedesktop.org/show_bug.cgi?id=107139
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
[fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#110627]: https://bugs.freedesktop.org/show_bug.cgi?id=110627
[fdo#110818 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110818

Participating hosts (51 -> 45)
------------------------------

Additional (1): fi-icl-y
Missing (7): fi-ilk-m540 fi-hsw-4200u fi-bsw-cyan fi-pnv-d510 fi-kbl-7560u fi-byt-clapper fi-bdw-samus

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

* IGT: IGT_5028 -> IGTPW_3095

CI_DRM_6180: e724dd1cacd9da18b18808880a13b0cb33ddd3d7 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3095: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/
IGT_5028: 2d5c26f844cf1851e5097680d30c951978291c29 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Testlist changes ==

+igt@kms_chamelium@dp-audio-edid
+igt@kms_chamelium@hdmi-audio-edid

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev

#24 lore raw

[igt-dev] ✓ Fi.CI.IGT: success for Add audio EDID tests to Chamelium (rev2)

In reply to Simon Ser
== Series Details ==

== Series Details ==

Series: Add audio EDID tests to Chamelium (rev2)
URL : https://patchwork.freedesktop.org/series/61424/
State : success

== Summary ==

CI Bug Log - changes from IGT_5028_full -> IGTPW_3095_full
====================================================

Summary
-------

**WARNING**

Minor unknown changes coming with IGTPW_3095_full need to be verified manually.

If you think the reported changes have nothing to do with the changes introduced in IGTPW_3095_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI.

External URL: https://patchwork.freedesktop.org/api/1.0/series/61424/revisions/2/mbox/

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

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

### IGT changes ###

#### Warnings ####

* igt@kms_hdmi_inject@inject-audio:
- shard-iclb: [FAIL][1] ([fdo#102370]) -> [FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-iclb7/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-iclb3/igt@[email protected]

New tests
---------

New tests have been introduced between IGT_5028_full and IGTPW_3095_full:

### New IGT tests (2) ###

* igt@kms_chamelium@dp-audio-edid:
- Statuses : 6 skip(s)
- Exec time: [0.0] s

* igt@kms_chamelium@hdmi-audio-edid:
- Statuses : 5 skip(s)
- Exec time: [0.0] s

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

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

### IGT changes ###

#### Issues hit ####

* igt@gem_eio@in-flight-suspend:
- shard-kbl: [PASS][3] -> [INCOMPLETE][4] ([fdo#103665]) +1 similar issue
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-kbl6/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-kbl2/igt@[email protected]
- shard-apl: [PASS][5] -> [DMESG-WARN][6] ([fdo#108566]) +4 similar issues
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-apl7/igt@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-apl8/igt@[email protected]

* igt@gem_eio@unwedge-stress:
- shard-snb: [PASS][7] -> [FAIL][8] ([fdo#109661])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-snb2/igt@[email protected]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-snb6/igt@[email protected]

* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-glk: [PASS][9] -> [FAIL][10] ([fdo#105363])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-glk3/igt@[email protected]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-glk8/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render:
- shard-iclb: [PASS][11] -> [FAIL][12] ([fdo#103167]) +1 similar issue
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-iclb5/igt@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-iclb2/igt@[email protected]

* igt@kms_psr2_su@page_flip:
- shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#109642])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-iclb2/igt@kms_psr2_su@page_flip.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-iclb6/igt@kms_psr2_su@page_flip.html

* igt@kms_psr@psr2_primary_page_flip:
- shard-iclb: [PASS][15] -> [SKIP][16] ([fdo#109441]) +3 similar issues
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-iclb2/igt@kms_psr@psr2_primary_page_flip.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-iclb6/igt@kms_psr@psr2_primary_page_flip.html

#### Possible fixes ####

* igt@gem_mmap_gtt@forked-medium-copy-xy:
- shard-iclb: [TIMEOUT][17] ([fdo#109673]) -> [PASS][18]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-iclb1/igt@[email protected]
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-iclb8/igt@[email protected]

* igt@gem_tiled_swapping@non-threaded:
- shard-iclb: [FAIL][19] ([fdo#108686]) -> [PASS][20]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-iclb8/igt@[email protected]
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-iclb4/igt@[email protected]

* igt@gem_workarounds@suspend-resume:
- shard-apl: [DMESG-WARN][21] ([fdo#108566]) -> [PASS][22] +7 similar issues
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-apl5/igt@[email protected]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-apl7/igt@[email protected]

* igt@kms_cursor_crc@pipe-b-cursor-alpha-opaque:
- shard-apl: [FAIL][23] ([fdo#103232]) -> [PASS][24] +1 similar issue
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-apl6/igt@[email protected]
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-apl4/igt@[email protected]
- shard-kbl: [FAIL][25] ([fdo#103232]) -> [PASS][26] +1 similar issue
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-kbl7/igt@[email protected]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-kbl2/igt@[email protected]

* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
- shard-iclb: [FAIL][27] ([fdo#103167]) -> [PASS][28] +4 similar issues
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-iclb7/igt@[email protected]
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-iclb7/igt@[email protected]

* igt@kms_plane@plane-position-covered-pipe-a-planes:
- shard-snb: [SKIP][29] ([fdo#109271]) -> [PASS][30] +1 similar issue
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-snb6/igt@[email protected]
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-snb4/igt@[email protected]

* igt@kms_plane_lowres@pipe-a-tiling-y:
- shard-iclb: [FAIL][31] ([fdo#103166]) -> [PASS][32]
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-iclb1/igt@[email protected]
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-iclb8/igt@[email protected]

* igt@kms_psr@psr2_basic:
- shard-iclb: [SKIP][33] ([fdo#109441]) -> [PASS][34]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-iclb3/igt@kms_psr@psr2_basic.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-iclb2/igt@kms_psr@psr2_basic.html

#### Warnings ####

* igt@gem_mmap_gtt@forked-big-copy-odd:
- shard-iclb: [TIMEOUT][35] ([fdo#109673]) -> [INCOMPLETE][36] ([fdo#107713] / [fdo#109100])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-iclb8/igt@[email protected]
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-iclb5/igt@[email protected]

* igt@gem_tiled_swapping@non-threaded:
- shard-hsw: [FAIL][37] ([fdo#108686]) -> [INCOMPLETE][38] ([fdo#103540])
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5028/shard-hsw5/igt@[email protected]
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/shard-hsw5/igt@[email protected]

[fdo#102370]: https://bugs.freedesktop.org/show_bug.cgi?id=102370
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
[fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363
[fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
[fdo#108566]: https://bugs.freedesktop.org/show_bug.cgi?id=108566
[fdo#108686]: https://bugs.freedesktop.org/show_bug.cgi?id=108686
[fdo#109100]: https://bugs.freedesktop.org/show_bug.cgi?id=109100
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#109661]: https://bugs.freedesktop.org/show_bug.cgi?id=109661
[fdo#109673]: https://bugs.freedesktop.org/show_bug.cgi?id=109673

Participating hosts (7 -> 6)
------------------------------

Missing (1): shard-skl

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

* IGT: IGT_5028 -> IGTPW_3095

CI_DRM_6180: e724dd1cacd9da18b18808880a13b0cb33ddd3d7 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_3095: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/
IGT_5028: 2d5c26f844cf1851e5097680d30c951978291c29 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_3095/
_______________________________________________
igt-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/igt-dev