Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM
@ 2026-05-18  3:54 Ankit Nautiyal
  2026-05-18  3:54 ` [PATCH 01/11] drm/i915/psr: Add helper to get Async Video timing support in PR active Ankit Nautiyal
                   ` (13 more replies)
  0 siblings, 14 replies; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:54 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

Enable Adaptive Sync SDP for Panel replay + auxless ALPM.
First few patches are fixes in existing AS SDP enablement and drm core
changes for Panel replay with SDP.
Later patches add the support to send AS SDP for Panel replay with Link
ON and with auxless ALPM (Link-Off). 

This series is in continuation from discussions in [1] [2] [3]
and is actually revision 5 of the series [4].

While sending patches Rev 3 of [4], patchwork encountered an issue and
somehow dropped few patches from the series, and created new patchwork
links with incomplete list of patches for rev 3 and 4. With this CI couldnt
pick up the series for testing.

To avoid further confusion and more patchwork links with missing patches,
I am modifying the subject of the series to create new 'final' patchwork
link (with a hope that patchwork doesn't miss anymore patches) for which
we can get the CI results.

As the first few drm core changes get reviews, I intend to send those
separately and get them merge next.

[1] https://lore.kernel.org/all/1b8c6c6de1e5fe0db83e6ae942dfee7e6f950767.camel@intel.com/
[2] https://lore.kernel.org/all/aPtqdAxDwiuQZbrn@intel.com/
[3] https://lore.kernel.org/intel-gfx/7c2d6f4e-69e6-452a-89cc-5fd4254430bd@intel.com/T/#m6e8beab2cc3b6ff9d61f740f107d83a2f4e08114
[4] https://patchwork.freedesktop.org/series/161977/#rev2

Changes from last revision of Series [4]
 - Add helper to print SDP version in the logs and use it.
 - Fill missing sdp_type field in AS SDP unpack.
 - Check PR support also in helper
   intel_psr_pr_async_video_timing_supported()
 - Add #TODO to check Display ID 2.0 blocks for AS SDP for determining
   AS SDP v2 support.
 - Check if PR is enabled along with AS SDP enable before setting
   relevant Downspread CTRL DPCD bits.

Rev 5:
 - Since all DRM core changes and PCON related fixes are merged, rebase
   the remaining patches.

Ankit Nautiyal (11):
  drm/i915/psr: Add helper to get Async Video timing support in PR
    active
  drm/i915/dp: Add member to intel_dp to store AS SDP v2 support
  drm/i915/dp: Allow AS SDP only if v2 is supported
  drm/i915/psr: Write the PR config DPCDs in burst mode
  drm/i915/display: Add helper for AS SDP transmission time selection
  drm/i915/psr: Program Panel Replay CONFIG3 using AS SDP transmission
    time
  drm/i915/dp: Set relevant Downspread Ctrl DPCD bits for PR + Auxless
    ALPM
  drm/i915/dp: Program AS SDP DB[1:0] for PR with Link off
  drm/i915/dp: Split AS SDP computation between compute_config and
    compute_config_late
  drm/i915/dp: Compute and include coasting vtotal for AS SDP
  drm/i915/dp: Always enable AS SDP if supported by source + sink

 drivers/gpu/drm/i915/display/intel_alpm.c     |  20 ++-
 drivers/gpu/drm/i915/display/intel_display.c  |   3 +-
 .../drm/i915/display/intel_display_types.h    |   1 +
 drivers/gpu/drm/i915/display/intel_dp.c       | 152 +++++++++++++++---
 drivers/gpu/drm/i915/display/intel_dp.h       |   2 +
 .../drm/i915/display/intel_dp_link_training.c |  15 +-
 .../drm/i915/display/intel_dp_link_training.h |   3 +-
 drivers/gpu/drm/i915/display/intel_dp_mst.c   |   2 +-
 drivers/gpu/drm/i915/display/intel_psr.c      |  40 +++--
 drivers/gpu/drm/i915/display/intel_psr.h      |   1 +
 10 files changed, 196 insertions(+), 43 deletions(-)

-- 
2.45.2


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

* [PATCH 01/11] drm/i915/psr: Add helper to get Async Video timing support in PR active
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
@ 2026-05-18  3:54 ` Ankit Nautiyal
  2026-05-22 14:06   ` Ville Syrjälä
  2026-05-18  3:54 ` [PATCH 02/11] drm/i915/dp: Add member to intel_dp to store AS SDP v2 support Ankit Nautiyal
                   ` (12 subsequent siblings)
  13 siblings, 1 reply; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:54 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

Introduce a helper to check if Panel Replay has Async Video Timing support
during PR Active state.

v2: Confirm that Panel Replay is supported before checking for
    Async Video Timing Support during PR active. (Ville)

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 11 +++++++++++
 drivers/gpu/drm/i915/display/intel_psr.h |  1 +
 2 files changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 892d209dce1b..431468103f51 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -4655,3 +4655,14 @@ bool intel_psr_use_trans_push(const struct intel_crtc_state *crtc_state)
 
 	return HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display) && crtc_state->has_psr;
 }
+
+bool intel_psr_pr_async_video_timing_supported(struct intel_dp *intel_dp)
+{
+	struct intel_connector *connector = intel_dp->attached_connector;
+	u8 *dpcd = connector->dp.panel_replay_caps.dpcd;
+	u8 pr_support = dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)];
+	u8 pr_cap = dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_CAPABILITY)];
+
+	return (pr_support & DP_PANEL_REPLAY_SUPPORT) &&
+		!(pr_cap & DP_PANEL_REPLAY_ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_psr.h b/drivers/gpu/drm/i915/display/intel_psr.h
index 394b641840b3..29723e63888f 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.h
+++ b/drivers/gpu/drm/i915/display/intel_psr.h
@@ -86,5 +86,6 @@ void intel_psr_compute_config_late(struct intel_dp *intel_dp,
 				   struct intel_crtc_state *crtc_state);
 int intel_psr_min_guardband(struct intel_crtc_state *crtc_state);
 bool intel_psr_use_trans_push(const struct intel_crtc_state *crtc_state);
+bool intel_psr_pr_async_video_timing_supported(struct intel_dp *intel_dp);
 
 #endif /* __INTEL_PSR_H__ */
-- 
2.45.2


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

* [PATCH 02/11] drm/i915/dp: Add member to intel_dp to store AS SDP v2 support
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
  2026-05-18  3:54 ` [PATCH 01/11] drm/i915/psr: Add helper to get Async Video timing support in PR active Ankit Nautiyal
@ 2026-05-18  3:54 ` Ankit Nautiyal
  2026-05-22 14:08   ` Ville Syrjälä
  2026-05-18  3:54 ` [PATCH 03/11] drm/i915/dp: Allow AS SDP only if v2 is supported Ankit Nautiyal
                   ` (11 subsequent siblings)
  13 siblings, 1 reply; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:54 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

eDP v1.5a advertises support for Adaptive Sync SDP and with that the
support for AS SDP v2 is mandatory.

DP v2.1 SCR advertises support for FAVT payload fields parsing in DPCD
0x2214 Bit 2. This indicates the support for Adaptive-Sync SDP version 2
(AS SDP v2), which allows the source to set the version in HB2[4:0] and the
payload length in HB3[5:0] of the AS SDP header.

DP v2.1 SCR also introduces ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR in the
Panel Replay Capability DPCD 0x00b1 (Bit 3). When this bit is set, the sink
does not support asynchronous video timing while in a Panel Replay Active
state and the source is required to keep transmitting Adaptive-Sync
SDPs. The spec mandates that such sinks shall support AS SDP v2.

Infer AS SDP v2 support from these capabilities and store it in
struct intel_dp for use by subsequent feature enablement changes.

v2:
 - Include parsing ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR bit to
   determine AS SDP v2 support. (Ville)
v3:
 - Use helper to determine asynch video timing support.
v4:
 - Add AS SDP v2 support for eDP as per v1.5a.
 - Add a check for Panel Replay support before checking for Async video
   timing support in PR
 - Add a TODO for Display ID and PCON considerations. (Ville)

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 .../drm/i915/display/intel_display_types.h    |  1 +
 drivers/gpu/drm/i915/display/intel_dp.c       | 49 +++++++++++++++++++
 2 files changed, 50 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index b7bcf8fefa3e..e9b95879c797 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1871,6 +1871,7 @@ struct intel_dp {
 	/* connector directly attached - won't be use for modeset in mst world */
 	struct intel_connector *attached_connector;
 	bool as_sdp_supported;
+	bool as_sdp_v2_supported;
 
 	struct drm_dp_tunnel *tunnel;
 	bool tunnel_suspended:1;
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 1920d2f02666..92a650a728d8 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6365,6 +6365,46 @@ intel_dp_unset_edid(struct intel_dp *intel_dp)
 					       false);
 }
 
+static bool
+intel_dp_sink_supports_as_sdp_v2(struct intel_dp *intel_dp)
+{
+	u8 rx_features;
+
+	/*
+	 * The DP spec does not explicitly provide the AS SDP v2 capability.
+	 * So based on the DP v2.1 SCR, we infer it from the following bits:
+	 *
+	 * DP_AS_SDP_FAVT_PAYLOAD_FIELDS_PARSING_SUPPORTED indicates support for
+	 * FAVT, which is explicitly defined to use AS SDP v2.
+	 *
+	 * DP_ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR indicates that the sink
+	 * does not support asynchronous video timing while in PR Active,
+	 * requiring the source to keep transmitting Adaptive-Sync SDPs. The
+	 * spec mandates that such sinks shall support AS SDP v2.
+	 *
+	 * #TODO: Check the Adaptive-Sync DisplayID 2.1 block once DisplayID
+	 * parsing is available. This may help detect AS SDP v2 support for
+	 * native DP 2.1 sinks that do not expose FAVT or PR-based capability
+	 * bits.
+	 *
+	 * In the presence of PCONs, check PCON support from DPCD and sink
+	 * support from Display ID.
+	 */
+
+	if (drm_dp_dpcd_read_byte(&intel_dp->aux,
+				  DP_DPRX_FEATURE_ENUMERATION_LIST_CONT_1,
+				  &rx_features) == 1) {
+		if (rx_features & DP_AS_SDP_FAVT_PAYLOAD_FIELDS_PARSING_SUPPORTED)
+			return true;
+	}
+
+	if (intel_dp->psr.sink_panel_replay_support &&
+	    !intel_psr_pr_async_video_timing_supported(intel_dp))
+		return true;
+
+	return false;
+}
+
 static void
 intel_dp_detect_sdp_caps(struct intel_dp *intel_dp)
 {
@@ -6372,6 +6412,15 @@ intel_dp_detect_sdp_caps(struct intel_dp *intel_dp)
 
 	intel_dp->as_sdp_supported = HAS_AS_SDP(display) &&
 		drm_dp_as_sdp_supported(&intel_dp->aux, intel_dp->dpcd);
+
+	if (!intel_dp->as_sdp_supported)
+		return;
+
+	/* eDP Adaptive-Sync SDP always uses AS SDP v2 */
+	if (intel_dp_is_edp(intel_dp))
+		intel_dp->as_sdp_v2_supported =  true;
+	else
+		intel_dp->as_sdp_v2_supported = intel_dp_sink_supports_as_sdp_v2(intel_dp);
 }
 
 static bool intel_dp_needs_dpcd_probe(struct intel_dp *intel_dp, bool force_on_external)
-- 
2.45.2


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

* [PATCH 03/11] drm/i915/dp: Allow AS SDP only if v2 is supported
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
  2026-05-18  3:54 ` [PATCH 01/11] drm/i915/psr: Add helper to get Async Video timing support in PR active Ankit Nautiyal
  2026-05-18  3:54 ` [PATCH 02/11] drm/i915/dp: Add member to intel_dp to store AS SDP v2 support Ankit Nautiyal
@ 2026-05-18  3:54 ` Ankit Nautiyal
  2026-05-22 14:10   ` Ville Syrjälä
  2026-05-18  3:54 ` [PATCH 04/11] drm/i915/psr: Write the PR config DPCDs in burst mode Ankit Nautiyal
                   ` (10 subsequent siblings)
  13 siblings, 1 reply; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:54 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

We do not support AS SDP version 1, so allow AS SDP only if AS SDP v2 is
supported.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 92a650a728d8..d1b40db7e2a3 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -3172,7 +3172,7 @@ static void intel_dp_compute_vsc_colorimetry(const struct intel_crtc_state *crtc
 static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
 				  struct intel_crtc_state *crtc_state)
 {
-	if (!intel_dp->as_sdp_supported)
+	if (!intel_dp->as_sdp_v2_supported)
 		return false;
 
 	/*
-- 
2.45.2


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

* [PATCH 04/11] drm/i915/psr: Write the PR config DPCDs in burst mode
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
                   ` (2 preceding siblings ...)
  2026-05-18  3:54 ` [PATCH 03/11] drm/i915/dp: Allow AS SDP only if v2 is supported Ankit Nautiyal
@ 2026-05-18  3:54 ` Ankit Nautiyal
  2026-05-18  3:54 ` [PATCH 05/11] drm/i915/display: Add helper for AS SDP transmission time selection Ankit Nautiyal
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:54 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

Replace the consecutive single-byte writes to PANEL_REPLAY_CONFIG and
CONFIG2 with one drm_dp_dpcd_write() burst starting at PANEL_REPLAY_CONFIG,
reducing AUX transactions.

v2: Drop extra conditions, and optimize variables. (Ville)
v3: Drop the error check after write. (Ville)

Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 26 ++++++++++++------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 431468103f51..363349bdb529 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -786,27 +786,27 @@ static bool psr2_su_region_et_valid(struct intel_connector *connector, bool pane
 static void _panel_replay_enable_sink(struct intel_dp *intel_dp,
 				      const struct intel_crtc_state *crtc_state)
 {
-	u8 val = DP_PANEL_REPLAY_ENABLE |
-		DP_PANEL_REPLAY_VSC_SDP_CRC_EN |
-		DP_PANEL_REPLAY_UNRECOVERABLE_ERROR_EN |
-		DP_PANEL_REPLAY_RFB_STORAGE_ERROR_EN |
-		DP_PANEL_REPLAY_ACTIVE_FRAME_CRC_ERROR_EN;
-	u8 panel_replay_config2 = DP_PANEL_REPLAY_CRC_VERIFICATION;
+	u8 panel_replay_config[2];
+
+	panel_replay_config[0] = DP_PANEL_REPLAY_ENABLE |
+				 DP_PANEL_REPLAY_VSC_SDP_CRC_EN |
+				 DP_PANEL_REPLAY_UNRECOVERABLE_ERROR_EN |
+				 DP_PANEL_REPLAY_RFB_STORAGE_ERROR_EN |
+				 DP_PANEL_REPLAY_ACTIVE_FRAME_CRC_ERROR_EN;
+	panel_replay_config[1] = DP_PANEL_REPLAY_CRC_VERIFICATION;
 
 	if (crtc_state->has_sel_update)
-		val |= DP_PANEL_REPLAY_SU_ENABLE;
+		panel_replay_config[0] |= DP_PANEL_REPLAY_SU_ENABLE;
 
 	if (crtc_state->enable_psr2_su_region_et)
-		val |= DP_PANEL_REPLAY_ENABLE_SU_REGION_ET;
+		panel_replay_config[0] |= DP_PANEL_REPLAY_ENABLE_SU_REGION_ET;
 
 	if (crtc_state->req_psr2_sdp_prior_scanline)
-		panel_replay_config2 |=
+		panel_replay_config[1] |=
 			DP_PANEL_REPLAY_SU_REGION_SCANLINE_CAPTURE;
 
-	drm_dp_dpcd_writeb(&intel_dp->aux, PANEL_REPLAY_CONFIG, val);
-
-	drm_dp_dpcd_writeb(&intel_dp->aux, PANEL_REPLAY_CONFIG2,
-			   panel_replay_config2);
+	drm_dp_dpcd_write(&intel_dp->aux, PANEL_REPLAY_CONFIG,
+			  panel_replay_config, sizeof(panel_replay_config));
 }
 
 static void _psr_enable_sink(struct intel_dp *intel_dp,
-- 
2.45.2


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

* [PATCH 05/11] drm/i915/display: Add helper for AS SDP transmission time selection
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
                   ` (3 preceding siblings ...)
  2026-05-18  3:54 ` [PATCH 04/11] drm/i915/psr: Write the PR config DPCDs in burst mode Ankit Nautiyal
@ 2026-05-18  3:54 ` Ankit Nautiyal
  2026-05-18  3:54 ` [PATCH 06/11] drm/i915/psr: Program Panel Replay CONFIG3 using AS SDP transmission time Ankit Nautiyal
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:54 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

AS SDP may be transmitted at T1 or T2 depending on Panel Replay and
Adaptive Sync SDP configuration as per DP 2.1. Current we are using
T1 only, but future PR/AS SDP modes/features may require T2 or dynamic
selection.

Introduce a helper to return the appropriate AS SDP transmission time so
that a single value is consistently used for programming PR_ALPM.
For now this returns T1.

v2: Avoid adding new member to crtc_state; use a helper. (Ville)
v3: Clarify why AS SDP transmission time is fixed to T1. (Ville)
v4: Return u8 from intel_dp_as_sdp_transmission_time(). (Ville)

Bspec: 68920
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 20 +++++++++++++++++++-
 drivers/gpu/drm/i915/display/intel_dp.c   | 11 +++++++++++
 drivers/gpu/drm/i915/display/intel_dp.h   |  2 ++
 3 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index a7350ce8e716..c6963ea420cc 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -11,6 +11,7 @@
 #include "intel_crtc.h"
 #include "intel_de.h"
 #include "intel_display_types.h"
+#include "intel_display_utils.h"
 #include "intel_dp.h"
 #include "intel_dp_aux.h"
 #include "intel_psr.h"
@@ -359,6 +360,23 @@ void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
 	crtc_state->has_lobf = true;
 }
 
+static u32 get_pr_alpm_as_sdp_transmission_time(const struct intel_crtc_state *crtc_state)
+{
+	u8 as_sdp_setup_time = intel_dp_as_sdp_transmission_time();
+
+	switch (as_sdp_setup_time) {
+	case DP_PR_AS_SDP_SETUP_TIME_T1:
+		return PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_T1;
+	case DP_PR_AS_SDP_SETUP_TIME_DYNAMIC:
+		return PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_T1_OR_T2;
+	case DP_PR_AS_SDP_SETUP_TIME_T2:
+		return PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_T2;
+	default:
+		MISSING_CASE(as_sdp_setup_time);
+		return PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_T1;
+	}
+}
+
 static void lnl_alpm_configure(struct intel_dp *intel_dp,
 			       const struct intel_crtc_state *crtc_state)
 {
@@ -382,7 +400,7 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
 			ALPM_CTL_AUX_LESS_WAKE_TIME(crtc_state->alpm_state.aux_less_wake_lines);
 
 		if (intel_dp->as_sdp_supported) {
-			u32 pr_alpm_ctl = PR_ALPM_CTL_ADAPTIVE_SYNC_SDP_POSITION_T1;
+			u32 pr_alpm_ctl = get_pr_alpm_as_sdp_transmission_time(crtc_state);
 
 			if (crtc_state->link_off_after_as_sdp_when_pr_active)
 				pr_alpm_ctl |= PR_ALPM_CTL_ALLOW_LINK_OFF_BETWEEN_AS_SDP_AND_SU;
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index d1b40db7e2a3..7f243463bf7b 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -7555,3 +7555,14 @@ bool intel_dp_joiner_candidate_valid(struct intel_connector *connector,
 
 	return true;
 }
+
+u8 intel_dp_as_sdp_transmission_time(void)
+{
+	/*
+	 * DP allows AS SDP position to move during PR active in some cases, but
+	 * software-controlled refresh rate changes with DC6v / ALPM require the
+	 * AS SDP to remain at T1. Use T1 unconditionally for now.
+	 */
+
+	return DP_PR_AS_SDP_SETUP_TIME_T1;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index f41480d24714..46a7f5c70981 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -241,4 +241,6 @@ bool intel_dp_joiner_candidate_valid(struct intel_connector *connector,
 	for ((__num_joined_pipes) = 1; (__num_joined_pipes) <= (I915_MAX_PIPES); (__num_joined_pipes)++) \
 		for_each_if(intel_dp_joiner_candidate_valid(__connector, (__mode)->hdisplay, __num_joined_pipes))
 
+u8 intel_dp_as_sdp_transmission_time(void);
+
 #endif /* __INTEL_DP_H__ */
-- 
2.45.2


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

* [PATCH 06/11] drm/i915/psr: Program Panel Replay CONFIG3 using AS SDP transmission time
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
                   ` (4 preceding siblings ...)
  2026-05-18  3:54 ` [PATCH 05/11] drm/i915/display: Add helper for AS SDP transmission time selection Ankit Nautiyal
@ 2026-05-18  3:54 ` Ankit Nautiyal
  2026-05-18  3:54 ` [PATCH 07/11] drm/i915/dp: Set relevant Downspread Ctrl DPCD bits for PR + Auxless ALPM Ankit Nautiyal
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:54 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

Panel Replay requires the AS SDP transmission time to be written into
PANEL_REPLAY_CONFIG3. This field was previously not programmed.

Use the AS SDP transmission-time helper to populate CONFIG3.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 363349bdb529..8f70b7dcd881 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -787,6 +787,7 @@ static void _panel_replay_enable_sink(struct intel_dp *intel_dp,
 				      const struct intel_crtc_state *crtc_state)
 {
 	u8 panel_replay_config[2];
+	u8 panel_replay_config_3;
 
 	panel_replay_config[0] = DP_PANEL_REPLAY_ENABLE |
 				 DP_PANEL_REPLAY_VSC_SDP_CRC_EN |
@@ -794,7 +795,6 @@ static void _panel_replay_enable_sink(struct intel_dp *intel_dp,
 				 DP_PANEL_REPLAY_RFB_STORAGE_ERROR_EN |
 				 DP_PANEL_REPLAY_ACTIVE_FRAME_CRC_ERROR_EN;
 	panel_replay_config[1] = DP_PANEL_REPLAY_CRC_VERIFICATION;
-
 	if (crtc_state->has_sel_update)
 		panel_replay_config[0] |= DP_PANEL_REPLAY_SU_ENABLE;
 
@@ -807,6 +807,9 @@ static void _panel_replay_enable_sink(struct intel_dp *intel_dp,
 
 	drm_dp_dpcd_write(&intel_dp->aux, PANEL_REPLAY_CONFIG,
 			  panel_replay_config, sizeof(panel_replay_config));
+
+	panel_replay_config_3 = intel_dp_as_sdp_transmission_time();
+	drm_dp_dpcd_writeb(&intel_dp->aux, PANEL_REPLAY_CONFIG3, panel_replay_config_3);
 }
 
 static void _psr_enable_sink(struct intel_dp *intel_dp,
-- 
2.45.2


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

* [PATCH 07/11] drm/i915/dp: Set relevant Downspread Ctrl DPCD bits for PR + Auxless ALPM
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
                   ` (5 preceding siblings ...)
  2026-05-18  3:54 ` [PATCH 06/11] drm/i915/psr: Program Panel Replay CONFIG3 using AS SDP transmission time Ankit Nautiyal
@ 2026-05-18  3:54 ` Ankit Nautiyal
  2026-05-22 15:08   ` Ville Syrjälä
  2026-05-18  3:54 ` [PATCH 08/11] drm/i915/dp: Program AS SDP DB[1:0] for PR with Link off Ankit Nautiyal
                   ` (6 subsequent siblings)
  13 siblings, 1 reply; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:54 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

If a Panel Replay capable sink, supports Async Video timing in
PR active state, then source does not necessarily need to send AS SDPs
during PR active.

However, if asynchronous video timing is not supported, then for PR with
Aux-less ALPM, the source must transmit Adaptive-Sync SDPs for video
timing synchronization while PR is active.

If the source needs to send AS SDP during PR active, this requires setting
DPCD 0x0107[6] (FIXED_VTOTAL_AS_SDP_EN_IN_PR_ACTIVE). This applies whether
VRR is enabled (AVT/FAVT) or fixed-timing mode is used.

This bit defines AS SDP timing behavior during PR Active, even if AS SDPs
are briefly suspended.

Program the relevant Downspread Ctrl DPCD bits accordingly.

v2: Instead of Panel Replay check simply use AS SDP enable check. (Ville)
v3: Since the bit is defined in context of Panel Replay and AS SDP, add
    a check for both. (Ville)

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 .../gpu/drm/i915/display/intel_dp_link_training.c | 15 +++++++++++++--
 .../gpu/drm/i915/display/intel_dp_link_training.h |  3 ++-
 drivers/gpu/drm/i915/display/intel_dp_mst.c       |  2 +-
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
index a26094223f78..d0b033d2cfb4 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -34,8 +34,10 @@
 #include "intel_dp.h"
 #include "intel_dp_link_training.h"
 #include "intel_encoder.h"
+#include "intel_hdmi.h"
 #include "intel_hotplug.h"
 #include "intel_panel.h"
+#include "intel_psr.h"
 
 #define LT_MSG_PREFIX			"[CONNECTOR:%d:%s][ENCODER:%d:%s][%s] "
 #define LT_MSG_ARGS(_intel_dp, _dp_phy)	(_intel_dp)->attached_connector->base.base.id, \
@@ -710,11 +712,14 @@ static bool intel_dp_link_max_vswing_reached(struct intel_dp *intel_dp,
 	return true;
 }
 
-void intel_dp_link_training_set_mode(struct intel_dp *intel_dp, int link_rate, bool is_vrr)
+void intel_dp_link_training_set_mode(struct intel_dp *intel_dp, int link_rate,
+				     bool is_vrr,
+				     bool pr_with_as_sdp_enable)
 {
 	u8 link_config[2];
 
 	link_config[0] = is_vrr ? DP_MSA_TIMING_PAR_IGNORE_EN : 0;
+	link_config[0] |= pr_with_as_sdp_enable ? DP_FIXED_VTOTAL_AS_SDP_EN_IN_PR_ACTIVE : 0;
 	link_config[1] = drm_dp_is_uhbr_rate(link_rate) ?
 			 DP_SET_ANSI_128B132B : DP_SET_ANSI_8B10B;
 	drm_dp_dpcd_write(&intel_dp->aux, DP_DOWNSPREAD_CTRL, link_config, 2);
@@ -723,6 +728,10 @@ void intel_dp_link_training_set_mode(struct intel_dp *intel_dp, int link_rate, b
 static void intel_dp_update_downspread_ctrl(struct intel_dp *intel_dp,
 					    const struct intel_crtc_state *crtc_state)
 {
+	bool pr_with_as_sdp_enable =
+		intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) &&
+		crtc_state->infoframes.enable & intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC);
+
 	 /*
 	  * Currently, we set the MSA ignore bit based on vrr.in_range.
 	  * We can't really read that out during driver load since we don't have
@@ -737,7 +746,9 @@ static void intel_dp_update_downspread_ctrl(struct intel_dp *intel_dp,
 	  * especially on the first real commit when clearing the inherited flag.
 	  */
 	intel_dp_link_training_set_mode(intel_dp,
-					crtc_state->port_clock, crtc_state->vrr.in_range);
+					crtc_state->port_clock,
+					crtc_state->vrr.in_range,
+					pr_with_as_sdp_enable);
 }
 
 void intel_dp_link_training_set_bw(struct intel_dp *intel_dp,
diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.h b/drivers/gpu/drm/i915/display/intel_dp_link_training.h
index 33dcbde6a408..18c34c1a472f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.h
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.h
@@ -18,7 +18,8 @@ int intel_dp_init_lttpr_and_dprx_caps(struct intel_dp *intel_dp);
 bool intel_dp_lttpr_transparent_mode_enabled(struct intel_dp *intel_dp);
 
 void intel_dp_link_training_set_mode(struct intel_dp *intel_dp,
-				     int link_rate, bool is_vrr);
+				     int link_rate, bool is_vrr,
+				     bool pr_with_as_sdp_enable);
 void intel_dp_link_training_set_bw(struct intel_dp *intel_dp,
 				   int link_bw, int rate_select, int lane_count,
 				   bool enhanced_framing, bool post_lt_adj_req);
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 8f73e01db17c..a238f7948cec 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -2145,7 +2145,7 @@ void intel_dp_mst_prepare_probe(struct intel_dp *intel_dp)
 
 	intel_dp_compute_rate(intel_dp, link_rate, &link_bw, &rate_select);
 
-	intel_dp_link_training_set_mode(intel_dp, link_rate, false);
+	intel_dp_link_training_set_mode(intel_dp, link_rate, false, false);
 	intel_dp_link_training_set_bw(intel_dp, link_bw, rate_select, lane_count,
 				      drm_dp_enhanced_frame_cap(intel_dp->dpcd), false);
 
-- 
2.45.2


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

* [PATCH 08/11] drm/i915/dp: Program AS SDP DB[1:0] for PR with Link off
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
                   ` (6 preceding siblings ...)
  2026-05-18  3:54 ` [PATCH 07/11] drm/i915/dp: Set relevant Downspread Ctrl DPCD bits for PR + Auxless ALPM Ankit Nautiyal
@ 2026-05-18  3:54 ` Ankit Nautiyal
  2026-05-18  3:54 ` [PATCH 09/11] drm/i915/dp: Split AS SDP computation between compute_config and compute_config_late Ankit Nautiyal
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:54 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

For Panel Replay with AUX-less ALPM (link-off PR), the source must send
Adaptive-Sync SDP v2. Program DB[1:0] per DP spec v2.1:
- VRR AVT: 00b (variable VTotal)
- VRR FAVT: 10b/11b (TRR not reached/reached)
- Fixed timing with PR link-off (VRR off): 01b (AS disabled; VTotal fixed)

Also, drop the redundant target_rr assignment.

v2: Fix the else case. (Ville)

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 7f243463bf7b..8d0d04f306a7 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -3211,9 +3211,10 @@ static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
 		as_sdp->mode = DP_AS_SDP_FAVT_TRR_REACHED;
 		as_sdp->target_rr = drm_mode_vrefresh(adjusted_mode);
 		as_sdp->target_rr_divider = true;
-	} else {
+	} else if (crtc_state->vrr.enable) {
 		as_sdp->mode = DP_AS_SDP_AVT_DYNAMIC_VTOTAL;
-		as_sdp->target_rr = 0;
+	} else {
+		as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
 	}
 }
 
-- 
2.45.2


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

* [PATCH 09/11] drm/i915/dp: Split AS SDP computation between compute_config and compute_config_late
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
                   ` (7 preceding siblings ...)
  2026-05-18  3:54 ` [PATCH 08/11] drm/i915/dp: Program AS SDP DB[1:0] for PR with Link off Ankit Nautiyal
@ 2026-05-18  3:54 ` Ankit Nautiyal
  2026-05-22 15:24   ` Ville Syrjälä
  2026-05-18  3:55 ` [PATCH 10/11] drm/i915/dp: Compute and include coasting vtotal for AS SDP Ankit Nautiyal
                   ` (4 subsequent siblings)
  13 siblings, 1 reply; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:54 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

Currently we enable AS SDP only when VRR is enabled. As we start using
AS SDP for other features, this becomes a problem. The AS SDP
configuration can change dynamically based on VRR, CMRR, PR, ALPM, etc.
Since these features may be enabled or disabled after the initial
configuration, the AS SDP parameters need to be computed later in the
pipeline.

However, not all of the AS SDP logic can be moved to the late stage:
the VRR guardband optimization depends on knowing early whether AS SDP
can be used. Without this, we would end up accounting for AS SDP on all
platforms that support it, even for panels that do not support AS SDP.
Therefore we set the infoframe enable bit for AS SDP during
compute_config(), before the guardband is computed.

To handle these constraints, split the AS SDP programming into two
phases:

 - intel_dp_compute_as_sdp()
   Runs during compute_config().
   Sets only the infoframe enable bit so that the guardband logic can
   account for AS SDP requirements.

 - intel_dp_as_sdp_compute_config_late()
   Runs during compute_config_late().
   Computes all remaining AS SDP fields based on the features that need
   it.

The late-stage computation is called from
intel_dp_sdp_compute_config_late(), before computing the minimum guardband
for SDPs.

This is a preparatory change. A subsequent patches will compute PR related
AS SDP fields and enable AS SDP not only for VRR but for other features
as well.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 66 ++++++++++++++++---------
 1 file changed, 43 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 8d0d04f306a7..c1c6f394eb0b 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -3187,10 +3187,6 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
 static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
 				    struct intel_crtc_state *crtc_state)
 {
-	struct drm_dp_as_sdp *as_sdp = &crtc_state->infoframes.as_sdp;
-	const struct drm_display_mode *adjusted_mode =
-		&crtc_state->hw.adjusted_mode;
-
 	/*
 	 * #FIXME: SDP/infoframe updates aren’t truly atomic, and with the new
 	 * cdclk->tc clock crossing we may transiently send a corrupted packet
@@ -3199,23 +3195,13 @@ static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
 	if (!intel_dp_needs_as_sdp(intel_dp, crtc_state))
 		return;
 
+	/*
+	 * Only set the infoframes.enable flag here. The remaining AS SDP fields
+	 * are programmed in the compute_config_late() phase. We need this flag
+	 * early so that the VRR guardband calculation can properly account for
+	 * AS SDP requirements.
+	 */
 	crtc_state->infoframes.enable |= intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC);
-
-	as_sdp->sdp_type = DP_SDP_ADAPTIVE_SYNC;
-	as_sdp->length = 0x9;
-	as_sdp->duration_incr_ms = 0;
-	as_sdp->revision = 0x2;
-	as_sdp->vtotal = intel_vrr_vmin_vtotal(crtc_state);
-
-	if (crtc_state->cmrr.enable) {
-		as_sdp->mode = DP_AS_SDP_FAVT_TRR_REACHED;
-		as_sdp->target_rr = drm_mode_vrefresh(adjusted_mode);
-		as_sdp->target_rr_divider = true;
-	} else if (crtc_state->vrr.enable) {
-		as_sdp->mode = DP_AS_SDP_AVT_DYNAMIC_VTOTAL;
-	} else {
-		as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
-	}
 }
 
 static void intel_dp_compute_vsc_sdp(struct intel_dp *intel_dp,
@@ -7459,11 +7445,45 @@ void intel_dp_mst_resume(struct intel_display *display)
 }
 
 static
-int intel_dp_sdp_compute_config_late(struct intel_crtc_state *crtc_state)
+void intel_dp_as_sdp_compute_config_late(struct intel_dp *intel_dp,
+					 struct intel_crtc_state *crtc_state)
+{
+	struct drm_dp_as_sdp *as_sdp = &crtc_state->infoframes.as_sdp;
+	const struct drm_display_mode *adjusted_mode =
+		&crtc_state->hw.adjusted_mode;
+
+	if ((crtc_state->infoframes.enable &
+	    intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC)) == 0)
+		return;
+
+	as_sdp->sdp_type = DP_SDP_ADAPTIVE_SYNC;
+	as_sdp->length = 0x9;
+	as_sdp->duration_incr_ms = 0;
+	as_sdp->revision = 0x2;
+	as_sdp->vtotal = intel_vrr_vmin_vtotal(crtc_state);
+
+	if (crtc_state->cmrr.enable) {
+		as_sdp->mode = DP_AS_SDP_FAVT_TRR_REACHED;
+		as_sdp->target_rr = drm_mode_vrefresh(adjusted_mode);
+		as_sdp->target_rr_divider = true;
+	} else if (crtc_state->vrr.enable) {
+		as_sdp->mode = DP_AS_SDP_AVT_DYNAMIC_VTOTAL;
+	} else {
+		as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
+	}
+}
+
+static
+int intel_dp_sdp_compute_config_late(struct intel_dp *intel_dp,
+				     struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	int guardband = intel_crtc_vblank_length(crtc_state);
-	int min_sdp_guardband = intel_dp_sdp_min_guardband(crtc_state, false);
+	int min_sdp_guardband;
+
+	intel_dp_as_sdp_compute_config_late(intel_dp, crtc_state);
+
+	min_sdp_guardband = intel_dp_sdp_min_guardband(crtc_state, false);
 
 	if (guardband < min_sdp_guardband) {
 		drm_dbg_kms(display->drm, "guardband %d < min sdp guardband %d\n",
@@ -7483,7 +7503,7 @@ int intel_dp_compute_config_late(struct intel_encoder *encoder,
 
 	intel_psr_compute_config_late(intel_dp, crtc_state);
 
-	ret = intel_dp_sdp_compute_config_late(crtc_state);
+	ret = intel_dp_sdp_compute_config_late(intel_dp, crtc_state);
 	if (ret)
 		return ret;
 
-- 
2.45.2


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

* [PATCH 10/11] drm/i915/dp: Compute and include coasting vtotal for AS SDP
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
                   ` (8 preceding siblings ...)
  2026-05-18  3:54 ` [PATCH 09/11] drm/i915/dp: Split AS SDP computation between compute_config and compute_config_late Ankit Nautiyal
@ 2026-05-18  3:55 ` Ankit Nautiyal
  2026-05-23  4:34   ` Nautiyal, Ankit K
  2026-05-18  3:55 ` [PATCH 11/11] drm/i915/dp: Always enable AS SDP if supported by source + sink Ankit Nautiyal
                   ` (3 subsequent siblings)
  13 siblings, 1 reply; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:55 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

DP v2.1 allows the source to temporarily suspend Adaptive-Sync SDP
transmission while Panel Replay is active when the sink supports
asynchronous video timing.

In such cases, the sink relies on the last transmitted AS SDP timing
information to maintain the refresh rate. To support this behavior,
compute and populate the coasting vtotal field in the AS SDP payload.

Include coasting vtotal in AS SDP packing, unpacking, and comparison,
and set it during late AS SDP configuration for PR with Aux-less ALPM
when asynchronous video timing is supported.

Note:
The coasting vtotal value is fully under driver control i.e. the HW does
not overwrite these payload bytes. HW only samples the PR_ALPM_CTL[AS SDP
Transmission in Active Disable] bit during PR active state and reflects it
in the AS SDP payload at the appropriate time.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c |  3 ++-
 drivers/gpu/drm/i915/display/intel_dp.c      | 19 +++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 757a78c75bbf..043d1c667379 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -4889,7 +4889,8 @@ intel_compare_dp_as_sdp(const struct drm_dp_as_sdp *a,
 		a->duration_incr_ms == b->duration_incr_ms &&
 		a->duration_decr_ms == b->duration_decr_ms &&
 		a->target_rr_divider == b->target_rr_divider &&
-		a->mode == b->mode;
+		a->mode == b->mode &&
+		a->coasting_vtotal == b->coasting_vtotal;
 }
 
 static bool
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index c1c6f394eb0b..69eb474fede7 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5181,6 +5181,9 @@ static ssize_t intel_dp_as_sdp_pack(const struct drm_dp_as_sdp *as_sdp,
 	if (as_sdp->target_rr_divider)
 		sdp->db[4] |= 0x20;
 
+	sdp->db[7] = as_sdp->coasting_vtotal & 0xFF;
+	sdp->db[8] = (as_sdp->coasting_vtotal >> 8) & 0xFF;
+
 	return length;
 }
 
@@ -5365,6 +5368,7 @@ int intel_dp_as_sdp_unpack(struct drm_dp_as_sdp *as_sdp,
 	as_sdp->vtotal = (sdp->db[2] << 8) | sdp->db[1];
 	as_sdp->target_rr = ((sdp->db[4] & 0x3) << 8) | sdp->db[3];
 	as_sdp->target_rr_divider = sdp->db[4] & 0x20 ? true : false;
+	as_sdp->coasting_vtotal = (sdp->db[8] << 8) | sdp->db[7];
 
 	return 0;
 }
@@ -7471,6 +7475,21 @@ void intel_dp_as_sdp_compute_config_late(struct intel_dp *intel_dp,
 	} else {
 		as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
 	}
+
+	/*
+	 * For Panel Replay with Async Video Timing support, the source can
+	 * disable sending the AS SDP during PR Active state. In that case,
+	 * the sink needs the coasting vtotal value to maintain the refresh
+	 * rate.
+	 *
+	 * #TODO:
+	 * If we ever advertise support for coasting at other refresh targets,
+	 * this logic could be revisited. For now, use the minimum refresh rate
+	 * as the only safe coasting value.
+	 */
+	if (intel_alpm_is_alpm_aux_less(intel_dp, crtc_state) &&
+	    intel_psr_pr_async_video_timing_supported(intel_dp))
+		as_sdp->coasting_vtotal = crtc_state->vrr.vmax;
 }
 
 static
-- 
2.45.2


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

* [PATCH 11/11] drm/i915/dp: Always enable AS SDP if supported by source + sink
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
                   ` (9 preceding siblings ...)
  2026-05-18  3:55 ` [PATCH 10/11] drm/i915/dp: Compute and include coasting vtotal for AS SDP Ankit Nautiyal
@ 2026-05-18  3:55 ` Ankit Nautiyal
  2026-05-22 15:25   ` Ville Syrjälä
  2026-05-18  4:16 ` ✓ CI.KUnit: success for Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM (rev2) Patchwork
                   ` (2 subsequent siblings)
  13 siblings, 1 reply; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-18  3:55 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

Currently AS SDP is only configured when VRR is enabled. However, other
use cases like CMRR, Panel Replay, etc. also send information to the sink
via AS SDPs.

With optimized guardband, we also need to account for wakeup time and other
relevant details that depend on the AS SDP position whenever AS SDP is
enabled. If a feature enabling AS SDP gets turned on later (after modeset),
the guardband might not be sufficient and may need to increase, triggering
a full modeset.

To avoid this, always send AS SDP whenever:
 - the source and sink both support it, AND,
 - there is a possibility to use it for VRR and Panel Replay for
   synchronization.

v2: Check if AS SDP can be used for synchronization for VRR or PR. (Ville)

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 69eb474fede7..2c1dbcb0a2ca 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -3181,7 +3181,11 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
 	if (drm_dp_is_branch(intel_dp->dpcd))
 		return false;
 
-	return crtc_state->vrr.enable;
+	if (intel_alpm_is_alpm_aux_less(intel_dp, crtc_state) &&
+	    !intel_psr_pr_async_video_timing_supported(intel_dp))
+		return true;
+
+	return intel_vrr_possible(crtc_state);
 }
 
 static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
-- 
2.45.2


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

* ✓ CI.KUnit: success for Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM (rev2)
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
                   ` (10 preceding siblings ...)
  2026-05-18  3:55 ` [PATCH 11/11] drm/i915/dp: Always enable AS SDP if supported by source + sink Ankit Nautiyal
@ 2026-05-18  4:16 ` Patchwork
  2026-05-18  4:54 ` ✓ Xe.CI.BAT: " Patchwork
  2026-05-18  6:47 ` ✗ Xe.CI.FULL: failure " Patchwork
  13 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2026-05-18  4:16 UTC (permalink / raw)
  To: Ankit Nautiyal; +Cc: intel-xe

== Series Details ==

Series: Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM (rev2)
URL   : https://patchwork.freedesktop.org/series/164513/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[04:15:07] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[04:15:11] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[04:15:42] Starting KUnit Kernel (1/1)...
[04:15:42] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[04:15:42] ================== guc_buf (11 subtests) ===================
[04:15:42] [PASSED] test_smallest
[04:15:42] [PASSED] test_largest
[04:15:42] [PASSED] test_granular
[04:15:42] [PASSED] test_unique
[04:15:42] [PASSED] test_overlap
[04:15:42] [PASSED] test_reusable
[04:15:42] [PASSED] test_too_big
[04:15:42] [PASSED] test_flush
[04:15:42] [PASSED] test_lookup
[04:15:42] [PASSED] test_data
[04:15:42] [PASSED] test_class
[04:15:42] ===================== [PASSED] guc_buf =====================
[04:15:42] =================== guc_dbm (7 subtests) ===================
[04:15:42] [PASSED] test_empty
[04:15:42] [PASSED] test_default
[04:15:42] ======================== test_size  ========================
[04:15:42] [PASSED] 4
[04:15:42] [PASSED] 8
[04:15:42] [PASSED] 32
[04:15:42] [PASSED] 256
[04:15:42] ==================== [PASSED] test_size ====================
[04:15:42] ======================= test_reuse  ========================
[04:15:42] [PASSED] 4
[04:15:42] [PASSED] 8
[04:15:42] [PASSED] 32
[04:15:42] [PASSED] 256
[04:15:42] =================== [PASSED] test_reuse ====================
[04:15:42] =================== test_range_overlap  ====================
[04:15:42] [PASSED] 4
[04:15:42] [PASSED] 8
[04:15:42] [PASSED] 32
[04:15:42] [PASSED] 256
[04:15:42] =============== [PASSED] test_range_overlap ================
[04:15:42] =================== test_range_compact  ====================
[04:15:42] [PASSED] 4
[04:15:42] [PASSED] 8
[04:15:42] [PASSED] 32
[04:15:42] [PASSED] 256
[04:15:42] =============== [PASSED] test_range_compact ================
[04:15:42] ==================== test_range_spare  =====================
[04:15:42] [PASSED] 4
[04:15:42] [PASSED] 8
[04:15:42] [PASSED] 32
[04:15:42] [PASSED] 256
[04:15:42] ================ [PASSED] test_range_spare =================
[04:15:42] ===================== [PASSED] guc_dbm =====================
[04:15:42] =================== guc_idm (6 subtests) ===================
[04:15:42] [PASSED] bad_init
[04:15:42] [PASSED] no_init
[04:15:42] [PASSED] init_fini
[04:15:42] [PASSED] check_used
[04:15:42] [PASSED] check_quota
[04:15:42] [PASSED] check_all
[04:15:42] ===================== [PASSED] guc_idm =====================
[04:15:42] ================== no_relay (3 subtests) ===================
[04:15:42] [PASSED] xe_drops_guc2pf_if_not_ready
[04:15:42] [PASSED] xe_drops_guc2vf_if_not_ready
[04:15:42] [PASSED] xe_rejects_send_if_not_ready
[04:15:42] ==================== [PASSED] no_relay =====================
[04:15:42] ================== pf_relay (14 subtests) ==================
[04:15:42] [PASSED] pf_rejects_guc2pf_too_short
[04:15:42] [PASSED] pf_rejects_guc2pf_too_long
[04:15:42] [PASSED] pf_rejects_guc2pf_no_payload
[04:15:42] [PASSED] pf_fails_no_payload
[04:15:42] [PASSED] pf_fails_bad_origin
[04:15:42] [PASSED] pf_fails_bad_type
[04:15:42] [PASSED] pf_txn_reports_error
[04:15:42] [PASSED] pf_txn_sends_pf2guc
[04:15:42] [PASSED] pf_sends_pf2guc
[04:15:42] [SKIPPED] pf_loopback_nop
[04:15:42] [SKIPPED] pf_loopback_echo
[04:15:42] [SKIPPED] pf_loopback_fail
[04:15:42] [SKIPPED] pf_loopback_busy
[04:15:42] [SKIPPED] pf_loopback_retry
[04:15:42] ==================== [PASSED] pf_relay =====================
[04:15:42] ================== vf_relay (3 subtests) ===================
[04:15:42] [PASSED] vf_rejects_guc2vf_too_short
[04:15:42] [PASSED] vf_rejects_guc2vf_too_long
[04:15:42] [PASSED] vf_rejects_guc2vf_no_payload
[04:15:42] ==================== [PASSED] vf_relay =====================
[04:15:42] ================ pf_gt_config (9 subtests) =================
[04:15:42] [PASSED] fair_contexts_1vf
[04:15:42] [PASSED] fair_doorbells_1vf
[04:15:42] [PASSED] fair_ggtt_1vf
[04:15:42] ====================== fair_vram_1vf  ======================
[04:15:42] [PASSED] 3.50 GiB
[04:15:42] [PASSED] 11.5 GiB
[04:15:42] [PASSED] 15.5 GiB
[04:15:42] [PASSED] 31.5 GiB
[04:15:42] [PASSED] 63.5 GiB
[04:15:42] [PASSED] 1.91 GiB
[04:15:42] ================== [PASSED] fair_vram_1vf ==================
[04:15:42] ================ fair_vram_1vf_admin_only  =================
[04:15:42] [PASSED] 3.50 GiB
[04:15:42] [PASSED] 11.5 GiB
[04:15:42] [PASSED] 15.5 GiB
[04:15:42] [PASSED] 31.5 GiB
[04:15:42] [PASSED] 63.5 GiB
[04:15:42] [PASSED] 1.91 GiB
[04:15:42] ============ [PASSED] fair_vram_1vf_admin_only =============
[04:15:42] ====================== fair_contexts  ======================
[04:15:42] [PASSED] 1 VF
[04:15:42] [PASSED] 2 VFs
[04:15:42] [PASSED] 3 VFs
[04:15:42] [PASSED] 4 VFs
[04:15:42] [PASSED] 5 VFs
[04:15:42] [PASSED] 6 VFs
[04:15:42] [PASSED] 7 VFs
[04:15:42] [PASSED] 8 VFs
[04:15:42] [PASSED] 9 VFs
[04:15:42] [PASSED] 10 VFs
[04:15:42] [PASSED] 11 VFs
[04:15:42] [PASSED] 12 VFs
[04:15:42] [PASSED] 13 VFs
[04:15:42] [PASSED] 14 VFs
[04:15:42] [PASSED] 15 VFs
[04:15:42] [PASSED] 16 VFs
[04:15:42] [PASSED] 17 VFs
[04:15:42] [PASSED] 18 VFs
[04:15:42] [PASSED] 19 VFs
[04:15:42] [PASSED] 20 VFs
[04:15:42] [PASSED] 21 VFs
[04:15:42] [PASSED] 22 VFs
[04:15:42] [PASSED] 23 VFs
[04:15:42] [PASSED] 24 VFs
[04:15:42] [PASSED] 25 VFs
[04:15:42] [PASSED] 26 VFs
[04:15:42] [PASSED] 27 VFs
[04:15:42] [PASSED] 28 VFs
[04:15:42] [PASSED] 29 VFs
[04:15:42] [PASSED] 30 VFs
[04:15:42] [PASSED] 31 VFs
[04:15:42] [PASSED] 32 VFs
[04:15:42] [PASSED] 33 VFs
[04:15:42] [PASSED] 34 VFs
[04:15:42] [PASSED] 35 VFs
[04:15:42] [PASSED] 36 VFs
[04:15:42] [PASSED] 37 VFs
[04:15:42] [PASSED] 38 VFs
[04:15:43] [PASSED] 39 VFs
[04:15:43] [PASSED] 40 VFs
[04:15:43] [PASSED] 41 VFs
[04:15:43] [PASSED] 42 VFs
[04:15:43] [PASSED] 43 VFs
[04:15:43] [PASSED] 44 VFs
[04:15:43] [PASSED] 45 VFs
[04:15:43] [PASSED] 46 VFs
[04:15:43] [PASSED] 47 VFs
[04:15:43] [PASSED] 48 VFs
[04:15:43] [PASSED] 49 VFs
[04:15:43] [PASSED] 50 VFs
[04:15:43] [PASSED] 51 VFs
[04:15:43] [PASSED] 52 VFs
[04:15:43] [PASSED] 53 VFs
[04:15:43] [PASSED] 54 VFs
[04:15:43] [PASSED] 55 VFs
[04:15:43] [PASSED] 56 VFs
[04:15:43] [PASSED] 57 VFs
[04:15:43] [PASSED] 58 VFs
[04:15:43] [PASSED] 59 VFs
[04:15:43] [PASSED] 60 VFs
[04:15:43] [PASSED] 61 VFs
[04:15:43] [PASSED] 62 VFs
[04:15:43] [PASSED] 63 VFs
[04:15:43] ================== [PASSED] fair_contexts ==================
[04:15:43] ===================== fair_doorbells  ======================
[04:15:43] [PASSED] 1 VF
[04:15:43] [PASSED] 2 VFs
[04:15:43] [PASSED] 3 VFs
[04:15:43] [PASSED] 4 VFs
[04:15:43] [PASSED] 5 VFs
[04:15:43] [PASSED] 6 VFs
[04:15:43] [PASSED] 7 VFs
[04:15:43] [PASSED] 8 VFs
[04:15:43] [PASSED] 9 VFs
[04:15:43] [PASSED] 10 VFs
[04:15:43] [PASSED] 11 VFs
[04:15:43] [PASSED] 12 VFs
[04:15:43] [PASSED] 13 VFs
[04:15:43] [PASSED] 14 VFs
[04:15:43] [PASSED] 15 VFs
[04:15:43] [PASSED] 16 VFs
[04:15:43] [PASSED] 17 VFs
[04:15:43] [PASSED] 18 VFs
[04:15:43] [PASSED] 19 VFs
[04:15:43] [PASSED] 20 VFs
[04:15:43] [PASSED] 21 VFs
[04:15:43] [PASSED] 22 VFs
[04:15:43] [PASSED] 23 VFs
[04:15:43] [PASSED] 24 VFs
[04:15:43] [PASSED] 25 VFs
[04:15:43] [PASSED] 26 VFs
[04:15:43] [PASSED] 27 VFs
[04:15:43] [PASSED] 28 VFs
[04:15:43] [PASSED] 29 VFs
[04:15:43] [PASSED] 30 VFs
[04:15:43] [PASSED] 31 VFs
[04:15:43] [PASSED] 32 VFs
[04:15:43] [PASSED] 33 VFs
[04:15:43] [PASSED] 34 VFs
[04:15:43] [PASSED] 35 VFs
[04:15:43] [PASSED] 36 VFs
[04:15:43] [PASSED] 37 VFs
[04:15:43] [PASSED] 38 VFs
[04:15:43] [PASSED] 39 VFs
[04:15:43] [PASSED] 40 VFs
[04:15:43] [PASSED] 41 VFs
[04:15:43] [PASSED] 42 VFs
[04:15:43] [PASSED] 43 VFs
[04:15:43] [PASSED] 44 VFs
[04:15:43] [PASSED] 45 VFs
[04:15:43] [PASSED] 46 VFs
[04:15:43] [PASSED] 47 VFs
[04:15:43] [PASSED] 48 VFs
[04:15:43] [PASSED] 49 VFs
[04:15:43] [PASSED] 50 VFs
[04:15:43] [PASSED] 51 VFs
[04:15:43] [PASSED] 52 VFs
[04:15:43] [PASSED] 53 VFs
[04:15:43] [PASSED] 54 VFs
[04:15:43] [PASSED] 55 VFs
[04:15:43] [PASSED] 56 VFs
[04:15:43] [PASSED] 57 VFs
[04:15:43] [PASSED] 58 VFs
[04:15:43] [PASSED] 59 VFs
[04:15:43] [PASSED] 60 VFs
[04:15:43] [PASSED] 61 VFs
[04:15:43] [PASSED] 62 VFs
[04:15:43] [PASSED] 63 VFs
[04:15:43] ================= [PASSED] fair_doorbells ==================
[04:15:43] ======================== fair_ggtt  ========================
[04:15:43] [PASSED] 1 VF
[04:15:43] [PASSED] 2 VFs
[04:15:43] [PASSED] 3 VFs
[04:15:43] [PASSED] 4 VFs
[04:15:43] [PASSED] 5 VFs
[04:15:43] [PASSED] 6 VFs
[04:15:43] [PASSED] 7 VFs
[04:15:43] [PASSED] 8 VFs
[04:15:43] [PASSED] 9 VFs
[04:15:43] [PASSED] 10 VFs
[04:15:43] [PASSED] 11 VFs
[04:15:43] [PASSED] 12 VFs
[04:15:43] [PASSED] 13 VFs
[04:15:43] [PASSED] 14 VFs
[04:15:43] [PASSED] 15 VFs
[04:15:43] [PASSED] 16 VFs
[04:15:43] [PASSED] 17 VFs
[04:15:43] [PASSED] 18 VFs
[04:15:43] [PASSED] 19 VFs
[04:15:43] [PASSED] 20 VFs
[04:15:43] [PASSED] 21 VFs
[04:15:43] [PASSED] 22 VFs
[04:15:43] [PASSED] 23 VFs
[04:15:43] [PASSED] 24 VFs
[04:15:43] [PASSED] 25 VFs
[04:15:43] [PASSED] 26 VFs
[04:15:43] [PASSED] 27 VFs
[04:15:43] [PASSED] 28 VFs
[04:15:43] [PASSED] 29 VFs
[04:15:43] [PASSED] 30 VFs
[04:15:43] [PASSED] 31 VFs
[04:15:43] [PASSED] 32 VFs
[04:15:43] [PASSED] 33 VFs
[04:15:43] [PASSED] 34 VFs
[04:15:43] [PASSED] 35 VFs
[04:15:43] [PASSED] 36 VFs
[04:15:43] [PASSED] 37 VFs
[04:15:43] [PASSED] 38 VFs
[04:15:43] [PASSED] 39 VFs
[04:15:43] [PASSED] 40 VFs
[04:15:43] [PASSED] 41 VFs
[04:15:43] [PASSED] 42 VFs
[04:15:43] [PASSED] 43 VFs
[04:15:43] [PASSED] 44 VFs
[04:15:43] [PASSED] 45 VFs
[04:15:43] [PASSED] 46 VFs
[04:15:43] [PASSED] 47 VFs
[04:15:43] [PASSED] 48 VFs
[04:15:43] [PASSED] 49 VFs
[04:15:43] [PASSED] 50 VFs
[04:15:43] [PASSED] 51 VFs
[04:15:43] [PASSED] 52 VFs
[04:15:43] [PASSED] 53 VFs
[04:15:43] [PASSED] 54 VFs
[04:15:43] [PASSED] 55 VFs
[04:15:43] [PASSED] 56 VFs
[04:15:43] [PASSED] 57 VFs
[04:15:43] [PASSED] 58 VFs
[04:15:43] [PASSED] 59 VFs
[04:15:43] [PASSED] 60 VFs
[04:15:43] [PASSED] 61 VFs
[04:15:43] [PASSED] 62 VFs
[04:15:43] [PASSED] 63 VFs
[04:15:43] ==================== [PASSED] fair_ggtt ====================
[04:15:43] ======================== fair_vram  ========================
[04:15:43] [PASSED] 1 VF
[04:15:43] [PASSED] 2 VFs
[04:15:43] [PASSED] 3 VFs
[04:15:43] [PASSED] 4 VFs
[04:15:43] [PASSED] 5 VFs
[04:15:43] [PASSED] 6 VFs
[04:15:43] [PASSED] 7 VFs
[04:15:43] [PASSED] 8 VFs
[04:15:43] [PASSED] 9 VFs
[04:15:43] [PASSED] 10 VFs
[04:15:43] [PASSED] 11 VFs
[04:15:43] [PASSED] 12 VFs
[04:15:43] [PASSED] 13 VFs
[04:15:43] [PASSED] 14 VFs
[04:15:43] [PASSED] 15 VFs
[04:15:43] [PASSED] 16 VFs
[04:15:43] [PASSED] 17 VFs
[04:15:43] [PASSED] 18 VFs
[04:15:43] [PASSED] 19 VFs
[04:15:43] [PASSED] 20 VFs
[04:15:43] [PASSED] 21 VFs
[04:15:43] [PASSED] 22 VFs
[04:15:43] [PASSED] 23 VFs
[04:15:43] [PASSED] 24 VFs
[04:15:43] [PASSED] 25 VFs
[04:15:43] [PASSED] 26 VFs
[04:15:43] [PASSED] 27 VFs
[04:15:43] [PASSED] 28 VFs
[04:15:43] [PASSED] 29 VFs
[04:15:43] [PASSED] 30 VFs
[04:15:43] [PASSED] 31 VFs
[04:15:43] [PASSED] 32 VFs
[04:15:43] [PASSED] 33 VFs
[04:15:43] [PASSED] 34 VFs
[04:15:43] [PASSED] 35 VFs
[04:15:43] [PASSED] 36 VFs
[04:15:43] [PASSED] 37 VFs
[04:15:43] [PASSED] 38 VFs
[04:15:43] [PASSED] 39 VFs
[04:15:43] [PASSED] 40 VFs
[04:15:43] [PASSED] 41 VFs
[04:15:43] [PASSED] 42 VFs
[04:15:43] [PASSED] 43 VFs
[04:15:43] [PASSED] 44 VFs
[04:15:43] [PASSED] 45 VFs
[04:15:43] [PASSED] 46 VFs
[04:15:43] [PASSED] 47 VFs
[04:15:43] [PASSED] 48 VFs
[04:15:43] [PASSED] 49 VFs
[04:15:43] [PASSED] 50 VFs
[04:15:43] [PASSED] 51 VFs
[04:15:43] [PASSED] 52 VFs
[04:15:43] [PASSED] 53 VFs
[04:15:43] [PASSED] 54 VFs
[04:15:43] [PASSED] 55 VFs
[04:15:43] [PASSED] 56 VFs
[04:15:43] [PASSED] 57 VFs
[04:15:43] [PASSED] 58 VFs
[04:15:43] [PASSED] 59 VFs
[04:15:43] [PASSED] 60 VFs
[04:15:43] [PASSED] 61 VFs
[04:15:43] [PASSED] 62 VFs
[04:15:43] [PASSED] 63 VFs
[04:15:43] ==================== [PASSED] fair_vram ====================
[04:15:43] ================== [PASSED] pf_gt_config ===================
[04:15:43] ===================== lmtt (1 subtest) =====================
[04:15:43] ======================== test_ops  =========================
[04:15:43] [PASSED] 2-level
[04:15:43] [PASSED] multi-level
[04:15:43] ==================== [PASSED] test_ops =====================
[04:15:43] ====================== [PASSED] lmtt =======================
[04:15:43] ================= pf_service (11 subtests) =================
[04:15:43] [PASSED] pf_negotiate_any
[04:15:43] [PASSED] pf_negotiate_base_match
[04:15:43] [PASSED] pf_negotiate_base_newer
[04:15:43] [PASSED] pf_negotiate_base_next
[04:15:43] [SKIPPED] pf_negotiate_base_older
[04:15:43] [PASSED] pf_negotiate_base_prev
[04:15:43] [PASSED] pf_negotiate_latest_match
[04:15:43] [PASSED] pf_negotiate_latest_newer
[04:15:43] [PASSED] pf_negotiate_latest_next
[04:15:43] [SKIPPED] pf_negotiate_latest_older
[04:15:43] [SKIPPED] pf_negotiate_latest_prev
[04:15:43] =================== [PASSED] pf_service ====================
[04:15:43] ================= xe_guc_g2g (2 subtests) ==================
[04:15:43] ============== xe_live_guc_g2g_kunit_default  ==============
[04:15:43] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[04:15:43] ============== xe_live_guc_g2g_kunit_allmem  ===============
[04:15:43] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[04:15:43] =================== [SKIPPED] xe_guc_g2g ===================
[04:15:43] =================== xe_mocs (2 subtests) ===================
[04:15:43] ================ xe_live_mocs_kernel_kunit  ================
[04:15:43] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[04:15:43] ================ xe_live_mocs_reset_kunit  =================
[04:15:43] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[04:15:43] ==================== [SKIPPED] xe_mocs =====================
[04:15:43] ================= xe_migrate (2 subtests) ==================
[04:15:43] ================= xe_migrate_sanity_kunit  =================
[04:15:43] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[04:15:43] ================== xe_validate_ccs_kunit  ==================
[04:15:43] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[04:15:43] =================== [SKIPPED] xe_migrate ===================
[04:15:43] ================== xe_dma_buf (1 subtest) ==================
[04:15:43] ==================== xe_dma_buf_kunit  =====================
[04:15:43] ================ [SKIPPED] xe_dma_buf_kunit ================
[04:15:43] =================== [SKIPPED] xe_dma_buf ===================
[04:15:43] ================= xe_bo_shrink (1 subtest) =================
[04:15:43] =================== xe_bo_shrink_kunit  ====================
[04:15:43] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[04:15:43] ================== [SKIPPED] xe_bo_shrink ==================
[04:15:43] ==================== xe_bo (2 subtests) ====================
[04:15:43] ================== xe_ccs_migrate_kunit  ===================
[04:15:43] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[04:15:43] ==================== xe_bo_evict_kunit  ====================
[04:15:43] =============== [SKIPPED] xe_bo_evict_kunit ================
[04:15:43] ===================== [SKIPPED] xe_bo ======================
[04:15:43] ==================== args (13 subtests) ====================
[04:15:43] [PASSED] count_args_test
[04:15:43] [PASSED] call_args_example
[04:15:43] [PASSED] call_args_test
[04:15:43] [PASSED] drop_first_arg_example
[04:15:43] [PASSED] drop_first_arg_test
[04:15:43] [PASSED] first_arg_example
[04:15:43] [PASSED] first_arg_test
[04:15:43] [PASSED] last_arg_example
[04:15:43] [PASSED] last_arg_test
[04:15:43] [PASSED] pick_arg_example
[04:15:43] [PASSED] if_args_example
[04:15:43] [PASSED] if_args_test
[04:15:43] [PASSED] sep_comma_example
[04:15:43] ====================== [PASSED] args =======================
[04:15:43] =================== xe_pci (3 subtests) ====================
[04:15:43] ==================== check_graphics_ip  ====================
[04:15:43] [PASSED] 12.00 Xe_LP
[04:15:43] [PASSED] 12.10 Xe_LP+
[04:15:43] [PASSED] 12.55 Xe_HPG
[04:15:43] [PASSED] 12.60 Xe_HPC
[04:15:43] [PASSED] 12.70 Xe_LPG
[04:15:43] [PASSED] 12.71 Xe_LPG
[04:15:43] [PASSED] 12.74 Xe_LPG+
[04:15:43] [PASSED] 20.01 Xe2_HPG
[04:15:43] [PASSED] 20.02 Xe2_HPG
[04:15:43] [PASSED] 20.04 Xe2_LPG
[04:15:43] [PASSED] 30.00 Xe3_LPG
[04:15:43] [PASSED] 30.01 Xe3_LPG
[04:15:43] [PASSED] 30.03 Xe3_LPG
[04:15:43] [PASSED] 30.04 Xe3_LPG
[04:15:43] [PASSED] 30.05 Xe3_LPG
[04:15:43] [PASSED] 35.10 Xe3p_LPG
[04:15:43] [PASSED] 35.11 Xe3p_XPC
[04:15:43] ================ [PASSED] check_graphics_ip ================
[04:15:43] ===================== check_media_ip  ======================
[04:15:43] [PASSED] 12.00 Xe_M
[04:15:43] [PASSED] 12.55 Xe_HPM
[04:15:43] [PASSED] 13.00 Xe_LPM+
[04:15:43] [PASSED] 13.01 Xe2_HPM
[04:15:43] [PASSED] 20.00 Xe2_LPM
[04:15:43] [PASSED] 30.00 Xe3_LPM
[04:15:43] [PASSED] 30.02 Xe3_LPM
[04:15:43] [PASSED] 35.00 Xe3p_LPM
[04:15:43] [PASSED] 35.03 Xe3p_HPM
[04:15:43] ================= [PASSED] check_media_ip ==================
[04:15:43] =================== check_platform_desc  ===================
[04:15:43] [PASSED] 0x9A60 (TIGERLAKE)
[04:15:43] [PASSED] 0x9A68 (TIGERLAKE)
[04:15:43] [PASSED] 0x9A70 (TIGERLAKE)
[04:15:43] [PASSED] 0x9A40 (TIGERLAKE)
[04:15:43] [PASSED] 0x9A49 (TIGERLAKE)
[04:15:43] [PASSED] 0x9A59 (TIGERLAKE)
[04:15:43] [PASSED] 0x9A78 (TIGERLAKE)
[04:15:43] [PASSED] 0x9AC0 (TIGERLAKE)
[04:15:43] [PASSED] 0x9AC9 (TIGERLAKE)
[04:15:43] [PASSED] 0x9AD9 (TIGERLAKE)
[04:15:43] [PASSED] 0x9AF8 (TIGERLAKE)
[04:15:43] [PASSED] 0x4C80 (ROCKETLAKE)
[04:15:43] [PASSED] 0x4C8A (ROCKETLAKE)
[04:15:43] [PASSED] 0x4C8B (ROCKETLAKE)
[04:15:43] [PASSED] 0x4C8C (ROCKETLAKE)
[04:15:43] [PASSED] 0x4C90 (ROCKETLAKE)
[04:15:43] [PASSED] 0x4C9A (ROCKETLAKE)
[04:15:43] [PASSED] 0x4680 (ALDERLAKE_S)
[04:15:43] [PASSED] 0x4682 (ALDERLAKE_S)
[04:15:43] [PASSED] 0x4688 (ALDERLAKE_S)
[04:15:43] [PASSED] 0x468A (ALDERLAKE_S)
[04:15:43] [PASSED] 0x468B (ALDERLAKE_S)
[04:15:43] [PASSED] 0x4690 (ALDERLAKE_S)
[04:15:43] [PASSED] 0x4692 (ALDERLAKE_S)
[04:15:43] [PASSED] 0x4693 (ALDERLAKE_S)
[04:15:43] [PASSED] 0x46A0 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46A1 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46A2 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46A3 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46A6 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46A8 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46AA (ALDERLAKE_P)
[04:15:43] [PASSED] 0x462A (ALDERLAKE_P)
[04:15:43] [PASSED] 0x4626 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x4628 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46B0 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46B1 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46B2 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46B3 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46C0 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46C1 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46C2 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46C3 (ALDERLAKE_P)
[04:15:43] [PASSED] 0x46D0 (ALDERLAKE_N)
[04:15:43] [PASSED] 0x46D1 (ALDERLAKE_N)
[04:15:43] [PASSED] 0x46D2 (ALDERLAKE_N)
[04:15:43] [PASSED] 0x46D3 (ALDERLAKE_N)
[04:15:43] [PASSED] 0x46D4 (ALDERLAKE_N)
[04:15:43] [PASSED] 0xA721 (ALDERLAKE_P)
[04:15:43] [PASSED] 0xA7A1 (ALDERLAKE_P)
[04:15:43] [PASSED] 0xA7A9 (ALDERLAKE_P)
[04:15:43] [PASSED] 0xA7AC (ALDERLAKE_P)
[04:15:43] [PASSED] 0xA7AD (ALDERLAKE_P)
[04:15:43] [PASSED] 0xA720 (ALDERLAKE_P)
[04:15:43] [PASSED] 0xA7A0 (ALDERLAKE_P)
[04:15:43] [PASSED] 0xA7A8 (ALDERLAKE_P)
[04:15:43] [PASSED] 0xA7AA (ALDERLAKE_P)
[04:15:43] [PASSED] 0xA7AB (ALDERLAKE_P)
[04:15:43] [PASSED] 0xA780 (ALDERLAKE_S)
[04:15:43] [PASSED] 0xA781 (ALDERLAKE_S)
[04:15:43] [PASSED] 0xA782 (ALDERLAKE_S)
[04:15:43] [PASSED] 0xA783 (ALDERLAKE_S)
[04:15:43] [PASSED] 0xA788 (ALDERLAKE_S)
[04:15:43] [PASSED] 0xA789 (ALDERLAKE_S)
[04:15:43] [PASSED] 0xA78A (ALDERLAKE_S)
[04:15:43] [PASSED] 0xA78B (ALDERLAKE_S)
[04:15:43] [PASSED] 0x4905 (DG1)
[04:15:43] [PASSED] 0x4906 (DG1)
[04:15:43] [PASSED] 0x4907 (DG1)
[04:15:43] [PASSED] 0x4908 (DG1)
[04:15:43] [PASSED] 0x4909 (DG1)
[04:15:43] [PASSED] 0x56C0 (DG2)
[04:15:43] [PASSED] 0x56C2 (DG2)
[04:15:43] [PASSED] 0x56C1 (DG2)
[04:15:43] [PASSED] 0x7D51 (METEORLAKE)
[04:15:43] [PASSED] 0x7DD1 (METEORLAKE)
[04:15:43] [PASSED] 0x7D41 (METEORLAKE)
[04:15:43] [PASSED] 0x7D67 (METEORLAKE)
[04:15:43] [PASSED] 0xB640 (METEORLAKE)
[04:15:43] [PASSED] 0x56A0 (DG2)
[04:15:43] [PASSED] 0x56A1 (DG2)
[04:15:43] [PASSED] 0x56A2 (DG2)
[04:15:43] [PASSED] 0x56BE (DG2)
[04:15:43] [PASSED] 0x56BF (DG2)
[04:15:43] [PASSED] 0x5690 (DG2)
[04:15:43] [PASSED] 0x5691 (DG2)
[04:15:43] [PASSED] 0x5692 (DG2)
[04:15:43] [PASSED] 0x56A5 (DG2)
[04:15:43] [PASSED] 0x56A6 (DG2)
[04:15:43] [PASSED] 0x56B0 (DG2)
[04:15:43] [PASSED] 0x56B1 (DG2)
[04:15:43] [PASSED] 0x56BA (DG2)
[04:15:43] [PASSED] 0x56BB (DG2)
[04:15:43] [PASSED] 0x56BC (DG2)
[04:15:43] [PASSED] 0x56BD (DG2)
[04:15:43] [PASSED] 0x5693 (DG2)
[04:15:43] [PASSED] 0x5694 (DG2)
[04:15:43] [PASSED] 0x5695 (DG2)
[04:15:43] [PASSED] 0x56A3 (DG2)
[04:15:43] [PASSED] 0x56A4 (DG2)
[04:15:43] [PASSED] 0x56B2 (DG2)
[04:15:43] [PASSED] 0x56B3 (DG2)
[04:15:43] [PASSED] 0x5696 (DG2)
[04:15:43] [PASSED] 0x5697 (DG2)
[04:15:43] [PASSED] 0xB69 (PVC)
[04:15:43] [PASSED] 0xB6E (PVC)
[04:15:43] [PASSED] 0xBD4 (PVC)
[04:15:43] [PASSED] 0xBD5 (PVC)
[04:15:43] [PASSED] 0xBD6 (PVC)
[04:15:43] [PASSED] 0xBD7 (PVC)
[04:15:43] [PASSED] 0xBD8 (PVC)
[04:15:43] [PASSED] 0xBD9 (PVC)
[04:15:43] [PASSED] 0xBDA (PVC)
[04:15:43] [PASSED] 0xBDB (PVC)
[04:15:43] [PASSED] 0xBE0 (PVC)
[04:15:43] [PASSED] 0xBE1 (PVC)
[04:15:43] [PASSED] 0xBE5 (PVC)
[04:15:43] [PASSED] 0x7D40 (METEORLAKE)
[04:15:43] [PASSED] 0x7D45 (METEORLAKE)
[04:15:43] [PASSED] 0x7D55 (METEORLAKE)
[04:15:43] [PASSED] 0x7D60 (METEORLAKE)
[04:15:43] [PASSED] 0x7DD5 (METEORLAKE)
[04:15:43] [PASSED] 0x6420 (LUNARLAKE)
[04:15:43] [PASSED] 0x64A0 (LUNARLAKE)
[04:15:43] [PASSED] 0x64B0 (LUNARLAKE)
[04:15:43] [PASSED] 0xE202 (BATTLEMAGE)
[04:15:43] [PASSED] 0xE209 (BATTLEMAGE)
[04:15:43] [PASSED] 0xE20B (BATTLEMAGE)
[04:15:43] [PASSED] 0xE20C (BATTLEMAGE)
[04:15:43] [PASSED] 0xE20D (BATTLEMAGE)
[04:15:43] [PASSED] 0xE210 (BATTLEMAGE)
[04:15:43] [PASSED] 0xE211 (BATTLEMAGE)
[04:15:43] [PASSED] 0xE212 (BATTLEMAGE)
[04:15:43] [PASSED] 0xE216 (BATTLEMAGE)
[04:15:43] [PASSED] 0xE220 (BATTLEMAGE)
[04:15:43] [PASSED] 0xE221 (BATTLEMAGE)
[04:15:43] [PASSED] 0xE222 (BATTLEMAGE)
[04:15:43] [PASSED] 0xE223 (BATTLEMAGE)
[04:15:43] [PASSED] 0xB080 (PANTHERLAKE)
[04:15:43] [PASSED] 0xB081 (PANTHERLAKE)
[04:15:43] [PASSED] 0xB082 (PANTHERLAKE)
[04:15:43] [PASSED] 0xB083 (PANTHERLAKE)
[04:15:43] [PASSED] 0xB084 (PANTHERLAKE)
[04:15:43] [PASSED] 0xB085 (PANTHERLAKE)
[04:15:43] [PASSED] 0xB086 (PANTHERLAKE)
[04:15:43] [PASSED] 0xB087 (PANTHERLAKE)
[04:15:43] [PASSED] 0xB08F (PANTHERLAKE)
[04:15:43] [PASSED] 0xB090 (PANTHERLAKE)
[04:15:43] [PASSED] 0xB0A0 (PANTHERLAKE)
[04:15:43] [PASSED] 0xB0B0 (PANTHERLAKE)
[04:15:43] [PASSED] 0xFD80 (PANTHERLAKE)
[04:15:43] [PASSED] 0xFD81 (PANTHERLAKE)
[04:15:43] [PASSED] 0xD740 (NOVALAKE_S)
[04:15:43] [PASSED] 0xD741 (NOVALAKE_S)
[04:15:43] [PASSED] 0xD742 (NOVALAKE_S)
[04:15:43] [PASSED] 0xD743 (NOVALAKE_S)
[04:15:43] [PASSED] 0xD744 (NOVALAKE_S)
[04:15:43] [PASSED] 0xD745 (NOVALAKE_S)
[04:15:43] [PASSED] 0x674C (CRESCENTISLAND)
[04:15:43] [PASSED] 0x674D (CRESCENTISLAND)
[04:15:43] [PASSED] 0x674E (CRESCENTISLAND)
[04:15:43] [PASSED] 0x674F (CRESCENTISLAND)
[04:15:43] [PASSED] 0x6750 (CRESCENTISLAND)
[04:15:43] [PASSED] 0xD750 (NOVALAKE_P)
[04:15:43] [PASSED] 0xD751 (NOVALAKE_P)
[04:15:43] [PASSED] 0xD752 (NOVALAKE_P)
[04:15:43] [PASSED] 0xD753 (NOVALAKE_P)
[04:15:43] [PASSED] 0xD754 (NOVALAKE_P)
[04:15:43] [PASSED] 0xD755 (NOVALAKE_P)
[04:15:43] [PASSED] 0xD756 (NOVALAKE_P)
[04:15:43] [PASSED] 0xD757 (NOVALAKE_P)
[04:15:43] [PASSED] 0xD75F (NOVALAKE_P)
[04:15:43] =============== [PASSED] check_platform_desc ===============
[04:15:43] ===================== [PASSED] xe_pci ======================
[04:15:43] =================== xe_rtp (2 subtests) ====================
[04:15:43] =============== xe_rtp_process_to_sr_tests  ================
[04:15:43] [PASSED] coalesce-same-reg
[04:15:43] [PASSED] no-match-no-add
[04:15:43] [PASSED] match-or
[04:15:43] [PASSED] match-or-xfail
[04:15:43] [PASSED] no-match-no-add-multiple-rules
[04:15:43] [PASSED] two-regs-two-entries
[04:15:43] [PASSED] clr-one-set-other
[04:15:43] [PASSED] set-field
[04:15:43] [PASSED] conflict-duplicate
[04:15:43] [PASSED] conflict-not-disjoint
[04:15:43] [PASSED] conflict-reg-type
[04:15:43] [PASSED] bad-mcr-reg-forced-to-regular
[04:15:43] [PASSED] bad-regular-reg-forced-to-mcr
[04:15:43] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[04:15:43] ================== xe_rtp_process_tests  ===================
[04:15:43] [PASSED] active1
[04:15:43] [PASSED] active2
[04:15:43] [PASSED] active-inactive
[04:15:43] [PASSED] inactive-active
[04:15:43] [PASSED] inactive-1st_or_active-inactive
[04:15:43] [PASSED] inactive-2nd_or_active-inactive
[04:15:43] [PASSED] inactive-last_or_active-inactive
[04:15:43] [PASSED] inactive-no_or_active-inactive
[04:15:43] ============== [PASSED] xe_rtp_process_tests ===============
[04:15:43] ===================== [PASSED] xe_rtp ======================
[04:15:43] ==================== xe_wa (1 subtest) =====================
[04:15:43] ======================== xe_wa_gt  =========================
[04:15:43] [PASSED] TIGERLAKE B0
[04:15:43] [PASSED] DG1 A0
[04:15:43] [PASSED] DG1 B0
[04:15:43] [PASSED] ALDERLAKE_S A0
[04:15:43] [PASSED] ALDERLAKE_S B0
[04:15:43] [PASSED] ALDERLAKE_S C0
[04:15:43] [PASSED] ALDERLAKE_S D0
[04:15:43] [PASSED] ALDERLAKE_P A0
[04:15:43] [PASSED] ALDERLAKE_P B0
[04:15:43] [PASSED] ALDERLAKE_P C0
[04:15:43] [PASSED] ALDERLAKE_S RPLS D0
[04:15:43] [PASSED] ALDERLAKE_P RPLU E0
[04:15:43] [PASSED] DG2 G10 C0
[04:15:43] [PASSED] DG2 G11 B1
[04:15:43] [PASSED] DG2 G12 A1
[04:15:43] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[04:15:43] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[04:15:43] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[04:15:43] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[04:15:43] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[04:15:43] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[04:15:43] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[04:15:43] ==================== [PASSED] xe_wa_gt =====================
[04:15:43] ====================== [PASSED] xe_wa ======================
[04:15:43] ============================================================
[04:15:43] Testing complete. Ran 603 tests: passed: 585, skipped: 18
[04:15:43] Elapsed time: 36.308s total, 4.261s configuring, 31.381s building, 0.611s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[04:15:43] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[04:15:45] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[04:16:09] Starting KUnit Kernel (1/1)...
[04:16:09] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[04:16:09] ============ drm_test_pick_cmdline (2 subtests) ============
[04:16:09] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[04:16:09] =============== drm_test_pick_cmdline_named  ===============
[04:16:09] [PASSED] NTSC
[04:16:09] [PASSED] NTSC-J
[04:16:09] [PASSED] PAL
[04:16:09] [PASSED] PAL-M
[04:16:09] =========== [PASSED] drm_test_pick_cmdline_named ===========
[04:16:09] ============== [PASSED] drm_test_pick_cmdline ==============
[04:16:09] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[04:16:09] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[04:16:09] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[04:16:09] =========== drm_validate_clone_mode (2 subtests) ===========
[04:16:09] ============== drm_test_check_in_clone_mode  ===============
[04:16:09] [PASSED] in_clone_mode
[04:16:09] [PASSED] not_in_clone_mode
[04:16:09] ========== [PASSED] drm_test_check_in_clone_mode ===========
[04:16:09] =============== drm_test_check_valid_clones  ===============
[04:16:09] [PASSED] not_in_clone_mode
[04:16:09] [PASSED] valid_clone
[04:16:09] [PASSED] invalid_clone
[04:16:09] =========== [PASSED] drm_test_check_valid_clones ===========
[04:16:09] ============= [PASSED] drm_validate_clone_mode =============
[04:16:09] ============= drm_validate_modeset (1 subtest) =============
[04:16:09] [PASSED] drm_test_check_connector_changed_modeset
[04:16:09] ============== [PASSED] drm_validate_modeset ===============
[04:16:09] ====== drm_test_bridge_get_current_state (2 subtests) ======
[04:16:09] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[04:16:09] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[04:16:09] ======== [PASSED] drm_test_bridge_get_current_state ========
[04:16:09] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[04:16:09] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[04:16:09] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[04:16:09] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[04:16:09] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[04:16:09] ============== drm_bridge_alloc (2 subtests) ===============
[04:16:09] [PASSED] drm_test_drm_bridge_alloc_basic
[04:16:09] [PASSED] drm_test_drm_bridge_alloc_get_put
[04:16:09] ================ [PASSED] drm_bridge_alloc =================
[04:16:09] ============= drm_cmdline_parser (40 subtests) =============
[04:16:09] [PASSED] drm_test_cmdline_force_d_only
[04:16:09] [PASSED] drm_test_cmdline_force_D_only_dvi
[04:16:09] [PASSED] drm_test_cmdline_force_D_only_hdmi
[04:16:09] [PASSED] drm_test_cmdline_force_D_only_not_digital
[04:16:09] [PASSED] drm_test_cmdline_force_e_only
[04:16:09] [PASSED] drm_test_cmdline_res
[04:16:09] [PASSED] drm_test_cmdline_res_vesa
[04:16:09] [PASSED] drm_test_cmdline_res_vesa_rblank
[04:16:09] [PASSED] drm_test_cmdline_res_rblank
[04:16:09] [PASSED] drm_test_cmdline_res_bpp
[04:16:09] [PASSED] drm_test_cmdline_res_refresh
[04:16:09] [PASSED] drm_test_cmdline_res_bpp_refresh
[04:16:09] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[04:16:09] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[04:16:09] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[04:16:09] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[04:16:09] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[04:16:09] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[04:16:09] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[04:16:09] [PASSED] drm_test_cmdline_res_margins_force_on
[04:16:09] [PASSED] drm_test_cmdline_res_vesa_margins
[04:16:09] [PASSED] drm_test_cmdline_name
[04:16:09] [PASSED] drm_test_cmdline_name_bpp
[04:16:09] [PASSED] drm_test_cmdline_name_option
[04:16:09] [PASSED] drm_test_cmdline_name_bpp_option
[04:16:09] [PASSED] drm_test_cmdline_rotate_0
[04:16:09] [PASSED] drm_test_cmdline_rotate_90
[04:16:09] [PASSED] drm_test_cmdline_rotate_180
[04:16:09] [PASSED] drm_test_cmdline_rotate_270
[04:16:09] [PASSED] drm_test_cmdline_hmirror
[04:16:09] [PASSED] drm_test_cmdline_vmirror
[04:16:09] [PASSED] drm_test_cmdline_margin_options
[04:16:09] [PASSED] drm_test_cmdline_multiple_options
[04:16:09] [PASSED] drm_test_cmdline_bpp_extra_and_option
[04:16:09] [PASSED] drm_test_cmdline_extra_and_option
[04:16:09] [PASSED] drm_test_cmdline_freestanding_options
[04:16:09] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[04:16:09] [PASSED] drm_test_cmdline_panel_orientation
[04:16:09] ================ drm_test_cmdline_invalid  =================
[04:16:09] [PASSED] margin_only
[04:16:09] [PASSED] interlace_only
[04:16:09] [PASSED] res_missing_x
[04:16:09] [PASSED] res_missing_y
[04:16:09] [PASSED] res_bad_y
[04:16:09] [PASSED] res_missing_y_bpp
[04:16:09] [PASSED] res_bad_bpp
[04:16:09] [PASSED] res_bad_refresh
[04:16:09] [PASSED] res_bpp_refresh_force_on_off
[04:16:09] [PASSED] res_invalid_mode
[04:16:09] [PASSED] res_bpp_wrong_place_mode
[04:16:09] [PASSED] name_bpp_refresh
[04:16:09] [PASSED] name_refresh
[04:16:09] [PASSED] name_refresh_wrong_mode
[04:16:09] [PASSED] name_refresh_invalid_mode
[04:16:09] [PASSED] rotate_multiple
[04:16:09] [PASSED] rotate_invalid_val
[04:16:09] [PASSED] rotate_truncated
[04:16:09] [PASSED] invalid_option
[04:16:09] [PASSED] invalid_tv_option
[04:16:09] [PASSED] truncated_tv_option
[04:16:09] ============ [PASSED] drm_test_cmdline_invalid =============
[04:16:09] =============== drm_test_cmdline_tv_options  ===============
[04:16:09] [PASSED] NTSC
[04:16:09] [PASSED] NTSC_443
[04:16:09] [PASSED] NTSC_J
[04:16:09] [PASSED] PAL
[04:16:09] [PASSED] PAL_M
[04:16:09] [PASSED] PAL_N
[04:16:09] [PASSED] SECAM
[04:16:09] [PASSED] MONO_525
[04:16:09] [PASSED] MONO_625
[04:16:09] =========== [PASSED] drm_test_cmdline_tv_options ===========
[04:16:09] =============== [PASSED] drm_cmdline_parser ================
[04:16:09] ========== drmm_connector_hdmi_init (20 subtests) ==========
[04:16:09] [PASSED] drm_test_connector_hdmi_init_valid
[04:16:09] [PASSED] drm_test_connector_hdmi_init_bpc_8
[04:16:09] [PASSED] drm_test_connector_hdmi_init_bpc_10
[04:16:09] [PASSED] drm_test_connector_hdmi_init_bpc_12
[04:16:09] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[04:16:09] [PASSED] drm_test_connector_hdmi_init_bpc_null
[04:16:09] [PASSED] drm_test_connector_hdmi_init_formats_empty
[04:16:09] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[04:16:09] === drm_test_connector_hdmi_init_formats_yuv420_allowed  ===
[04:16:09] [PASSED] supported_formats=0x9 yuv420_allowed=1
[04:16:09] [PASSED] supported_formats=0x9 yuv420_allowed=0
[04:16:09] [PASSED] supported_formats=0x5 yuv420_allowed=1
[04:16:09] [PASSED] supported_formats=0x5 yuv420_allowed=0
[04:16:09] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[04:16:09] [PASSED] drm_test_connector_hdmi_init_null_ddc
[04:16:09] [PASSED] drm_test_connector_hdmi_init_null_product
[04:16:09] [PASSED] drm_test_connector_hdmi_init_null_vendor
[04:16:09] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[04:16:09] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[04:16:09] [PASSED] drm_test_connector_hdmi_init_product_valid
[04:16:09] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[04:16:09] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[04:16:09] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[04:16:09] ========= drm_test_connector_hdmi_init_type_valid  =========
[04:16:09] [PASSED] HDMI-A
[04:16:09] [PASSED] HDMI-B
[04:16:09] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[04:16:09] ======== drm_test_connector_hdmi_init_type_invalid  ========
[04:16:09] [PASSED] Unknown
[04:16:09] [PASSED] VGA
[04:16:09] [PASSED] DVI-I
[04:16:09] [PASSED] DVI-D
[04:16:09] [PASSED] DVI-A
[04:16:09] [PASSED] Composite
[04:16:09] [PASSED] SVIDEO
[04:16:09] [PASSED] LVDS
[04:16:09] [PASSED] Component
[04:16:09] [PASSED] DIN
[04:16:09] [PASSED] DP
[04:16:09] [PASSED] TV
[04:16:09] [PASSED] eDP
[04:16:09] [PASSED] Virtual
[04:16:09] [PASSED] DSI
[04:16:09] [PASSED] DPI
[04:16:09] [PASSED] Writeback
[04:16:09] [PASSED] SPI
[04:16:09] [PASSED] USB
[04:16:09] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[04:16:09] ============ [PASSED] drmm_connector_hdmi_init =============
[04:16:09] ============= drmm_connector_init (3 subtests) =============
[04:16:09] [PASSED] drm_test_drmm_connector_init
[04:16:09] [PASSED] drm_test_drmm_connector_init_null_ddc
[04:16:09] ========= drm_test_drmm_connector_init_type_valid  =========
[04:16:09] [PASSED] Unknown
[04:16:09] [PASSED] VGA
[04:16:09] [PASSED] DVI-I
[04:16:09] [PASSED] DVI-D
[04:16:09] [PASSED] DVI-A
[04:16:09] [PASSED] Composite
[04:16:09] [PASSED] SVIDEO
[04:16:09] [PASSED] LVDS
[04:16:09] [PASSED] Component
[04:16:09] [PASSED] DIN
[04:16:09] [PASSED] DP
[04:16:09] [PASSED] HDMI-A
[04:16:09] [PASSED] HDMI-B
[04:16:09] [PASSED] TV
[04:16:09] [PASSED] eDP
[04:16:09] [PASSED] Virtual
[04:16:09] [PASSED] DSI
[04:16:09] [PASSED] DPI
[04:16:09] [PASSED] Writeback
[04:16:09] [PASSED] SPI
[04:16:09] [PASSED] USB
[04:16:09] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[04:16:09] =============== [PASSED] drmm_connector_init ===============
[04:16:09] ========= drm_connector_dynamic_init (6 subtests) ==========
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_init
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_init_properties
[04:16:09] ===== drm_test_drm_connector_dynamic_init_type_valid  ======
[04:16:09] [PASSED] Unknown
[04:16:09] [PASSED] VGA
[04:16:09] [PASSED] DVI-I
[04:16:09] [PASSED] DVI-D
[04:16:09] [PASSED] DVI-A
[04:16:09] [PASSED] Composite
[04:16:09] [PASSED] SVIDEO
[04:16:09] [PASSED] LVDS
[04:16:09] [PASSED] Component
[04:16:09] [PASSED] DIN
[04:16:09] [PASSED] DP
[04:16:09] [PASSED] HDMI-A
[04:16:09] [PASSED] HDMI-B
[04:16:09] [PASSED] TV
[04:16:09] [PASSED] eDP
[04:16:09] [PASSED] Virtual
[04:16:09] [PASSED] DSI
[04:16:09] [PASSED] DPI
[04:16:09] [PASSED] Writeback
[04:16:09] [PASSED] SPI
[04:16:09] [PASSED] USB
[04:16:09] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[04:16:09] ======== drm_test_drm_connector_dynamic_init_name  =========
[04:16:09] [PASSED] Unknown
[04:16:09] [PASSED] VGA
[04:16:09] [PASSED] DVI-I
[04:16:09] [PASSED] DVI-D
[04:16:09] [PASSED] DVI-A
[04:16:09] [PASSED] Composite
[04:16:09] [PASSED] SVIDEO
[04:16:09] [PASSED] LVDS
[04:16:09] [PASSED] Component
[04:16:09] [PASSED] DIN
[04:16:09] [PASSED] DP
[04:16:09] [PASSED] HDMI-A
[04:16:09] [PASSED] HDMI-B
[04:16:09] [PASSED] TV
[04:16:09] [PASSED] eDP
[04:16:09] [PASSED] Virtual
[04:16:09] [PASSED] DSI
[04:16:09] [PASSED] DPI
[04:16:09] [PASSED] Writeback
[04:16:09] [PASSED] SPI
[04:16:09] [PASSED] USB
[04:16:09] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[04:16:09] =========== [PASSED] drm_connector_dynamic_init ============
[04:16:09] ==== drm_connector_dynamic_register_early (4 subtests) =====
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[04:16:09] ====== [PASSED] drm_connector_dynamic_register_early =======
[04:16:09] ======= drm_connector_dynamic_register (7 subtests) ========
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[04:16:09] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[04:16:09] ========= [PASSED] drm_connector_dynamic_register ==========
[04:16:09] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[04:16:09] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[04:16:09] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[04:16:09] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[04:16:09] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[04:16:09] ========== drm_test_get_tv_mode_from_name_valid  ===========
[04:16:09] [PASSED] NTSC
[04:16:09] [PASSED] NTSC-443
[04:16:09] [PASSED] NTSC-J
[04:16:09] [PASSED] PAL
[04:16:09] [PASSED] PAL-M
[04:16:09] [PASSED] PAL-N
[04:16:09] [PASSED] SECAM
[04:16:09] [PASSED] Mono
[04:16:09] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[04:16:09] [PASSED] drm_test_get_tv_mode_from_name_truncated
[04:16:09] ============ [PASSED] drm_get_tv_mode_from_name ============
[04:16:09] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[04:16:09] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[04:16:09] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[04:16:09] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[04:16:09] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[04:16:09] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[04:16:09] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[04:16:09] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid  =
[04:16:09] [PASSED] VIC 96
[04:16:09] [PASSED] VIC 97
[04:16:09] [PASSED] VIC 101
[04:16:09] [PASSED] VIC 102
[04:16:09] [PASSED] VIC 106
[04:16:09] [PASSED] VIC 107
[04:16:09] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[04:16:09] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[04:16:09] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[04:16:09] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[04:16:09] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[04:16:09] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[04:16:09] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[04:16:09] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[04:16:09] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name  ====
[04:16:09] [PASSED] Automatic
[04:16:09] [PASSED] Full
[04:16:09] [PASSED] Limited 16:235
[04:16:09] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[04:16:09] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[04:16:09] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[04:16:09] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[04:16:09] === drm_test_drm_hdmi_connector_get_output_format_name  ====
[04:16:09] [PASSED] RGB
[04:16:09] [PASSED] YUV 4:2:0
[04:16:09] [PASSED] YUV 4:2:2
[04:16:09] [PASSED] YUV 4:4:4
[04:16:09] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[04:16:09] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[04:16:09] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[04:16:09] ============= drm_damage_helper (21 subtests) ==============
[04:16:09] [PASSED] drm_test_damage_iter_no_damage
[04:16:09] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[04:16:09] [PASSED] drm_test_damage_iter_no_damage_src_moved
[04:16:09] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[04:16:09] [PASSED] drm_test_damage_iter_no_damage_not_visible
[04:16:09] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[04:16:09] [PASSED] drm_test_damage_iter_no_damage_no_fb
[04:16:09] [PASSED] drm_test_damage_iter_simple_damage
[04:16:09] [PASSED] drm_test_damage_iter_single_damage
[04:16:09] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[04:16:09] [PASSED] drm_test_damage_iter_single_damage_outside_src
[04:16:09] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[04:16:09] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[04:16:09] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[04:16:09] [PASSED] drm_test_damage_iter_single_damage_src_moved
[04:16:09] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[04:16:09] [PASSED] drm_test_damage_iter_damage
[04:16:09] [PASSED] drm_test_damage_iter_damage_one_intersect
[04:16:09] [PASSED] drm_test_damage_iter_damage_one_outside
[04:16:09] [PASSED] drm_test_damage_iter_damage_src_moved
[04:16:09] [PASSED] drm_test_damage_iter_damage_not_visible
[04:16:09] ================ [PASSED] drm_damage_helper ================
[04:16:09] ============== drm_dp_mst_helper (3 subtests) ==============
[04:16:09] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[04:16:09] [PASSED] Clock 154000 BPP 30 DSC disabled
[04:16:09] [PASSED] Clock 234000 BPP 30 DSC disabled
[04:16:09] [PASSED] Clock 297000 BPP 24 DSC disabled
[04:16:09] [PASSED] Clock 332880 BPP 24 DSC enabled
[04:16:09] [PASSED] Clock 324540 BPP 24 DSC enabled
[04:16:09] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[04:16:09] ============== drm_test_dp_mst_calc_pbn_div  ===============
[04:16:09] [PASSED] Link rate 2000000 lane count 4
[04:16:09] [PASSED] Link rate 2000000 lane count 2
[04:16:09] [PASSED] Link rate 2000000 lane count 1
[04:16:09] [PASSED] Link rate 1350000 lane count 4
[04:16:09] [PASSED] Link rate 1350000 lane count 2
[04:16:09] [PASSED] Link rate 1350000 lane count 1
[04:16:09] [PASSED] Link rate 1000000 lane count 4
[04:16:09] [PASSED] Link rate 1000000 lane count 2
[04:16:09] [PASSED] Link rate 1000000 lane count 1
[04:16:09] [PASSED] Link rate 810000 lane count 4
[04:16:09] [PASSED] Link rate 810000 lane count 2
[04:16:09] [PASSED] Link rate 810000 lane count 1
[04:16:09] [PASSED] Link rate 540000 lane count 4
[04:16:09] [PASSED] Link rate 540000 lane count 2
[04:16:09] [PASSED] Link rate 540000 lane count 1
[04:16:09] [PASSED] Link rate 270000 lane count 4
[04:16:09] [PASSED] Link rate 270000 lane count 2
[04:16:09] [PASSED] Link rate 270000 lane count 1
[04:16:09] [PASSED] Link rate 162000 lane count 4
[04:16:09] [PASSED] Link rate 162000 lane count 2
[04:16:09] [PASSED] Link rate 162000 lane count 1
[04:16:09] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[04:16:09] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[04:16:09] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[04:16:09] [PASSED] DP_POWER_UP_PHY with port number
[04:16:09] [PASSED] DP_POWER_DOWN_PHY with port number
[04:16:09] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[04:16:09] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[04:16:09] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[04:16:09] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[04:16:09] [PASSED] DP_QUERY_PAYLOAD with port number
[04:16:09] [PASSED] DP_QUERY_PAYLOAD with VCPI
[04:16:09] [PASSED] DP_REMOTE_DPCD_READ with port number
[04:16:09] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[04:16:09] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[04:16:09] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[04:16:09] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[04:16:09] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[04:16:09] [PASSED] DP_REMOTE_I2C_READ with port number
[04:16:09] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[04:16:09] [PASSED] DP_REMOTE_I2C_READ with transactions array
[04:16:09] [PASSED] DP_REMOTE_I2C_WRITE with port number
[04:16:09] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[04:16:09] [PASSED] DP_REMOTE_I2C_WRITE with data array
[04:16:09] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[04:16:09] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[04:16:09] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[04:16:09] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[04:16:09] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[04:16:09] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[04:16:09] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[04:16:09] ================ [PASSED] drm_dp_mst_helper ================
[04:16:09] ================== drm_exec (7 subtests) ===================
[04:16:09] [PASSED] sanitycheck
[04:16:09] [PASSED] test_lock
[04:16:09] [PASSED] test_lock_unlock
[04:16:09] [PASSED] test_duplicates
[04:16:09] [PASSED] test_prepare
[04:16:09] [PASSED] test_prepare_array
[04:16:09] [PASSED] test_multiple_loops
[04:16:09] ==================== [PASSED] drm_exec =====================
[04:16:09] =========== drm_format_helper_test (17 subtests) ===========
[04:16:09] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[04:16:09] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[04:16:09] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[04:16:09] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[04:16:09] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[04:16:09] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[04:16:09] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[04:16:09] ============= drm_test_fb_xrgb8888_to_bgr888  ==============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[04:16:09] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[04:16:09] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[04:16:09] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[04:16:09] ============== drm_test_fb_xrgb8888_to_mono  ===============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[04:16:09] ==================== drm_test_fb_swab  =====================
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ================ [PASSED] drm_test_fb_swab =================
[04:16:09] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[04:16:09] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[04:16:09] [PASSED] single_pixel_source_buffer
[04:16:09] [PASSED] single_pixel_clip_rectangle
[04:16:09] [PASSED] well_known_colors
[04:16:09] [PASSED] destination_pitch
[04:16:09] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[04:16:09] ================= drm_test_fb_clip_offset  =================
[04:16:09] [PASSED] pass through
[04:16:09] [PASSED] horizontal offset
[04:16:09] [PASSED] vertical offset
[04:16:09] [PASSED] horizontal and vertical offset
[04:16:09] [PASSED] horizontal offset (custom pitch)
[04:16:09] [PASSED] vertical offset (custom pitch)
[04:16:09] [PASSED] horizontal and vertical offset (custom pitch)
[04:16:09] ============= [PASSED] drm_test_fb_clip_offset =============
[04:16:09] =================== drm_test_fb_memcpy  ====================
[04:16:09] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[04:16:09] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[04:16:09] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[04:16:09] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[04:16:09] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[04:16:09] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[04:16:09] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[04:16:09] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[04:16:09] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[04:16:09] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[04:16:09] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[04:16:09] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[04:16:09] =============== [PASSED] drm_test_fb_memcpy ================
[04:16:09] ============= [PASSED] drm_format_helper_test ==============
[04:16:09] ================= drm_format (18 subtests) =================
[04:16:09] [PASSED] drm_test_format_block_width_invalid
[04:16:09] [PASSED] drm_test_format_block_width_one_plane
[04:16:09] [PASSED] drm_test_format_block_width_two_plane
[04:16:09] [PASSED] drm_test_format_block_width_three_plane
[04:16:09] [PASSED] drm_test_format_block_width_tiled
[04:16:09] [PASSED] drm_test_format_block_height_invalid
[04:16:09] [PASSED] drm_test_format_block_height_one_plane
[04:16:09] [PASSED] drm_test_format_block_height_two_plane
[04:16:09] [PASSED] drm_test_format_block_height_three_plane
[04:16:09] [PASSED] drm_test_format_block_height_tiled
[04:16:09] [PASSED] drm_test_format_min_pitch_invalid
[04:16:09] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[04:16:09] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[04:16:09] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[04:16:09] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[04:16:09] [PASSED] drm_test_format_min_pitch_two_plane
[04:16:09] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[04:16:09] [PASSED] drm_test_format_min_pitch_tiled
[04:16:09] =================== [PASSED] drm_format ====================
[04:16:09] ============== drm_framebuffer (10 subtests) ===============
[04:16:09] ========== drm_test_framebuffer_check_src_coords  ==========
[04:16:09] [PASSED] Success: source fits into fb
[04:16:09] [PASSED] Fail: overflowing fb with x-axis coordinate
[04:16:09] [PASSED] Fail: overflowing fb with y-axis coordinate
[04:16:09] [PASSED] Fail: overflowing fb with source width
[04:16:09] [PASSED] Fail: overflowing fb with source height
[04:16:09] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[04:16:09] [PASSED] drm_test_framebuffer_cleanup
[04:16:09] =============== drm_test_framebuffer_create  ===============
[04:16:09] [PASSED] ABGR8888 normal sizes
[04:16:09] [PASSED] ABGR8888 max sizes
[04:16:09] [PASSED] ABGR8888 pitch greater than min required
[04:16:09] [PASSED] ABGR8888 pitch less than min required
[04:16:09] [PASSED] ABGR8888 Invalid width
[04:16:09] [PASSED] ABGR8888 Invalid buffer handle
[04:16:09] [PASSED] No pixel format
[04:16:09] [PASSED] ABGR8888 Width 0
[04:16:09] [PASSED] ABGR8888 Height 0
[04:16:09] [PASSED] ABGR8888 Out of bound height * pitch combination
[04:16:09] [PASSED] ABGR8888 Large buffer offset
[04:16:09] [PASSED] ABGR8888 Buffer offset for inexistent plane
[04:16:09] [PASSED] ABGR8888 Invalid flag
[04:16:09] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[04:16:09] [PASSED] ABGR8888 Valid buffer modifier
[04:16:09] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[04:16:09] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[04:16:09] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[04:16:09] [PASSED] NV12 Normal sizes
[04:16:09] [PASSED] NV12 Max sizes
[04:16:09] [PASSED] NV12 Invalid pitch
[04:16:09] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[04:16:09] [PASSED] NV12 different  modifier per-plane
[04:16:09] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[04:16:09] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[04:16:09] [PASSED] NV12 Modifier for inexistent plane
[04:16:09] [PASSED] NV12 Handle for inexistent plane
[04:16:09] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[04:16:09] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[04:16:09] [PASSED] YVU420 Normal sizes
[04:16:09] [PASSED] YVU420 Max sizes
[04:16:09] [PASSED] YVU420 Invalid pitch
[04:16:09] [PASSED] YVU420 Different pitches
[04:16:09] [PASSED] YVU420 Different buffer offsets/pitches
[04:16:09] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[04:16:09] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[04:16:09] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[04:16:09] [PASSED] YVU420 Valid modifier
[04:16:09] [PASSED] YVU420 Different modifiers per plane
[04:16:09] [PASSED] YVU420 Modifier for inexistent plane
[04:16:09] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[04:16:09] [PASSED] X0L2 Normal sizes
[04:16:09] [PASSED] X0L2 Max sizes
[04:16:09] [PASSED] X0L2 Invalid pitch
[04:16:09] [PASSED] X0L2 Pitch greater than minimum required
[04:16:09] [PASSED] X0L2 Handle for inexistent plane
[04:16:09] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[04:16:09] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[04:16:09] [PASSED] X0L2 Valid modifier
[04:16:09] [PASSED] X0L2 Modifier for inexistent plane
[04:16:09] =========== [PASSED] drm_test_framebuffer_create ===========
[04:16:09] [PASSED] drm_test_framebuffer_free
[04:16:09] [PASSED] drm_test_framebuffer_init
[04:16:09] [PASSED] drm_test_framebuffer_init_bad_format
[04:16:09] [PASSED] drm_test_framebuffer_init_dev_mismatch
[04:16:09] [PASSED] drm_test_framebuffer_lookup
[04:16:09] [PASSED] drm_test_framebuffer_lookup_inexistent
[04:16:09] [PASSED] drm_test_framebuffer_modifiers_not_supported
[04:16:09] ================= [PASSED] drm_framebuffer =================
[04:16:09] ================ drm_gem_shmem (8 subtests) ================
[04:16:09] [PASSED] drm_gem_shmem_test_obj_create
[04:16:09] [PASSED] drm_gem_shmem_test_obj_create_private
[04:16:09] [PASSED] drm_gem_shmem_test_pin_pages
[04:16:09] [PASSED] drm_gem_shmem_test_vmap
[04:16:09] [PASSED] drm_gem_shmem_test_get_sg_table
[04:16:09] [PASSED] drm_gem_shmem_test_get_pages_sgt
[04:16:09] [PASSED] drm_gem_shmem_test_madvise
[04:16:09] [PASSED] drm_gem_shmem_test_purge
[04:16:09] ================== [PASSED] drm_gem_shmem ==================
[04:16:09] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[04:16:09] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[04:16:09] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[04:16:09] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[04:16:09] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[04:16:09] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[04:16:09] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[04:16:09] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420  =======
[04:16:09] [PASSED] Automatic
[04:16:09] [PASSED] Full
[04:16:09] [PASSED] Limited 16:235
[04:16:09] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[04:16:09] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[04:16:09] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[04:16:09] [PASSED] drm_test_check_disable_connector
[04:16:09] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[04:16:09] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[04:16:09] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[04:16:09] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[04:16:09] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[04:16:09] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[04:16:09] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[04:16:09] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[04:16:09] [PASSED] drm_test_check_output_bpc_dvi
[04:16:09] [PASSED] drm_test_check_output_bpc_format_vic_1
[04:16:09] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[04:16:09] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[04:16:09] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[04:16:09] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[04:16:09] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[04:16:09] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[04:16:09] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[04:16:09] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[04:16:09] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[04:16:09] [PASSED] drm_test_check_broadcast_rgb_value
[04:16:09] [PASSED] drm_test_check_bpc_8_value
[04:16:09] [PASSED] drm_test_check_bpc_10_value
[04:16:09] [PASSED] drm_test_check_bpc_12_value
[04:16:09] [PASSED] drm_test_check_format_value
[04:16:09] [PASSED] drm_test_check_tmds_char_value
[04:16:09] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[04:16:09] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[04:16:09] [PASSED] drm_test_check_mode_valid
[04:16:09] [PASSED] drm_test_check_mode_valid_reject
[04:16:09] [PASSED] drm_test_check_mode_valid_reject_rate
[04:16:09] [PASSED] drm_test_check_mode_valid_reject_max_clock
[04:16:09] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[04:16:09] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[04:16:09] [PASSED] drm_test_check_infoframes
[04:16:09] [PASSED] drm_test_check_reject_avi_infoframe
[04:16:09] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[04:16:09] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[04:16:09] [PASSED] drm_test_check_reject_audio_infoframe
[04:16:09] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[04:16:09] ================= drm_managed (2 subtests) =================
[04:16:09] [PASSED] drm_test_managed_release_action
[04:16:09] [PASSED] drm_test_managed_run_action
[04:16:09] =================== [PASSED] drm_managed ===================
[04:16:09] =================== drm_mm (6 subtests) ====================
[04:16:09] [PASSED] drm_test_mm_init
[04:16:09] [PASSED] drm_test_mm_debug
[04:16:09] [PASSED] drm_test_mm_align32
[04:16:09] [PASSED] drm_test_mm_align64
[04:16:09] [PASSED] drm_test_mm_lowest
[04:16:09] [PASSED] drm_test_mm_highest
[04:16:09] ===================== [PASSED] drm_mm ======================
[04:16:09] ============= drm_modes_analog_tv (5 subtests) =============
[04:16:09] [PASSED] drm_test_modes_analog_tv_mono_576i
[04:16:09] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[04:16:09] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[04:16:09] [PASSED] drm_test_modes_analog_tv_pal_576i
[04:16:09] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[04:16:09] =============== [PASSED] drm_modes_analog_tv ===============
[04:16:09] ============== drm_plane_helper (2 subtests) ===============
[04:16:09] =============== drm_test_check_plane_state  ================
[04:16:09] [PASSED] clipping_simple
[04:16:09] [PASSED] clipping_rotate_reflect
[04:16:09] [PASSED] positioning_simple
[04:16:09] [PASSED] upscaling
[04:16:09] [PASSED] downscaling
[04:16:09] [PASSED] rounding1
[04:16:09] [PASSED] rounding2
[04:16:09] [PASSED] rounding3
[04:16:09] [PASSED] rounding4
[04:16:09] =========== [PASSED] drm_test_check_plane_state ============
[04:16:09] =========== drm_test_check_invalid_plane_state  ============
[04:16:09] [PASSED] positioning_invalid
[04:16:09] [PASSED] upscaling_invalid
[04:16:09] [PASSED] downscaling_invalid
[04:16:09] ======= [PASSED] drm_test_check_invalid_plane_state ========
[04:16:09] ================ [PASSED] drm_plane_helper =================
[04:16:09] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[04:16:09] ====== drm_test_connector_helper_tv_get_modes_check  =======
[04:16:09] [PASSED] None
[04:16:09] [PASSED] PAL
[04:16:09] [PASSED] NTSC
[04:16:09] [PASSED] Both, NTSC Default
[04:16:09] [PASSED] Both, PAL Default
[04:16:09] [PASSED] Both, NTSC Default, with PAL on command-line
[04:16:09] [PASSED] Both, PAL Default, with NTSC on command-line
[04:16:09] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[04:16:09] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[04:16:09] ================== drm_rect (9 subtests) ===================
[04:16:09] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[04:16:09] [PASSED] drm_test_rect_clip_scaled_not_clipped
[04:16:09] [PASSED] drm_test_rect_clip_scaled_clipped
[04:16:09] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[04:16:09] ================= drm_test_rect_intersect  =================
[04:16:09] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[04:16:09] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[04:16:09] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[04:16:09] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[04:16:09] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[04:16:09] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[04:16:09] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[04:16:09] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[04:16:09] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[04:16:09] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[04:16:09] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[04:16:09] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[04:16:09] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[04:16:09] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[04:16:09] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[04:16:09] ============= [PASSED] drm_test_rect_intersect =============
[04:16:09] ================ drm_test_rect_calc_hscale  ================
[04:16:09] [PASSED] normal use
[04:16:09] [PASSED] out of max range
[04:16:09] [PASSED] out of min range
[04:16:09] [PASSED] zero dst
[04:16:09] [PASSED] negative src
[04:16:09] [PASSED] negative dst
[04:16:09] ============ [PASSED] drm_test_rect_calc_hscale ============
[04:16:09] ================ drm_test_rect_calc_vscale  ================
[04:16:09] [PASSED] normal use
[04:16:09] [PASSED] out of max range
[04:16:09] [PASSED] out of min range
[04:16:09] [PASSED] zero dst
[04:16:09] [PASSED] negative src
[04:16:09] [PASSED] negative dst
[04:16:09] ============ [PASSED] drm_test_rect_calc_vscale ============
[04:16:09] ================== drm_test_rect_rotate  ===================
[04:16:09] [PASSED] reflect-x
[04:16:09] [PASSED] reflect-y
[04:16:09] [PASSED] rotate-0
[04:16:09] [PASSED] rotate-90
[04:16:09] [PASSED] rotate-180
[04:16:09] [PASSED] rotate-270
[04:16:09] ============== [PASSED] drm_test_rect_rotate ===============
[04:16:09] ================ drm_test_rect_rotate_inv  =================
[04:16:09] [PASSED] reflect-x
[04:16:09] [PASSED] reflect-y
[04:16:09] [PASSED] rotate-0
[04:16:09] [PASSED] rotate-90
[04:16:09] [PASSED] rotate-180
[04:16:09] [PASSED] rotate-270
[04:16:09] ============ [PASSED] drm_test_rect_rotate_inv =============
[04:16:09] ==================== [PASSED] drm_rect =====================
[04:16:09] ============ drm_sysfb_modeset_test (1 subtest) ============
[04:16:09] ============ drm_test_sysfb_build_fourcc_list  =============
[04:16:09] [PASSED] no native formats
[04:16:09] [PASSED] XRGB8888 as native format
[04:16:09] [PASSED] remove duplicates
[04:16:09] [PASSED] convert alpha formats
[04:16:09] [PASSED] random formats
[04:16:09] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[04:16:09] ============= [PASSED] drm_sysfb_modeset_test ==============
[04:16:09] ================== drm_fixp (2 subtests) ===================
[04:16:09] [PASSED] drm_test_int2fixp
[04:16:09] [PASSED] drm_test_sm2fixp
[04:16:09] ==================== [PASSED] drm_fixp =====================
[04:16:09] ============================================================
[04:16:09] Testing complete. Ran 621 tests: passed: 621
[04:16:09] Elapsed time: 26.024s total, 1.732s configuring, 24.113s building, 0.178s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[04:16:09] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[04:16:11] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[04:16:20] Starting KUnit Kernel (1/1)...
[04:16:20] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[04:16:20] ================= ttm_device (5 subtests) ==================
[04:16:20] [PASSED] ttm_device_init_basic
[04:16:20] [PASSED] ttm_device_init_multiple
[04:16:20] [PASSED] ttm_device_fini_basic
[04:16:20] [PASSED] ttm_device_init_no_vma_man
[04:16:20] ================== ttm_device_init_pools  ==================
[04:16:20] [PASSED] No DMA allocations, no DMA32 required
[04:16:20] [PASSED] DMA allocations, DMA32 required
[04:16:20] [PASSED] No DMA allocations, DMA32 required
[04:16:20] [PASSED] DMA allocations, no DMA32 required
[04:16:20] ============== [PASSED] ttm_device_init_pools ==============
[04:16:20] =================== [PASSED] ttm_device ====================
[04:16:20] ================== ttm_pool (8 subtests) ===================
[04:16:20] ================== ttm_pool_alloc_basic  ===================
[04:16:20] [PASSED] One page
[04:16:20] [PASSED] More than one page
[04:16:20] [PASSED] Above the allocation limit
[04:16:20] [PASSED] One page, with coherent DMA mappings enabled
[04:16:20] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[04:16:20] ============== [PASSED] ttm_pool_alloc_basic ===============
[04:16:20] ============== ttm_pool_alloc_basic_dma_addr  ==============
[04:16:20] [PASSED] One page
[04:16:20] [PASSED] More than one page
[04:16:20] [PASSED] Above the allocation limit
[04:16:20] [PASSED] One page, with coherent DMA mappings enabled
[04:16:20] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[04:16:20] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[04:16:20] [PASSED] ttm_pool_alloc_order_caching_match
[04:16:20] [PASSED] ttm_pool_alloc_caching_mismatch
[04:16:20] [PASSED] ttm_pool_alloc_order_mismatch
[04:16:20] [PASSED] ttm_pool_free_dma_alloc
[04:16:20] [PASSED] ttm_pool_free_no_dma_alloc
[04:16:20] [PASSED] ttm_pool_fini_basic
[04:16:20] ==================== [PASSED] ttm_pool =====================
[04:16:20] ================ ttm_resource (8 subtests) =================
[04:16:20] ================= ttm_resource_init_basic  =================
[04:16:20] [PASSED] Init resource in TTM_PL_SYSTEM
[04:16:20] [PASSED] Init resource in TTM_PL_VRAM
[04:16:20] [PASSED] Init resource in a private placement
[04:16:20] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[04:16:20] ============= [PASSED] ttm_resource_init_basic =============
[04:16:20] [PASSED] ttm_resource_init_pinned
[04:16:20] [PASSED] ttm_resource_fini_basic
[04:16:20] [PASSED] ttm_resource_manager_init_basic
[04:16:20] [PASSED] ttm_resource_manager_usage_basic
[04:16:20] [PASSED] ttm_resource_manager_set_used_basic
[04:16:20] [PASSED] ttm_sys_man_alloc_basic
[04:16:20] [PASSED] ttm_sys_man_free_basic
[04:16:20] ================== [PASSED] ttm_resource ===================
[04:16:20] =================== ttm_tt (15 subtests) ===================
[04:16:20] ==================== ttm_tt_init_basic  ====================
[04:16:20] [PASSED] Page-aligned size
[04:16:20] [PASSED] Extra pages requested
[04:16:20] ================ [PASSED] ttm_tt_init_basic ================
[04:16:20] [PASSED] ttm_tt_init_misaligned
[04:16:20] [PASSED] ttm_tt_fini_basic
[04:16:20] [PASSED] ttm_tt_fini_sg
[04:16:20] [PASSED] ttm_tt_fini_shmem
[04:16:20] [PASSED] ttm_tt_create_basic
[04:16:20] [PASSED] ttm_tt_create_invalid_bo_type
[04:16:20] [PASSED] ttm_tt_create_ttm_exists
[04:16:20] [PASSED] ttm_tt_create_failed
[04:16:20] [PASSED] ttm_tt_destroy_basic
[04:16:20] [PASSED] ttm_tt_populate_null_ttm
[04:16:20] [PASSED] ttm_tt_populate_populated_ttm
[04:16:20] [PASSED] ttm_tt_unpopulate_basic
[04:16:20] [PASSED] ttm_tt_unpopulate_empty_ttm
[04:16:20] [PASSED] ttm_tt_swapin_basic
[04:16:20] ===================== [PASSED] ttm_tt ======================
[04:16:20] =================== ttm_bo (14 subtests) ===================
[04:16:20] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[04:16:20] [PASSED] Cannot be interrupted and sleeps
[04:16:20] [PASSED] Cannot be interrupted, locks straight away
[04:16:20] [PASSED] Can be interrupted, sleeps
[04:16:20] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[04:16:20] [PASSED] ttm_bo_reserve_locked_no_sleep
[04:16:20] [PASSED] ttm_bo_reserve_no_wait_ticket
[04:16:20] [PASSED] ttm_bo_reserve_double_resv
[04:16:20] [PASSED] ttm_bo_reserve_interrupted
[04:16:20] [PASSED] ttm_bo_reserve_deadlock
[04:16:20] [PASSED] ttm_bo_unreserve_basic
[04:16:20] [PASSED] ttm_bo_unreserve_pinned
[04:16:20] [PASSED] ttm_bo_unreserve_bulk
[04:16:20] [PASSED] ttm_bo_fini_basic
[04:16:20] [PASSED] ttm_bo_fini_shared_resv
[04:16:20] [PASSED] ttm_bo_pin_basic
[04:16:20] [PASSED] ttm_bo_pin_unpin_resource
[04:16:20] [PASSED] ttm_bo_multiple_pin_one_unpin
[04:16:20] ===================== [PASSED] ttm_bo ======================
[04:16:20] ============== ttm_bo_validate (22 subtests) ===============
[04:16:20] ============== ttm_bo_init_reserved_sys_man  ===============
[04:16:20] [PASSED] Buffer object for userspace
[04:16:20] [PASSED] Kernel buffer object
[04:16:20] [PASSED] Shared buffer object
[04:16:20] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[04:16:20] ============== ttm_bo_init_reserved_mock_man  ==============
[04:16:20] [PASSED] Buffer object for userspace
[04:16:20] [PASSED] Kernel buffer object
[04:16:20] [PASSED] Shared buffer object
[04:16:20] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[04:16:20] [PASSED] ttm_bo_init_reserved_resv
[04:16:20] ================== ttm_bo_validate_basic  ==================
[04:16:20] [PASSED] Buffer object for userspace
[04:16:20] [PASSED] Kernel buffer object
[04:16:20] [PASSED] Shared buffer object
[04:16:20] ============== [PASSED] ttm_bo_validate_basic ==============
[04:16:20] [PASSED] ttm_bo_validate_invalid_placement
[04:16:20] ============= ttm_bo_validate_same_placement  ==============
[04:16:20] [PASSED] System manager
[04:16:20] [PASSED] VRAM manager
[04:16:20] ========= [PASSED] ttm_bo_validate_same_placement ==========
[04:16:20] [PASSED] ttm_bo_validate_failed_alloc
[04:16:20] [PASSED] ttm_bo_validate_pinned
[04:16:20] [PASSED] ttm_bo_validate_busy_placement
[04:16:20] ================ ttm_bo_validate_multihop  =================
[04:16:20] [PASSED] Buffer object for userspace
[04:16:20] [PASSED] Kernel buffer object
[04:16:20] [PASSED] Shared buffer object
[04:16:20] ============ [PASSED] ttm_bo_validate_multihop =============
[04:16:20] ========== ttm_bo_validate_no_placement_signaled  ==========
[04:16:20] [PASSED] Buffer object in system domain, no page vector
[04:16:20] [PASSED] Buffer object in system domain with an existing page vector
[04:16:20] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[04:16:20] ======== ttm_bo_validate_no_placement_not_signaled  ========
[04:16:20] [PASSED] Buffer object for userspace
[04:16:20] [PASSED] Kernel buffer object
[04:16:20] [PASSED] Shared buffer object
[04:16:20] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[04:16:20] [PASSED] ttm_bo_validate_move_fence_signaled
[04:16:20] ========= ttm_bo_validate_move_fence_not_signaled  =========
[04:16:20] [PASSED] Waits for GPU
[04:16:20] [PASSED] Tries to lock straight away
[04:16:20] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[04:16:20] [PASSED] ttm_bo_validate_swapout
[04:16:20] [PASSED] ttm_bo_validate_happy_evict
[04:16:20] [PASSED] ttm_bo_validate_all_pinned_evict
[04:16:20] [PASSED] ttm_bo_validate_allowed_only_evict
[04:16:20] [PASSED] ttm_bo_validate_deleted_evict
[04:16:20] [PASSED] ttm_bo_validate_busy_domain_evict
[04:16:20] [PASSED] ttm_bo_validate_evict_gutting
[04:16:20] [PASSED] ttm_bo_validate_recrusive_evict
[04:16:20] ================= [PASSED] ttm_bo_validate =================
[04:16:20] ============================================================
[04:16:20] Testing complete. Ran 102 tests: passed: 102
[04:16:20] Elapsed time: 11.403s total, 1.689s configuring, 9.499s building, 0.185s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✓ Xe.CI.BAT: success for Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM (rev2)
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
                   ` (11 preceding siblings ...)
  2026-05-18  4:16 ` ✓ CI.KUnit: success for Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM (rev2) Patchwork
@ 2026-05-18  4:54 ` Patchwork
  2026-05-18  6:47 ` ✗ Xe.CI.FULL: failure " Patchwork
  13 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2026-05-18  4:54 UTC (permalink / raw)
  To: Ankit Nautiyal; +Cc: intel-xe

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

== Series Details ==

Series: Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM (rev2)
URL   : https://patchwork.freedesktop.org/series/164513/
State : success

== Summary ==

CI Bug Log - changes from xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0_BAT -> xe-pw-164513v2_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (13 -> 13)
------------------------------

  No changes in participating hosts


Changes
-------

  No changes found


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

  * Linux: xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0 -> xe-pw-164513v2

  IGT_8917: 65d691069f26fc2a42c79e2364241320b85d48bc @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0: 41450d2e68111c45f4e52ff0e79ff8e8c77efbb0
  xe-pw-164513v2: 164513v2

== Logs ==

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

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

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

* ✗ Xe.CI.FULL: failure for Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM (rev2)
  2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
                   ` (12 preceding siblings ...)
  2026-05-18  4:54 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-05-18  6:47 ` Patchwork
  13 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2026-05-18  6:47 UTC (permalink / raw)
  To: Ankit Nautiyal; +Cc: intel-xe

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

== Series Details ==

Series: Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM (rev2)
URL   : https://patchwork.freedesktop.org/series/164513/
State : failure

== Summary ==

CI Bug Log - changes from xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0_FULL -> xe-pw-164513v2_FULL
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-164513v2_FULL absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-164513v2_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (2 -> 2)
------------------------------

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-164513v2_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_exec_system_allocator@process-many-large-malloc-busy-nomemset:
    - shard-lnl:          [PASS][1] -> [ABORT][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-lnl-8/igt@xe_exec_system_allocator@process-many-large-malloc-busy-nomemset.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-lnl-4/igt@xe_exec_system_allocator@process-many-large-malloc-busy-nomemset.html

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

  Here are the changes found in xe-pw-164513v2_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_async_flips@alternate-sync-async-flip:
    - shard-bmg:          [PASS][3] -> [FAIL][4] ([Intel XE#3718] / [Intel XE#6078])
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-3/igt@kms_async_flips@alternate-sync-async-flip.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-3/igt@kms_async_flips@alternate-sync-async-flip.html

  * igt@kms_async_flips@alternate-sync-async-flip@pipe-a-dp-2:
    - shard-bmg:          [PASS][5] -> [FAIL][6] ([Intel XE#6078])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-3/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-dp-2.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-3/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-dp-2.html

  * igt@kms_cursor_legacy@flip-vs-cursor-legacy:
    - shard-bmg:          [PASS][7] -> [FAIL][8] ([Intel XE#7571])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-4/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-8/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html

  * igt@kms_flip@flip-vs-expired-vblank@c-edp1:
    - shard-lnl:          [PASS][9] -> [FAIL][10] ([Intel XE#301] / [Intel XE#3149]) +2 other tests fail
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html

  * igt@kms_plane_cursor@viewport:
    - shard-bmg:          [PASS][11] -> [ABORT][12] ([Intel XE#6652] / [Intel XE#7814]) +1 other test abort
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-4/igt@kms_plane_cursor@viewport.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-5/igt@kms_plane_cursor@viewport.html

  * igt@kms_vrr@flipline:
    - shard-lnl:          [PASS][13] -> [FAIL][14] ([Intel XE#4227] / [Intel XE#7397]) +1 other test fail
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-lnl-4/igt@kms_vrr@flipline.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-lnl-1/igt@kms_vrr@flipline.html

  * igt@xe_sriov_auto_provisioning@fair-allocation@numvfs-random:
    - shard-bmg:          NOTRUN -> [FAIL][15] ([Intel XE#7992])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@xe_sriov_auto_provisioning@fair-allocation@numvfs-random.html

  * igt@xe_wedged@wedged-mode-toggle:
    - shard-bmg:          [PASS][16] -> [ABORT][17] ([Intel XE#7914])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-1/igt@xe_wedged@wedged-mode-toggle.html
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-9/igt@xe_wedged@wedged-mode-toggle.html

  
#### Possible fixes ####

  * igt@kms_async_flips@test-cursor:
    - shard-bmg:          [SKIP][18] -> [PASS][19]
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_async_flips@test-cursor.html
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-1/igt@kms_async_flips@test-cursor.html

  * igt@kms_flip@2x-plain-flip-fb-recreate:
    - shard-bmg:          [DMESG-FAIL][20] ([Intel XE#5545] / [Intel XE#7774]) -> [PASS][21] +1 other test pass
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_flip@2x-plain-flip-fb-recreate.html
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_flip@2x-plain-flip-fb-recreate.html

  * igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f:
    - shard-bmg:          [SKIP][22] ([Intel XE#7915]) -> [PASS][23] +1 other test pass
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-1/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f.html
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-9/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f.html

  * igt@kms_vrr@max-min:
    - shard-lnl:          [FAIL][24] ([Intel XE#4227]) -> [PASS][25] +1 other test pass
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-lnl-4/igt@kms_vrr@max-min.html
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-lnl-1/igt@kms_vrr@max-min.html

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-bmg:          [INCOMPLETE][26] ([Intel XE#6321]) -> [PASS][27]
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-5/igt@xe_evict@evict-beng-mixed-many-threads-small.html
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-5/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-prefetch:
    - shard-bmg:          [SKIP][28] ([Intel XE#6557] / [Intel XE#6703]) -> [PASS][29] +1 other test pass
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-prefetch.html
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-prefetch.html

  * igt@xe_intel_bb@intel-bb-blit-x:
    - shard-bmg:          [SKIP][30] ([Intel XE#6703]) -> [PASS][31] +137 other tests pass
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@xe_intel_bb@intel-bb-blit-x.html
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@xe_intel_bb@intel-bb-blit-x.html

  
#### Warnings ####

  * igt@kms_big_fb@y-tiled-8bpp-rotate-180:
    - shard-bmg:          [SKIP][32] ([Intel XE#6703]) -> [SKIP][33] ([Intel XE#1124]) +2 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html

  * igt@kms_bw@linear-tiling-3-displays-target-1920x1080p:
    - shard-bmg:          [SKIP][34] ([Intel XE#6703]) -> [SKIP][35] ([Intel XE#367])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_bw@linear-tiling-3-displays-target-1920x1080p.html
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_bw@linear-tiling-3-displays-target-1920x1080p.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs:
    - shard-bmg:          [SKIP][36] ([Intel XE#6703]) -> [SKIP][37] ([Intel XE#2887]) +2 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs.html
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs.html

  * igt@kms_chamelium_color@ctm-max:
    - shard-bmg:          [SKIP][38] ([Intel XE#6703]) -> [SKIP][39] ([Intel XE#2325] / [Intel XE#7358])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_chamelium_color@ctm-max.html
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_chamelium_color@ctm-max.html

  * igt@kms_chamelium_hpd@dp-hpd-fast:
    - shard-bmg:          [SKIP][40] ([Intel XE#6703]) -> [SKIP][41] ([Intel XE#2252])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_chamelium_hpd@dp-hpd-fast.html
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_chamelium_hpd@dp-hpd-fast.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-bmg:          [SKIP][42] ([Intel XE#6703]) -> [SKIP][43] ([Intel XE#2321] / [Intel XE#7355])
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_cursor_crc@cursor-onscreen-512x170.html
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-1/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-128x42:
    - shard-bmg:          [SKIP][44] ([Intel XE#6703]) -> [SKIP][45] ([Intel XE#2320])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_cursor_crc@cursor-rapid-movement-128x42.html
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_cursor_crc@cursor-rapid-movement-128x42.html

  * igt@kms_dsc@dsc-with-output-formats:
    - shard-bmg:          [SKIP][46] ([Intel XE#6703]) -> [SKIP][47] ([Intel XE#2244])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_dsc@dsc-with-output-formats.html
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_dsc@dsc-with-output-formats.html

  * igt@kms_flip@flip-vs-expired-vblank:
    - shard-lnl:          [FAIL][48] ([Intel XE#301]) -> [FAIL][49] ([Intel XE#301] / [Intel XE#3149])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank.html
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling:
    - shard-bmg:          [SKIP][50] ([Intel XE#6703]) -> [SKIP][51] ([Intel XE#7178] / [Intel XE#7351])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-render:
    - shard-bmg:          [SKIP][52] ([Intel XE#6703]) -> [SKIP][53] ([Intel XE#4141]) +3 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-render.html
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-primscrn-spr-indfb-fullscreen:
    - shard-bmg:          [SKIP][54] ([Intel XE#6703]) -> [SKIP][55] ([Intel XE#2311]) +11 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-primscrn-spr-indfb-fullscreen.html
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt:
    - shard-bmg:          [SKIP][56] ([Intel XE#6703]) -> [SKIP][57] ([Intel XE#2313]) +12 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt.html
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-render:
    - shard-bmg:          [SKIP][58] ([Intel XE#6703]) -> [SKIP][59] ([Intel XE#7061])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-render.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-render.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-bmg:          [SKIP][60] ([Intel XE#3544] / [Intel XE#7915] / [Intel XE#7916]) -> [SKIP][61] ([Intel XE#3544] / [Intel XE#7916])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-7/igt@kms_hdr@brightness-with-hdr.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-4/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f:
    - shard-bmg:          [SKIP][62] ([Intel XE#7915]) -> [SKIP][63] ([Intel XE#7916]) +1 other test skip
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-7/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-4/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html

  * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier:
    - shard-bmg:          [SKIP][64] ([Intel XE#6703]) -> [SKIP][65] ([Intel XE#7283])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier.html

  * igt@kms_pm_rpm@package-g7:
    - shard-bmg:          [SKIP][66] ([Intel XE#6703]) -> [SKIP][67] ([Intel XE#6814] / [Intel XE#7428])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_pm_rpm@package-g7.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_pm_rpm@package-g7.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
    - shard-bmg:          [SKIP][68] ([Intel XE#6703]) -> [SKIP][69] ([Intel XE#1489])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html

  * igt@kms_psr@pr-suspend:
    - shard-bmg:          [SKIP][70] ([Intel XE#6703]) -> [SKIP][71] ([Intel XE#2234] / [Intel XE#2850]) +1 other test skip
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_psr@pr-suspend.html
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_psr@pr-suspend.html

  * igt@kms_sharpness_filter@filter-dpms:
    - shard-bmg:          [SKIP][72] ([Intel XE#6703]) -> [SKIP][73] ([Intel XE#6503])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_sharpness_filter@filter-dpms.html
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_sharpness_filter@filter-dpms.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-bmg:          [SKIP][74] ([Intel XE#2426] / [Intel XE#5848]) -> [FAIL][75] ([Intel XE#1729] / [Intel XE#7424])
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_vrr@flip-dpms:
    - shard-bmg:          [SKIP][76] ([Intel XE#6703]) -> [SKIP][77] ([Intel XE#1499])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@kms_vrr@flip-dpms.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@kms_vrr@flip-dpms.html

  * igt@xe_eudebug@basic-read-event:
    - shard-bmg:          [SKIP][78] ([Intel XE#6703]) -> [SKIP][79] ([Intel XE#7636]) +3 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@xe_eudebug@basic-read-event.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@xe_eudebug@basic-read-event.html

  * igt@xe_evict@evict-small-multi-queue-priority:
    - shard-bmg:          [SKIP][80] ([Intel XE#6703]) -> [SKIP][81] ([Intel XE#7140])
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@xe_evict@evict-small-multi-queue-priority.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@xe_evict@evict-small-multi-queue-priority.html

  * igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap:
    - shard-bmg:          [SKIP][82] ([Intel XE#6703]) -> [SKIP][83] ([Intel XE#2322] / [Intel XE#7372]) +1 other test skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html

  * igt@xe_exec_multi_queue@few-execs-dyn-priority:
    - shard-bmg:          [SKIP][84] ([Intel XE#6703]) -> [SKIP][85] ([Intel XE#6874]) +7 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@xe_exec_multi_queue@few-execs-dyn-priority.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@xe_exec_multi_queue@few-execs-dyn-priority.html

  * igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr-rebind:
    - shard-bmg:          [SKIP][86] ([Intel XE#6703]) -> [SKIP][87] ([Intel XE#7138]) +1 other test skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr-rebind.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr-rebind.html

  * igt@xe_page_reclaim@random:
    - shard-bmg:          [SKIP][88] ([Intel XE#6703]) -> [SKIP][89] ([Intel XE#7793])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@xe_page_reclaim@random.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@xe_page_reclaim@random.html

  * igt@xe_pm@d3cold-basic-exec:
    - shard-bmg:          [SKIP][90] ([Intel XE#6703]) -> [SKIP][91] ([Intel XE#2284] / [Intel XE#7370])
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@xe_pm@d3cold-basic-exec.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@xe_pm@d3cold-basic-exec.html

  * igt@xe_pmu@fn-engine-activity-load:
    - shard-bmg:          [SKIP][92] ([Intel XE#6703]) -> [FAIL][93] ([Intel XE#7992]) +1 other test fail
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0/shard-bmg-2/igt@xe_pmu@fn-engine-activity-load.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164513v2/shard-bmg-6/igt@xe_pmu@fn-engine-activity-load.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
  [Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
  [Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
  [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
  [Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
  [Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#6557]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6557
  [Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
  [Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
  [Intel XE#6814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6814
  [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
  [Intel XE#7140]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7140
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
  [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
  [Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
  [Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
  [Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
  [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
  [Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
  [Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
  [Intel XE#7428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7428
  [Intel XE#7571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7571
  [Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
  [Intel XE#7774]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7774
  [Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
  [Intel XE#7814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7814
  [Intel XE#7914]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7914
  [Intel XE#7915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7915
  [Intel XE#7916]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7916
  [Intel XE#7992]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7992


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

  * Linux: xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0 -> xe-pw-164513v2

  IGT_8917: 65d691069f26fc2a42c79e2364241320b85d48bc @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-5074-41450d2e68111c45f4e52ff0e79ff8e8c77efbb0: 41450d2e68111c45f4e52ff0e79ff8e8c77efbb0
  xe-pw-164513v2: 164513v2

== Logs ==

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

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

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

* Re: [PATCH 01/11] drm/i915/psr: Add helper to get Async Video timing support in PR active
  2026-05-18  3:54 ` [PATCH 01/11] drm/i915/psr: Add helper to get Async Video timing support in PR active Ankit Nautiyal
@ 2026-05-22 14:06   ` Ville Syrjälä
  0 siblings, 0 replies; 25+ messages in thread
From: Ville Syrjälä @ 2026-05-22 14:06 UTC (permalink / raw)
  To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, jouni.hogander, animesh.manna

On Mon, May 18, 2026 at 09:24:51AM +0530, Ankit Nautiyal wrote:
> Introduce a helper to check if Panel Replay has Async Video Timing support
> during PR Active state.
> 
> v2: Confirm that Panel Replay is supported before checking for
>     Async Video Timing Support during PR active. (Ville)
> 
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_psr.c | 11 +++++++++++
>  drivers/gpu/drm/i915/display/intel_psr.h |  1 +
>  2 files changed, 12 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
> index 892d209dce1b..431468103f51 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -4655,3 +4655,14 @@ bool intel_psr_use_trans_push(const struct intel_crtc_state *crtc_state)
>  
>  	return HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display) && crtc_state->has_psr;
>  }
> +
> +bool intel_psr_pr_async_video_timing_supported(struct intel_dp *intel_dp)
> +{
> +	struct intel_connector *connector = intel_dp->attached_connector;
> +	u8 *dpcd = connector->dp.panel_replay_caps.dpcd;
> +	u8 pr_support = dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_SUPPORT)];
> +	u8 pr_cap = dpcd[INTEL_PR_DPCD_INDEX(DP_PANEL_REPLAY_CAP_CAPABILITY)];
> +
> +	return (pr_support & DP_PANEL_REPLAY_SUPPORT) &&
> +		!(pr_cap & DP_PANEL_REPLAY_ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR);
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.h b/drivers/gpu/drm/i915/display/intel_psr.h
> index 394b641840b3..29723e63888f 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.h
> +++ b/drivers/gpu/drm/i915/display/intel_psr.h
> @@ -86,5 +86,6 @@ void intel_psr_compute_config_late(struct intel_dp *intel_dp,
>  				   struct intel_crtc_state *crtc_state);
>  int intel_psr_min_guardband(struct intel_crtc_state *crtc_state);
>  bool intel_psr_use_trans_push(const struct intel_crtc_state *crtc_state);
> +bool intel_psr_pr_async_video_timing_supported(struct intel_dp *intel_dp);
>  
>  #endif /* __INTEL_PSR_H__ */
> -- 
> 2.45.2

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 02/11] drm/i915/dp: Add member to intel_dp to store AS SDP v2 support
  2026-05-18  3:54 ` [PATCH 02/11] drm/i915/dp: Add member to intel_dp to store AS SDP v2 support Ankit Nautiyal
@ 2026-05-22 14:08   ` Ville Syrjälä
  0 siblings, 0 replies; 25+ messages in thread
From: Ville Syrjälä @ 2026-05-22 14:08 UTC (permalink / raw)
  To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, jouni.hogander, animesh.manna

On Mon, May 18, 2026 at 09:24:52AM +0530, Ankit Nautiyal wrote:
> eDP v1.5a advertises support for Adaptive Sync SDP and with that the
> support for AS SDP v2 is mandatory.
> 
> DP v2.1 SCR advertises support for FAVT payload fields parsing in DPCD
> 0x2214 Bit 2. This indicates the support for Adaptive-Sync SDP version 2
> (AS SDP v2), which allows the source to set the version in HB2[4:0] and the
> payload length in HB3[5:0] of the AS SDP header.
> 
> DP v2.1 SCR also introduces ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR in the
> Panel Replay Capability DPCD 0x00b1 (Bit 3). When this bit is set, the sink
> does not support asynchronous video timing while in a Panel Replay Active
> state and the source is required to keep transmitting Adaptive-Sync
> SDPs. The spec mandates that such sinks shall support AS SDP v2.
> 
> Infer AS SDP v2 support from these capabilities and store it in
> struct intel_dp for use by subsequent feature enablement changes.
> 
> v2:
>  - Include parsing ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR bit to
>    determine AS SDP v2 support. (Ville)
> v3:
>  - Use helper to determine asynch video timing support.
> v4:
>  - Add AS SDP v2 support for eDP as per v1.5a.
>  - Add a check for Panel Replay support before checking for Async video
>    timing support in PR
>  - Add a TODO for Display ID and PCON considerations. (Ville)
> 
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
>  .../drm/i915/display/intel_display_types.h    |  1 +
>  drivers/gpu/drm/i915/display/intel_dp.c       | 49 +++++++++++++++++++
>  2 files changed, 50 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index b7bcf8fefa3e..e9b95879c797 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1871,6 +1871,7 @@ struct intel_dp {
>  	/* connector directly attached - won't be use for modeset in mst world */
>  	struct intel_connector *attached_connector;
>  	bool as_sdp_supported;
> +	bool as_sdp_v2_supported;
>  
>  	struct drm_dp_tunnel *tunnel;
>  	bool tunnel_suspended:1;
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 1920d2f02666..92a650a728d8 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -6365,6 +6365,46 @@ intel_dp_unset_edid(struct intel_dp *intel_dp)
>  					       false);
>  }
>  
> +static bool
> +intel_dp_sink_supports_as_sdp_v2(struct intel_dp *intel_dp)
> +{
> +	u8 rx_features;
> +
> +	/*
> +	 * The DP spec does not explicitly provide the AS SDP v2 capability.
> +	 * So based on the DP v2.1 SCR, we infer it from the following bits:
> +	 *
> +	 * DP_AS_SDP_FAVT_PAYLOAD_FIELDS_PARSING_SUPPORTED indicates support for
> +	 * FAVT, which is explicitly defined to use AS SDP v2.
> +	 *
> +	 * DP_ASYNC_VIDEO_TIMING_NOT_SUPPORTED_IN_PR indicates that the sink
> +	 * does not support asynchronous video timing while in PR Active,
> +	 * requiring the source to keep transmitting Adaptive-Sync SDPs. The
> +	 * spec mandates that such sinks shall support AS SDP v2.
> +	 *
> +	 * #TODO: Check the Adaptive-Sync DisplayID 2.1 block once DisplayID
> +	 * parsing is available. This may help detect AS SDP v2 support for
> +	 * native DP 2.1 sinks that do not expose FAVT or PR-based capability
> +	 * bits.
> +	 *
> +	 * In the presence of PCONs, check PCON support from DPCD and sink
> +	 * support from Display ID.
> +	 */
> +
> +	if (drm_dp_dpcd_read_byte(&intel_dp->aux,
> +				  DP_DPRX_FEATURE_ENUMERATION_LIST_CONT_1,
> +				  &rx_features) == 1) {
> +		if (rx_features & DP_AS_SDP_FAVT_PAYLOAD_FIELDS_PARSING_SUPPORTED)
> +			return true;
> +	}
> +
> +	if (intel_dp->psr.sink_panel_replay_support &&
> +	    !intel_psr_pr_async_video_timing_supported(intel_dp))
> +		return true;
> +
> +	return false;
> +}
> +
>  static void
>  intel_dp_detect_sdp_caps(struct intel_dp *intel_dp)
>  {
> @@ -6372,6 +6412,15 @@ intel_dp_detect_sdp_caps(struct intel_dp *intel_dp)
>  
>  	intel_dp->as_sdp_supported = HAS_AS_SDP(display) &&
>  		drm_dp_as_sdp_supported(&intel_dp->aux, intel_dp->dpcd);
> +
> +	if (!intel_dp->as_sdp_supported)
> +		return;
> +
> +	/* eDP Adaptive-Sync SDP always uses AS SDP v2 */
> +	if (intel_dp_is_edp(intel_dp))
> +		intel_dp->as_sdp_v2_supported =  true;

I really hope eDP 1.5 (not 1.5a) was never adopted by anyone because it
seems to make a complete mess of the AS SDP version number.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> +	else
> +		intel_dp->as_sdp_v2_supported = intel_dp_sink_supports_as_sdp_v2(intel_dp);
>  }
>  
>  static bool intel_dp_needs_dpcd_probe(struct intel_dp *intel_dp, bool force_on_external)
> -- 
> 2.45.2

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 03/11] drm/i915/dp: Allow AS SDP only if v2 is supported
  2026-05-18  3:54 ` [PATCH 03/11] drm/i915/dp: Allow AS SDP only if v2 is supported Ankit Nautiyal
@ 2026-05-22 14:10   ` Ville Syrjälä
  0 siblings, 0 replies; 25+ messages in thread
From: Ville Syrjälä @ 2026-05-22 14:10 UTC (permalink / raw)
  To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, jouni.hogander, animesh.manna

On Mon, May 18, 2026 at 09:24:53AM +0530, Ankit Nautiyal wrote:
> We do not support AS SDP version 1, so allow AS SDP only if AS SDP v2 is
> supported.
> 
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 92a650a728d8..d1b40db7e2a3 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -3172,7 +3172,7 @@ static void intel_dp_compute_vsc_colorimetry(const struct intel_crtc_state *crtc
>  static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
>  				  struct intel_crtc_state *crtc_state)
>  {
> -	if (!intel_dp->as_sdp_supported)
> +	if (!intel_dp->as_sdp_v2_supported)

Should perhaps add a TODO here about adding AS SDP v1 support for PCONs.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  		return false;
>  
>  	/*
> -- 
> 2.45.2

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 07/11] drm/i915/dp: Set relevant Downspread Ctrl DPCD bits for PR + Auxless ALPM
  2026-05-18  3:54 ` [PATCH 07/11] drm/i915/dp: Set relevant Downspread Ctrl DPCD bits for PR + Auxless ALPM Ankit Nautiyal
@ 2026-05-22 15:08   ` Ville Syrjälä
  0 siblings, 0 replies; 25+ messages in thread
From: Ville Syrjälä @ 2026-05-22 15:08 UTC (permalink / raw)
  To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, jouni.hogander, animesh.manna

On Mon, May 18, 2026 at 09:24:57AM +0530, Ankit Nautiyal wrote:
> If a Panel Replay capable sink, supports Async Video timing in
> PR active state, then source does not necessarily need to send AS SDPs
> during PR active.
> 
> However, if asynchronous video timing is not supported, then for PR with
> Aux-less ALPM, the source must transmit Adaptive-Sync SDPs for video
> timing synchronization while PR is active.
> 
> If the source needs to send AS SDP during PR active, this requires setting
> DPCD 0x0107[6] (FIXED_VTOTAL_AS_SDP_EN_IN_PR_ACTIVE). This applies whether
> VRR is enabled (AVT/FAVT) or fixed-timing mode is used.
> 
> This bit defines AS SDP timing behavior during PR Active, even if AS SDPs
> are briefly suspended.
> 
> Program the relevant Downspread Ctrl DPCD bits accordingly.
> 
> v2: Instead of Panel Replay check simply use AS SDP enable check. (Ville)
> v3: Since the bit is defined in context of Panel Replay and AS SDP, add
>     a check for both. (Ville)
> 
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
>  .../gpu/drm/i915/display/intel_dp_link_training.c | 15 +++++++++++++--
>  .../gpu/drm/i915/display/intel_dp_link_training.h |  3 ++-
>  drivers/gpu/drm/i915/display/intel_dp_mst.c       |  2 +-
>  3 files changed, 16 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> index a26094223f78..d0b033d2cfb4 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> @@ -34,8 +34,10 @@
>  #include "intel_dp.h"
>  #include "intel_dp_link_training.h"
>  #include "intel_encoder.h"
> +#include "intel_hdmi.h"
>  #include "intel_hotplug.h"
>  #include "intel_panel.h"
> +#include "intel_psr.h"
>  
>  #define LT_MSG_PREFIX			"[CONNECTOR:%d:%s][ENCODER:%d:%s][%s] "
>  #define LT_MSG_ARGS(_intel_dp, _dp_phy)	(_intel_dp)->attached_connector->base.base.id, \
> @@ -710,11 +712,14 @@ static bool intel_dp_link_max_vswing_reached(struct intel_dp *intel_dp,
>  	return true;
>  }
>  
> -void intel_dp_link_training_set_mode(struct intel_dp *intel_dp, int link_rate, bool is_vrr)
> +void intel_dp_link_training_set_mode(struct intel_dp *intel_dp, int link_rate,
> +				     bool is_vrr,
> +				     bool pr_with_as_sdp_enable)
>  {
>  	u8 link_config[2];
>  
>  	link_config[0] = is_vrr ? DP_MSA_TIMING_PAR_IGNORE_EN : 0;
> +	link_config[0] |= pr_with_as_sdp_enable ? DP_FIXED_VTOTAL_AS_SDP_EN_IN_PR_ACTIVE : 0;
>  	link_config[1] = drm_dp_is_uhbr_rate(link_rate) ?
>  			 DP_SET_ANSI_128B132B : DP_SET_ANSI_8B10B;
>  	drm_dp_dpcd_write(&intel_dp->aux, DP_DOWNSPREAD_CTRL, link_config, 2);
> @@ -723,6 +728,10 @@ void intel_dp_link_training_set_mode(struct intel_dp *intel_dp, int link_rate, b
>  static void intel_dp_update_downspread_ctrl(struct intel_dp *intel_dp,
>  					    const struct intel_crtc_state *crtc_state)
>  {
> +	bool pr_with_as_sdp_enable =
> +		intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) &&
> +		crtc_state->infoframes.enable & intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC);

This whole thing could be a function instead of a variable.

The use of intel_psr_needs_alpm_aux_less() is a bit confusing here,
but I guess it (at least currently) does the right thing.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> +
>  	 /*
>  	  * Currently, we set the MSA ignore bit based on vrr.in_range.
>  	  * We can't really read that out during driver load since we don't have
> @@ -737,7 +746,9 @@ static void intel_dp_update_downspread_ctrl(struct intel_dp *intel_dp,
>  	  * especially on the first real commit when clearing the inherited flag.
>  	  */
>  	intel_dp_link_training_set_mode(intel_dp,
> -					crtc_state->port_clock, crtc_state->vrr.in_range);
> +					crtc_state->port_clock,
> +					crtc_state->vrr.in_range,
> +					pr_with_as_sdp_enable);
>  }
>  
>  void intel_dp_link_training_set_bw(struct intel_dp *intel_dp,
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.h b/drivers/gpu/drm/i915/display/intel_dp_link_training.h
> index 33dcbde6a408..18c34c1a472f 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.h
> @@ -18,7 +18,8 @@ int intel_dp_init_lttpr_and_dprx_caps(struct intel_dp *intel_dp);
>  bool intel_dp_lttpr_transparent_mode_enabled(struct intel_dp *intel_dp);
>  
>  void intel_dp_link_training_set_mode(struct intel_dp *intel_dp,
> -				     int link_rate, bool is_vrr);
> +				     int link_rate, bool is_vrr,
> +				     bool pr_with_as_sdp_enable);
>  void intel_dp_link_training_set_bw(struct intel_dp *intel_dp,
>  				   int link_bw, int rate_select, int lane_count,
>  				   bool enhanced_framing, bool post_lt_adj_req);
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 8f73e01db17c..a238f7948cec 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -2145,7 +2145,7 @@ void intel_dp_mst_prepare_probe(struct intel_dp *intel_dp)
>  
>  	intel_dp_compute_rate(intel_dp, link_rate, &link_bw, &rate_select);
>  
> -	intel_dp_link_training_set_mode(intel_dp, link_rate, false);
> +	intel_dp_link_training_set_mode(intel_dp, link_rate, false, false);
>  	intel_dp_link_training_set_bw(intel_dp, link_bw, rate_select, lane_count,
>  				      drm_dp_enhanced_frame_cap(intel_dp->dpcd), false);
>  
> -- 
> 2.45.2

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 09/11] drm/i915/dp: Split AS SDP computation between compute_config and compute_config_late
  2026-05-18  3:54 ` [PATCH 09/11] drm/i915/dp: Split AS SDP computation between compute_config and compute_config_late Ankit Nautiyal
@ 2026-05-22 15:24   ` Ville Syrjälä
  2026-05-23  4:27     ` Nautiyal, Ankit K
  0 siblings, 1 reply; 25+ messages in thread
From: Ville Syrjälä @ 2026-05-22 15:24 UTC (permalink / raw)
  To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, jouni.hogander, animesh.manna

On Mon, May 18, 2026 at 09:24:59AM +0530, Ankit Nautiyal wrote:
> Currently we enable AS SDP only when VRR is enabled. As we start using
> AS SDP for other features, this becomes a problem. The AS SDP
> configuration can change dynamically based on VRR, CMRR, PR, ALPM, etc.
> Since these features may be enabled or disabled after the initial
> configuration, the AS SDP parameters need to be computed later in the
> pipeline.
> 
> However, not all of the AS SDP logic can be moved to the late stage:
> the VRR guardband optimization depends on knowing early whether AS SDP
> can be used. Without this, we would end up accounting for AS SDP on all
> platforms that support it, even for panels that do not support AS SDP.
> Therefore we set the infoframe enable bit for AS SDP during
> compute_config(), before the guardband is computed.
> 
> To handle these constraints, split the AS SDP programming into two
> phases:
> 
>  - intel_dp_compute_as_sdp()
>    Runs during compute_config().
>    Sets only the infoframe enable bit so that the guardband logic can
>    account for AS SDP requirements.
> 
>  - intel_dp_as_sdp_compute_config_late()
>    Runs during compute_config_late().
>    Computes all remaining AS SDP fields based on the features that need
>    it.
> 
> The late-stage computation is called from
> intel_dp_sdp_compute_config_late(), before computing the minimum guardband
> for SDPs.
> 
> This is a preparatory change. A subsequent patches will compute PR related
> AS SDP fields and enable AS SDP not only for VRR but for other features
> as well.

I don't think we actually need this. Based on what I see in the spec it
should be perfectly fine to always provide the coasting vtotal whenever
the sink supports panel replay.

Also I don't think we support the "suspend AS SDP during PR active" mode
yet, so for the moment the sink should never even use the coasting
vtotal value we provide.

> 
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 66 ++++++++++++++++---------
>  1 file changed, 43 insertions(+), 23 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 8d0d04f306a7..c1c6f394eb0b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -3187,10 +3187,6 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
>  static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
>  				    struct intel_crtc_state *crtc_state)
>  {
> -	struct drm_dp_as_sdp *as_sdp = &crtc_state->infoframes.as_sdp;
> -	const struct drm_display_mode *adjusted_mode =
> -		&crtc_state->hw.adjusted_mode;
> -
>  	/*
>  	 * #FIXME: SDP/infoframe updates aren’t truly atomic, and with the new
>  	 * cdclk->tc clock crossing we may transiently send a corrupted packet
> @@ -3199,23 +3195,13 @@ static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
>  	if (!intel_dp_needs_as_sdp(intel_dp, crtc_state))
>  		return;
>  
> +	/*
> +	 * Only set the infoframes.enable flag here. The remaining AS SDP fields
> +	 * are programmed in the compute_config_late() phase. We need this flag
> +	 * early so that the VRR guardband calculation can properly account for
> +	 * AS SDP requirements.
> +	 */
>  	crtc_state->infoframes.enable |= intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC);
> -
> -	as_sdp->sdp_type = DP_SDP_ADAPTIVE_SYNC;
> -	as_sdp->length = 0x9;
> -	as_sdp->duration_incr_ms = 0;
> -	as_sdp->revision = 0x2;
> -	as_sdp->vtotal = intel_vrr_vmin_vtotal(crtc_state);
> -
> -	if (crtc_state->cmrr.enable) {
> -		as_sdp->mode = DP_AS_SDP_FAVT_TRR_REACHED;
> -		as_sdp->target_rr = drm_mode_vrefresh(adjusted_mode);
> -		as_sdp->target_rr_divider = true;
> -	} else if (crtc_state->vrr.enable) {
> -		as_sdp->mode = DP_AS_SDP_AVT_DYNAMIC_VTOTAL;
> -	} else {
> -		as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
> -	}
>  }
>  
>  static void intel_dp_compute_vsc_sdp(struct intel_dp *intel_dp,
> @@ -7459,11 +7445,45 @@ void intel_dp_mst_resume(struct intel_display *display)
>  }
>  
>  static
> -int intel_dp_sdp_compute_config_late(struct intel_crtc_state *crtc_state)
> +void intel_dp_as_sdp_compute_config_late(struct intel_dp *intel_dp,
> +					 struct intel_crtc_state *crtc_state)
> +{
> +	struct drm_dp_as_sdp *as_sdp = &crtc_state->infoframes.as_sdp;
> +	const struct drm_display_mode *adjusted_mode =
> +		&crtc_state->hw.adjusted_mode;
> +
> +	if ((crtc_state->infoframes.enable &
> +	    intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC)) == 0)
> +		return;
> +
> +	as_sdp->sdp_type = DP_SDP_ADAPTIVE_SYNC;
> +	as_sdp->length = 0x9;
> +	as_sdp->duration_incr_ms = 0;
> +	as_sdp->revision = 0x2;
> +	as_sdp->vtotal = intel_vrr_vmin_vtotal(crtc_state);
> +
> +	if (crtc_state->cmrr.enable) {
> +		as_sdp->mode = DP_AS_SDP_FAVT_TRR_REACHED;
> +		as_sdp->target_rr = drm_mode_vrefresh(adjusted_mode);
> +		as_sdp->target_rr_divider = true;
> +	} else if (crtc_state->vrr.enable) {
> +		as_sdp->mode = DP_AS_SDP_AVT_DYNAMIC_VTOTAL;
> +	} else {
> +		as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
> +	}
> +}
> +
> +static
> +int intel_dp_sdp_compute_config_late(struct intel_dp *intel_dp,
> +				     struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	int guardband = intel_crtc_vblank_length(crtc_state);
> -	int min_sdp_guardband = intel_dp_sdp_min_guardband(crtc_state, false);
> +	int min_sdp_guardband;
> +
> +	intel_dp_as_sdp_compute_config_late(intel_dp, crtc_state);
> +
> +	min_sdp_guardband = intel_dp_sdp_min_guardband(crtc_state, false);
>  
>  	if (guardband < min_sdp_guardband) {
>  		drm_dbg_kms(display->drm, "guardband %d < min sdp guardband %d\n",
> @@ -7483,7 +7503,7 @@ int intel_dp_compute_config_late(struct intel_encoder *encoder,
>  
>  	intel_psr_compute_config_late(intel_dp, crtc_state);
>  
> -	ret = intel_dp_sdp_compute_config_late(crtc_state);
> +	ret = intel_dp_sdp_compute_config_late(intel_dp, crtc_state);
>  	if (ret)
>  		return ret;
>  
> -- 
> 2.45.2

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 11/11] drm/i915/dp: Always enable AS SDP if supported by source + sink
  2026-05-18  3:55 ` [PATCH 11/11] drm/i915/dp: Always enable AS SDP if supported by source + sink Ankit Nautiyal
@ 2026-05-22 15:25   ` Ville Syrjälä
  2026-05-23  4:29     ` Nautiyal, Ankit K
  0 siblings, 1 reply; 25+ messages in thread
From: Ville Syrjälä @ 2026-05-22 15:25 UTC (permalink / raw)
  To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe, jouni.hogander, animesh.manna

On Mon, May 18, 2026 at 09:25:01AM +0530, Ankit Nautiyal wrote:
> Currently AS SDP is only configured when VRR is enabled. However, other
> use cases like CMRR, Panel Replay, etc. also send information to the sink
> via AS SDPs.
> 
> With optimized guardband, we also need to account for wakeup time and other
> relevant details that depend on the AS SDP position whenever AS SDP is
> enabled. If a feature enabling AS SDP gets turned on later (after modeset),
> the guardband might not be sufficient and may need to increase, triggering
> a full modeset.
> 
> To avoid this, always send AS SDP whenever:
>  - the source and sink both support it, AND,
>  - there is a possibility to use it for VRR and Panel Replay for
>    synchronization.
> 
> v2: Check if AS SDP can be used for synchronization for VRR or PR. (Ville)
> 
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 69eb474fede7..2c1dbcb0a2ca 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -3181,7 +3181,11 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
>  	if (drm_dp_is_branch(intel_dp->dpcd))
>  		return false;
>  
> -	return crtc_state->vrr.enable;
> +	if (intel_alpm_is_alpm_aux_less(intel_dp, crtc_state) &&

That also includes lobf stuff in the check which we presumably don't want.

> +	    !intel_psr_pr_async_video_timing_supported(intel_dp))
> +		return true;
> +
> +	return intel_vrr_possible(crtc_state);
>  }
>  
>  static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
> -- 
> 2.45.2

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 09/11] drm/i915/dp: Split AS SDP computation between compute_config and compute_config_late
  2026-05-22 15:24   ` Ville Syrjälä
@ 2026-05-23  4:27     ` Nautiyal, Ankit K
  0 siblings, 0 replies; 25+ messages in thread
From: Nautiyal, Ankit K @ 2026-05-23  4:27 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: intel-gfx, intel-xe, jouni.hogander, animesh.manna


On 5/22/2026 8:54 PM, Ville Syrjälä wrote:
> On Mon, May 18, 2026 at 09:24:59AM +0530, Ankit Nautiyal wrote:
>> Currently we enable AS SDP only when VRR is enabled. As we start using
>> AS SDP for other features, this becomes a problem. The AS SDP
>> configuration can change dynamically based on VRR, CMRR, PR, ALPM, etc.
>> Since these features may be enabled or disabled after the initial
>> configuration, the AS SDP parameters need to be computed later in the
>> pipeline.
>>
>> However, not all of the AS SDP logic can be moved to the late stage:
>> the VRR guardband optimization depends on knowing early whether AS SDP
>> can be used. Without this, we would end up accounting for AS SDP on all
>> platforms that support it, even for panels that do not support AS SDP.
>> Therefore we set the infoframe enable bit for AS SDP during
>> compute_config(), before the guardband is computed.
>>
>> To handle these constraints, split the AS SDP programming into two
>> phases:
>>
>>   - intel_dp_compute_as_sdp()
>>     Runs during compute_config().
>>     Sets only the infoframe enable bit so that the guardband logic can
>>     account for AS SDP requirements.
>>
>>   - intel_dp_as_sdp_compute_config_late()
>>     Runs during compute_config_late().
>>     Computes all remaining AS SDP fields based on the features that need
>>     it.
>>
>> The late-stage computation is called from
>> intel_dp_sdp_compute_config_late(), before computing the minimum guardband
>> for SDPs.
>>
>> This is a preparatory change. A subsequent patches will compute PR related
>> AS SDP fields and enable AS SDP not only for VRR but for other features
>> as well.
> I don't think we actually need this. Based on what I see in the spec it
> should be perfectly fine to always provide the coasting vtotal whenever
> the sink supports panel replay.
>
> Also I don't think we support the "suspend AS SDP during PR active" mode
> yet, so for the moment the sink should never even use the coasting
> vtotal value we provide.


Hmm ok, I will drop this change for now.

Regards,

Ankit

>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>> ---
>>   drivers/gpu/drm/i915/display/intel_dp.c | 66 ++++++++++++++++---------
>>   1 file changed, 43 insertions(+), 23 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
>> index 8d0d04f306a7..c1c6f394eb0b 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -3187,10 +3187,6 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
>>   static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
>>   				    struct intel_crtc_state *crtc_state)
>>   {
>> -	struct drm_dp_as_sdp *as_sdp = &crtc_state->infoframes.as_sdp;
>> -	const struct drm_display_mode *adjusted_mode =
>> -		&crtc_state->hw.adjusted_mode;
>> -
>>   	/*
>>   	 * #FIXME: SDP/infoframe updates aren’t truly atomic, and with the new
>>   	 * cdclk->tc clock crossing we may transiently send a corrupted packet
>> @@ -3199,23 +3195,13 @@ static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
>>   	if (!intel_dp_needs_as_sdp(intel_dp, crtc_state))
>>   		return;
>>   
>> +	/*
>> +	 * Only set the infoframes.enable flag here. The remaining AS SDP fields
>> +	 * are programmed in the compute_config_late() phase. We need this flag
>> +	 * early so that the VRR guardband calculation can properly account for
>> +	 * AS SDP requirements.
>> +	 */
>>   	crtc_state->infoframes.enable |= intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC);
>> -
>> -	as_sdp->sdp_type = DP_SDP_ADAPTIVE_SYNC;
>> -	as_sdp->length = 0x9;
>> -	as_sdp->duration_incr_ms = 0;
>> -	as_sdp->revision = 0x2;
>> -	as_sdp->vtotal = intel_vrr_vmin_vtotal(crtc_state);
>> -
>> -	if (crtc_state->cmrr.enable) {
>> -		as_sdp->mode = DP_AS_SDP_FAVT_TRR_REACHED;
>> -		as_sdp->target_rr = drm_mode_vrefresh(adjusted_mode);
>> -		as_sdp->target_rr_divider = true;
>> -	} else if (crtc_state->vrr.enable) {
>> -		as_sdp->mode = DP_AS_SDP_AVT_DYNAMIC_VTOTAL;
>> -	} else {
>> -		as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
>> -	}
>>   }
>>   
>>   static void intel_dp_compute_vsc_sdp(struct intel_dp *intel_dp,
>> @@ -7459,11 +7445,45 @@ void intel_dp_mst_resume(struct intel_display *display)
>>   }
>>   
>>   static
>> -int intel_dp_sdp_compute_config_late(struct intel_crtc_state *crtc_state)
>> +void intel_dp_as_sdp_compute_config_late(struct intel_dp *intel_dp,
>> +					 struct intel_crtc_state *crtc_state)
>> +{
>> +	struct drm_dp_as_sdp *as_sdp = &crtc_state->infoframes.as_sdp;
>> +	const struct drm_display_mode *adjusted_mode =
>> +		&crtc_state->hw.adjusted_mode;
>> +
>> +	if ((crtc_state->infoframes.enable &
>> +	    intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC)) == 0)
>> +		return;
>> +
>> +	as_sdp->sdp_type = DP_SDP_ADAPTIVE_SYNC;
>> +	as_sdp->length = 0x9;
>> +	as_sdp->duration_incr_ms = 0;
>> +	as_sdp->revision = 0x2;
>> +	as_sdp->vtotal = intel_vrr_vmin_vtotal(crtc_state);
>> +
>> +	if (crtc_state->cmrr.enable) {
>> +		as_sdp->mode = DP_AS_SDP_FAVT_TRR_REACHED;
>> +		as_sdp->target_rr = drm_mode_vrefresh(adjusted_mode);
>> +		as_sdp->target_rr_divider = true;
>> +	} else if (crtc_state->vrr.enable) {
>> +		as_sdp->mode = DP_AS_SDP_AVT_DYNAMIC_VTOTAL;
>> +	} else {
>> +		as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
>> +	}
>> +}
>> +
>> +static
>> +int intel_dp_sdp_compute_config_late(struct intel_dp *intel_dp,
>> +				     struct intel_crtc_state *crtc_state)
>>   {
>>   	struct intel_display *display = to_intel_display(crtc_state);
>>   	int guardband = intel_crtc_vblank_length(crtc_state);
>> -	int min_sdp_guardband = intel_dp_sdp_min_guardband(crtc_state, false);
>> +	int min_sdp_guardband;
>> +
>> +	intel_dp_as_sdp_compute_config_late(intel_dp, crtc_state);
>> +
>> +	min_sdp_guardband = intel_dp_sdp_min_guardband(crtc_state, false);
>>   
>>   	if (guardband < min_sdp_guardband) {
>>   		drm_dbg_kms(display->drm, "guardband %d < min sdp guardband %d\n",
>> @@ -7483,7 +7503,7 @@ int intel_dp_compute_config_late(struct intel_encoder *encoder,
>>   
>>   	intel_psr_compute_config_late(intel_dp, crtc_state);
>>   
>> -	ret = intel_dp_sdp_compute_config_late(crtc_state);
>> +	ret = intel_dp_sdp_compute_config_late(intel_dp, crtc_state);
>>   	if (ret)
>>   		return ret;
>>   
>> -- 
>> 2.45.2

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

* Re: [PATCH 11/11] drm/i915/dp: Always enable AS SDP if supported by source + sink
  2026-05-22 15:25   ` Ville Syrjälä
@ 2026-05-23  4:29     ` Nautiyal, Ankit K
  0 siblings, 0 replies; 25+ messages in thread
From: Nautiyal, Ankit K @ 2026-05-23  4:29 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: intel-gfx, intel-xe, jouni.hogander, animesh.manna


On 5/22/2026 8:55 PM, Ville Syrjälä wrote:
> On Mon, May 18, 2026 at 09:25:01AM +0530, Ankit Nautiyal wrote:
>> Currently AS SDP is only configured when VRR is enabled. However, other
>> use cases like CMRR, Panel Replay, etc. also send information to the sink
>> via AS SDPs.
>>
>> With optimized guardband, we also need to account for wakeup time and other
>> relevant details that depend on the AS SDP position whenever AS SDP is
>> enabled. If a feature enabling AS SDP gets turned on later (after modeset),
>> the guardband might not be sufficient and may need to increase, triggering
>> a full modeset.
>>
>> To avoid this, always send AS SDP whenever:
>>   - the source and sink both support it, AND,
>>   - there is a possibility to use it for VRR and Panel Replay for
>>     synchronization.
>>
>> v2: Check if AS SDP can be used for synchronization for VRR or PR. (Ville)
>>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>> ---
>>   drivers/gpu/drm/i915/display/intel_dp.c | 6 +++++-
>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
>> index 69eb474fede7..2c1dbcb0a2ca 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -3181,7 +3181,11 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
>>   	if (drm_dp_is_branch(intel_dp->dpcd))
>>   		return false;
>>   
>> -	return crtc_state->vrr.enable;
>> +	if (intel_alpm_is_alpm_aux_less(intel_dp, crtc_state) &&
> That also includes lobf stuff in the check which we presumably don't want.


I think I will remove this check and just have intel_vrr_possible() for now.

Regards,

Ankit

>
>> +	    !intel_psr_pr_async_video_timing_supported(intel_dp))
>> +		return true;
>> +
>> +	return intel_vrr_possible(crtc_state);
>>   }
>>   
>>   static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
>> -- 
>> 2.45.2

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

* Re: [PATCH 10/11] drm/i915/dp: Compute and include coasting vtotal for AS SDP
  2026-05-18  3:55 ` [PATCH 10/11] drm/i915/dp: Compute and include coasting vtotal for AS SDP Ankit Nautiyal
@ 2026-05-23  4:34   ` Nautiyal, Ankit K
  0 siblings, 0 replies; 25+ messages in thread
From: Nautiyal, Ankit K @ 2026-05-23  4:34 UTC (permalink / raw)
  To: intel-gfx, intel-xe, Ville Syrjala; +Cc: jouni.hogander, animesh.manna


On 5/18/2026 9:25 AM, Ankit Nautiyal wrote:
> DP v2.1 allows the source to temporarily suspend Adaptive-Sync SDP
> transmission while Panel Replay is active when the sink supports
> asynchronous video timing.
>
> In such cases, the sink relies on the last transmitted AS SDP timing
> information to maintain the refresh rate. To support this behavior,
> compute and populate the coasting vtotal field in the AS SDP payload.
>
> Include coasting vtotal in AS SDP packing, unpacking, and comparison,
> and set it during late AS SDP configuration for PR with Aux-less ALPM
> when asynchronous video timing is supported.
>
> Note:
> The coasting vtotal value is fully under driver control i.e. the HW does
> not overwrite these payload bytes. HW only samples the PR_ALPM_CTL[AS SDP
> Transmission in Active Disable] bit during PR active state and reflects it
> in the AS SDP payload at the appropriate time.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>   drivers/gpu/drm/i915/display/intel_display.c |  3 ++-
>   drivers/gpu/drm/i915/display/intel_dp.c      | 19 +++++++++++++++++++
>   2 files changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 757a78c75bbf..043d1c667379 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -4889,7 +4889,8 @@ intel_compare_dp_as_sdp(const struct drm_dp_as_sdp *a,
>   		a->duration_incr_ms == b->duration_incr_ms &&
>   		a->duration_decr_ms == b->duration_decr_ms &&
>   		a->target_rr_divider == b->target_rr_divider &&
> -		a->mode == b->mode;
> +		a->mode == b->mode &&
> +		a->coasting_vtotal == b->coasting_vtotal;
>   }
>   
>   static bool
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index c1c6f394eb0b..69eb474fede7 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5181,6 +5181,9 @@ static ssize_t intel_dp_as_sdp_pack(const struct drm_dp_as_sdp *as_sdp,
>   	if (as_sdp->target_rr_divider)
>   		sdp->db[4] |= 0x20;
>   
> +	sdp->db[7] = as_sdp->coasting_vtotal & 0xFF;
> +	sdp->db[8] = (as_sdp->coasting_vtotal >> 8) & 0xFF;
> +
>   	return length;
>   }
>   
> @@ -5365,6 +5368,7 @@ int intel_dp_as_sdp_unpack(struct drm_dp_as_sdp *as_sdp,
>   	as_sdp->vtotal = (sdp->db[2] << 8) | sdp->db[1];
>   	as_sdp->target_rr = ((sdp->db[4] & 0x3) << 8) | sdp->db[3];
>   	as_sdp->target_rr_divider = sdp->db[4] & 0x20 ? true : false;
> +	as_sdp->coasting_vtotal = (sdp->db[8] << 8) | sdp->db[7];
>   
>   	return 0;
>   }
> @@ -7471,6 +7475,21 @@ void intel_dp_as_sdp_compute_config_late(struct intel_dp *intel_dp,
>   	} else {
>   		as_sdp->mode = DP_AS_SDP_AVT_FIXED_VTOTAL;
>   	}
> +
> +	/*
> +	 * For Panel Replay with Async Video Timing support, the source can
> +	 * disable sending the AS SDP during PR Active state. In that case,
> +	 * the sink needs the coasting vtotal value to maintain the refresh
> +	 * rate.
> +	 *
> +	 * #TODO:
> +	 * If we ever advertise support for coasting at other refresh targets,
> +	 * this logic could be revisited. For now, use the minimum refresh rate
> +	 * as the only safe coasting value.
> +	 */
> +	if (intel_alpm_is_alpm_aux_less(intel_dp, crtc_state) &&
> +	    intel_psr_pr_async_video_timing_supported(intel_dp))
> +		as_sdp->coasting_vtotal = crtc_state->vrr.vmax;

As suggested in previous patch, I will drop the condition and always 
populate coasting_vtotal with vrr.vmax for now.

Regards,
Ankit


>   }
>   
>   static

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

* [PATCH 03/11] drm/i915/dp: Allow AS SDP only if v2 is supported
  2026-05-25  5:22 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
@ 2026-05-25  5:22 ` Ankit Nautiyal
  0 siblings, 0 replies; 25+ messages in thread
From: Ankit Nautiyal @ 2026-05-25  5:22 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jouni.hogander, animesh.manna, Ankit Nautiyal

We do not support AS SDP version 1, so allow AS SDP only if AS SDP v2 is
supported.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 92a650a728d8..7ce45c28cc3a 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -3172,11 +3172,11 @@ static void intel_dp_compute_vsc_colorimetry(const struct intel_crtc_state *crtc
 static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
 				  struct intel_crtc_state *crtc_state)
 {
-	if (!intel_dp->as_sdp_supported)
+	if (!intel_dp->as_sdp_v2_supported)
 		return false;
 
 	/*
-	 * #TODO Implement AS SDP for DP branch device.
+	 * #TODO: Add AS SDP v1 support for PCONs (DP branch devices).
 	 */
 	if (drm_dp_is_branch(intel_dp->dpcd))
 		return false;
-- 
2.45.2


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

end of thread, other threads:[~2026-05-25  5:40 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-18  3:54 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
2026-05-18  3:54 ` [PATCH 01/11] drm/i915/psr: Add helper to get Async Video timing support in PR active Ankit Nautiyal
2026-05-22 14:06   ` Ville Syrjälä
2026-05-18  3:54 ` [PATCH 02/11] drm/i915/dp: Add member to intel_dp to store AS SDP v2 support Ankit Nautiyal
2026-05-22 14:08   ` Ville Syrjälä
2026-05-18  3:54 ` [PATCH 03/11] drm/i915/dp: Allow AS SDP only if v2 is supported Ankit Nautiyal
2026-05-22 14:10   ` Ville Syrjälä
2026-05-18  3:54 ` [PATCH 04/11] drm/i915/psr: Write the PR config DPCDs in burst mode Ankit Nautiyal
2026-05-18  3:54 ` [PATCH 05/11] drm/i915/display: Add helper for AS SDP transmission time selection Ankit Nautiyal
2026-05-18  3:54 ` [PATCH 06/11] drm/i915/psr: Program Panel Replay CONFIG3 using AS SDP transmission time Ankit Nautiyal
2026-05-18  3:54 ` [PATCH 07/11] drm/i915/dp: Set relevant Downspread Ctrl DPCD bits for PR + Auxless ALPM Ankit Nautiyal
2026-05-22 15:08   ` Ville Syrjälä
2026-05-18  3:54 ` [PATCH 08/11] drm/i915/dp: Program AS SDP DB[1:0] for PR with Link off Ankit Nautiyal
2026-05-18  3:54 ` [PATCH 09/11] drm/i915/dp: Split AS SDP computation between compute_config and compute_config_late Ankit Nautiyal
2026-05-22 15:24   ` Ville Syrjälä
2026-05-23  4:27     ` Nautiyal, Ankit K
2026-05-18  3:55 ` [PATCH 10/11] drm/i915/dp: Compute and include coasting vtotal for AS SDP Ankit Nautiyal
2026-05-23  4:34   ` Nautiyal, Ankit K
2026-05-18  3:55 ` [PATCH 11/11] drm/i915/dp: Always enable AS SDP if supported by source + sink Ankit Nautiyal
2026-05-22 15:25   ` Ville Syrjälä
2026-05-23  4:29     ` Nautiyal, Ankit K
2026-05-18  4:16 ` ✓ CI.KUnit: success for Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM (rev2) Patchwork
2026-05-18  4:54 ` ✓ Xe.CI.BAT: " Patchwork
2026-05-18  6:47 ` ✗ Xe.CI.FULL: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2026-05-25  5:22 [PATCH 00/11] Fix Adaptive-Sync SDP for PR with Link ON + Auxless-ALPM Ankit Nautiyal
2026-05-25  5:22 ` [PATCH 03/11] drm/i915/dp: Allow AS SDP only if v2 is supported Ankit Nautiyal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox