All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH v2 0/4] PSR-SU MPO test case
@ 2022-03-11 19:44 David Zhang
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 1/4] lib/igt_psr: pass higher versions of PSR SU panels David Zhang
                   ` (5 more replies)
  0 siblings, 6 replies; 10+ messages in thread
From: David Zhang @ 2022-03-11 19:44 UTC (permalink / raw)
  To: igt-dev

changes in v2:
-------------------------
* fix the typo in string comp within psr cap debugfs
  reading
* move the #define macro to top of the source file

David Zhang (4):
  lib/igt_psr: pass higher versions of PSR SU panels
  lib/igt_amd: add helpers to check PSR capibility
  lib/igt_amd: add helpers to check PSR state
  tests/amdgpu/amd_psr: add PSR-SU MPO subtest case

 lib/igt_amd.c          | 173 +++++++++++++++++++++++++++++------------
 lib/igt_amd.h          |  36 +++++++++
 lib/igt_psr.c          |   8 +-
 tests/amdgpu/amd_psr.c | 151 ++++++++++++++++++++++++++++++++---
 4 files changed, 305 insertions(+), 63 deletions(-)

-- 
2.25.1

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

* [igt-dev] [PATCH v2 1/4] lib/igt_psr: pass higher versions of PSR SU panels
  2022-03-11 19:44 [igt-dev] [PATCH v2 0/4] PSR-SU MPO test case David Zhang
@ 2022-03-11 19:44 ` David Zhang
  2022-03-11 21:30   ` Aurabindo Pillai
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 2/4] lib/igt_amd: add helpers to check PSR capibility David Zhang
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 10+ messages in thread
From: David Zhang @ 2022-03-11 19:44 UTC (permalink / raw)
  To: igt-dev

[why]
From eDP 1.5 (eDP 1.4b SCR adopted), a higher version of PSR-SU eDP
panel, i.e. version 0x4, is added into spec. Need to treat such PSR
panel as PSR capable sink device.

[how]
validate the PSR capable sink for higher PSR version 0x4.

Cc: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Jay Pillai <aurabindo.pillai@amd.com>
Cc: Wayne Lin <wayne.lin@amd.com>

Signed-off-by: David Zhang <dingchen.zhang@amd.com>
---
 lib/igt_psr.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/lib/igt_psr.c b/lib/igt_psr.c
index 98eb28b4..2b73e809 100644
--- a/lib/igt_psr.c
+++ b/lib/igt_psr.c
@@ -209,8 +209,14 @@ bool psr_sink_support(int device, int debugfs_fd, enum psr_mode mode)
 		/*
 		 * i915 requires PSR version 0x03 that is PSR2 + SU with
 		 * Y-coordinate to support PSR2
+		 *
+		 * or
+		 *
+		 * PSR version 0x4 that is PSR2 + SU w/ Y-coordinate and SU
+		 * Region Early Transport to support PSR2 (eDP 1.5)
 		 */
-		return strstr(buf, "Sink support: yes [0x03]");
+		return strstr(buf, "Sink support: yes [0x03]") ||
+		       strstr(buf, "Sink support: yes [0x04]");
 }
 
 #define PSR2_SU_BLOCK_STR_LOOKUP "PSR2 SU blocks:\n0\t"
-- 
2.25.1

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

* [igt-dev] [PATCH v2 2/4] lib/igt_amd: add helpers to check PSR capibility
  2022-03-11 19:44 [igt-dev] [PATCH v2 0/4] PSR-SU MPO test case David Zhang
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 1/4] lib/igt_psr: pass higher versions of PSR SU panels David Zhang
@ 2022-03-11 19:44 ` David Zhang
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 3/4] lib/igt_amd: add helpers to check PSR state David Zhang
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: David Zhang @ 2022-03-11 19:44 UTC (permalink / raw)
  To: igt-dev

[why]
For AMDGPU devices, the debugfs interface to check sink PSR cap
is a bit different from that of i915, i.e. the interface is located
in the path
<debugfs_root>/dri/0/eDP-X/psr_capability
where 'X' is eDP connector index.

We need such debugfs interface to check if the sink device and the
x86 driver supports PSR or PSR-SU capabilities.

[how]
define and add the helpers to read from connector debugfs interface

For sink device PSR cap check:
- for PSR1 device, the psr version DPCD be 0x1
- for PSR-SU device, the psr version DPCD be either 0x3 or 0x4.

For amdgpu x86 driver PSR support check:
- for PSR1, expect to contain sub-string "yes"
- for PSR-SU, expect to contain sub-string "yes [0x1]"

changes in v2
-------------------
* fix the typo in string comp within the helper to read from
  psr cap debugfs interface

Cc: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Jay Pillai <aurabindo.pillai@amd.com>
Cc: Wayne Lin <wayne.lin@amd.com>

Signed-off-by: David Zhang <dingchen.zhang@amd.com>
---
 lib/igt_amd.c | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_amd.h |  8 +++++
 2 files changed, 101 insertions(+)

diff --git a/lib/igt_amd.c b/lib/igt_amd.c
index ae94fb99..577a8612 100644
--- a/lib/igt_amd.c
+++ b/lib/igt_amd.c
@@ -1004,3 +1004,96 @@ bool igt_amd_output_has_ilr_setting(int drm_fd, char *connector_name)
 	close(fd);
 	return true;
 }
+
+/**
+ * igt_amd_output_has_psr_cap: check if eDP connector has psr_capability debugfs entry
+ * @drm_fd: DRM file descriptor
+ * @connector_name: The connector's name, on which we're reading the status
+ */
+bool igt_amd_output_has_psr_cap(int drm_fd, char *connector_name)
+{
+	int fd;
+	int res;
+	struct stat stat;
+
+	fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
+	if (fd < 0) {
+		igt_info("output %s: debugfs not found\n", connector_name);
+		return false;
+	}
+
+	res = fstatat(fd, DEBUGFS_EDP_PSR_CAP, &stat, 0);
+	if (res != 0) {
+		igt_info("output %s: %s debugfs not supported\n", connector_name, DEBUGFS_EDP_PSR_CAP);
+		close(fd);
+		return false;
+	}
+
+	close(fd);
+	return true;
+}
+
+/**
+ * igt_amd_psr_support_sink: check if sink device support PSR
+ * @drm_fd: DRM file descriptor
+ * @connector_name: The connector's name, on which we're reading the status
+ * @mode: expected PSR mode, either PSR1 or PSR2
+ */
+bool igt_amd_psr_support_sink(int drm_fd, char *connector_name, enum psr_mode mode)
+{
+	char buf[PSR_STATUS_MAX_LEN];
+	int ret;
+	int fd;
+
+	fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
+	if (fd < 0) {
+		igt_info("output %s: debugfs not found\n", connector_name);
+		return false;
+	}
+
+	ret = igt_debugfs_simple_read(fd, DEBUGFS_EDP_PSR_CAP, buf, sizeof(buf));
+	igt_assert_f(ret >= 0, "Reading %s for connector %s failed.\n",
+		     DEBUGFS_EDP_PSR_CAP, connector_name);
+	close(fd);
+
+	if (ret < 1)
+		return false;
+
+	if (mode == PSR_MODE_1)
+		return strstr(buf, "Sink support: yes [0x01]");
+	else
+		return strstr(buf, "Sink support: yes [0x03]") ||
+		       strstr(buf, "Sink support: yes [0x04]");
+}
+
+/**
+ * igt_amd_psr_support_drv: check if AMDGPU kernel driver support PSR
+ * @drm_fd: DRM file descriptor
+ * @connector_name: The connector's name, on which we're reading the status
+ * @mode: expected PSR mode, either PSR1 or PSR2
+ */
+bool igt_amd_psr_support_drv(int drm_fd, char *connector_name, enum psr_mode mode)
+{
+	char buf[PSR_STATUS_MAX_LEN];
+	int ret;
+	int fd;
+
+	fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
+	if (fd < 0) {
+		igt_info("output %s: debugfs not found\n", connector_name);
+		return false;
+	}
+
+	ret = igt_debugfs_simple_read(fd, DEBUGFS_EDP_PSR_CAP, buf, sizeof(buf));
+	igt_assert_f(ret >= 0, "Reading %s for connector %s failed.\n",
+		     DEBUGFS_EDP_PSR_CAP, connector_name);
+	close(fd);
+
+	if (ret < 1)
+		return false;
+
+	if (mode == PSR_MODE_1)
+		return strstr(buf, "Driver support: yes");
+	else
+		return strstr(buf, "Driver support: yes [0x01]");
+}
diff --git a/lib/igt_amd.h b/lib/igt_amd.h
index f11e36b2..6e465817 100644
--- a/lib/igt_amd.h
+++ b/lib/igt_amd.h
@@ -26,6 +26,7 @@
 #include <stdint.h>
 #include "igt.h"
 #include "igt_fb.h"
+#include "igt_psr.h"
 
 /* Read & Write DSC parameters */
 #define DEBUGFS_DSC_CLOCK_EN "dsc_clock_en"
@@ -42,8 +43,10 @@
 #define DEBUGFS_DP_LINK_SETTINGS "link_settings"
 #define DEBUGFS_HPD_TRIGGER "trigger_hotplug"
 
+/* eDP related */
 #define DEBUGFS_EDP_ILR_SETTING "ilr_setting"
 #define MAX_SUPPORTED_ILR 8
+#define DEBUGFS_EDP_PSR_CAP	"psr_capability"
 
 enum amd_dsc_clock_force {
 	DSC_AUTOMATIC = 0,
@@ -129,11 +132,16 @@ void igt_amd_write_link_settings(
 	int drm_fd, char *connector_name, enum dc_lane_count lane_count,
 	enum dc_link_rate link_rate, enum dc_link_training_type training_type);
 bool igt_amd_output_has_link_settings(int drm_fd, char *connector_name);
+
+/* eDP debugfs helpers */
 void igt_amd_read_ilr_setting(
 	int drm_fd, char *connector_name, int *supported_ilr);
 void igt_amd_write_ilr_setting(
 	int drm_fd, char *connector_name, enum dc_lane_count lane_count,
 	uint8_t link_rate_set);
 bool igt_amd_output_has_ilr_setting(int drm_fd, char *connector_name);
+bool igt_amd_output_has_psr_cap(int drm_fd, char *connector_name);
+bool igt_amd_psr_support_sink(int drm_fd, char *connector_name, enum psr_mode mode);
+bool igt_amd_psr_support_drv(int drm_fd, char *connector_name, enum psr_mode mode);
 
 #endif /* IGT_AMD_H */
-- 
2.25.1

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

* [igt-dev] [PATCH v2 3/4] lib/igt_amd: add helpers to check PSR state
  2022-03-11 19:44 [igt-dev] [PATCH v2 0/4] PSR-SU MPO test case David Zhang
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 1/4] lib/igt_psr: pass higher versions of PSR SU panels David Zhang
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 2/4] lib/igt_amd: add helpers to check PSR capibility David Zhang
@ 2022-03-11 19:44 ` David Zhang
  2022-03-11 21:19   ` Aurabindo Pillai
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 4/4] tests/amdgpu/amd_psr: add PSR-SU MPO subtest case David Zhang
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 10+ messages in thread
From: David Zhang @ 2022-03-11 19:44 UTC (permalink / raw)
  To: igt-dev

[why]
For AMDGPU devices, we'd check the PSR state via reading from the
debugfs interface for a given eDP connector, where the debugfs
interface path locates at
  <debugfs_root>/dri/0/eDP-X/psr_state
where 'X' is the eDP connector index.

[how]
define and add the helper to check if PSR state debugfs interface
is supported in driver, and the helper to read PSR state from the
debugfs interface.

In addition, the helper to check debugfs supported is generic and
can be used to replacing the existed redundant codes.

Cc: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Jay Pillai <aurabindo.pillai@amd.com>
Cc: Wayne Lin <wayne.lin@amd.com>

Signed-off-by: David Zhang <dingchen.zhang@amd.com>
---
 lib/igt_amd.c          | 142 +++++++++++++++++------------------------
 lib/igt_amd.h          |   3 +
 tests/amdgpu/amd_psr.c |  13 +---
 3 files changed, 65 insertions(+), 93 deletions(-)

diff --git a/lib/igt_amd.c b/lib/igt_amd.c
index 577a8612..0e861ab1 100644
--- a/lib/igt_amd.c
+++ b/lib/igt_amd.c
@@ -251,11 +251,15 @@ bool igt_amd_is_tiled(uint64_t modifier)
 }
 
 /**
- * igt_amd_output_has_dsc: check if connector has dsc debugfs entry
- * @drm_fd: DRM file descriptor
- * @connector_name: The connector's name, on which we're reading the status
+ * @brief generic helper to check if the debugfs entry of given connector has the
+ *        debugfs interface defined.
+ * @param drm_fd: DRM file descriptor
+ * @param connector_name: The connector's name, on which we're reading the status
+ * @param interface_name: The debugfs interface name to check
+ * @return true if <debugfs_root>/connector_name/interface_name exists and defined
+ * @return false otherwise
  */
-static bool igt_amd_output_has_dsc(int drm_fd, char *connector_name)
+static bool igt_amd_output_has_debugfs(int drm_fd, char *connector_name, const char *interface_name)
 {
 	int fd;
 	int res;
@@ -267,9 +271,9 @@ static bool igt_amd_output_has_dsc(int drm_fd, char *connector_name)
 		return false;
 	}
 
-	res = fstatat(fd, DEBUGFS_DSC_CLOCK_EN , &stat, 0);
+	res = fstatat(fd, interface_name, &stat, 0);
 	if (res != 0) {
-		igt_info("%s debugfs not supported\n", DEBUGFS_DSC_CLOCK_EN);
+		igt_info("output %s: %s debugfs not supported\n", connector_name, interface_name);
 		close(fd);
 		return false;
 	}
@@ -278,6 +282,16 @@ static bool igt_amd_output_has_dsc(int drm_fd, char *connector_name)
 	return true;
 }
 
+/**
+ * igt_amd_output_has_dsc: check if connector has dsc debugfs entry
+ * @drm_fd: DRM file descriptor
+ * @connector_name: The connector's name, on which we're reading the status
+ */
+static bool igt_amd_output_has_dsc(int drm_fd, char *connector_name)
+{
+	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_DSC_CLOCK_EN);
+}
+
 /**
  * is_dp_dsc_supported: Checks if connector is DSC capable
  * @display: A pointer to an #igt_display_t structure
@@ -707,25 +721,7 @@ int igt_amd_read_dsc_param_slice_bpg(int drm_fd, char *connector_name)
  */
 static bool igt_amd_output_has_hpd(int drm_fd, char *connector_name)
 {
-        int fd;
-        int res;
-        struct stat stat;
-
-        fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
-        if (fd < 0) {
-                igt_info("output %s: debugfs not found\n", connector_name);
-                return false;
-        }
-
-        res = fstatat(fd, DEBUGFS_HPD_TRIGGER, &stat, 0);
-        if (res != 0) {
-                igt_info("%s debugfs not supported\n", DEBUGFS_HPD_TRIGGER);
-                close(fd);
-                return false;
-        }
-
-        close(fd);
-        return true;
+	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_HPD_TRIGGER);
 }
 
 /**
@@ -872,25 +868,7 @@ void igt_amd_write_link_settings(
  */
 bool igt_amd_output_has_link_settings(int drm_fd, char *connector_name)
 {
-	int fd;
-	int res;
-	struct stat stat;
-
-	fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
-	if (fd < 0) {
-		igt_info("output %s: debugfs not found\n", connector_name);
-		return false;
-	}
-
-	res = fstatat(fd, DEBUGFS_DP_LINK_SETTINGS, &stat, 0);
-	if (res != 0) {
-		igt_info("output %s: %s debugfs not supported\n", connector_name, DEBUGFS_DP_LINK_SETTINGS);
-		close(fd);
-		return false;
-	}
-
-	close(fd);
-	return true;
+	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_DP_LINK_SETTINGS);;
 }
 
 /*
@@ -984,25 +962,7 @@ void igt_amd_write_ilr_setting(
  */
 bool igt_amd_output_has_ilr_setting(int drm_fd, char *connector_name)
 {
-	int fd;
-	int res;
-	struct stat stat;
-
-	fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
-	if (fd < 0) {
-		igt_info("output %s: debugfs not found\n", connector_name);
-		return false;
-	}
-
-	res = fstatat(fd, DEBUGFS_EDP_ILR_SETTING, &stat, 0);
-	if (res != 0) {
-		igt_info("output %s: %s debugfs not supported\n", connector_name, DEBUGFS_EDP_ILR_SETTING);
-		close(fd);
-		return false;
-	}
-
-	close(fd);
-	return true;
+	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_EDP_ILR_SETTING);;
 }
 
 /**
@@ -1012,25 +972,7 @@ bool igt_amd_output_has_ilr_setting(int drm_fd, char *connector_name)
  */
 bool igt_amd_output_has_psr_cap(int drm_fd, char *connector_name)
 {
-	int fd;
-	int res;
-	struct stat stat;
-
-	fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
-	if (fd < 0) {
-		igt_info("output %s: debugfs not found\n", connector_name);
-		return false;
-	}
-
-	res = fstatat(fd, DEBUGFS_EDP_PSR_CAP, &stat, 0);
-	if (res != 0) {
-		igt_info("output %s: %s debugfs not supported\n", connector_name, DEBUGFS_EDP_PSR_CAP);
-		close(fd);
-		return false;
-	}
-
-	close(fd);
-	return true;
+	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_EDP_PSR_CAP);
 }
 
 /**
@@ -1097,3 +1039,39 @@ bool igt_amd_psr_support_drv(int drm_fd, char *connector_name, enum psr_mode mod
 	else
 		return strstr(buf, "Driver support: yes [0x01]");
 }
+
+/**
+ * igt_amd_output_has_psr_state: check if eDP connector has psr_state debugfs entry
+ * @drm_fd: DRM file descriptor
+ * @connector_name: The connector's name, on which we're reading the status
+ */
+bool igt_amd_output_has_psr_state(int drm_fd, char *connector_name)
+{
+	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_EDP_PSR_STATE);
+}
+
+/**
+ * @brief Read PSR State from debugfs interface
+ * @param drm_fd DRM file descriptor
+ * @param connector_name The connector's name, on which we're reading the status
+ * @return PSR state as integer
+ */
+int igt_amd_read_psr_state(int drm_fd, char *connector_name)
+{
+	char buf[4];
+	int fd, ret;
+
+	fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
+	if (fd < 0) {
+		igt_info("Couldn't open connector %s debugfs directory\n", connector_name);
+		return false;
+	}
+
+	ret = igt_debugfs_simple_read(fd, DEBUGFS_EDP_PSR_STATE, buf, sizeof(buf));
+	close(fd);
+
+	igt_assert_f(ret >= 0, "Reading %s for connector %s failed.\n",
+		     DEBUGFS_EDP_PSR_STATE, connector_name);
+
+	return strtol(buf, NULL, 10);
+}
diff --git a/lib/igt_amd.h b/lib/igt_amd.h
index 6e465817..f87c1991 100644
--- a/lib/igt_amd.h
+++ b/lib/igt_amd.h
@@ -47,6 +47,7 @@
 #define DEBUGFS_EDP_ILR_SETTING "ilr_setting"
 #define MAX_SUPPORTED_ILR 8
 #define DEBUGFS_EDP_PSR_CAP	"psr_capability"
+#define DEBUGFS_EDP_PSR_STATE	"psr_state"
 
 enum amd_dsc_clock_force {
 	DSC_AUTOMATIC = 0,
@@ -143,5 +144,7 @@ bool igt_amd_output_has_ilr_setting(int drm_fd, char *connector_name);
 bool igt_amd_output_has_psr_cap(int drm_fd, char *connector_name);
 bool igt_amd_psr_support_sink(int drm_fd, char *connector_name, enum psr_mode mode);
 bool igt_amd_psr_support_drv(int drm_fd, char *connector_name, enum psr_mode mode);
+bool igt_amd_output_has_psr_state(int drm_fd, char *connector_name);
+int  igt_amd_read_psr_state(int drm_fd, char *connector_name);
 
 #endif /* IGT_AMD_H */
diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
index 732eab25..88e824c3 100644
--- a/tests/amdgpu/amd_psr.c
+++ b/tests/amdgpu/amd_psr.c
@@ -24,6 +24,7 @@
 #include "igt.h"
 #include "igt_core.h"
 #include "igt_kms.h"
+#include "igt_amd.h"
 #include <stdint.h>
 #include <fcntl.h>
 #include <xf86drmMode.h>
@@ -34,7 +35,6 @@
  */
 IGT_TEST_DESCRIPTION("Basic test for enabling Panel Self Refresh for eDP displays");
 
-#define DEBUGFS_PSR_STATE "psr_state"
 /* After a full update, a few fast updates are necessary for PSR to be enabled */
 #define N_FLIPS 6
 /* DMCUB takes some time to actually enable PSR. Worst case delay is 4 seconds */
@@ -108,8 +108,6 @@ static int check_conn_type(data_t *data, uint32_t type) {
 }
 
 static void run_check_psr(data_t *data, bool test_null_crtc) {
-	char buf[8];
-	char *connector_name;
 	int fd, edp_idx, dp_idx, ret, i, psr_state;
 	igt_fb_t ref_fb, ref_fb2;
 	igt_fb_t *flip_fb;
@@ -157,14 +155,7 @@ static void run_check_psr(data_t *data, bool test_null_crtc) {
 		if (output->config.connector->connector_type != DRM_MODE_CONNECTOR_eDP)
 			continue;
 
-		connector_name = output->name;
-		fd = igt_debugfs_connector_dir(data->fd, connector_name, O_RDONLY);
-		igt_assert(fd >= 0);
-
-		ret = igt_debugfs_simple_read(fd, DEBUGFS_PSR_STATE, buf, sizeof(buf));
-		igt_require(ret > 0);
-
-		psr_state =  (int) strtol(buf, NULL, 10);
+		psr_state = igt_amd_read_psr_state(data->fd, output->name);
 		igt_fail_on_f(psr_state < 1, "PSR was not enabled for connector %s\n", output->name);
 		igt_fail_on_f(psr_state == 0xff, "PSR is invalid for connector %s\n", output->name);
 		igt_fail_on_f(psr_state != 5, "PSR state is expected to be at 5 on a "
-- 
2.25.1

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

* [igt-dev] [PATCH v2 4/4] tests/amdgpu/amd_psr: add PSR-SU MPO subtest case
  2022-03-11 19:44 [igt-dev] [PATCH v2 0/4] PSR-SU MPO test case David Zhang
                   ` (2 preceding siblings ...)
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 3/4] lib/igt_amd: add helpers to check PSR state David Zhang
@ 2022-03-11 19:44 ` David Zhang
  2022-03-11 21:27   ` Aurabindo Pillai
  2022-03-11 20:46 ` [igt-dev] ✓ Fi.CI.BAT: success for PSR-SU MPO test case Patchwork
  2022-03-11 23:09 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  5 siblings, 1 reply; 10+ messages in thread
From: David Zhang @ 2022-03-11 19:44 UTC (permalink / raw)
  To: igt-dev

[why]
We need a test case to imitate the multiplane overlay (MPO) video
playback use case and check PSR-SU enablement during test run.

[how]
The test run only works for PSR-SU capable sink device and skip for
any non-eDP or non-PSR-SU connector or kernel driver not supporting
PSR-SU feature.

To emulate the video playback and MPO scenario, we use overlay plane
w/ size of addressable and primary plane w/ size of quater of overlay
acting as video playback region.

Create couple of framebuffers w/ size of primary plane and with
the pattern of vertical color strip on different position on the
FB. During test run, we flip the primary framebuffer and expect the
visual effect of moving strip within the region of primary plane
acting as video playback. The primary plane during test run is not
moving position or resizing.

changes in v2
----------------
* move #define statement to top of the source file.

Cc: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Jay Pillai <aurabindo.pillai@amd.com>
Cc: Wayne Lin <wayne.lin@amd.com>

Signed-off-by: David Zhang <dingchen.zhang@amd.com>
---
 lib/igt_amd.h          |  25 ++++++++
 tests/amdgpu/amd_psr.c | 138 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 163 insertions(+)

diff --git a/lib/igt_amd.h b/lib/igt_amd.h
index f87c1991..e4e12ce5 100644
--- a/lib/igt_amd.h
+++ b/lib/igt_amd.h
@@ -90,6 +90,31 @@ enum dc_link_training_type {
 	LINK_TRAINING_NO_PATTERN
 };
 
+/*
+ * enumeration of PSR STATE below should be aligned to the upstreamed
+ * amdgpu kernel driver 'enum dc_psr_state' in dc_type.h
+ */
+enum amdgpu_psr_state {
+	PSR_STATE0 = 0x0,
+	PSR_STATE1,
+	PSR_STATE1a,
+	PSR_STATE2,
+	PSR_STATE2a,
+	PSR_STATE2b,
+	PSR_STATE3,
+	PSR_STATE3Init,
+	PSR_STATE4,
+	PSR_STATE4a,
+	PSR_STATE4b,
+	PSR_STATE4c,
+	PSR_STATE4d,
+	PSR_STATE5,
+	PSR_STATE5a,
+	PSR_STATE5b,
+	PSR_STATE5c,
+	PSR_STATE_INVALID = 0xFF
+};
+
 uint32_t igt_amd_create_bo(int fd, uint64_t size);
 void *igt_amd_mmap_bo(int fd, uint32_t handle, uint64_t size, int prot);
 unsigned int igt_amd_compute_offset(unsigned int* swizzle_pattern,
diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
index 88e824c3..d80820c8 100644
--- a/tests/amdgpu/amd_psr.c
+++ b/tests/amdgpu/amd_psr.c
@@ -32,6 +32,7 @@
 /* hardware requirements:
  * 1. eDP panel that supports PSR (multiple panel can be connected at the same time)
  * 2. Optional DP display for testing a regression condition (setting crtc to null)
+ * 3. eDP panel that supports PSR-SU
  */
 IGT_TEST_DESCRIPTION("Basic test for enabling Panel Self Refresh for eDP displays");
 
@@ -39,22 +40,39 @@ IGT_TEST_DESCRIPTION("Basic test for enabling Panel Self Refresh for eDP display
 #define N_FLIPS 6
 /* DMCUB takes some time to actually enable PSR. Worst case delay is 4 seconds */
 #define PSR_SETTLE_DELAY 4
+/* # of framebuffers for PSR-SU MPO test case to emulate video playback */
+#ifndef N_MPO_TEST_RECT_FB
+#define N_MPO_TEST_RECT_FB 20
+#endif
 
 /* Common test data. */
 typedef struct data {
         igt_display_t display;
         igt_plane_t *primary;
         igt_plane_t *cursor;
+	igt_plane_t *overlay;
         igt_output_t *output;
         igt_pipe_t *pipe;
         igt_pipe_crc_t *pipe_crc;
         drmModeModeInfo *mode;
         enum pipe pipe_id;
         int fd;
+	int debugfs_fd;
         int w;
         int h;
 } data_t;
 
+static void draw_color_alpha(igt_fb_t *fb, int x, int y, int w, int h,
+		             double r, double g, double b, double a)
+{
+	cairo_t *cr = igt_get_cairo_ctx(fb->fd, fb);
+
+	cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
+	igt_paint_color_alpha(cr, x, y, w, h, r, g, b, a);
+
+	igt_put_cairo_ctx(cr);
+}
+
 /* Common test setup. */
 static void test_init(data_t *data)
 {
@@ -68,9 +86,11 @@ static void test_init(data_t *data)
 
         data->output = igt_get_single_output_for_pipe(display, data->pipe_id);
         igt_require(data->output);
+	igt_info("output %s\n", data->output->name);
 
         data->mode = igt_output_get_mode(data->output);
         igt_assert(data->mode);
+	kmstest_dump_mode(data->mode);
 
         data->primary =
                 igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
@@ -78,6 +98,9 @@ static void test_init(data_t *data)
         data->cursor =
                 igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_CURSOR);
 
+	data->overlay =
+		igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_OVERLAY);
+
         data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id, "auto");
 
         igt_output_set_pipe(data->output, data->pipe_id);
@@ -181,6 +204,114 @@ static void run_check_psr(data_t *data, bool test_null_crtc) {
 	test_fini(data);
 }
 
+static void run_check_psr_su_mpo(data_t *data)
+{
+	int edp_idx = check_conn_type(data, DRM_MODE_CONNECTOR_eDP);
+	bool sink_support_psrsu = false;
+	bool drv_suport_psrsu = false;
+	igt_fb_t ov_fb;		// fb for overlay
+	igt_fb_t rect_fb[N_MPO_TEST_RECT_FB]; 	// rectangle fbs for primary, emulate as video playback region
+	igt_fb_t ref_fb;	// reference fb
+	igt_fb_t *flip_fb;
+	int ret;
+	const int run_sec = 5;
+	enum amdgpu_psr_state psr_state = PSR_STATE0;
+	int frame_rate = 0;
+
+	/* skip the test run if no eDP sink detected */
+	igt_skip_on_f(edp_idx == -1, "no eDP connector found\n");
+
+	/* init */
+	test_init(data);
+	frame_rate = data->mode->vrefresh;
+
+	/* run the test i.i.f. eDP panel supports and kernel driver both support PSR-SU  */
+	igt_skip_on(!igt_amd_output_has_psr_cap(data->fd, data->output->name));
+	igt_skip_on(!igt_amd_output_has_psr_state(data->fd, data->output->name));
+	sink_support_psrsu = igt_amd_psr_support_sink(data->fd, data->output->name, PSR_MODE_2);
+	igt_skip_on_f(!sink_support_psrsu, "output %s not support PSR-SU\n", data->output->name);
+	drv_suport_psrsu = igt_amd_psr_support_drv(data->fd, data->output->name, PSR_MODE_2);
+	igt_skip_on_f(!drv_suport_psrsu, "kernel driver not support PSR-SU\n");
+
+	/* reference background pattern in grey */
+	igt_create_color_fb(data->fd, data->w, data->h, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR,
+			    .5, .5, .5, &ref_fb);
+	igt_plane_set_fb(data->primary, &ref_fb);
+	igt_output_set_pipe(data->output, data->pipe_id);
+	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+
+	/*
+	 * overlay and primary fbs creation
+	 * for MPO vpb use case, the vpb is always in the primary plane as an underlay,
+	 * while the control panel/tool bar such icons/items are all in the overlay plane,
+	 * and alpha for vpb region is adjusted to control the transparency.
+	 * thus the overlay fb be initialized w/ ARGB pixel format to support blending
+	 */
+	igt_create_color_fb(data->fd, data->w, data->h, DRM_FORMAT_ARGB8888, DRM_FORMAT_MOD_LINEAR,
+			    1.0, 1.0, 1.0, &ov_fb);
+	for (int i = 0; i < N_MPO_TEST_RECT_FB; ++i) {
+		cairo_t *cr;
+		int strip_w = data->w / (2 * N_MPO_TEST_RECT_FB);
+
+		igt_create_fb(data->fd, data->w / 2, data->h / 2, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR,
+			      &rect_fb[i]);
+		cr = igt_get_cairo_ctx(data->fd, &rect_fb[i]);
+		igt_assert_f(cr, "Failed to get cairo context\n");
+		/* background in black */
+		igt_paint_color(cr, 0, 0, data->w, data->h, .0, .0, .0);
+		/* foreground (megenta strip) */
+		igt_paint_color(cr, i * strip_w, 0, strip_w, data->h, 1.0, .0, 1.0);
+
+		igt_put_cairo_ctx(cr);
+	}
+
+	/* tie fbs to planes and set position/size/blending */
+	igt_plane_set_fb(data->overlay, &ov_fb);
+	igt_plane_set_fb(data->primary, &rect_fb[0]);
+	igt_plane_set_position(data->primary, 0, 0);
+	igt_plane_set_size(data->primary, data->w / 2, data->h / 2);
+
+	/* adjust alpha for vpb (primary plane) region in overlay */
+	draw_color_alpha(&ov_fb, 0, 0, data->w / 2, data->h / 2, .5, .5, .5, .3);
+
+	igt_output_set_pipe(data->output, data->pipe_id);
+	igt_display_commit_atomic(&data->display, 0, NULL);
+
+	/* multiplane overlay to emulate video playback use case */
+	igt_info("\n start flipping ...\n");
+
+	for (int i = 0; i < run_sec * frame_rate; ++i) {
+		igt_info(" About to commit a primary plane (FB %d), loop %d \n", i % N_MPO_TEST_RECT_FB, i);
+		flip_fb = &rect_fb[i % N_MPO_TEST_RECT_FB];
+
+		igt_plane_set_fb(data->primary, flip_fb);
+		igt_output_set_pipe(data->output, data->pipe_id);
+
+		ret = drmModePageFlip(data->fd, data->output->config.crtc->crtc_id,
+				      flip_fb->fb_id, DRM_MODE_PAGE_FLIP_EVENT, NULL);
+		igt_require(ret == 0);
+		kmstest_wait_for_pageflip(data->fd);
+
+		/* check PSR state */
+		if (i > PSR_SETTLE_DELAY * frame_rate) {
+			psr_state = igt_amd_read_psr_state(data->fd, data->output->name);
+			igt_fail_on_f(psr_state == PSR_STATE0,
+				"PSR was not enabled for connector %s\n", data->output->name);
+			igt_fail_on_f(psr_state == PSR_STATE_INVALID,
+				"PSR is invalid for connector %s\n", data->output->name);
+			igt_fail_on_f(psr_state != PSR_STATE3,
+				"PSR state is expected to be STATE_3 for connector %s\n", data->output->name);
+		}
+	}
+
+	/* fini */
+	igt_remove_fb(data->fd, &ref_fb);
+	igt_remove_fb(data->fd, &ov_fb);
+	for (int i = 0; i < N_MPO_TEST_RECT_FB; ++i) igt_remove_fb(data->fd, &rect_fb[i]);
+	test_fini(data);
+	close(data->fd);
+}
+
 igt_main
 {
 	data_t data;
@@ -191,6 +322,8 @@ igt_main
 	igt_fixture
 	{
 		data.fd = drm_open_driver_master(DRIVER_AMDGPU);
+		if (data.fd == -1) igt_skip("Not an amdgpu driver.\n");
+		data.debugfs_fd = igt_debugfs_dir(data.fd);
 
 		kmstest_set_vt_graphics_mode();
 
@@ -205,8 +338,13 @@ igt_main
 	igt_describe("Test whether setting CRTC to null triggers any warning with PSR enabled");
 	igt_subtest("psr_enable_null_crtc") run_check_psr(&data, true);
 
+	igt_describe("Test to validate PSR SU enablement with Visual Confirm "
+		     "and to imitate Multiplane Overlay video playback scenario");
+	igt_subtest("psr_su_mpo") run_check_psr_su_mpo(&data);
+
 	igt_fixture
 	{
+		close(data.debugfs_fd);
 		igt_display_fini(&data.display);
 	}
 }
-- 
2.25.1

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

* [igt-dev] ✓ Fi.CI.BAT: success for PSR-SU MPO test case
  2022-03-11 19:44 [igt-dev] [PATCH v2 0/4] PSR-SU MPO test case David Zhang
                   ` (3 preceding siblings ...)
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 4/4] tests/amdgpu/amd_psr: add PSR-SU MPO subtest case David Zhang
@ 2022-03-11 20:46 ` Patchwork
  2022-03-11 23:09 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  5 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2022-03-11 20:46 UTC (permalink / raw)
  To: David Zhang; +Cc: igt-dev

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

== Series Details ==

Series: PSR-SU MPO test case
URL   : https://patchwork.freedesktop.org/series/101300/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_11353 -> IGTPW_6783
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (40 -> 41)
------------------------------

  Additional (3): fi-kbl-soraka fi-icl-u2 fi-bwr-2160 
  Missing    (2): fi-bsw-cyan fi-bdw-samus 

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

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

### IGT changes ###

#### Suppressed ####

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

  * igt@kms_flip@basic-flip-vs-modeset@a-edp1:
    - {bat-adlp-6}:       [PASS][1] -> [DMESG-WARN][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/bat-adlp-6/igt@kms_flip@basic-flip-vs-modeset@a-edp1.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/bat-adlp-6/igt@kms_flip@basic-flip-vs-modeset@a-edp1.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@amdgpu/amd_cs_nop@fork-gfx0:
    - fi-icl-u2:          NOTRUN -> [SKIP][3] ([fdo#109315]) +17 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-icl-u2/igt@amdgpu/amd_cs_nop@fork-gfx0.html

  * igt@gem_exec_fence@basic-busy@bcs0:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][4] ([fdo#109271]) +9 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-kbl-soraka/igt@gem_exec_fence@basic-busy@bcs0.html

  * igt@gem_exec_suspend@basic-s3:
    - fi-bwr-2160:        NOTRUN -> [SKIP][5] ([fdo#109271]) +66 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-bwr-2160/igt@gem_exec_suspend@basic-s3.html

  * igt@gem_huc_copy@huc-copy:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][6] ([fdo#109271] / [i915#2190])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-kbl-soraka/igt@gem_huc_copy@huc-copy.html
    - fi-icl-u2:          NOTRUN -> [SKIP][7] ([i915#2190])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-icl-u2/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][8] ([fdo#109271] / [i915#4613]) +3 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-kbl-soraka/igt@gem_lmem_swapping@basic.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - fi-icl-u2:          NOTRUN -> [SKIP][9] ([i915#4613]) +3 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-icl-u2/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@i915_selftest@live@gt_pm:
    - fi-kbl-soraka:      NOTRUN -> [DMESG-FAIL][10] ([i915#1886])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-kbl-soraka/igt@i915_selftest@live@gt_pm.html

  * igt@i915_selftest@live@hangcheck:
    - fi-rkl-guc:         [PASS][11] -> [INCOMPLETE][12] ([i915#2373] / [i915#4983])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/fi-rkl-guc/igt@i915_selftest@live@hangcheck.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-rkl-guc/igt@i915_selftest@live@hangcheck.html

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][13] ([fdo#109271] / [fdo#111827]) +8 similar issues
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-kbl-soraka/igt@kms_chamelium@common-hpd-after-suspend.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-icl-u2:          NOTRUN -> [SKIP][14] ([fdo#111827]) +8 similar issues
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - fi-icl-u2:          NOTRUN -> [SKIP][15] ([fdo#109278]) +2 similar issues
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-icl-u2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-icl-u2:          NOTRUN -> [SKIP][16] ([fdo#109285])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-icl-u2/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d:
    - fi-kbl-soraka:      NOTRUN -> [SKIP][17] ([fdo#109271] / [i915#533])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-kbl-soraka/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - fi-icl-u2:          NOTRUN -> [SKIP][18] ([i915#3555])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-icl-u2/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-userptr:
    - fi-icl-u2:          NOTRUN -> [SKIP][19] ([i915#3301])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-icl-u2/igt@prime_vgem@basic-userptr.html

  * igt@runner@aborted:
    - fi-bdw-5557u:       NOTRUN -> [FAIL][20] ([i915#2426] / [i915#4312])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-bdw-5557u/igt@runner@aborted.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@gt_mocs:
    - fi-tgl-1115g4:      [DMESG-WARN][21] ([i915#2867]) -> [PASS][22] +20 similar issues
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/fi-tgl-1115g4/igt@i915_selftest@live@gt_mocs.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-tgl-1115g4/igt@i915_selftest@live@gt_mocs.html

  * igt@kms_busy@basic@modeset:
    - {bat-adlp-6}:       [DMESG-WARN][23] -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/bat-adlp-6/igt@kms_busy@basic@modeset.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/bat-adlp-6/igt@kms_busy@basic@modeset.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b:
    - fi-cfl-8109u:       [DMESG-WARN][25] ([i915#295]) -> [PASS][26] +11 similar issues
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/fi-cfl-8109u/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/fi-cfl-8109u/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-b.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1155]: https://gitlab.freedesktop.org/drm/intel/issues/1155
  [i915#1886]: https://gitlab.freedesktop.org/drm/intel/issues/1886
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2373]: https://gitlab.freedesktop.org/drm/intel/issues/2373
  [i915#2426]: https://gitlab.freedesktop.org/drm/intel/issues/2426
  [i915#2867]: https://gitlab.freedesktop.org/drm/intel/issues/2867
  [i915#295]: https://gitlab.freedesktop.org/drm/intel/issues/295
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5087]: https://gitlab.freedesktop.org/drm/intel/issues/5087
  [i915#5127]: https://gitlab.freedesktop.org/drm/intel/issues/5127
  [i915#5193]: https://gitlab.freedesktop.org/drm/intel/issues/5193
  [i915#5195]: https://gitlab.freedesktop.org/drm/intel/issues/5195
  [i915#5270]: https://gitlab.freedesktop.org/drm/intel/issues/5270
  [i915#5275]: https://gitlab.freedesktop.org/drm/intel/issues/5275
  [i915#5276]: https://gitlab.freedesktop.org/drm/intel/issues/5276
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6378 -> IGTPW_6783

  CI-20190529: 20190529
  CI_DRM_11353: 3b3183b6f5343a9e149ff1f6656b131d72445adc @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_6783: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/index.html
  IGT_6378: 9c79047f49acdb6450368ee13fd8b6d28f3fb8e1 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git



== Testlist changes ==

+igt@amdgpu/amd_psr@psr_su_mpo

== Logs ==

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

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

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

* Re: [igt-dev] [PATCH v2 3/4] lib/igt_amd: add helpers to check PSR state
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 3/4] lib/igt_amd: add helpers to check PSR state David Zhang
@ 2022-03-11 21:19   ` Aurabindo Pillai
  0 siblings, 0 replies; 10+ messages in thread
From: Aurabindo Pillai @ 2022-03-11 21:19 UTC (permalink / raw)
  To: David Zhang, igt-dev



On 2022-03-11 14:44, David Zhang wrote:
> [why]
> For AMDGPU devices, we'd check the PSR state via reading from the
> debugfs interface for a given eDP connector, where the debugfs
> interface path locates at
>    <debugfs_root>/dri/0/eDP-X/psr_state
> where 'X' is the eDP connector index.
> 
> [how]
> define and add the helper to check if PSR state debugfs interface
> is supported in driver, and the helper to read PSR state from the
> debugfs interface.
> 
> In addition, the helper to check debugfs supported is generic and
> can be used to replacing the existed redundant codes.

I'd recommend keeping any code refactor separate from feature related 
changes. This would come handy in case there is a regression. By 
reverting the feature related code, we dont need to lose out on the code 
refactor and vice versa.

Please split this code into two commits - one which does the refactor 
and the other for the PSR related change.

> 
> Cc: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Jay Pillai <aurabindo.pillai@amd.com>
> Cc: Wayne Lin <wayne.lin@amd.com>
> 
> Signed-off-by: David Zhang <dingchen.zhang@amd.com>
> ---
>   lib/igt_amd.c          | 142 +++++++++++++++++------------------------
>   lib/igt_amd.h          |   3 +
>   tests/amdgpu/amd_psr.c |  13 +---
>   3 files changed, 65 insertions(+), 93 deletions(-)
> 
> diff --git a/lib/igt_amd.c b/lib/igt_amd.c
> index 577a8612..0e861ab1 100644
> --- a/lib/igt_amd.c
> +++ b/lib/igt_amd.c
> @@ -251,11 +251,15 @@ bool igt_amd_is_tiled(uint64_t modifier)
>   }
>   
>   /**
> - * igt_amd_output_has_dsc: check if connector has dsc debugfs entry
> - * @drm_fd: DRM file descriptor
> - * @connector_name: The connector's name, on which we're reading the status
> + * @brief generic helper to check if the debugfs entry of given connector has the
> + *        debugfs interface defined.
> + * @param drm_fd: DRM file descriptor
> + * @param connector_name: The connector's name, on which we're reading the status
> + * @param interface_name: The debugfs interface name to check
> + * @return true if <debugfs_root>/connector_name/interface_name exists and defined
> + * @return false otherwise
>    */
> -static bool igt_amd_output_has_dsc(int drm_fd, char *connector_name)
> +static bool igt_amd_output_has_debugfs(int drm_fd, char *connector_name, const char *interface_name)
>   {
>   	int fd;
>   	int res;
> @@ -267,9 +271,9 @@ static bool igt_amd_output_has_dsc(int drm_fd, char *connector_name)
>   		return false;
>   	}
>   
> -	res = fstatat(fd, DEBUGFS_DSC_CLOCK_EN , &stat, 0);
> +	res = fstatat(fd, interface_name, &stat, 0);
>   	if (res != 0) {
> -		igt_info("%s debugfs not supported\n", DEBUGFS_DSC_CLOCK_EN);
> +		igt_info("output %s: %s debugfs not supported\n", connector_name, interface_name);
>   		close(fd);
>   		return false;
>   	}
> @@ -278,6 +282,16 @@ static bool igt_amd_output_has_dsc(int drm_fd, char *connector_name)
>   	return true;
>   }
>   
> +/**
> + * igt_amd_output_has_dsc: check if connector has dsc debugfs entry
> + * @drm_fd: DRM file descriptor
> + * @connector_name: The connector's name, on which we're reading the status
> + */
> +static bool igt_amd_output_has_dsc(int drm_fd, char *connector_name)
> +{
> +	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_DSC_CLOCK_EN);
> +}
> +
>   /**
>    * is_dp_dsc_supported: Checks if connector is DSC capable
>    * @display: A pointer to an #igt_display_t structure
> @@ -707,25 +721,7 @@ int igt_amd_read_dsc_param_slice_bpg(int drm_fd, char *connector_name)
>    */
>   static bool igt_amd_output_has_hpd(int drm_fd, char *connector_name)
>   {
> -        int fd;
> -        int res;
> -        struct stat stat;
> -
> -        fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
> -        if (fd < 0) {
> -                igt_info("output %s: debugfs not found\n", connector_name);
> -                return false;
> -        }
> -
> -        res = fstatat(fd, DEBUGFS_HPD_TRIGGER, &stat, 0);
> -        if (res != 0) {
> -                igt_info("%s debugfs not supported\n", DEBUGFS_HPD_TRIGGER);
> -                close(fd);
> -                return false;
> -        }
> -
> -        close(fd);
> -        return true;
> +	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_HPD_TRIGGER);
>   }
>   
>   /**
> @@ -872,25 +868,7 @@ void igt_amd_write_link_settings(
>    */
>   bool igt_amd_output_has_link_settings(int drm_fd, char *connector_name)
>   {
> -	int fd;
> -	int res;
> -	struct stat stat;
> -
> -	fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
> -	if (fd < 0) {
> -		igt_info("output %s: debugfs not found\n", connector_name);
> -		return false;
> -	}
> -
> -	res = fstatat(fd, DEBUGFS_DP_LINK_SETTINGS, &stat, 0);
> -	if (res != 0) {
> -		igt_info("output %s: %s debugfs not supported\n", connector_name, DEBUGFS_DP_LINK_SETTINGS);
> -		close(fd);
> -		return false;
> -	}
> -
> -	close(fd);
> -	return true;
> +	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_DP_LINK_SETTINGS);;
>   }
>   
>   /*
> @@ -984,25 +962,7 @@ void igt_amd_write_ilr_setting(
>    */
>   bool igt_amd_output_has_ilr_setting(int drm_fd, char *connector_name)
>   {
> -	int fd;
> -	int res;
> -	struct stat stat;
> -
> -	fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
> -	if (fd < 0) {
> -		igt_info("output %s: debugfs not found\n", connector_name);
> -		return false;
> -	}
> -
> -	res = fstatat(fd, DEBUGFS_EDP_ILR_SETTING, &stat, 0);
> -	if (res != 0) {
> -		igt_info("output %s: %s debugfs not supported\n", connector_name, DEBUGFS_EDP_ILR_SETTING);
> -		close(fd);
> -		return false;
> -	}
> -
> -	close(fd);
> -	return true;
> +	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_EDP_ILR_SETTING);;
>   }
>   
>   /**
> @@ -1012,25 +972,7 @@ bool igt_amd_output_has_ilr_setting(int drm_fd, char *connector_name)
>    */
>   bool igt_amd_output_has_psr_cap(int drm_fd, char *connector_name)
>   {
> -	int fd;
> -	int res;
> -	struct stat stat;
> -
> -	fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
> -	if (fd < 0) {
> -		igt_info("output %s: debugfs not found\n", connector_name);
> -		return false;
> -	}
> -
> -	res = fstatat(fd, DEBUGFS_EDP_PSR_CAP, &stat, 0);
> -	if (res != 0) {
> -		igt_info("output %s: %s debugfs not supported\n", connector_name, DEBUGFS_EDP_PSR_CAP);
> -		close(fd);
> -		return false;
> -	}
> -
> -	close(fd);
> -	return true;
> +	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_EDP_PSR_CAP);
>   }
>   
>   /**
> @@ -1097,3 +1039,39 @@ bool igt_amd_psr_support_drv(int drm_fd, char *connector_name, enum psr_mode mod
>   	else
>   		return strstr(buf, "Driver support: yes [0x01]");
>   }
> +
> +/**
> + * igt_amd_output_has_psr_state: check if eDP connector has psr_state debugfs entry
> + * @drm_fd: DRM file descriptor
> + * @connector_name: The connector's name, on which we're reading the status
> + */
> +bool igt_amd_output_has_psr_state(int drm_fd, char *connector_name)
> +{
> +	return igt_amd_output_has_debugfs(drm_fd, connector_name, DEBUGFS_EDP_PSR_STATE);
> +}
> +
> +/**
> + * @brief Read PSR State from debugfs interface
> + * @param drm_fd DRM file descriptor
> + * @param connector_name The connector's name, on which we're reading the status
> + * @return PSR state as integer
> + */
> +int igt_amd_read_psr_state(int drm_fd, char *connector_name)
> +{
> +	char buf[4];
> +	int fd, ret;
> +
> +	fd = igt_debugfs_connector_dir(drm_fd, connector_name, O_RDONLY);
> +	if (fd < 0) {
> +		igt_info("Couldn't open connector %s debugfs directory\n", connector_name);
> +		return false;
> +	}
> +
> +	ret = igt_debugfs_simple_read(fd, DEBUGFS_EDP_PSR_STATE, buf, sizeof(buf));
> +	close(fd);
> +
> +	igt_assert_f(ret >= 0, "Reading %s for connector %s failed.\n",
> +		     DEBUGFS_EDP_PSR_STATE, connector_name);
> +
> +	return strtol(buf, NULL, 10);
> +}
> diff --git a/lib/igt_amd.h b/lib/igt_amd.h
> index 6e465817..f87c1991 100644
> --- a/lib/igt_amd.h
> +++ b/lib/igt_amd.h
> @@ -47,6 +47,7 @@
>   #define DEBUGFS_EDP_ILR_SETTING "ilr_setting"
>   #define MAX_SUPPORTED_ILR 8
>   #define DEBUGFS_EDP_PSR_CAP	"psr_capability"
> +#define DEBUGFS_EDP_PSR_STATE	"psr_state"
>   
>   enum amd_dsc_clock_force {
>   	DSC_AUTOMATIC = 0,
> @@ -143,5 +144,7 @@ bool igt_amd_output_has_ilr_setting(int drm_fd, char *connector_name);
>   bool igt_amd_output_has_psr_cap(int drm_fd, char *connector_name);
>   bool igt_amd_psr_support_sink(int drm_fd, char *connector_name, enum psr_mode mode);
>   bool igt_amd_psr_support_drv(int drm_fd, char *connector_name, enum psr_mode mode);
> +bool igt_amd_output_has_psr_state(int drm_fd, char *connector_name);
> +int  igt_amd_read_psr_state(int drm_fd, char *connector_name);
>   
>   #endif /* IGT_AMD_H */
> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
> index 732eab25..88e824c3 100644
> --- a/tests/amdgpu/amd_psr.c
> +++ b/tests/amdgpu/amd_psr.c
> @@ -24,6 +24,7 @@
>   #include "igt.h"
>   #include "igt_core.h"
>   #include "igt_kms.h"
> +#include "igt_amd.h"

Please be mindful of the indentation. One way to fix it is to use 
clang-format to do it automatically for you. You can get the 
.clang-format file for the configuration from Linux kernel root.

>   #include <stdint.h>
>   #include <fcntl.h>
>   #include <xf86drmMode.h>
> @@ -34,7 +35,6 @@
>    */
>   IGT_TEST_DESCRIPTION("Basic test for enabling Panel Self Refresh for eDP displays");
>   
> -#define DEBUGFS_PSR_STATE "psr_state"
>   /* After a full update, a few fast updates are necessary for PSR to be enabled */
>   #define N_FLIPS 6
>   /* DMCUB takes some time to actually enable PSR. Worst case delay is 4 seconds */
> @@ -108,8 +108,6 @@ static int check_conn_type(data_t *data, uint32_t type) {
>   }
>   
>   static void run_check_psr(data_t *data, bool test_null_crtc) {
> -	char buf[8];
> -	char *connector_name;
>   	int fd, edp_idx, dp_idx, ret, i, psr_state;
>   	igt_fb_t ref_fb, ref_fb2;
>   	igt_fb_t *flip_fb;
> @@ -157,14 +155,7 @@ static void run_check_psr(data_t *data, bool test_null_crtc) {
>   		if (output->config.connector->connector_type != DRM_MODE_CONNECTOR_eDP)
>   			continue;
>   
> -		connector_name = output->name;
> -		fd = igt_debugfs_connector_dir(data->fd, connector_name, O_RDONLY);
> -		igt_assert(fd >= 0);
> -
> -		ret = igt_debugfs_simple_read(fd, DEBUGFS_PSR_STATE, buf, sizeof(buf));
> -		igt_require(ret > 0);
> -
> -		psr_state =  (int) strtol(buf, NULL, 10);
> +		psr_state = igt_amd_read_psr_state(data->fd, output->name);
>   		igt_fail_on_f(psr_state < 1, "PSR was not enabled for connector %s\n", output->name);
>   		igt_fail_on_f(psr_state == 0xff, "PSR is invalid for connector %s\n", output->name);
>   		igt_fail_on_f(psr_state != 5, "PSR state is expected to be at 5 on a "

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

* Re: [igt-dev] [PATCH v2 4/4] tests/amdgpu/amd_psr: add PSR-SU MPO subtest case
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 4/4] tests/amdgpu/amd_psr: add PSR-SU MPO subtest case David Zhang
@ 2022-03-11 21:27   ` Aurabindo Pillai
  0 siblings, 0 replies; 10+ messages in thread
From: Aurabindo Pillai @ 2022-03-11 21:27 UTC (permalink / raw)
  To: David Zhang, igt-dev



On 2022-03-11 14:44, David Zhang wrote:
> [why]
> We need a test case to imitate the multiplane overlay (MPO) video
> playback use case and check PSR-SU enablement during test run.
> 
> [how]
> The test run only works for PSR-SU capable sink device and skip for
> any non-eDP or non-PSR-SU connector or kernel driver not supporting
> PSR-SU feature.
> 
> To emulate the video playback and MPO scenario, we use overlay plane
> w/ size of addressable and primary plane w/ size of quater of overlay
> acting as video playback region.
> 
> Create couple of framebuffers w/ size of primary plane and with
> the pattern of vertical color strip on different position on the
> FB. During test run, we flip the primary framebuffer and expect the
> visual effect of moving strip within the region of primary plane
> acting as video playback. The primary plane during test run is not
> moving position or resizing.
> 
> changes in v2
> ----------------
> * move #define statement to top of the source file.
> 
> Cc: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Jay Pillai <aurabindo.pillai@amd.com>
> Cc: Wayne Lin <wayne.lin@amd.com>
> 
> Signed-off-by: David Zhang <dingchen.zhang@amd.com>
> ---
>   lib/igt_amd.h          |  25 ++++++++
>   tests/amdgpu/amd_psr.c | 138 +++++++++++++++++++++++++++++++++++++++++
>   2 files changed, 163 insertions(+)
> 
> diff --git a/lib/igt_amd.h b/lib/igt_amd.h
> index f87c1991..e4e12ce5 100644
> --- a/lib/igt_amd.h
> +++ b/lib/igt_amd.h
> @@ -90,6 +90,31 @@ enum dc_link_training_type {
>   	LINK_TRAINING_NO_PATTERN
>   };
>   
> +/*
> + * enumeration of PSR STATE below should be aligned to the upstreamed
> + * amdgpu kernel driver 'enum dc_psr_state' in dc_type.h
> + */
> +enum amdgpu_psr_state {
> +	PSR_STATE0 = 0x0,
> +	PSR_STATE1,
> +	PSR_STATE1a,
> +	PSR_STATE2,
> +	PSR_STATE2a,
> +	PSR_STATE2b,
> +	PSR_STATE3,
> +	PSR_STATE3Init,
> +	PSR_STATE4,
> +	PSR_STATE4a,
> +	PSR_STATE4b,
> +	PSR_STATE4c,
> +	PSR_STATE4d,
> +	PSR_STATE5,
> +	PSR_STATE5a,
> +	PSR_STATE5b,
> +	PSR_STATE5c,
> +	PSR_STATE_INVALID = 0xFF
> +};
> +
>   uint32_t igt_amd_create_bo(int fd, uint64_t size);
>   void *igt_amd_mmap_bo(int fd, uint32_t handle, uint64_t size, int prot);
>   unsigned int igt_amd_compute_offset(unsigned int* swizzle_pattern,
> diff --git a/tests/amdgpu/amd_psr.c b/tests/amdgpu/amd_psr.c
> index 88e824c3..d80820c8 100644
> --- a/tests/amdgpu/amd_psr.c
> +++ b/tests/amdgpu/amd_psr.c
> @@ -32,6 +32,7 @@
>   /* hardware requirements:
>    * 1. eDP panel that supports PSR (multiple panel can be connected at the same time)
>    * 2. Optional DP display for testing a regression condition (setting crtc to null)
> + * 3. eDP panel that supports PSR-SU
>    */
>   IGT_TEST_DESCRIPTION("Basic test for enabling Panel Self Refresh for eDP displays");
>   
> @@ -39,22 +40,39 @@ IGT_TEST_DESCRIPTION("Basic test for enabling Panel Self Refresh for eDP display
>   #define N_FLIPS 6
>   /* DMCUB takes some time to actually enable PSR. Worst case delay is 4 seconds */
>   #define PSR_SETTLE_DELAY 4
> +/* # of framebuffers for PSR-SU MPO test case to emulate video playback */
> +#ifndef N_MPO_TEST_RECT_FB
> +#define N_MPO_TEST_RECT_FB 20
> +#endif
>   
>   /* Common test data. */
>   typedef struct data {
>           igt_display_t display;
>           igt_plane_t *primary;
>           igt_plane_t *cursor;
> +	igt_plane_t *overlay;

Looks like spaces were used here originally, and this change uses tabs. 
For consistency, please use spaces here or change reformat the whole 
definition to use tabs. I think all the following indentation issues are 
for same reason:

>           igt_output_t *output;
>           igt_pipe_t *pipe;
>           igt_pipe_crc_t *pipe_crc;
>           drmModeModeInfo *mode;
>           enum pipe pipe_id;
>           int fd;
> +	int debugfs_fd;

Indentation
>           int w;
>           int h;
>   } data_t;
>   
> +static void draw_color_alpha(igt_fb_t *fb, int x, int y, int w, int h,
> +		             double r, double g, double b, double a)
> +{
> +	cairo_t *cr = igt_get_cairo_ctx(fb->fd, fb);
> +
> +	cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
> +	igt_paint_color_alpha(cr, x, y, w, h, r, g, b, a);
> +
> +	igt_put_cairo_ctx(cr);
> +}
> +
>   /* Common test setup. */
>   static void test_init(data_t *data)
>   {
> @@ -68,9 +86,11 @@ static void test_init(data_t *data)
>   
>           data->output = igt_get_single_output_for_pipe(display, data->pipe_id);
>           igt_require(data->output);
> +	igt_info("output %s\n", data->output->name);

Indentation
>   
>           data->mode = igt_output_get_mode(data->output);
>           igt_assert(data->mode);
> +	kmstest_dump_mode(data->mode);

Indentation
>   
>           data->primary =
>                   igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
> @@ -78,6 +98,9 @@ static void test_init(data_t *data)
>           data->cursor =
>                   igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_CURSOR);
>   
> +	data->overlay =

Indentation
> +		igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_OVERLAY);
> +
>           data->pipe_crc = igt_pipe_crc_new(data->fd, data->pipe_id, "auto");
>   
>           igt_output_set_pipe(data->output, data->pipe_id);
> @@ -181,6 +204,114 @@ static void run_check_psr(data_t *data, bool test_null_crtc) {
>   	test_fini(data);
>   }
>   
> +static void run_check_psr_su_mpo(data_t *data)
> +{
> +	int edp_idx = check_conn_type(data, DRM_MODE_CONNECTOR_eDP);
> +	bool sink_support_psrsu = false;
> +	bool drv_suport_psrsu = false;
> +	igt_fb_t ov_fb;		// fb for overlay
> +	igt_fb_t rect_fb[N_MPO_TEST_RECT_FB]; 	// rectangle fbs for primary, emulate as video playback region
> +	igt_fb_t ref_fb;	// reference fb
> +	igt_fb_t *flip_fb;
> +	int ret;
> +	const int run_sec = 5;
> +	enum amdgpu_psr_state psr_state = PSR_STATE0;
> +	int frame_rate = 0;
> +
> +	/* skip the test run if no eDP sink detected */
> +	igt_skip_on_f(edp_idx == -1, "no eDP connector found\n");
> +
> +	/* init */
> +	test_init(data);
> +	frame_rate = data->mode->vrefresh;
> +
> +	/* run the test i.i.f. eDP panel supports and kernel driver both support PSR-SU  */
> +	igt_skip_on(!igt_amd_output_has_psr_cap(data->fd, data->output->name));
> +	igt_skip_on(!igt_amd_output_has_psr_state(data->fd, data->output->name));
> +	sink_support_psrsu = igt_amd_psr_support_sink(data->fd, data->output->name, PSR_MODE_2);
> +	igt_skip_on_f(!sink_support_psrsu, "output %s not support PSR-SU\n", data->output->name);
> +	drv_suport_psrsu = igt_amd_psr_support_drv(data->fd, data->output->name, PSR_MODE_2);
> +	igt_skip_on_f(!drv_suport_psrsu, "kernel driver not support PSR-SU\n");
> +
> +	/* reference background pattern in grey */
> +	igt_create_color_fb(data->fd, data->w, data->h, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR,
> +			    .5, .5, .5, &ref_fb);
> +	igt_plane_set_fb(data->primary, &ref_fb);
> +	igt_output_set_pipe(data->output, data->pipe_id);
> +	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +
> +	/*
> +	 * overlay and primary fbs creation
> +	 * for MPO vpb use case, the vpb is always in the primary plane as an underlay,
> +	 * while the control panel/tool bar such icons/items are all in the overlay plane,
> +	 * and alpha for vpb region is adjusted to control the transparency.
> +	 * thus the overlay fb be initialized w/ ARGB pixel format to support blending
> +	 */
> +	igt_create_color_fb(data->fd, data->w, data->h, DRM_FORMAT_ARGB8888, DRM_FORMAT_MOD_LINEAR,
> +			    1.0, 1.0, 1.0, &ov_fb);
> +	for (int i = 0; i < N_MPO_TEST_RECT_FB; ++i) {
> +		cairo_t *cr;
> +		int strip_w = data->w / (2 * N_MPO_TEST_RECT_FB);
> +
> +		igt_create_fb(data->fd, data->w / 2, data->h / 2, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_LINEAR,
> +			      &rect_fb[i]);
> +		cr = igt_get_cairo_ctx(data->fd, &rect_fb[i]);
> +		igt_assert_f(cr, "Failed to get cairo context\n");
> +		/* background in black */
> +		igt_paint_color(cr, 0, 0, data->w, data->h, .0, .0, .0);
> +		/* foreground (megenta strip) */
> +		igt_paint_color(cr, i * strip_w, 0, strip_w, data->h, 1.0, .0, 1.0);
> +
> +		igt_put_cairo_ctx(cr);
> +	}
> +
> +	/* tie fbs to planes and set position/size/blending */
> +	igt_plane_set_fb(data->overlay, &ov_fb);
> +	igt_plane_set_fb(data->primary, &rect_fb[0]);
> +	igt_plane_set_position(data->primary, 0, 0);
> +	igt_plane_set_size(data->primary, data->w / 2, data->h / 2);
> +
> +	/* adjust alpha for vpb (primary plane) region in overlay */
> +	draw_color_alpha(&ov_fb, 0, 0, data->w / 2, data->h / 2, .5, .5, .5, .3);
> +
> +	igt_output_set_pipe(data->output, data->pipe_id);
> +	igt_display_commit_atomic(&data->display, 0, NULL);
> +
> +	/* multiplane overlay to emulate video playback use case */
> +	igt_info("\n start flipping ...\n");
> +
> +	for (int i = 0; i < run_sec * frame_rate; ++i) {
> +		igt_info(" About to commit a primary plane (FB %d), loop %d \n", i % N_MPO_TEST_RECT_FB, i);
> +		flip_fb = &rect_fb[i % N_MPO_TEST_RECT_FB];
> +
> +		igt_plane_set_fb(data->primary, flip_fb);
> +		igt_output_set_pipe(data->output, data->pipe_id);
> +
> +		ret = drmModePageFlip(data->fd, data->output->config.crtc->crtc_id,
> +				      flip_fb->fb_id, DRM_MODE_PAGE_FLIP_EVENT, NULL);
> +		igt_require(ret == 0);
> +		kmstest_wait_for_pageflip(data->fd);
> +
> +		/* check PSR state */
> +		if (i > PSR_SETTLE_DELAY * frame_rate) {
> +			psr_state = igt_amd_read_psr_state(data->fd, data->output->name);
> +			igt_fail_on_f(psr_state == PSR_STATE0,
> +				"PSR was not enabled for connector %s\n", data->output->name);
> +			igt_fail_on_f(psr_state == PSR_STATE_INVALID,
> +				"PSR is invalid for connector %s\n", data->output->name);
> +			igt_fail_on_f(psr_state != PSR_STATE3,
> +				"PSR state is expected to be STATE_3 for connector %s\n", data->output->name);
> +		}
> +	}
> +
> +	/* fini */
> +	igt_remove_fb(data->fd, &ref_fb);
> +	igt_remove_fb(data->fd, &ov_fb);
> +	for (int i = 0; i < N_MPO_TEST_RECT_FB; ++i) igt_remove_fb(data->fd, &rect_fb[i]);

Nitpick: newline after for loop for readabiltiy

> +	test_fini(data);
> +	close(data->fd);
> +}
> +
>   igt_main
>   {
>   	data_t data;
> @@ -191,6 +322,8 @@ igt_main
>   	igt_fixture
>   	{
>   		data.fd = drm_open_driver_master(DRIVER_AMDGPU);
> +		if (data.fd == -1) igt_skip("Not an amdgpu driver.\n");
> +		data.debugfs_fd = igt_debugfs_dir(data.fd);
>   
>   		kmstest_set_vt_graphics_mode();
>   
> @@ -205,8 +338,13 @@ igt_main
>   	igt_describe("Test whether setting CRTC to null triggers any warning with PSR enabled");
>   	igt_subtest("psr_enable_null_crtc") run_check_psr(&data, true);
>   
> +	igt_describe("Test to validate PSR SU enablement with Visual Confirm "
> +		     "and to imitate Multiplane Overlay video playback scenario");
> +	igt_subtest("psr_su_mpo") run_check_psr_su_mpo(&data);
> +
>   	igt_fixture
>   	{
> +		close(data.debugfs_fd);
>   		igt_display_fini(&data.display);
>   	}
>   }

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

* Re: [igt-dev] [PATCH v2 1/4] lib/igt_psr: pass higher versions of PSR SU panels
  2022-03-11 19:44 ` [igt-dev] [PATCH v2 1/4] lib/igt_psr: pass higher versions of PSR SU panels David Zhang
@ 2022-03-11 21:30   ` Aurabindo Pillai
  0 siblings, 0 replies; 10+ messages in thread
From: Aurabindo Pillai @ 2022-03-11 21:30 UTC (permalink / raw)
  To: David Zhang, igt-dev



On 2022-03-11 14:44, David Zhang wrote:
> [why]
>  From eDP 1.5 (eDP 1.4b SCR adopted), a higher version of PSR-SU eDP
> panel, i.e. version 0x4, is added into spec. Need to treat such PSR
> panel as PSR capable sink device.
> 
> [how]
> validate the PSR capable sink for higher PSR version 0x4.
> 
> Cc: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Leo Li <sunpeng.li@amd.com>
> Cc: Jay Pillai <aurabindo.pillai@amd.com>
> Cc: Wayne Lin <wayne.lin@amd.com>
> 
> Signed-off-by: David Zhang <dingchen.zhang@amd.com>
> ---
>   lib/igt_psr.c | 8 +++++++-
>   1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/igt_psr.c b/lib/igt_psr.c
> index 98eb28b4..2b73e809 100644
> --- a/lib/igt_psr.c
> +++ b/lib/igt_psr.c
> @@ -209,8 +209,14 @@ bool psr_sink_support(int device, int debugfs_fd, enum psr_mode mode)
>   		/*
>   		 * i915 requires PSR version 0x03 that is PSR2 + SU with
>   		 * Y-coordinate to support PSR2
> +		 *
> +		 * or
> +		 *
> +		 * PSR version 0x4 that is PSR2 + SU w/ Y-coordinate and SU
> +		 * Region Early Transport to support PSR2 (eDP 1.5)
>   		 */
> -		return strstr(buf, "Sink support: yes [0x03]");
> +		return strstr(buf, "Sink support: yes [0x03]") ||
> +		       strstr(buf, "Sink support: yes [0x04]");
>   }
>   
>   #define PSR2_SU_BLOCK_STR_LOOKUP "PSR2 SU blocks:\n0\t"


Except for nitpicks, with changes addressed, the series is:

Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>

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

* [igt-dev] ✓ Fi.CI.IGT: success for PSR-SU MPO test case
  2022-03-11 19:44 [igt-dev] [PATCH v2 0/4] PSR-SU MPO test case David Zhang
                   ` (4 preceding siblings ...)
  2022-03-11 20:46 ` [igt-dev] ✓ Fi.CI.BAT: success for PSR-SU MPO test case Patchwork
@ 2022-03-11 23:09 ` Patchwork
  5 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2022-03-11 23:09 UTC (permalink / raw)
  To: David Zhang; +Cc: igt-dev

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

== Series Details ==

Series: PSR-SU MPO test case
URL   : https://patchwork.freedesktop.org/series/101300/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_11353_full -> IGTPW_6783_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (11 -> 8)
------------------------------

  Missing    (3): pig-skl-6260u pig-kbl-iris pig-glk-j5005 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@feature_discovery@chamelium:
    - shard-tglb:         NOTRUN -> [SKIP][1] ([fdo#111827])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@feature_discovery@chamelium.html

  * igt@gem_create@create-massive:
    - shard-kbl:          NOTRUN -> [DMESG-WARN][2] ([i915#4991])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl6/igt@gem_create@create-massive.html

  * igt@gem_ctx_param@set-priority-not-supported:
    - shard-tglb:         NOTRUN -> [SKIP][3] ([fdo#109314])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@gem_ctx_param@set-priority-not-supported.html
    - shard-iclb:         NOTRUN -> [SKIP][4] ([fdo#109314])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb1/igt@gem_ctx_param@set-priority-not-supported.html

  * igt@gem_ctx_persistence@legacy-engines-mixed-process:
    - shard-snb:          NOTRUN -> [SKIP][5] ([fdo#109271] / [i915#1099]) +3 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-snb5/igt@gem_ctx_persistence@legacy-engines-mixed-process.html

  * igt@gem_ctx_sseu@engines:
    - shard-tglb:         NOTRUN -> [SKIP][6] ([i915#280])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@gem_ctx_sseu@engines.html

  * igt@gem_exec_balancer@parallel-bb-first:
    - shard-tglb:         NOTRUN -> [DMESG-WARN][7] ([i915#5076]) +1 similar issue
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb8/igt@gem_exec_balancer@parallel-bb-first.html
    - shard-iclb:         NOTRUN -> [DMESG-WARN][8] ([i915#5076])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb1/igt@gem_exec_balancer@parallel-bb-first.html

  * igt@gem_exec_balancer@parallel-keep-in-fence:
    - shard-kbl:          NOTRUN -> [DMESG-WARN][9] ([i915#5076]) +1 similar issue
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl1/igt@gem_exec_balancer@parallel-keep-in-fence.html

  * igt@gem_exec_fair@basic-none-rrul@rcs0:
    - shard-iclb:         NOTRUN -> [FAIL][10] ([i915#2842]) +1 similar issue
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb6/igt@gem_exec_fair@basic-none-rrul@rcs0.html
    - shard-glk:          NOTRUN -> [FAIL][11] ([i915#2842]) +1 similar issue
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk2/igt@gem_exec_fair@basic-none-rrul@rcs0.html
    - shard-tglb:         NOTRUN -> [FAIL][12] ([i915#2842])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb8/igt@gem_exec_fair@basic-none-rrul@rcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-apl:          [PASS][13] -> [FAIL][14] ([i915#2842])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/shard-apl1/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl7/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace@rcs0:
    - shard-kbl:          [PASS][15] -> [FAIL][16] ([i915#2842])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/shard-kbl6/igt@gem_exec_fair@basic-pace@rcs0.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl6/igt@gem_exec_fair@basic-pace@rcs0.html

  * igt@gem_exec_params@no-blt:
    - shard-tglb:         NOTRUN -> [SKIP][17] ([fdo#109283])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb6/igt@gem_exec_params@no-blt.html
    - shard-iclb:         NOTRUN -> [SKIP][18] ([fdo#109283])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb8/igt@gem_exec_params@no-blt.html

  * igt@gem_exec_whisper@basic-contexts-forked-all:
    - shard-glk:          [PASS][19] -> [DMESG-WARN][20] ([i915#118])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/shard-glk7/igt@gem_exec_whisper@basic-contexts-forked-all.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk4/igt@gem_exec_whisper@basic-contexts-forked-all.html

  * igt@gem_huc_copy@huc-copy:
    - shard-apl:          NOTRUN -> [SKIP][21] ([fdo#109271] / [i915#2190])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl8/igt@gem_huc_copy@huc-copy.html
    - shard-kbl:          NOTRUN -> [SKIP][22] ([fdo#109271] / [i915#2190])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl3/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@heavy-random:
    - shard-tglb:         NOTRUN -> [SKIP][23] ([i915#4613]) +2 similar issues
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb7/igt@gem_lmem_swapping@heavy-random.html

  * igt@gem_lmem_swapping@heavy-verify-multi:
    - shard-kbl:          NOTRUN -> [SKIP][24] ([fdo#109271] / [i915#4613]) +2 similar issues
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl7/igt@gem_lmem_swapping@heavy-verify-multi.html

  * igt@gem_lmem_swapping@random-engines:
    - shard-iclb:         NOTRUN -> [SKIP][25] ([i915#4613])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb6/igt@gem_lmem_swapping@random-engines.html
    - shard-apl:          NOTRUN -> [SKIP][26] ([fdo#109271] / [i915#4613]) +2 similar issues
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl7/igt@gem_lmem_swapping@random-engines.html
    - shard-glk:          NOTRUN -> [SKIP][27] ([fdo#109271] / [i915#4613])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk2/igt@gem_lmem_swapping@random-engines.html

  * igt@gem_mmap_gtt@coherency:
    - shard-tglb:         NOTRUN -> [SKIP][28] ([fdo#111656])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb8/igt@gem_mmap_gtt@coherency.html

  * igt@gem_pread@exhaustion:
    - shard-tglb:         NOTRUN -> [WARN][29] ([i915#2658])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb3/igt@gem_pread@exhaustion.html

  * igt@gem_pxp@regular-baseline-src-copy-readible:
    - shard-tglb:         NOTRUN -> [SKIP][30] ([i915#4270]) +3 similar issues
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb3/igt@gem_pxp@regular-baseline-src-copy-readible.html

  * igt@gem_pxp@reject-modify-context-protection-off-2:
    - shard-iclb:         NOTRUN -> [SKIP][31] ([i915#4270])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb5/igt@gem_pxp@reject-modify-context-protection-off-2.html

  * igt@gem_render_copy@y-tiled-mc-ccs-to-vebox-y-tiled:
    - shard-iclb:         NOTRUN -> [SKIP][32] ([i915#768]) +3 similar issues
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb7/igt@gem_render_copy@y-tiled-mc-ccs-to-vebox-y-tiled.html

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-kbl:          NOTRUN -> [SKIP][33] ([fdo#109271] / [i915#3323])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl7/igt@gem_userptr_blits@dmabuf-sync.html
    - shard-iclb:         NOTRUN -> [SKIP][34] ([i915#3323])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb2/igt@gem_userptr_blits@dmabuf-sync.html
    - shard-apl:          NOTRUN -> [SKIP][35] ([fdo#109271] / [i915#3323])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl1/igt@gem_userptr_blits@dmabuf-sync.html
    - shard-glk:          NOTRUN -> [SKIP][36] ([fdo#109271] / [i915#3323])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk5/igt@gem_userptr_blits@dmabuf-sync.html
    - shard-tglb:         NOTRUN -> [SKIP][37] ([i915#3323])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb3/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gem_userptr_blits@vma-merge:
    - shard-kbl:          NOTRUN -> [FAIL][38] ([i915#3318])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl6/igt@gem_userptr_blits@vma-merge.html

  * igt@gen9_exec_parse@allowed-all:
    - shard-glk:          [PASS][39] -> [DMESG-WARN][40] ([i915#1436] / [i915#716])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/shard-glk9/igt@gen9_exec_parse@allowed-all.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk6/igt@gen9_exec_parse@allowed-all.html

  * igt@gen9_exec_parse@bb-start-far:
    - shard-iclb:         NOTRUN -> [SKIP][41] ([i915#2856]) +2 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb7/igt@gen9_exec_parse@bb-start-far.html

  * igt@gen9_exec_parse@shadow-peek:
    - shard-tglb:         NOTRUN -> [SKIP][42] ([i915#2527] / [i915#2856]) +4 similar issues
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb3/igt@gen9_exec_parse@shadow-peek.html

  * igt@i915_pm_backlight@bad-brightness:
    - shard-glk:          NOTRUN -> [SKIP][43] ([fdo#109271]) +93 similar issues
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk8/igt@i915_pm_backlight@bad-brightness.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress:
    - shard-tglb:         NOTRUN -> [SKIP][44] ([fdo#111644] / [i915#1397] / [i915#2411]) +1 similar issue
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@i915_pm_rpm@modeset-non-lpsp-stress.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-iclb:         NOTRUN -> [SKIP][45] ([fdo#110892]) +1 similar issue
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb4/igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@i915_selftest@live@gt_lrc:
    - shard-tglb:         NOTRUN -> [DMESG-FAIL][46] ([i915#2373])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@i915_selftest@live@gt_lrc.html

  * igt@i915_selftest@live@gt_pm:
    - shard-tglb:         NOTRUN -> [DMESG-FAIL][47] ([i915#1759])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@i915_selftest@live@gt_pm.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
    - shard-tglb:         NOTRUN -> [SKIP][48] ([i915#1769])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb8/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html

  * igt@kms_big_fb@4-tiled-addfb-size-overflow:
    - shard-iclb:         NOTRUN -> [SKIP][49] ([i915#5286]) +3 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb4/igt@kms_big_fb@4-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0:
    - shard-tglb:         NOTRUN -> [SKIP][50] ([i915#5286]) +5 similar issues
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-180:
    - shard-glk:          [PASS][51] -> [DMESG-WARN][52] ([i915#118] / [i915#1982])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/shard-glk7/igt@kms_big_fb@x-tiled-32bpp-rotate-180.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk3/igt@kms_big_fb@x-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-270:
    - shard-tglb:         NOTRUN -> [SKIP][53] ([fdo#111614]) +1 similar issue
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb8/igt@kms_big_fb@x-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-apl:          NOTRUN -> [SKIP][54] ([fdo#109271] / [i915#3777]) +5 similar issues
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl1/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
    - shard-glk:          NOTRUN -> [SKIP][55] ([fdo#109271] / [i915#3777]) +3 similar issues
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk2/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-270:
    - shard-tglb:         NOTRUN -> [SKIP][56] ([fdo#111615]) +7 similar issues
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb3/igt@kms_big_fb@yf-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-kbl:          NOTRUN -> [SKIP][57] ([fdo#109271] / [i915#3777]) +5 similar issues
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl1/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180:
    - shard-iclb:         NOTRUN -> [SKIP][58] ([fdo#110723]) +3 similar issues
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb6/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180.html

  * igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][59] ([i915#3689] / [i915#3886]) +4 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb3/igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-b-crc-primary-basic-yf_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][60] ([fdo#111615] / [i915#3689]) +9 similar issues
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb2/igt@kms_ccs@pipe-b-crc-primary-basic-yf_tiled_ccs.html

  * igt@kms_ccs@pipe-b-crc-primary-rotation-180-y_tiled_gen12_rc_ccs:
    - shard-iclb:         NOTRUN -> [SKIP][61] ([fdo#109278]) +25 similar issues
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb8/igt@kms_ccs@pipe-b-crc-primary-rotation-180-y_tiled_gen12_rc_ccs.html

  * igt@kms_ccs@pipe-b-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc:
    - shard-glk:          NOTRUN -> [SKIP][62] ([fdo#109271] / [i915#3886]) +2 similar issues
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk6/igt@kms_ccs@pipe-b-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc.html
    - shard-apl:          NOTRUN -> [SKIP][63] ([fdo#109271] / [i915#3886]) +7 similar issues
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl7/igt@kms_ccs@pipe-b-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_rc_ccs_cc:
    - shard-iclb:         NOTRUN -> [SKIP][64] ([fdo#109278] / [i915#3886]) +5 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb7/igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-c-crc-primary-rotation-180-y_tiled_gen12_mc_ccs:
    - shard-kbl:          NOTRUN -> [SKIP][65] ([fdo#109271] / [i915#3886]) +11 similar issues
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl6/igt@kms_ccs@pipe-c-crc-primary-rotation-180-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-d-bad-pixel-format-y_tiled_ccs:
    - shard-snb:          NOTRUN -> [SKIP][66] ([fdo#109271]) +241 similar issues
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-snb4/igt@kms_ccs@pipe-d-bad-pixel-format-y_tiled_ccs.html

  * igt@kms_ccs@pipe-d-ccs-on-another-bo-y_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][67] ([i915#3689]) +8 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb2/igt@kms_ccs@pipe-d-ccs-on-another-bo-y_tiled_ccs.html

  * igt@kms_cdclk@mode-transition:
    - shard-apl:          NOTRUN -> [SKIP][68] ([fdo#109271]) +210 similar issues
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl6/igt@kms_cdclk@mode-transition.html
    - shard-tglb:         NOTRUN -> [SKIP][69] ([i915#3742])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb5/igt@kms_cdclk@mode-transition.html

  * igt@kms_chamelium@dp-hpd-for-each-pipe:
    - shard-kbl:          NOTRUN -> [SKIP][70] ([fdo#109271] / [fdo#111827]) +13 similar issues
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl7/igt@kms_chamelium@dp-hpd-for-each-pipe.html

  * igt@kms_chamelium@dp-mode-timings:
    - shard-apl:          NOTRUN -> [SKIP][71] ([fdo#109271] / [fdo#111827]) +10 similar issues
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl7/igt@kms_chamelium@dp-mode-timings.html

  * igt@kms_chamelium@hdmi-hpd-enable-disable-mode:
    - shard-iclb:         NOTRUN -> [SKIP][72] ([fdo#109284] / [fdo#111827]) +5 similar issues
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb6/igt@kms_chamelium@hdmi-hpd-enable-disable-mode.html

  * igt@kms_chamelium@vga-hpd-enable-disable-mode:
    - shard-glk:          NOTRUN -> [SKIP][73] ([fdo#109271] / [fdo#111827]) +3 similar issues
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk9/igt@kms_chamelium@vga-hpd-enable-disable-mode.html

  * igt@kms_color_chamelium@pipe-d-ctm-max:
    - shard-tglb:         NOTRUN -> [SKIP][74] ([fdo#109284] / [fdo#111827]) +14 similar issues
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb8/igt@kms_color_chamelium@pipe-d-ctm-max.html

  * igt@kms_color_chamelium@pipe-d-ctm-red-to-blue:
    - shard-snb:          NOTRUN -> [SKIP][75] ([fdo#109271] / [fdo#111827]) +6 similar issues
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-snb2/igt@kms_color_chamelium@pipe-d-ctm-red-to-blue.html

  * igt@kms_content_protection@atomic:
    - shard-kbl:          NOTRUN -> [TIMEOUT][76] ([i915#1319])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl6/igt@kms_content_protection@atomic.html
    - shard-tglb:         NOTRUN -> [SKIP][77] ([i915#1063])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb8/igt@kms_content_protection@atomic.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-tglb:         NOTRUN -> [SKIP][78] ([i915#3116] / [i915#3299])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb3/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_cursor_crc@pipe-a-cursor-512x512-offscreen:
    - shard-iclb:         NOTRUN -> [SKIP][79] ([fdo#109278] / [fdo#109279]) +2 similar issues
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb6/igt@kms_cursor_crc@pipe-a-cursor-512x512-offscreen.html

  * igt@kms_cursor_crc@pipe-b-cursor-32x32-onscreen:
    - shard-tglb:         NOTRUN -> [SKIP][80] ([i915#3319]) +4 similar issues
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb8/igt@kms_cursor_crc@pipe-b-cursor-32x32-onscreen.html

  * igt@kms_cursor_crc@pipe-b-cursor-suspend:
    - shard-apl:          NOTRUN -> [DMESG-WARN][81] ([i915#180])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl1/igt@kms_cursor_crc@pipe-b-cursor-suspend.html
    - shard-kbl:          NOTRUN -> [DMESG-WARN][82] ([i915#180]) +1 similar issue
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl6/igt@kms_cursor_crc@pipe-b-cursor-suspend.html

  * igt@kms_cursor_crc@pipe-c-cursor-32x10-rapid-movement:
    - shard-tglb:         NOTRUN -> [SKIP][83] ([i915#3359]) +6 similar issues
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb5/igt@kms_cursor_crc@pipe-c-cursor-32x10-rapid-movement.html

  * igt@kms_cursor_crc@pipe-c-cursor-512x512-random:
    - shard-tglb:         NOTRUN -> [SKIP][84] ([fdo#109279] / [i915#3359]) +6 similar issues
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb2/igt@kms_cursor_crc@pipe-c-cursor-512x512-random.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
    - shard-iclb:         NOTRUN -> [SKIP][85] ([fdo#109274] / [fdo#109278]) +5 similar issues
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb7/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size:
    - shard-tglb:         NOTRUN -> [SKIP][86] ([fdo#109274] / [fdo#111825]) +18 similar issues
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb6/igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size.html

  * igt@kms_cursor_legacy@pipe-d-torture-bo:
    - shard-kbl:          NOTRUN -> [SKIP][87] ([fdo#109271] / [i915#533])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl3/igt@kms_cursor_legacy@pipe-d-torture-bo.html
    - shard-apl:          NOTRUN -> [SKIP][88] ([fdo#109271] / [i915#533]) +2 similar issues
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl8/igt@kms_cursor_legacy@pipe-d-torture-bo.html
    - shard-glk:          NOTRUN -> [SKIP][89] ([fdo#109271] / [i915#533])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk8/igt@kms_cursor_legacy@pipe-d-torture-bo.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-tglb:         NOTRUN -> [SKIP][90] ([i915#4103]) +1 similar issue
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium:
    - shard-tglb:         NOTRUN -> [SKIP][91] ([i915#3528])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_draw_crc@draw-method-rgb565-blt-4tiled:
    - shard-iclb:         NOTRUN -> [SKIP][92] ([i915#5287]) +1 similar issue
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb6/igt@kms_draw_crc@draw-method-rgb565-blt-4tiled.html

  * igt@kms_draw_crc@draw-method-rgb565-mmap-cpu-4tiled:
    - shard-tglb:         NOTRUN -> [SKIP][93] ([i915#5287]) +2 similar issues
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb8/igt@kms_draw_crc@draw-method-rgb565-mmap-cpu-4tiled.html

  * igt@kms_dsc@xrgb8888-dsc-compression:
    - shard-tglb:         NOTRUN -> [SKIP][94] ([i915#3828])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb5/igt@kms_dsc@xrgb8888-dsc-compression.html
    - shard-iclb:         NOTRUN -> [SKIP][95] ([i915#3828])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb4/igt@kms_dsc@xrgb8888-dsc-compression.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-kbl:          [PASS][96] -> [INCOMPLETE][97] ([i915#180] / [i915#636])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/shard-kbl4/igt@kms_fbcon_fbt@fbc-suspend.html
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl7/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_flip@2x-flip-vs-expired-vblank@ab-hdmi-a1-hdmi-a2:
    - shard-glk:          [PASS][98] -> [FAIL][99] ([i915#79])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/shard-glk4/igt@kms_flip@2x-flip-vs-expired-vblank@ab-hdmi-a1-hdmi-a2.html
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk8/igt@kms_flip@2x-flip-vs-expired-vblank@ab-hdmi-a1-hdmi-a2.html

  * igt@kms_flip@flip-vs-suspend-interruptible@a-dp1:
    - shard-kbl:          [PASS][100] -> [DMESG-WARN][101] ([i915#180]) +7 similar issues
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/shard-kbl4/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl7/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html
    - shard-apl:          [PASS][102] -> [DMESG-WARN][103] ([i915#180]) +2 similar issues
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/shard-apl2/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl4/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling:
    - shard-glk:          NOTRUN -> [FAIL][104] ([i915#4911])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html
    - shard-tglb:         NOTRUN -> [SKIP][105] ([i915#2587])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html

  * igt@kms_force_connector_basic@force-load-detect:
    - shard-tglb:         NOTRUN -> [SKIP][106] ([fdo#109285])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-cpu:
    - shard-iclb:         NOTRUN -> [SKIP][107] ([fdo#109280]) +16 similar issues
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt:
    - shard-tglb:         NOTRUN -> [SKIP][108] ([fdo#109280] / [fdo#111825]) +44 similar issues
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt.html

  * igt@kms_hdr@static-swap:
    - shard-tglb:         NOTRUN -> [SKIP][109] ([i915#3555]) +1 similar issue
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb3/igt@kms_hdr@static-swap.html

  * igt@kms_panel_fitting@legacy:
    - shard-kbl:          NOTRUN -> [SKIP][110] ([fdo#109271]) +208 similar issues
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl4/igt@kms_panel_fitting@legacy.html

  * igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c:
    - shard-tglb:         NOTRUN -> [SKIP][111] ([fdo#109289]) +3 similar issues
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c.html

  * igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb:
    - shard-apl:          NOTRUN -> [FAIL][112] ([fdo#108145] / [i915#265]) +1 similar issue
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl8/igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-basic:
    - shard-kbl:          NOTRUN -> [FAIL][113] ([fdo#108145] / [i915#265]) +1 similar issue
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl7/igt@kms_plane_alpha_blend@pipe-b-alpha-basic.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb:
    - shard-kbl:          NOTRUN -> [FAIL][114] ([i915#265]) +1 similar issue
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-kbl6/igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb.html

  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max:
    - shard-glk:          NOTRUN -> [FAIL][115] ([fdo#108145] / [i915#265])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk8/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max.html

  * igt@kms_plane_lowres@pipe-b-tiling-none:
    - shard-tglb:         NOTRUN -> [SKIP][116] ([i915#3536]) +1 similar issue
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb7/igt@kms_plane_lowres@pipe-b-tiling-none.html

  * igt@kms_plane_lowres@pipe-c-tiling-yf:
    - shard-iclb:         NOTRUN -> [SKIP][117] ([i915#3536])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb2/igt@kms_plane_lowres@pipe-c-tiling-yf.html
    - shard-tglb:         NOTRUN -> [SKIP][118] ([fdo#111615] / [fdo#112054])
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb3/igt@kms_plane_lowres@pipe-c-tiling-yf.html

  * igt@kms_plane_multiple@atomic-pipe-c-tiling-4:
    - shard-tglb:         NOTRUN -> [SKIP][119] ([i915#5288]) +2 similar issues
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb1/igt@kms_plane_multiple@atomic-pipe-c-tiling-4.html

  * igt@kms_plane_scaling@2x-scaler-multi-pipe:
    - shard-iclb:         NOTRUN -> [SKIP][120] ([fdo#109274]) +6 similar issues
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb7/igt@kms_plane_scaling@2x-scaler-multi-pipe.html

  * igt@kms_plane_scaling@scaler-with-clipping-clamping@pipe-a-edp-1-scaler-with-clipping-clamping:
    - shard-iclb:         [PASS][121] -> [SKIP][122] ([i915#5176])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/shard-iclb2/igt@kms_plane_scaling@scaler-with-clipping-clamping@pipe-a-edp-1-scaler-with-clipping-clamping.html
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb3/igt@kms_plane_scaling@scaler-with-clipping-clamping@pipe-a-edp-1-scaler-with-clipping-clamping.html

  * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area:
    - shard-apl:          NOTRUN -> [SKIP][123] ([fdo#109271] / [i915#658]) +2 similar issues
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-apl4/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html
    - shard-iclb:         NOTRUN -> [SKIP][124] ([fdo#111068] / [i915#658])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-iclb8/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html
    - shard-glk:          NOTRUN -> [SKIP][125] ([fdo#109271] / [i915#658])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-glk1/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_sf@plane-move-sf-dmg-area:
    - shard-tglb:         NOTRUN -> [SKIP][126] ([i915#2920]) +1 similar issue
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6783/shard-tglb5/igt@kms_psr2_sf@plane-move-sf-dmg-area.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-iclb:         [PASS][127] -> [SKIP][128] ([fdo#109642] / [fdo#111068] / [i915#658])
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11353/shard-iclb2/igt

== Logs ==

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

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

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

end of thread, other threads:[~2022-03-11 23:09 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-11 19:44 [igt-dev] [PATCH v2 0/4] PSR-SU MPO test case David Zhang
2022-03-11 19:44 ` [igt-dev] [PATCH v2 1/4] lib/igt_psr: pass higher versions of PSR SU panels David Zhang
2022-03-11 21:30   ` Aurabindo Pillai
2022-03-11 19:44 ` [igt-dev] [PATCH v2 2/4] lib/igt_amd: add helpers to check PSR capibility David Zhang
2022-03-11 19:44 ` [igt-dev] [PATCH v2 3/4] lib/igt_amd: add helpers to check PSR state David Zhang
2022-03-11 21:19   ` Aurabindo Pillai
2022-03-11 19:44 ` [igt-dev] [PATCH v2 4/4] tests/amdgpu/amd_psr: add PSR-SU MPO subtest case David Zhang
2022-03-11 21:27   ` Aurabindo Pillai
2022-03-11 20:46 ` [igt-dev] ✓ Fi.CI.BAT: success for PSR-SU MPO test case Patchwork
2022-03-11 23:09 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

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