Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v7 00/20] Enable DP2.1 alpm
@ 2026-10-26  5:39 Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 01/20] drm/i915/alpm: Program zero-based LFPS half cycle duration Animesh Manna
                   ` (23 more replies)
  0 siblings, 24 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

ALPM support added on DP2.1 and xe3p will support DP2.1 alpm.
This patch series extending alpm supoort for DP2.1.

Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>

Animesh Manna (20):
  drm/i915/alpm: Program zero-based LFPS half cycle duration
  drm/dp: Add DPCD definitions for DP2.1 ALPM capability
  drm/i915/alpm: Move alpm sink capability readout into a separate
    function
  drm/i915/alpm: alpm_init() for DP2.1
  drm/i915/alpm: Enable debugfs for DP2.1
  drm/i915/alpm: Refactor Auxless wake time calculation
  drm/i915/alpm: Auxless wake time calculation for Xe3p
  drm/i915/alpm: Modify AUX_LESS_WAKE_TIME bitfield for xe3lpd
  drm/i915/alpm: table based establishment period
  drm/i915/alpm: Half LFPS cycle calculation
  drm/i915/alpm: Modify LFPS cycle count for DP ALPM
  drm/i915/alpm: Modify LFPS_CYCLE_COUNT bitfield for xe3lpd
  drm/i915/alpm: Program LTTPR count for DP 2.1 ALPM
  drm/i915/alpm: Enable MAC Transmitting LFPS for LT PHY
  drm/i915/alpm: Compute and program switch to active latency
  drm/i915/alpm: Replace is_edp() with alpm_is_possible()
  drm/i915/alpm: Disallow ALPM for UHBR link rate
  drm/i915/alpm: Compute ALPM config before PSR config
  drm/i915/alpm: Introduce has_alpm to decouple from pr/psr2/lobf
  drm/i915/dp: Enable AS SDP for DP Panel Replay with AUX-less ALPM

 drivers/gpu/drm/i915/display/intel_alpm.c     | 443 +++++++++++++++---
 drivers/gpu/drm/i915/display/intel_alpm.h     |  17 +-
 drivers/gpu/drm/i915/display/intel_cx0_phy.c  |   2 +-
 drivers/gpu/drm/i915/display/intel_ddi.c      |   5 +-
 .../drm/i915/display/intel_display_types.h    |   6 +
 drivers/gpu/drm/i915/display/intel_dp.c       |  22 +-
 .../drm/i915/display/intel_dp_link_training.c |  22 +-
 drivers/gpu/drm/i915/display/intel_lt_phy.c   |  27 ++
 drivers/gpu/drm/i915/display/intel_lt_phy.h   |   2 +
 .../gpu/drm/i915/display/intel_lt_phy_regs.h  |   3 +
 drivers/gpu/drm/i915/display/intel_psr.c      |  23 +-
 drivers/gpu/drm/i915/display/intel_psr.h      |   5 +-
 drivers/gpu/drm/i915/display/intel_psr_regs.h |  16 +-
 include/drm/display/drm_dp.h                  |   5 +-
 14 files changed, 490 insertions(+), 108 deletions(-)

-- 
2.43.0


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

* [PATCH v7 01/20] drm/i915/alpm: Program zero-based LFPS half cycle duration
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-27 15:33   ` Jani Nikula
  2026-10-26  5:39 ` [PATCH v7 02/20] drm/dp: Add DPCD definitions for DP2.1 ALPM capability Animesh Manna
                   ` (22 subsequent siblings)
  23 siblings, 1 reply; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

The LFPS Half Cycle Duration field, as well as the First and Last LFPS
Half Cycle Duration fields, in PORT_ALPM_LFPS_CTL are zero-based: per
Bspec the value programmed must be N_Symbol - 1. The number of symbols
was programmed directly, making each half cycle one symbol clock too
long.

Subtract one in the PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION,
PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION and
PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION field macros so the
programmed value matches the zero-based field encoding.

Since the fields now encode 1 to 32 symbols, update the bounds check
in _lnl_compute_aux_less_alpm_params() to accept a half cycle of 32
symbols and reject 0, which cannot be encoded.

v2: Adjust half cycle bounds check for zero-based encoding. [sashiko]

Bspec: 71632
Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c     |  3 ++-
 drivers/gpu/drm/i915/display/intel_psr_regs.h | 12 +++++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index f54b29e193ee..8542bd9c9666 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -134,7 +134,8 @@ _lnl_compute_aux_less_alpm_params(struct intel_dp *intel_dp,
 
 	if (aux_less_wake_lines > ALPM_CTL_AUX_LESS_WAKE_TIME_MASK ||
 	    silence_period > PORT_ALPM_CTL_SILENCE_PERIOD_MASK ||
-	    lfps_half_cycle > PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK)
+	    lfps_half_cycle < 1 ||
+	    lfps_half_cycle > PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK + 1)
 		return false;
 
 	if (display->params.psr_safest_params)
diff --git a/drivers/gpu/drm/i915/display/intel_psr_regs.h b/drivers/gpu/drm/i915/display/intel_psr_regs.h
index a57bc111290d..78a05387eab5 100644
--- a/drivers/gpu/drm/i915/display/intel_psr_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_psr_regs.h
@@ -335,11 +335,17 @@
 #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MASK		REG_GENMASK(27, 24)
 #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MIN		7
 #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT(val)		REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MASK, (val) - PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MIN)
+/*
+ * The LFPS half cycle duration fields (including the first and last half
+ * cycle) are zero-based, i.e. the value programmed is N_Symbol - 1.
+ *
+ * Bspec: 71632
+ */
 #define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK	REG_GENMASK(20, 16)
-#define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK, val)
+#define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK, (val) - 1)
 #define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION_MASK	REG_GENMASK(12, 8)
-#define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION_MASK, val)
+#define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION_MASK, (val) - 1)
 #define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK	REG_GENMASK(4, 0)
-#define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK, val)
+#define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK, (val) - 1)
 
 #endif /* __INTEL_PSR_REGS_H__ */
-- 
2.43.0


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

* [PATCH v7 02/20] drm/dp: Add DPCD definitions for DP2.1 ALPM capability
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 01/20] drm/i915/alpm: Program zero-based LFPS half cycle duration Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 03/20] drm/i915/alpm: Move alpm sink capability readout into a separate function Animesh Manna
                   ` (21 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

Add the LTTPR ALPM capabilities register (0xf0009) with the AUX-less
ALPM supported bit, and the total LTTPR count register (0xf000a), both
added in DP2.1. They are needed to enable DP2.1 ALPM with LTTPRs.

Extend DP_LTTPR_COMMON_CAP_SIZE from 8 to 10 so that the LTTPR ALPM
capability is read as part of the LTTPR common capabilities. This makes
drm_dp_read_lttpr_common_caps() read two more bytes for all its users,
DP_PHY_REPEATER_EQ_DONE (0xf0008) and DP_LTTPR_ALPM_CAPABILITIES
(0xf0009). The existing helpers don't use these bytes.

v2: Add DP_LTTPR_AUX_LESS_ALPM_SUPPORTED bit definition.
v3: Use drm/dp prefix and describe the DP_LTTPR_COMMON_CAP_SIZE change.

Cc: Jouni Högander <jouni.hogander@intel.com>
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 include/drm/display/drm_dp.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
index e63c7f075f54..ea8cd497b658 100644
--- a/include/drm/display/drm_dp.h
+++ b/include/drm/display/drm_dp.h
@@ -1541,6 +1541,9 @@
 /* See DP_128B132B_SUPPORTED_LINK_RATES for values */
 #define DP_PHY_REPEATER_128B132B_RATES			    0xf0007 /* 2.0 */
 #define DP_PHY_REPEATER_EQ_DONE                             0xf0008 /* 2.0 E11 */
+#define DP_LTTPR_ALPM_CAPABILITIES                          0xf0009 /* 2.1 */
+# define DP_LTTPR_AUX_LESS_ALPM_SUPPORTED                   (1 << 0)
+#define DP_TOTAL_LTTPR_CNT                                  0xf000a /* 2.1 */
 
 enum drm_dp_phy {
 	DP_PHY_DPRX,
@@ -1720,7 +1723,7 @@ enum drm_dp_phy {
 #define DP_DSC_BRANCH_CAP_SIZE		3
 #define EDP_PSR_RECEIVER_CAP_SIZE	2
 #define EDP_DISPLAY_CTL_CAP_SIZE	5
-#define DP_LTTPR_COMMON_CAP_SIZE	8
+#define DP_LTTPR_COMMON_CAP_SIZE	10
 #define DP_LTTPR_PHY_CAP_SIZE		3
 
 #define DP_SDP_AUDIO_TIMESTAMP		0x01
-- 
2.43.0


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

* [PATCH v7 03/20] drm/i915/alpm: Move alpm sink capability readout into a separate function
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 01/20] drm/i915/alpm: Program zero-based LFPS half cycle duration Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 02/20] drm/dp: Add DPCD definitions for DP2.1 ALPM capability Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 04/20] drm/i915/alpm: alpm_init() for DP2.1 Animesh Manna
                   ` (20 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

Abstract ALPM DPCD initialization into its own function.

v2:
- Improve commit description. [Suraj, Jouni]
- Handle error value of intel_alpm_init_dpcd() with an early exit
  in intel_edp_init_dpcd(). [Jouni]
v3:
- Return int and propagate the original error instead of
  flattening it to bool. [Jani]

Cc: Jouni Högander <jouni.hogander@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 14 ++++++++++++++
 drivers/gpu/drm/i915/display/intel_alpm.h |  1 +
 drivers/gpu/drm/i915/display/intel_dp.c   |  5 +----
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 8542bd9c9666..cb1d68fef198 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -43,6 +43,20 @@ bool intel_alpm_is_alpm_aux_less(struct intel_dp *intel_dp,
 		(crtc_state->has_lobf && intel_alpm_aux_less_wake_supported(intel_dp));
 }
 
+int intel_alpm_init_dpcd(struct intel_dp *intel_dp)
+{
+	u8 dpcd;
+	int ret;
+
+	ret = drm_dp_dpcd_read_byte(&intel_dp->aux, DP_RECEIVER_ALPM_CAP, &dpcd);
+	if (ret < 0)
+		return ret;
+
+	intel_dp->alpm_dpcd = dpcd;
+
+	return 0;
+}
+
 void intel_alpm_init(struct intel_dp *intel_dp)
 {
 	mutex_init(&intel_dp->alpm.lock);
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h b/drivers/gpu/drm/i915/display/intel_alpm.h
index f8f605d94f96..1cb226bc342a 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -15,6 +15,7 @@ struct intel_connector;
 struct intel_atomic_state;
 struct intel_crtc;
 
+int intel_alpm_init_dpcd(struct intel_dp *intel_dp);
 void intel_alpm_init(struct intel_dp *intel_dp);
 bool intel_alpm_compute_params(struct intel_dp *intel_dp,
 			       struct intel_crtc_state *crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index bf5e87a72108..816337efeb91 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5057,10 +5057,7 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp, struct intel_connector *connector
 	 */
 	intel_dp_init_source_oui(intel_dp);
 
-	/* Read the ALPM DPCD caps */
-	ret = drm_dp_dpcd_read_byte(&intel_dp->aux, DP_RECEIVER_ALPM_CAP,
-				    &intel_dp->alpm_dpcd);
-	if (ret < 0)
+	if (intel_alpm_init_dpcd(intel_dp))
 		return false;
 
 	/*
-- 
2.43.0


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

* [PATCH v7 04/20] drm/i915/alpm: alpm_init() for DP2.1
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (2 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 03/20] drm/i915/alpm: Move alpm sink capability readout into a separate function Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  7:11   ` sashiko-bot
  2026-10-26  5:39 ` [PATCH v7 05/20] drm/i915/alpm: Enable debugfs " Animesh Manna
                   ` (19 subsequent siblings)
  23 siblings, 1 reply; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

Initialize ALPM for DP2.1 and separate out ALPM mutex-init
from alpm-init.

v2: Separate out mutex-init. [Jani]
v3: Refactor further to avoid DISPLAY_VER check in multiple places. [Jani]
v4: Cosmetic changes. [Suraj]
v5: Reset alpm_dpcd and simplify source-supported check.
v6: Drop display-version check for eDP for backward compatible.
v7:
- Read ALPM DPCD in detect only for DP, eDP already does it. [Jouni]
- Move source-supported check into intel_alpm_init/_dpcd(). [Jouni]
- Check source support instead of sink caps in intel_alpm_disable()
  as alpm_dpcd is reset on disconnect before the CRTC is disabled.
  [Sashiko]

Cc: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 19 ++++++++++++++++++-
 drivers/gpu/drm/i915/display/intel_dp.c   |  9 ++++++---
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index cb1d68fef198..b6307862b756 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -43,11 +43,21 @@ bool intel_alpm_is_alpm_aux_less(struct intel_dp *intel_dp,
 		(crtc_state->has_lobf && intel_alpm_aux_less_wake_supported(intel_dp));
 }
 
+static bool intel_alpm_source_supported(struct intel_dp *intel_dp)
+{
+	struct intel_display *display = to_intel_display(intel_dp);
+
+	return intel_dp_is_edp(intel_dp) || DISPLAY_VER(display) >= 35;
+}
+
 int intel_alpm_init_dpcd(struct intel_dp *intel_dp)
 {
 	u8 dpcd;
 	int ret;
 
+	if (!intel_alpm_source_supported(intel_dp))
+		return 0;
+
 	ret = drm_dp_dpcd_read_byte(&intel_dp->aux, DP_RECEIVER_ALPM_CAP, &dpcd);
 	if (ret < 0)
 		return ret;
@@ -59,6 +69,9 @@ int intel_alpm_init_dpcd(struct intel_dp *intel_dp)
 
 void intel_alpm_init(struct intel_dp *intel_dp)
 {
+	if (!intel_alpm_source_supported(intel_dp))
+		return;
+
 	mutex_init(&intel_dp->alpm.lock);
 }
 
@@ -750,7 +763,11 @@ void intel_alpm_disable(struct intel_dp *intel_dp)
 	struct intel_display *display = to_intel_display(intel_dp);
 	enum transcoder cpu_transcoder = intel_dp->alpm.transcoder;
 
-	if (DISPLAY_VER(display) < 20 || !intel_dp->alpm_dpcd)
+	/*
+	 * Don't check sink ALPM caps here, they are reset on disconnect
+	 * before the CRTC is disabled.
+	 */
+	if (DISPLAY_VER(display) < 20 || !intel_alpm_source_supported(intel_dp))
 		return;
 
 	mutex_lock(&intel_dp->alpm.lock);
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 816337efeb91..c543fe551eb8 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6607,6 +6607,7 @@ intel_dp_detect(struct drm_connector *_connector,
 		connector->dp.panel_replay_caps.su_support = false;
 		connector->dp.panel_replay_caps.dsc_support =
 			INTEL_DP_PANEL_REPLAY_DSC_NOT_SUPPORTED;
+		intel_dp->alpm_dpcd = 0;
 
 		intel_dp_mst_disconnect(intel_dp);
 
@@ -6629,8 +6630,10 @@ intel_dp_detect(struct drm_connector *_connector,
 	if (ret == 1)
 		connector->base.epoch_counter++;
 
-	if (!intel_dp_is_edp(intel_dp))
+	if (!intel_dp_is_edp(intel_dp)) {
+		intel_alpm_init_dpcd(intel_dp);
 		intel_psr_init_dpcd(intel_dp, connector);
+	}
 
 	intel_dp_detect_dsc_caps(intel_dp, connector);
 
@@ -7272,8 +7275,6 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
 	 */
 	intel_hpd_enable_detection(encoder);
 
-	intel_alpm_init(intel_dp);
-
 	/* Cache DPCD and EDID for edp. */
 	has_dpcd = intel_edp_init_dpcd(intel_dp, connector);
 
@@ -7488,6 +7489,8 @@ intel_dp_init_connector(struct intel_digital_port *dig_port,
 
 	intel_psr_init(intel_dp);
 
+	intel_alpm_init(intel_dp);
+
 	return true;
 
 fail:
-- 
2.43.0


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

* [PATCH v7 05/20] drm/i915/alpm: Enable debugfs for DP2.1
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (3 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 04/20] drm/i915/alpm: alpm_init() for DP2.1 Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 06/20] drm/i915/alpm: Refactor Auxless wake time calculation Animesh Manna
                   ` (18 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

Enable ALPM debug info through lobf debug info.

As LOBF debugfs entries are now created for both DP and eDP connectors,
rename i915_edp_lobf_debug/i915_edp_lobf_info to i915_lobf_debug/
i915_lobf_info. The connector type is already part of the debugfs path.

v2: cosmetic change. [Suraj]
v3: Use common api instead of DISPLAY_VER check in multiple places. [Jani]
v4: Add display-version check as it dropped for EDP.
v5:
- Rename debugfs entries to i915_lobf_debug/i915_lobf_info. [Jouni]
- Rebase on intel_alpm_source_supported() taking intel_dp and skip
  MST connectors as they have no fixed encoder.

Cc: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 31 ++++++++++++++---------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index b6307862b756..12dc79198494 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -680,7 +680,7 @@ void intel_alpm_lobf_enable(const struct intel_crtc_state *new_crtc_state)
 	}
 }
 
-static int i915_edp_lobf_info_show(struct seq_file *m, void *data)
+static int i915_lobf_info_show(struct seq_file *m, void *data)
 {
 	struct intel_connector *connector = m->private;
 	struct intel_display *display = to_intel_display(connector);
@@ -714,10 +714,10 @@ static int i915_edp_lobf_info_show(struct seq_file *m, void *data)
 	return ret;
 }
 
-DEFINE_SHOW_ATTRIBUTE(i915_edp_lobf_info);
+DEFINE_SHOW_ATTRIBUTE(i915_lobf_info);
 
 static int
-i915_edp_lobf_debug_get(void *data, u64 *val)
+i915_lobf_debug_get(void *data, u64 *val)
 {
 	struct intel_connector *connector = data;
 	struct intel_dp *intel_dp = enc_to_intel_dp(connector->encoder);
@@ -728,7 +728,7 @@ i915_edp_lobf_debug_get(void *data, u64 *val)
 }
 
 static int
-i915_edp_lobf_debug_set(void *data, u64 val)
+i915_lobf_debug_set(void *data, u64 val)
 {
 	struct intel_connector *connector = data;
 	struct intel_dp *intel_dp = enc_to_intel_dp(connector->encoder);
@@ -738,8 +738,8 @@ i915_edp_lobf_debug_set(void *data, u64 val)
 	return 0;
 }
 
-DEFINE_SIMPLE_ATTRIBUTE(i915_edp_lobf_debug_fops,
-			i915_edp_lobf_debug_get, i915_edp_lobf_debug_set,
+DEFINE_SIMPLE_ATTRIBUTE(i915_lobf_debug_fops,
+			i915_lobf_debug_get, i915_lobf_debug_set,
 			"%llu\n");
 
 void intel_alpm_lobf_debugfs_add(struct intel_connector *connector)
@@ -747,15 +747,22 @@ void intel_alpm_lobf_debugfs_add(struct intel_connector *connector)
 	struct intel_display *display = to_intel_display(connector);
 	struct dentry *root = connector->base.debugfs_entry;
 
-	if (DISPLAY_VER(display) < 20 ||
-	    connector->base.connector_type != DRM_MODE_CONNECTOR_eDP)
+	if (DISPLAY_VER(display) < 20)
+		return;
+
+	if (connector->base.connector_type != DRM_MODE_CONNECTOR_eDP &&
+	    connector->base.connector_type != DRM_MODE_CONNECTOR_DisplayPort)
+		return;
+
+	if (connector->mst.dp ||
+	    !intel_alpm_source_supported(intel_attached_dp(connector)))
 		return;
 
-	debugfs_create_file("i915_edp_lobf_debug", 0644, root,
-			    connector, &i915_edp_lobf_debug_fops);
+	debugfs_create_file("i915_lobf_debug", 0644, root,
+			    connector, &i915_lobf_debug_fops);
 
-	debugfs_create_file("i915_edp_lobf_info", 0444, root,
-			    connector, &i915_edp_lobf_info_fops);
+	debugfs_create_file("i915_lobf_info", 0444, root,
+			    connector, &i915_lobf_info_fops);
 }
 
 void intel_alpm_disable(struct intel_dp *intel_dp)
-- 
2.43.0


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

* [PATCH v7 06/20] drm/i915/alpm: Refactor Auxless wake time calculation
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (4 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 05/20] drm/i915/alpm: Enable debugfs " Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 07/20] drm/i915/alpm: Auxless wake time calculation for Xe3p Animesh Manna
                   ` (17 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

Divide the auxless wake time calculation in parts which will
help later to add Xe3p related modification.

v2: Refactor first existing calculation. [Jani]
v3: Cosmetic changes. [Jani, Suraj]
v4: Keep num_ml_phy_lock for readability and return the
    establishment period directly. [Jouni]

Bspec: 71477
Cc: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 31 ++++++++++++++++-------
 1 file changed, 22 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 12dc79198494..ab6612b4506e 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -109,6 +109,25 @@ static int get_lfps_half_cycle_clocks(const struct intel_crtc_state *crtc_state)
 		1000 / (2 * LFPS_CYCLE_COUNT);
 }
 
+static int get_tphy2_p2_to_p0(const struct intel_crtc_state *crtc_state)
+{
+	return 12 * 1000;
+}
+
+static int get_establishment_period(const struct intel_crtc_state *crtc_state)
+{
+	int t1 = 50 * 1000;
+	int tps4 = 252;
+	/* port_clock is link rate in 10kbit/s units */
+	int tml_phy_lock = 1000 * 1000 * tps4 / crtc_state->port_clock;
+	int num_ml_phy_lock, tcds;
+
+	num_ml_phy_lock = 7 + DIV_ROUND_UP(6500, tml_phy_lock) + 1;
+	tcds = num_ml_phy_lock * tml_phy_lock;
+
+	return SILENCE_PERIOD_TIME + t1 + tcds;
+}
+
 /*
  * AUX-Less Wake Time = CEILING( ((PHY P2 to P0) + tLFPS_Period, Max+
  * tSilence, Max+ tPHY Establishment + tCDS) / tline)
@@ -130,17 +149,11 @@ static int get_lfps_half_cycle_clocks(const struct intel_crtc_state *crtc_state)
  */
 static int _lnl_compute_aux_less_wake_time(const struct intel_crtc_state *crtc_state)
 {
-	int tphy2_p2_to_p0 = 12 * 1000;
-	int t1 = 50 * 1000;
-	int tps4 = 252;
-	/* port_clock is link rate in 10kbit/s units */
-	int tml_phy_lock = 1000 * 1000 * tps4 / crtc_state->port_clock;
-	int num_ml_phy_lock = 7 + DIV_ROUND_UP(6500, tml_phy_lock) + 1;
-	int t2 = num_ml_phy_lock * tml_phy_lock;
-	int tcds = 1 * t2;
+	int tphy2_p2_to_p0 = get_tphy2_p2_to_p0(crtc_state);
+	int establishment_period = get_establishment_period(crtc_state);
 
 	return DIV_ROUND_UP(tphy2_p2_to_p0 + get_lfps_cycle_time(crtc_state) +
-			    SILENCE_PERIOD_TIME + t1 + tcds, 1000);
+			    establishment_period, 1000);
 }
 
 static int
-- 
2.43.0


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

* [PATCH v7 07/20] drm/i915/alpm: Auxless wake time calculation for Xe3p
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (5 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 06/20] drm/i915/alpm: Refactor Auxless wake time calculation Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 08/20] drm/i915/alpm: Modify AUX_LESS_WAKE_TIME bitfield for xe3lpd Animesh Manna
                   ` (16 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

Add support for auxless waketime calculation for DP2.1 ALPM
as dependent parameter got changed.

v1: Initial version.
v2: Use intel_dp_is_uhbr(). [Jani]
v3:
- Separate out switch to active latency calculation.
- Use macro definition for ML_PHY_LOCK length. [Suraj]
v4:
- Fix 32-bit signed integer overflow. [sashiko]
- Fix negative return of drm_dp_lttpr_count(). [sashiko]
- Introduce get_ml_phy_lock_len() and get_dp_link_symbol_size(). [Jouni]
- Align variable naming with bpec formula of establishment_period. [Jouni]
v5:
- Use HAS_LT_PHY() for PHY P2 to P0 latency. [Jouni]
- Use existing intel_dp_link_symbol_size() instead of a duplicate. [Jouni]
- Fix tML_PHY_LOCK comments to use Rate Div. [Jouni]
- Check drm_dp_lttpr_count() return value. [Jouni]
- Keep num_ml_phy_lock and return establishment period directly. [Jouni]

Bspec: 71477
Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 70 +++++++++++++++++++----
 1 file changed, 59 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index ab6612b4506e..b9e31c29ab96 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -109,22 +109,68 @@ static int get_lfps_half_cycle_clocks(const struct intel_crtc_state *crtc_state)
 		1000 / (2 * LFPS_CYCLE_COUNT);
 }
 
+#define ML_PHY_LOCK_LEN		252
+#define ML_PHY_LOCK_LEN_UHBR	396
+
 static int get_tphy2_p2_to_p0(const struct intel_crtc_state *crtc_state)
 {
-	return 12 * 1000;
+	struct intel_display *display = to_intel_display(crtc_state);
+
+	return HAS_LT_PHY(display) ? 20 * 1000 : 12 * 1000;
+}
+
+static int get_ml_phy_lock_len(const struct intel_crtc_state *crtc_state)
+{
+	return intel_dp_is_uhbr(crtc_state) ? ML_PHY_LOCK_LEN_UHBR : ML_PHY_LOCK_LEN;
 }
 
-static int get_establishment_period(const struct intel_crtc_state *crtc_state)
+static int get_establishment_period(struct intel_dp *intel_dp,
+				    const struct intel_crtc_state *crtc_state)
 {
+	struct intel_display *display = to_intel_display(intel_dp);
 	int t1 = 50 * 1000;
-	int tps4 = 252;
-	/* port_clock is link rate in 10kbit/s units */
-	int tml_phy_lock = 1000 * 1000 * tps4 / crtc_state->port_clock;
+	/*
+	 * port_clock is link rate in 10kbit/s units, so tML_PHY_LOCK in ns is
+	 * ML_PHY_LOCK Length * Rate Div * 100000 / port_clock
+	 */
+	int tml_phy_lock = get_ml_phy_lock_len(crtc_state) *
+		intel_dp_link_symbol_size(crtc_state->port_clock) * 100000 /
+		crtc_state->port_clock;
+	int lttpr_count = 0;
 	int num_ml_phy_lock, tcds;
 
-	num_ml_phy_lock = 7 + DIV_ROUND_UP(6500, tml_phy_lock) + 1;
+	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP)) {
+		num_ml_phy_lock = 7 + DIV_ROUND_UP(6500, tml_phy_lock) + 1;
+	} else {
+		num_ml_phy_lock = 7;
+
+		lttpr_count = drm_dp_lttpr_count(intel_dp->lttpr_common_caps);
+		if (lttpr_count < 0) {
+			drm_dbg_kms(display->drm,
+				    "Invalid LTTPR count (%pe), assuming no LTTPR\n",
+				    ERR_PTR(lttpr_count));
+			lttpr_count = 0;
+		}
+	}
+
 	tcds = num_ml_phy_lock * tml_phy_lock;
 
+	if (lttpr_count > 0) {
+		/* tlw and tcs values are taken from DP2.1 spec */
+		int tlw = 13000;
+		int tcs = 10000;
+		int tlfps_period = get_lfps_cycle_time(crtc_state);
+		int tdcs = SILENCE_PERIOD_TIME + t1 + tcs +
+			   (lttpr_count - 1) * (tlw + tlfps_period);
+		int tacds = 70000;
+		int tds = 7 * tml_phy_lock;
+
+		/* tdrl is same as tcds */
+		return tlw + tlfps_period + tdcs + tacds +
+		       (lttpr_count - 1) * tds + tcds;
+	}
+
+	/* TODO: Add a check for data realign by DPCD 0x116[3] */
 	return SILENCE_PERIOD_TIME + t1 + tcds;
 }
 
@@ -144,13 +190,15 @@ static int get_establishment_period(const struct intel_crtc_state *crtc_state)
  * adding the "+ 1" term ensures all ML_PHY_LOCK sequences that start
  * within the CDS period complete within the CDS period regardless of
  * entry into the period
- * tML_PHY_LOCK = TPS4 Length * ( 10 / (Link Rate in MHz) )
- * TPS4 Length = 252 Symbols
+ * tML_PHY_LOCK = ML_PHY_LOCK Length * ( Rate Div / (Link Rate in Mbps) )
+ * ML_PHY_LOCK Length = 252 symbols for 8b/10b, 396 super symbols for 128b/132b
+ * Rate Div = 10 for 8b/10b, 32 for 128b/132b
  */
-static int _lnl_compute_aux_less_wake_time(const struct intel_crtc_state *crtc_state)
+static int _lnl_compute_aux_less_wake_time(struct intel_dp *intel_dp,
+					   const struct intel_crtc_state *crtc_state)
 {
 	int tphy2_p2_to_p0 = get_tphy2_p2_to_p0(crtc_state);
-	int establishment_period = get_establishment_period(crtc_state);
+	int establishment_period = get_establishment_period(intel_dp, crtc_state);
 
 	return DIV_ROUND_UP(tphy2_p2_to_p0 + get_lfps_cycle_time(crtc_state) +
 			    establishment_period, 1000);
@@ -165,7 +213,7 @@ _lnl_compute_aux_less_alpm_params(struct intel_dp *intel_dp,
 		lfps_half_cycle;
 
 	aux_less_wake_time =
-		_lnl_compute_aux_less_wake_time(crtc_state);
+		_lnl_compute_aux_less_wake_time(intel_dp, crtc_state);
 	aux_less_wake_lines = intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode,
 						       aux_less_wake_time);
 	silence_period = get_silence_period_symbols(crtc_state);
-- 
2.43.0


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

* [PATCH v7 08/20] drm/i915/alpm: Modify AUX_LESS_WAKE_TIME bitfield for xe3lpd
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (6 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 07/20] drm/i915/alpm: Auxless wake time calculation for Xe3p Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 09/20] drm/i915/alpm: table based establishment period Animesh Manna
                   ` (15 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

The AUX_LESS_WAKE_TIME bitfield in ALPM_CTL is widened from 6 bits to
8 bits starting from xe3lpd (display version 35). Add the register mask
and field macro for the wider bitfield and program the wake time using
the appropriate macro based on the display version. Also use the wider
limit when validating the computed wake lines and for the safest params
fallback.

v2: Modify AUX_LESS_WAKE_TIME bitfield for xe3lpd. [Suraj]
v3: Separate out AUX_LESS_WAKE_TIME bitfield change into its own
patch. [Jouni]
v4: Use the wider bitfield limit in aux-less wake time computation
and safest params. [Jouni, sashiko]

Bspec: 71477
Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c     | 20 +++++++++++++++----
 drivers/gpu/drm/i915/display/intel_psr_regs.h |  2 ++
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index b9e31c29ab96..0083752d94f0 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -204,6 +204,12 @@ static int _lnl_compute_aux_less_wake_time(struct intel_dp *intel_dp,
 			    establishment_period, 1000);
 }
 
+static int get_aux_less_wake_lines_max(struct intel_display *display)
+{
+	return DISPLAY_VER(display) >= 35 ? ALPM_CTL_AUX_LESS_WAKE_TIME_MASK_XE3LPD :
+					    ALPM_CTL_AUX_LESS_WAKE_TIME_MASK;
+}
+
 static int
 _lnl_compute_aux_less_alpm_params(struct intel_dp *intel_dp,
 				  struct intel_crtc_state *crtc_state)
@@ -220,14 +226,14 @@ _lnl_compute_aux_less_alpm_params(struct intel_dp *intel_dp,
 
 	lfps_half_cycle = get_lfps_half_cycle_clocks(crtc_state);
 
-	if (aux_less_wake_lines > ALPM_CTL_AUX_LESS_WAKE_TIME_MASK ||
+	if (aux_less_wake_lines > get_aux_less_wake_lines_max(display) ||
 	    silence_period > PORT_ALPM_CTL_SILENCE_PERIOD_MASK ||
 	    lfps_half_cycle < 1 ||
 	    lfps_half_cycle > PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK + 1)
 		return false;
 
 	if (display->params.psr_safest_params)
-		aux_less_wake_lines = ALPM_CTL_AUX_LESS_WAKE_TIME_MASK;
+		aux_less_wake_lines = get_aux_less_wake_lines_max(display);
 
 	crtc_state->alpm_state.aux_less_wake_lines = aux_less_wake_lines;
 	crtc_state->alpm_state.silence_period_sym_clocks = silence_period;
@@ -617,10 +623,16 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
 	 * check panel support at this point.
 	 */
 	if (intel_alpm_is_alpm_aux_less(intel_dp, crtc_state)) {
+		int wake_lines = crtc_state->alpm_state.aux_less_wake_lines;
+
 		alpm_ctl = ALPM_CTL_ALPM_ENABLE |
 			ALPM_CTL_ALPM_AUX_LESS_ENABLE |
-			ALPM_CTL_AUX_LESS_SLEEP_HOLD_TIME_50_SYMBOLS |
-			ALPM_CTL_AUX_LESS_WAKE_TIME(crtc_state->alpm_state.aux_less_wake_lines);
+			ALPM_CTL_AUX_LESS_SLEEP_HOLD_TIME_50_SYMBOLS;
+
+		if (DISPLAY_VER(display) < 35)
+			alpm_ctl |= ALPM_CTL_AUX_LESS_WAKE_TIME(wake_lines);
+		else
+			alpm_ctl |= ALPM_CTL_AUX_LESS_WAKE_TIME_XE3LPD(wake_lines);
 
 		if (intel_dp->as_sdp_supported)
 			intel_alpm_configure_pr_as_sdp(intel_dp, crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_psr_regs.h b/drivers/gpu/drm/i915/display/intel_psr_regs.h
index 78a05387eab5..124aa74e1dbb 100644
--- a/drivers/gpu/drm/i915/display/intel_psr_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_psr_regs.h
@@ -301,7 +301,9 @@
 #define  ALPM_CTL_EXTENDED_FAST_WAKE_MIN_LINES		5
 #define  ALPM_CTL_EXTENDED_FAST_WAKE_TIME(lines)	REG_FIELD_PREP(ALPM_CTL_EXTENDED_FAST_WAKE_TIME_MASK, (lines) - ALPM_CTL_EXTENDED_FAST_WAKE_MIN_LINES)
 #define  ALPM_CTL_AUX_LESS_WAKE_TIME_MASK		REG_GENMASK(5, 0)
+#define  ALPM_CTL_AUX_LESS_WAKE_TIME_MASK_XE3LPD	REG_GENMASK(7, 0)
 #define  ALPM_CTL_AUX_LESS_WAKE_TIME(val)		REG_FIELD_PREP(ALPM_CTL_AUX_LESS_WAKE_TIME_MASK, val)
+#define  ALPM_CTL_AUX_LESS_WAKE_TIME_XE3LPD(val)	REG_FIELD_PREP(ALPM_CTL_AUX_LESS_WAKE_TIME_MASK_XE3LPD, val)
 
 #define _ALPM_CTL2_A	0x60954
 #define ALPM_CTL2(dev_priv, tran)	_MMIO_TRANS2(dev_priv, tran, _ALPM_CTL2_A)
-- 
2.43.0


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

* [PATCH v7 09/20] drm/i915/alpm: table based establishment period
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (7 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 08/20] drm/i915/alpm: Modify AUX_LESS_WAKE_TIME bitfield for xe3lpd Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 10/20] drm/i915/alpm: Half LFPS cycle calculation Animesh Manna
                   ` (14 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

With LTTPRs present, the establishment period calculated by the formula
is shorter than the values tabulated in the DP2.1 VESA spec by roughly
one LFPS period per LTTPR, even when max silence and LFPS periods are
used. This has been observed to cause flip done timeouts during ALPM
testing on a setup with LTTPRs.

Use the establishment period from the VESA spec table for the listed
link rates with 1 to 6 LTTPRs. Fall back to the calculated value for
link rates not in the table, LTTPR counts beyond the table and when no
LTTPR is present, where the formula already matches the spec.

v2: Add check for negative error codes from drm_dp_lttpr_count(). [sashiko]
v3:
- Explain why the spec table is used instead of the formula. [Jouni]
- Drop the no-LTTPR row as the formula matches the spec there.
- Drop link rates without tabulated values and replace the link rate
  enum and switch with a port_clock based lookup table.

Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 43 ++++++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 0083752d94f0..2bf2ca956439 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -124,6 +124,42 @@ static int get_ml_phy_lock_len(const struct intel_crtc_state *crtc_state)
 	return intel_dp_is_uhbr(crtc_state) ? ML_PHY_LOCK_LEN_UHBR : ML_PHY_LOCK_LEN;
 }
 
+/*
+ * Establishment period in ns with LTTPRs, taken from the DP2.1 VESA spec.
+ * The spec values are computed with the max silence and LFPS periods and
+ * are longer than what the formula gives with LTTPRs present. Using the
+ * formula result has been seen to cause flip done timeouts, so prefer the
+ * spec values for the listed link rates.
+ */
+static const struct {
+	int port_clock;
+	int period[6];	/* indexed by LTTPR count - 1 */
+} lttpr_establishment_periods[] = {
+	{  162000, { 155670, 181160, 206650, 232140, 257620, 283110 } },	/* RBR */
+	{  270000, { 151310, 172450, 193580, 214710, 235850, 256980 } },	/* HBR */
+	{  540000, { 148050, 165910, 183780, 201650, 219510, 237380 } },	/* HBR2 */
+	{  810000, { 146960, 163740, 180510, 197290, 214070, 230850 } },	/* HBR3 */
+	{ 1000000, { 153650, 177120, 200590, 224060, 247530, 271000 } },	/* UHBR10 */
+	{ 1350000, { 151350, 172520, 193690, 214860, 236030, 257200 } },	/* UHBR13.5 */
+	{ 2000000, { 149220, 168220, 187290, 206320, 225360, 244390 } },	/* UHBR20 */
+};
+
+static int get_lttpr_establishment_period(int port_clock, int lttpr_count)
+{
+	int i;
+
+	if (lttpr_count < 1 ||
+	    lttpr_count > ARRAY_SIZE(lttpr_establishment_periods[0].period))
+		return 0;
+
+	for (i = 0; i < ARRAY_SIZE(lttpr_establishment_periods); i++) {
+		if (lttpr_establishment_periods[i].port_clock == port_clock)
+			return lttpr_establishment_periods[i].period[lttpr_count - 1];
+	}
+
+	return 0;
+}
+
 static int get_establishment_period(struct intel_dp *intel_dp,
 				    const struct intel_crtc_state *crtc_state)
 {
@@ -137,7 +173,7 @@ static int get_establishment_period(struct intel_dp *intel_dp,
 		intel_dp_link_symbol_size(crtc_state->port_clock) * 100000 /
 		crtc_state->port_clock;
 	int lttpr_count = 0;
-	int num_ml_phy_lock, tcds;
+	int num_ml_phy_lock, tcds, period;
 
 	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP)) {
 		num_ml_phy_lock = 7 + DIV_ROUND_UP(6500, tml_phy_lock) + 1;
@@ -155,6 +191,11 @@ static int get_establishment_period(struct intel_dp *intel_dp,
 
 	tcds = num_ml_phy_lock * tml_phy_lock;
 
+	period = get_lttpr_establishment_period(crtc_state->port_clock,
+						lttpr_count);
+	if (period)
+		return period;
+
 	if (lttpr_count > 0) {
 		/* tlw and tcs values are taken from DP2.1 spec */
 		int tlw = 13000;
-- 
2.43.0


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

* [PATCH v7 10/20] drm/i915/alpm: Half LFPS cycle calculation
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (8 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 09/20] drm/i915/alpm: table based establishment period Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  7:06   ` sashiko-bot
  2026-10-26  5:39 ` [PATCH v7 11/20] drm/i915/alpm: Modify LFPS cycle count for DP ALPM Animesh Manna
                   ` (13 subsequent siblings)
  23 siblings, 1 reply; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

Add support for half LFPS cycle calculation for DP2.1 ALPM as dependent
parameters got changed.

v1: Initial version.
v2: Avoid returning early. [Jani]
v3: Use intel_crtc_has_type(). [Suraj]
v4: Split in separate function based on HAS_LT_PHY() check. [Jouni]
v5: Use lt_ prefix for the HAS_LT_PHY() specific helper. [Jouni]

Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 41 ++++++++++++++++++-----
 1 file changed, 33 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 2bf2ca956439..b6de938990dd 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -81,24 +81,49 @@ static int get_silence_period_symbols(const struct intel_crtc_state *crtc_state)
 		1000 / 1000;
 }
 
-static void get_lfps_cycle_min_max_time(const struct intel_crtc_state *crtc_state,
-					int *min, int *max)
+static void lnl_get_lfps_period_min_max_time(const struct intel_crtc_state *crtc_state,
+					     int *min, int *max)
 {
-	if (crtc_state->port_clock < 540000) {
-		*min = 65 * LFPS_CYCLE_COUNT;
-		*max = 75 * LFPS_CYCLE_COUNT;
-	} else {
+	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP)) {
+		if (crtc_state->port_clock < 540000) {
+			*min = 65 * LFPS_CYCLE_COUNT;
+			*max = 75 * LFPS_CYCLE_COUNT;
+		} else {
+			*min = 140;
+			*max = 800;
+		}
+	}
+}
+
+static void lt_get_lfps_period_min_max_time(const struct intel_crtc_state *crtc_state,
+					    int *min, int *max)
+{
+	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP)) {
 		*min = 140;
 		*max = 800;
+	} else {
+		*min = 320;
+		*max = 1600;
 	}
 }
 
+static void get_lfps_period_min_max_time(const struct intel_crtc_state *crtc_state,
+					int *min, int *max)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+
+	if (HAS_LT_PHY(display))
+		lt_get_lfps_period_min_max_time(crtc_state, min, max);
+	else
+		lnl_get_lfps_period_min_max_time(crtc_state, min, max);
+}
+
 static int get_lfps_cycle_time(const struct intel_crtc_state *crtc_state)
 {
 	int tlfps_cycle_min, tlfps_cycle_max;
 
-	get_lfps_cycle_min_max_time(crtc_state, &tlfps_cycle_min,
-				    &tlfps_cycle_max);
+	get_lfps_period_min_max_time(crtc_state, &tlfps_cycle_min,
+				     &tlfps_cycle_max);
 
 	return tlfps_cycle_min +  (tlfps_cycle_max - tlfps_cycle_min) / 2;
 }
-- 
2.43.0


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

* [PATCH v7 11/20] drm/i915/alpm: Modify LFPS cycle count for DP ALPM
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (9 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 10/20] drm/i915/alpm: Half LFPS cycle calculation Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 12/20] drm/i915/alpm: Modify LFPS_CYCLE_COUNT bitfield for xe3lpd Animesh Manna
                   ` (12 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

For DP minimum LFPS count is set to minimum 16.

Also use the link symbol clock instead of the link rate when computing
the half LFPS cycle in symbols. Both are the same for 8b/10b, which was
the only case so far with eDP, but they differ for 128b/132b.

v2:
- Drop unneeded comment. [Jouni]
- Use intel_dp_link_symbol_clock() for half LFPS cycle calculation. [Jouni]

Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index b6de938990dd..1fd528cb7fe6 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -24,7 +24,8 @@
 				(SILENCE_PERIOD_MAX_TIME -	\
 				 SILENCE_PERIOD_MIN_TIME) / 2)
 
-#define LFPS_CYCLE_COUNT 10
+#define LFPS_CYCLE_COUNT	10
+#define LFPS_CYCLE_COUNT_DP	16
 
 bool intel_alpm_aux_wake_supported(struct intel_dp *intel_dp)
 {
@@ -128,10 +129,19 @@ static int get_lfps_cycle_time(const struct intel_crtc_state *crtc_state)
 	return tlfps_cycle_min +  (tlfps_cycle_max - tlfps_cycle_min) / 2;
 }
 
+static int get_lfps_cycle_count(const struct intel_crtc_state *crtc_state)
+{
+	if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP))
+		return LFPS_CYCLE_COUNT_DP;
+
+	return LFPS_CYCLE_COUNT;
+}
+
 static int get_lfps_half_cycle_clocks(const struct intel_crtc_state *crtc_state)
 {
-	return get_lfps_cycle_time(crtc_state) * crtc_state->port_clock / 1000 /
-		1000 / (2 * LFPS_CYCLE_COUNT);
+	return get_lfps_cycle_time(crtc_state) *
+		intel_dp_link_symbol_clock(crtc_state->port_clock) / 1000 /
+		1000 / (2 * get_lfps_cycle_count(crtc_state));
 }
 
 #define ML_PHY_LOCK_LEN		252
@@ -742,7 +752,7 @@ void intel_alpm_port_configure(struct intel_dp *intel_dp,
 			PORT_ALPM_CTL_MAX_PHY_SWING_HOLD(0) |
 			PORT_ALPM_CTL_SILENCE_PERIOD(
 				crtc_state->alpm_state.silence_period_sym_clocks);
-		lfps_ctl_val = PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT(LFPS_CYCLE_COUNT) |
+		lfps_ctl_val = PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT(get_lfps_cycle_count(crtc_state)) |
 			PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(
 				crtc_state->alpm_state.lfps_half_cycle_num_of_syms) |
 			PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(
-- 
2.43.0


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

* [PATCH v7 12/20] drm/i915/alpm: Modify LFPS_CYCLE_COUNT bitfield for xe3lpd
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (10 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 11/20] drm/i915/alpm: Modify LFPS cycle count for DP ALPM Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 13/20] drm/i915/alpm: Program LTTPR count for DP 2.1 ALPM Animesh Manna
                   ` (11 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

The LFPS_CYCLE_COUNT bitfield in PORT_ALPM_LFPS_CTL is widened from
4 bits (27:24) to 7 bits (30:24) starting from xe3lpd. Add the wider
register mask and field macro, and program the cycle count using the
appropriate macro based on the display version.

v2: Split in a separate patch. [Jouni]

Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c     | 11 ++++++++++-
 drivers/gpu/drm/i915/display/intel_psr_regs.h |  2 ++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 1fd528cb7fe6..f3c0884989ce 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -747,12 +747,21 @@ void intel_alpm_port_configure(struct intel_dp *intel_dp,
 		return;
 
 	if (intel_alpm_is_alpm_aux_less(intel_dp, crtc_state)) {
+		int lfps_cycle = get_lfps_cycle_count(crtc_state);
+		u32 lfps_cycle_val;
+
+		if (DISPLAY_VER(display) >= 35)
+			lfps_cycle_val = PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_XE3LPD(lfps_cycle);
+		else
+			lfps_cycle_val = PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT(lfps_cycle);
+
 		alpm_ctl_val = PORT_ALPM_CTL_ALPM_AUX_LESS_ENABLE |
 			PORT_ALPM_CTL_MAX_PHY_SWING_SETUP(15) |
 			PORT_ALPM_CTL_MAX_PHY_SWING_HOLD(0) |
 			PORT_ALPM_CTL_SILENCE_PERIOD(
 				crtc_state->alpm_state.silence_period_sym_clocks);
-		lfps_ctl_val = PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT(get_lfps_cycle_count(crtc_state)) |
+
+		lfps_ctl_val = lfps_cycle_val |
 			PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(
 				crtc_state->alpm_state.lfps_half_cycle_num_of_syms) |
 			PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(
diff --git a/drivers/gpu/drm/i915/display/intel_psr_regs.h b/drivers/gpu/drm/i915/display/intel_psr_regs.h
index 124aa74e1dbb..aee4f2592302 100644
--- a/drivers/gpu/drm/i915/display/intel_psr_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_psr_regs.h
@@ -335,8 +335,10 @@
 #define PORT_ALPM_LFPS_CTL(port)				_MMIO_PORT(port, _PORT_ALPM_LFPS_CTL_A, _PORT_ALPM_LFPS_CTL_B)
 #define  PORT_ALPM_LFPS_CTL_LFPS_START_POLARITY			REG_BIT(31)
 #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MASK		REG_GENMASK(27, 24)
+#define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MASK_XE3LPD	REG_GENMASK(30, 24)
 #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MIN		7
 #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT(val)		REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MASK, (val) - PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MIN)
+#define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_XE3LPD(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MASK_XE3LPD, (val) - PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MIN)
 /*
  * The LFPS half cycle duration fields (including the first and last half
  * cycle) are zero-based, i.e. the value programmed is N_Symbol - 1.
-- 
2.43.0


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

* [PATCH v7 13/20] drm/i915/alpm: Program LTTPR count for DP 2.1 ALPM
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (11 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 12/20] drm/i915/alpm: Modify LFPS_CYCLE_COUNT bitfield for xe3lpd Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 14/20] drm/i915/alpm: Enable MAC Transmitting LFPS for LT PHY Animesh Manna
                   ` (10 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

Issue a AUX write transaction to DPCD DP_TOTAL_LTTPR_CNT (0xf000a)
with total number of LTTPR before link training.

v2: Cosmetic changes. [Suraj]
v3:
- Use same encoding format for lttpr_count. [Jouni]
- Avoid reading alpm_ctl2 register. [Jouni]
v4:
- Program DP_TOTAL_LTTPR_CNT only for DP, not eDP. [Jouni, sashiko]
- Drop redundant lttpr_count check. [Jouni, sashiko]
- Check drm_dp_lttpr_count() return value before programming
  ALPM_CTL2. [Jouni, sashiko]
- Fix LTTPR revision check to match the comment. [sashiko]
- Use drm_dp_dpcd_write_byte(). [Jani]

Cc: Jouni Högander <jouni.hogander@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c     | 10 +++++++++-
 .../drm/i915/display/intel_dp_link_training.c | 20 +++++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index f3c0884989ce..831dfa5e677b 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -687,7 +687,8 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
 {
 	struct intel_display *display = to_intel_display(intel_dp);
 	enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
-	u32 alpm_ctl;
+	u32 alpm_ctl, alpm_ctl2;
+	int lttpr_count;
 
 	if (DISPLAY_VER(display) < 20 || (!intel_psr_needs_alpm(intel_dp, crtc_state) &&
 					  !crtc_state->has_lobf))
@@ -725,6 +726,13 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
 
 	alpm_ctl |= ALPM_CTL_ALPM_ENTRY_CHECK(crtc_state->alpm_state.check_entry_lines);
 
+	lttpr_count = drm_dp_lttpr_count(intel_dp->lttpr_common_caps);
+	if (lttpr_count < 0)
+		lttpr_count = 0;
+
+	alpm_ctl2 = ALPM_CTL2_NUMBER_OF_LTTPR(lttpr_count);
+
+	intel_de_write(display, ALPM_CTL2(display, cpu_transcoder), alpm_ctl2);
 	intel_de_write(display, ALPM_CTL(display, cpu_transcoder), alpm_ctl);
 	mutex_unlock(&intel_dp->alpm.lock);
 }
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 ac1aff6edf05..0dbc6174c402 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -2271,6 +2271,24 @@ intel_dp_128b132b_link_train(struct intel_dp *intel_dp,
 	return passed;
 }
 
+static void intel_dp_update_lttpr_count(struct intel_dp *intel_dp)
+{
+	u8 val;
+
+	/*
+	 * Program only for DP and return if LTTPR revision is less than 0x20
+	 * where 0:3 represents minor rev and 4:7 represent major rev
+	 */
+	if (intel_dp_is_edp(intel_dp) ||
+	    intel_dp->lttpr_common_caps[0] < 0x20)
+		return;
+
+	val = intel_dp->lttpr_common_caps[DP_PHY_REPEATER_CNT -
+					  DP_LT_TUNABLE_PHY_REPEATER_FIELD_DATA_STRUCTURE_REV];
+	if (drm_dp_dpcd_write_byte(&intel_dp->aux, DP_TOTAL_LTTPR_CNT, val) < 0)
+		lt_dbg(intel_dp, DP_PHY_DPRX, "Failed to write total LTTPR count\n");
+}
+
 /**
  * intel_dp_start_link_train - start link training
  * @state: Atomic state
@@ -2310,6 +2328,8 @@ void intel_dp_start_link_train(struct intel_atomic_state *state,
 
 	intel_dp_prepare_link_train(intel_dp, crtc_state);
 
+	intel_dp_update_lttpr_count(intel_dp);
+
 	if (intel_dp_is_uhbr(crtc_state))
 		passed = intel_dp_128b132b_link_train(intel_dp, crtc_state, lttpr_count);
 	else
-- 
2.43.0


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

* [PATCH v7 14/20] drm/i915/alpm: Enable MAC Transmitting LFPS for LT PHY
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (12 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 13/20] drm/i915/alpm: Program LTTPR count for DP 2.1 ALPM Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 15/20] drm/i915/alpm: Compute and program switch to active latency Animesh Manna
                   ` (9 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

Enable MAC to transmit LFPS via LT PHY during aux-less alpm.

v2:
- Correct commit description. [Suraj]
- Remove loop as no dependency on the transmitter LT_PHY_CMN_CTL0. [Suraj]
v3: Cosmetic changes. [Suraj]
v4:
- Add Bspec reference. [Jouni]
- Rename intel_xe3plpd_mac_transmit_lfps() to
  intel_lt_mac_transmit_lfps(). [Jouni]
- Rename LT_PHY_CMN_LFPS_ENABLE to LT_PHY_CMN_MAC_TRANSMIT_LFPS to
  follow Bspec. [Jouni]

Bspec: 74500
Cc: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_ddi.c      |  5 +++-
 drivers/gpu/drm/i915/display/intel_lt_phy.c   | 27 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_lt_phy.h   |  2 ++
 .../gpu/drm/i915/display/intel_lt_phy_regs.h  |  3 +++
 4 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index a46ab5d3d70f..6a196df2691e 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3808,7 +3808,10 @@ static void mtl_ddi_prepare_link_retrain(struct intel_dp *intel_dp,
 	 *     ii. Enable MAC Transmits LFPS in the "PHY Common Control 0" PIPE
 	 *         register
 	 */
-	intel_lnl_mac_transmit_lfps(encoder, crtc_state);
+	if (HAS_LT_PHY(display))
+		intel_lt_mac_transmit_lfps(encoder, crtc_state);
+	else
+		intel_lnl_mac_transmit_lfps(encoder, crtc_state);
 }
 
 static void intel_ddi_prepare_link_retrain(struct intel_dp *intel_dp,
diff --git a/drivers/gpu/drm/i915/display/intel_lt_phy.c b/drivers/gpu/drm/i915/display/intel_lt_phy.c
index 86492651b01d..5b26957d7fb9 100644
--- a/drivers/gpu/drm/i915/display/intel_lt_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_lt_phy.c
@@ -5,6 +5,7 @@
 
 #include <drm/drm_print.h>
 
+#include "intel_alpm.h"
 #include "intel_cx0_phy.h"
 #include "intel_cx0_phy_regs.h"
 #include "intel_ddi.h"
@@ -2357,3 +2358,29 @@ void intel_lt_phy_verify_plls(struct intel_display *display)
 	intel_lt_phy_pll_verify_tables(display, xe3plpd_lt_edp_tables);
 	intel_lt_phy_pll_verify_tables(display, xe3plpd_lt_hdmi_tables);
 }
+
+/*
+ * According to HAS we need to enable MAC Transmitting LFPS in the "PHY Common
+ * Control 0" PIPE register in case of AUX Less ALPM is going to be used. This
+ * function is doing that and is called by link retrain sequence.
+ */
+void intel_lt_mac_transmit_lfps(struct intel_encoder *encoder,
+				const struct intel_crtc_state *crtc_state)
+{
+	struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
+	struct ref_tracker *wakeref;
+	u8 owned_lane_mask;
+
+	if (!intel_alpm_is_alpm_aux_less(intel_dp, crtc_state))
+		return;
+
+	wakeref = intel_lt_phy_transaction_begin(encoder);
+
+	owned_lane_mask = intel_lt_phy_get_owned_lane_mask(encoder);
+
+	intel_lt_phy_rmw(encoder, owned_lane_mask, LT_PHY_CMN_CTL_0,
+			 LT_PHY_CMN_MAC_TRANSMIT_LFPS,
+			 LT_PHY_CMN_MAC_TRANSMIT_LFPS, MB_WRITE_COMMITTED);
+
+	intel_lt_phy_transaction_end(encoder, wakeref);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_lt_phy.h b/drivers/gpu/drm/i915/display/intel_lt_phy.h
index 16de39484779..1c3e9e200749 100644
--- a/drivers/gpu/drm/i915/display/intel_lt_phy.h
+++ b/drivers/gpu/drm/i915/display/intel_lt_phy.h
@@ -49,5 +49,7 @@ void intel_xe3plpd_pll_enable(struct intel_encoder *encoder,
 			      const struct intel_dpll_hw_state *dpll_hw_state);
 void intel_xe3plpd_pll_disable(struct intel_encoder *encoder);
 void intel_lt_phy_verify_plls(struct intel_display *display);
+void intel_lt_mac_transmit_lfps(struct intel_encoder *encoder,
+				const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_LT_PHY_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_lt_phy_regs.h b/drivers/gpu/drm/i915/display/intel_lt_phy_regs.h
index ff6d7829dbb9..a48da8315413 100644
--- a/drivers/gpu/drm/i915/display/intel_lt_phy_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_lt_phy_regs.h
@@ -35,6 +35,9 @@
 #define LT_PHY_TXY_CTL10_MAC(idx)	_MMIO(LT_PHY_TXY_CTL10(idx))
 #define  LT_PHY_TX_LANE_ENABLE		REG_BIT8(0)
 
+#define LT_PHY_CMN_CTL_0		(0x800)
+#define  LT_PHY_CMN_MAC_TRANSMIT_LFPS	REG_BIT8(1)
+
 /* LT Phy Vendor Register */
 #define LT_PHY_VDR_0_CONFIG	0xC02
 #define  LT_PHY_VDR_DP_PLL_ENABLE	REG_BIT(7)
-- 
2.43.0


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

* [PATCH v7 15/20] drm/i915/alpm: Compute and program switch to active latency
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (13 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 14/20] drm/i915/alpm: Enable MAC Transmitting LFPS for LT PHY Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 16/20] drm/i915/alpm: Replace is_edp() with alpm_is_possible() Animesh Manna
                   ` (8 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

Program the ALPM switch to active latency into ALPM_CTL2. For UHBR link
rates the latency is derived from the link symbol clock and converted to
scanlines, for non-UHBR rates it is zero.

v2: Use macro instead of magic number wherever possible. [Jouni]
v3:
- Use intel_dp_link_symbol_clock(). [Jouni]
- Fix switch to active time which was 32 times too long as the symbol
  clock already accounts for the 32 bits per symbol. [sashiko]
- Round the switch to active time up to microseconds. [sashiko]
- Check the switch to active latency fits into ALPM_CTL2. [sashiko]

Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c     | 35 +++++++++++++++++--
 .../drm/i915/display/intel_display_types.h    |  1 +
 2 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 831dfa5e677b..4e761022485d 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -250,6 +250,31 @@ static int get_establishment_period(struct intel_dp *intel_dp,
 	return SILENCE_PERIOD_TIME + t1 + tcds;
 }
 
+static int get_switch_to_active(const struct intel_crtc_state *crtc_state)
+{
+	int switch_to_active;
+
+	if (intel_dp_is_uhbr(crtc_state)) {
+		/* link symbol clock (fLink / 32) in kHz */
+		int symbol_clock = intel_dp_link_symbol_clock(crtc_state->port_clock);
+
+		/*
+		 * tSwitch to Active = 32 * (ML_PHY_LOCK Length + 3 + 64) / fLink
+		 *		     = (ML_PHY_LOCK Length + 3 + 64) / symbol clock
+		 *
+		 * The "+ 3" term is the trailing zero padding after the
+		 * POST_LT_SCRAMBLER_RESET, the "+ 64" term represents the MTP
+		 * time slots. The result is rounded up to microseconds.
+		 */
+		switch_to_active = DIV_ROUND_UP((ML_PHY_LOCK_LEN_UHBR + 3 + 64) * 1000,
+						symbol_clock);
+	} else {
+		switch_to_active = 0;
+	}
+
+	return switch_to_active;
+}
+
 /*
  * AUX-Less Wake Time = CEILING( ((PHY P2 to P0) + tLFPS_Period, Max+
  * tSilence, Max+ tPHY Establishment + tCDS) / tline)
@@ -292,7 +317,7 @@ _lnl_compute_aux_less_alpm_params(struct intel_dp *intel_dp,
 {
 	struct intel_display *display = to_intel_display(intel_dp);
 	int aux_less_wake_time, aux_less_wake_lines, silence_period,
-		lfps_half_cycle;
+		lfps_half_cycle, switch_to_active_lines;
 
 	aux_less_wake_time =
 		_lnl_compute_aux_less_wake_time(intel_dp, crtc_state);
@@ -302,10 +327,14 @@ _lnl_compute_aux_less_alpm_params(struct intel_dp *intel_dp,
 
 	lfps_half_cycle = get_lfps_half_cycle_clocks(crtc_state);
 
+	switch_to_active_lines = intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode,
+							  get_switch_to_active(crtc_state));
+
 	if (aux_less_wake_lines > get_aux_less_wake_lines_max(display) ||
 	    silence_period > PORT_ALPM_CTL_SILENCE_PERIOD_MASK ||
 	    lfps_half_cycle < 1 ||
-	    lfps_half_cycle > PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK + 1)
+	    lfps_half_cycle > PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK + 1 ||
+	    switch_to_active_lines > REG_FIELD_MAX(ALPM_CTL2_SWITCH_TO_ACTIVE_LATENCY_MASK))
 		return false;
 
 	if (display->params.psr_safest_params)
@@ -314,6 +343,7 @@ _lnl_compute_aux_less_alpm_params(struct intel_dp *intel_dp,
 	crtc_state->alpm_state.aux_less_wake_lines = aux_less_wake_lines;
 	crtc_state->alpm_state.silence_period_sym_clocks = silence_period;
 	crtc_state->alpm_state.lfps_half_cycle_num_of_syms = lfps_half_cycle;
+	crtc_state->alpm_state.switch_to_active = switch_to_active_lines;
 
 	return true;
 }
@@ -731,6 +761,7 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
 		lttpr_count = 0;
 
 	alpm_ctl2 = ALPM_CTL2_NUMBER_OF_LTTPR(lttpr_count);
+	alpm_ctl2 |= ALPM_CTL2_SWITCH_TO_ACTIVE_LATENCY(crtc_state->alpm_state.switch_to_active);
 
 	intel_de_write(display, ALPM_CTL2(display, cpu_transcoder), alpm_ctl2);
 	intel_de_write(display, ALPM_CTL(display, cpu_transcoder), alpm_ctl);
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index d0748837ce97..82a63a2e7fa3 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1469,6 +1469,7 @@ struct intel_crtc_state {
 		u8 aux_less_wake_lines;
 		u8 silence_period_sym_clocks;
 		u8 lfps_half_cycle_num_of_syms;
+		int switch_to_active;
 	} alpm_state;
 
 	/* to track changes in plane color blocks */
-- 
2.43.0


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

* [PATCH v7 16/20] drm/i915/alpm: Replace is_edp() with alpm_is_possible()
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (14 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 15/20] drm/i915/alpm: Compute and program switch to active latency Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  7:16   ` sashiko-bot
  2026-10-26  5:39 ` [PATCH v7 17/20] drm/i915/alpm: Disallow ALPM for UHBR link rate Animesh Manna
                   ` (7 subsequent siblings)
  23 siblings, 1 reply; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

Add a separate alpm_is_possible() which will check for alpm
capability from dpcd info.

ALPM is possible if the sink supports AUX-wake or AUX-less ALPM. With
LTTPRs present only AUX-less ALPM is possible, so both the sink and the
LTTPRs must support AUX-less ALPM.

LOBF enable/disable are only called based on has_lobf in the crtc state,
which is computed using alpm_is_possible(), so drop the capability check
from there. This also avoids leaving ALPM_CTL enabled on hot-unplug, as
the sink capabilities are reset before LOBF is disabled.

v2: Drop DISPLAY_VER() check as intel_alpm_source_supported
already checking and populating dpcd info. [Jouni]
v3:
- Check ALPM capability bits of sink and LTTPR. [sashiko]
- Drop alpm_is_possible() check from LOBF enable/disable. [Jouni, sashiko]

Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 30 +++++++++++++++++------
 drivers/gpu/drm/i915/display/intel_alpm.h |  1 +
 2 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 4e761022485d..205f1ae10d43 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -76,6 +76,25 @@ void intel_alpm_init(struct intel_dp *intel_dp)
 	mutex_init(&intel_dp->alpm.lock);
 }
 
+bool intel_alpm_is_possible(struct intel_dp *intel_dp)
+{
+	u8 lttpr_alpm_caps;
+
+	if (!(intel_dp->alpm_dpcd & (DP_ALPM_CAP | DP_ALPM_AUX_LESS_CAP)))
+		return false;
+
+	if (drm_dp_lttpr_count(intel_dp->lttpr_common_caps) <= 0)
+		return true;
+
+	/* With LTTPRs only AUX-less ALPM is possible and LTTPRs must support it */
+	lttpr_alpm_caps =
+		intel_dp->lttpr_common_caps[DP_LTTPR_ALPM_CAPABILITIES -
+					    DP_LT_TUNABLE_PHY_REPEATER_FIELD_DATA_STRUCTURE_REV];
+
+	return intel_alpm_aux_less_wake_supported(intel_dp) &&
+	       lttpr_alpm_caps & DP_LTTPR_AUX_LESS_ALPM_SUPPORTED;
+}
+
 static int get_silence_period_symbols(const struct intel_crtc_state *crtc_state)
 {
 	return SILENCE_PERIOD_TIME * intel_dp_link_symbol_clock(crtc_state->port_clock) /
@@ -537,7 +556,7 @@ void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
 	if (intel_dp->alpm.sink_alpm_error)
 		return;
 
-	if (!intel_dp_is_edp(intel_dp))
+	if (!intel_alpm_is_possible(intel_dp))
 		return;
 
 	if (DISPLAY_VER(display) < 20)
@@ -829,9 +848,6 @@ void intel_alpm_lobf_disable(const struct intel_crtc_state *new_crtc_state)
 
 		intel_dp = enc_to_intel_dp(encoder);
 
-		if (!intel_dp_is_edp(intel_dp))
-			continue;
-
 		mutex_lock(&intel_dp->alpm.lock);
 		intel_de_write(display, ALPM_CTL(display, cpu_transcoder), 0);
 		drm_dbg_kms(display->drm, "Link off between frames (LOBF) disabled\n");
@@ -870,10 +886,8 @@ void intel_alpm_lobf_enable(const struct intel_crtc_state *new_crtc_state)
 
 		intel_dp = enc_to_intel_dp(encoder);
 
-		if (intel_dp_is_edp(intel_dp)) {
-			intel_alpm_enable_sink(intel_dp, new_crtc_state);
-			intel_alpm_configure(intel_dp, new_crtc_state);
-		}
+		intel_alpm_enable_sink(intel_dp, new_crtc_state);
+		intel_alpm_configure(intel_dp, new_crtc_state);
 	}
 }
 
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h b/drivers/gpu/drm/i915/display/intel_alpm.h
index 1cb226bc342a..9319572c221e 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -17,6 +17,7 @@ struct intel_crtc;
 
 int intel_alpm_init_dpcd(struct intel_dp *intel_dp);
 void intel_alpm_init(struct intel_dp *intel_dp);
+bool intel_alpm_is_possible(struct intel_dp *intel_dp);
 bool intel_alpm_compute_params(struct intel_dp *intel_dp,
 			       struct intel_crtc_state *crtc_state);
 void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
-- 
2.43.0


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

* [PATCH v7 17/20] drm/i915/alpm: Disallow ALPM for UHBR link rate
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (15 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 16/20] drm/i915/alpm: Replace is_edp() with alpm_is_possible() Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 18/20] drm/i915/alpm: Compute ALPM config before PSR config Animesh Manna
                   ` (6 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

DP2.1 ALPM is not supported on UHBR (128b/132b) link rates on the NVL
platform. Report ALPM as not possible in intel_alpm_is_possible() for
external DP running at a UHBR rate on display version 35, so that ALPM
and the features relying on it are not enabled in that case. eDP is
excluded so eDP ALPM keeps working at any link rate.

v2:
- Move the check into intel_alpm_is_possible(). [Jouni]

Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 11 +++++++++--
 drivers/gpu/drm/i915/display/intel_alpm.h |  3 ++-
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 205f1ae10d43..3123296df6b2 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -76,13 +76,20 @@ void intel_alpm_init(struct intel_dp *intel_dp)
 	mutex_init(&intel_dp->alpm.lock);
 }
 
-bool intel_alpm_is_possible(struct intel_dp *intel_dp)
+bool intel_alpm_is_possible(struct intel_dp *intel_dp,
+			    const struct intel_crtc_state *crtc_state)
 {
+	struct intel_display *display = to_intel_display(intel_dp);
 	u8 lttpr_alpm_caps;
 
 	if (!(intel_dp->alpm_dpcd & (DP_ALPM_CAP | DP_ALPM_AUX_LESS_CAP)))
 		return false;
 
+	/* DP2.1 ALPM is not supported on UHBR (128b/132b) link rates on NVL. */
+	if (DISPLAY_VER(display) == 35 && !intel_dp_is_edp(intel_dp) &&
+	    intel_dp_is_uhbr(crtc_state))
+		return false;
+
 	if (drm_dp_lttpr_count(intel_dp->lttpr_common_caps) <= 0)
 		return true;
 
@@ -556,7 +563,7 @@ void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
 	if (intel_dp->alpm.sink_alpm_error)
 		return;
 
-	if (!intel_alpm_is_possible(intel_dp))
+	if (!intel_alpm_is_possible(intel_dp, crtc_state))
 		return;
 
 	if (DISPLAY_VER(display) < 20)
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h b/drivers/gpu/drm/i915/display/intel_alpm.h
index 9319572c221e..24c319bc5eff 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -17,7 +17,8 @@ struct intel_crtc;
 
 int intel_alpm_init_dpcd(struct intel_dp *intel_dp);
 void intel_alpm_init(struct intel_dp *intel_dp);
-bool intel_alpm_is_possible(struct intel_dp *intel_dp);
+bool intel_alpm_is_possible(struct intel_dp *intel_dp,
+			    const struct intel_crtc_state *crtc_state);
 bool intel_alpm_compute_params(struct intel_dp *intel_dp,
 			       struct intel_crtc_state *crtc_state);
 void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
-- 
2.43.0


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

* [PATCH v7 18/20] drm/i915/alpm: Compute ALPM config before PSR config
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (16 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 17/20] drm/i915/alpm: Disallow ALPM for UHBR link rate Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:39 ` [PATCH v7 19/20] drm/i915/alpm: Introduce has_alpm to decouple from pr/psr2/lobf Animesh Manna
                   ` (5 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

The ALPM params are computed by alpm_config_valid() while computing the
PSR config and again by intel_alpm_lobf_compute_config() for LOBF.

Add intel_alpm_compute_config() which computes the ALPM params once
before the PSR config and records whether AUX wake and AUX-less ALPM
are possible in alpm_state.aux_wake_possible and
alpm_state.aux_less_possible. Do the LOBF compute from there as well.
alpm_config_valid() now uses these flags to choose between PSR, PSR2
and Panel Replay.

No functional change intended.

Suggested-by: Jouni Högander <jouni.hogander@intel.com>
Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c     | 33 +++++++++++++++----
 drivers/gpu/drm/i915/display/intel_alpm.h     |  6 +---
 .../drm/i915/display/intel_display_types.h    |  4 +++
 drivers/gpu/drm/i915/display/intel_dp.c       |  2 +-
 drivers/gpu/drm/i915/display/intel_psr.c      |  8 +++--
 5 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 3123296df6b2..65d06e8ebbe0 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -426,8 +426,8 @@ static int io_buffer_wake_time(const struct intel_crtc_state *crtc_state)
 		return skl_io_buffer_wake_time();
 }
 
-bool intel_alpm_compute_params(struct intel_dp *intel_dp,
-			       struct intel_crtc_state *crtc_state)
+static bool intel_alpm_compute_params(struct intel_dp *intel_dp,
+				      struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(intel_dp);
 	int io_wake_lines, io_wake_time, fast_wake_lines, fast_wake_time;
@@ -549,9 +549,8 @@ void intel_alpm_lobf_compute_config_late(struct intel_dp *intel_dp,
 			       (first_sdp_position + waketime_in_lines);
 }
 
-void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
-				    struct intel_crtc_state *crtc_state,
-				    struct drm_connector_state *conn_state)
+static void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
+					   struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(intel_dp);
 
@@ -579,10 +578,32 @@ void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
 	      intel_alpm_aux_less_wake_supported(intel_dp)))
 		return;
 
+	crtc_state->has_lobf = true;
+}
+
+/*
+ * Compute the ALPM params and whether AUX wake / AUX-less ALPM is possible for
+ * the mode and the sink. PSR and Panel Replay use these to choose the feature.
+ */
+void intel_alpm_compute_config(struct intel_dp *intel_dp,
+			       struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(intel_dp);
+
+	if (!intel_dp_is_edp(intel_dp) && !intel_alpm_is_possible(intel_dp, crtc_state))
+		return;
+
 	if (!intel_alpm_compute_params(intel_dp, crtc_state))
 		return;
 
-	crtc_state->has_lobf = true;
+	crtc_state->alpm_state.aux_wake_possible = true;
+	crtc_state->alpm_state.aux_less_possible =
+		DISPLAY_VER(display) >= 20 &&
+		(intel_dp_is_edp(intel_dp) ||
+		 (intel_alpm_is_possible(intel_dp, crtc_state) &&
+		  intel_alpm_aux_less_wake_supported(intel_dp)));
+
+	intel_alpm_lobf_compute_config(intel_dp, crtc_state);
 }
 
 static u32 get_pr_alpm_as_sdp_transmission_time(const struct intel_crtc_state *crtc_state)
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h b/drivers/gpu/drm/i915/display/intel_alpm.h
index 24c319bc5eff..be9b4d761c13 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -10,7 +10,6 @@
 
 struct intel_dp;
 struct intel_crtc_state;
-struct drm_connector_state;
 struct intel_connector;
 struct intel_atomic_state;
 struct intel_crtc;
@@ -19,11 +18,8 @@ int intel_alpm_init_dpcd(struct intel_dp *intel_dp);
 void intel_alpm_init(struct intel_dp *intel_dp);
 bool intel_alpm_is_possible(struct intel_dp *intel_dp,
 			    const struct intel_crtc_state *crtc_state);
-bool intel_alpm_compute_params(struct intel_dp *intel_dp,
+void intel_alpm_compute_config(struct intel_dp *intel_dp,
 			       struct intel_crtc_state *crtc_state);
-void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
-				    struct intel_crtc_state *crtc_state,
-				    struct drm_connector_state *conn_state);
 void intel_alpm_configure(struct intel_dp *intel_dp,
 			  const struct intel_crtc_state *crtc_state);
 void intel_alpm_enable_sink(struct intel_dp *intel_dp,
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 82a63a2e7fa3..ce7dc3375f2e 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1470,6 +1470,10 @@ struct intel_crtc_state {
 		u8 silence_period_sym_clocks;
 		u8 lfps_half_cycle_num_of_syms;
 		int switch_to_active;
+
+		/* ALPM params are valid for the mode and the sink */
+		bool aux_wake_possible;
+		bool aux_less_possible;
 	} alpm_state;
 
 	/* to track changes in plane color blocks */
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index c543fe551eb8..7827de39e826 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -3822,9 +3822,9 @@ intel_dp_compute_config(struct intel_atomic_state *state,
 		pipe_config->dp_m_n.data_m *= pipe_config->splitter.link_count;
 
 	intel_vrr_compute_config(pipe_config, conn_state);
+	intel_alpm_compute_config(intel_dp, pipe_config);
 	intel_psr_compute_config(intel_dp, pipe_config, conn_state);
 	intel_dp_compute_as_sdp(intel_dp, pipe_config);
-	intel_alpm_lobf_compute_config(intel_dp, pipe_config, conn_state);
 	intel_dp_drrs_compute_config(connector, pipe_config, link_bpp_x16);
 	intel_dp_compute_vsc_sdp(intel_dp, pipe_config, conn_state);
 	intel_dp_compute_hdr_metadata_infoframe_sdp(intel_dp, pipe_config, conn_state);
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 4ae47d33096a..c00ec3f64202 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1462,16 +1462,18 @@ static bool wake_lines_fit_into_vblank(struct intel_dp *intel_dp,
 }
 
 static bool alpm_config_valid(struct intel_dp *intel_dp,
-			      struct intel_crtc_state *crtc_state,
+			      const struct intel_crtc_state *crtc_state,
 			      bool aux_less,
 			      bool needs_panel_replay,
 			      bool needs_sel_update)
 {
 	struct intel_display *display = to_intel_display(intel_dp);
+	bool alpm_possible = aux_less ? crtc_state->alpm_state.aux_less_possible :
+					crtc_state->alpm_state.aux_wake_possible;
 
-	if (!intel_alpm_compute_params(intel_dp, crtc_state)) {
+	if (!alpm_possible) {
 		drm_dbg_kms(display->drm,
-			    "PSR2/Panel Replay  not enabled, Unable to use long enough wake times\n");
+			    "PSR2/Panel Replay not enabled, ALPM not possible\n");
 		return false;
 	}
 
-- 
2.43.0


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

* [PATCH v7 19/20] drm/i915/alpm: Introduce has_alpm to decouple from pr/psr2/lobf
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (17 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 18/20] drm/i915/alpm: Compute ALPM config before PSR config Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  7:23   ` sashiko-bot
  2026-10-26  5:39 ` [PATCH v7 20/20] drm/i915/dp: Enable AS SDP for DP Panel Replay with AUX-less ALPM Animesh Manna
                   ` (4 subsequent siblings)
  23 siblings, 1 reply; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

For DP2.1, ALPM (Advanced Link Power Management) is optional: Panel
Replay can be supported without ALPM. Until now ALPM enablement was
derived implicitly from other features - eDP Panel Replay and PSR2
always implied ALPM (intel_psr_needs_alpm()), while LOBF was tracked
separately via has_lobf - so this scattered, feature-coupled logic
cannot express "Panel Replay without ALPM".

Introduce a single crtc_state->has_alpm flag as the source of truth for
whether ALPM is enabled. It is set in one place, in the new
intel_alpm_compute_config_late(), once the final PSR, Panel Replay and
LOBF state is known:

 - eDP Panel Replay and PSR2 always use ALPM.
 - DP Panel Replay uses ALPM only if AUX-less ALPM is possible and its
   wake time fits, otherwise Panel Replay is used without ALPM.
 - Otherwise ALPM follows LOBF.

intel_alpm_compute_config_late() also does the late LOBF checks that
intel_alpm_lobf_compute_config_late() did before.

Use has_alpm in the ALPM configure and sink enable paths, and require
it in intel_alpm_is_aux_less() (renamed from
intel_alpm_is_alpm_aux_less()) so that AUX-less ALPM programming,
including the AS SDP part of PR_ALPM_CTL and the MAC transmit LFPS, is
skipped when ALPM is not used. Require the ALPM DPCD caps for AUX-less
ALPM on eDP as well.

v2:
- Set has_alpm in one place in intel_alpm_compute_config_late(). [Jouni]
- Don't let selective update overwrite has_alpm. [sashiko]
- Don't leave has_alpm set when PSR features are dropped late. [sashiko]
- Keep clearing the port ALPM registers when ALPM is not used. [sashiko]
- Require has_alpm for AUX-less ALPM programming. [sashiko]
- Keep ALPM enabled for PSR2 regardless of the ALPM DPCD caps.

Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c     | 55 +++++++++++++------
 drivers/gpu/drm/i915/display/intel_alpm.h     |  8 +--
 drivers/gpu/drm/i915/display/intel_cx0_phy.c  |  2 +-
 .../drm/i915/display/intel_display_types.h    |  1 +
 drivers/gpu/drm/i915/display/intel_dp.c       |  2 +-
 drivers/gpu/drm/i915/display/intel_lt_phy.c   |  2 +-
 drivers/gpu/drm/i915/display/intel_psr.c      | 11 +++-
 drivers/gpu/drm/i915/display/intel_psr.h      |  3 +-
 8 files changed, 57 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 65d06e8ebbe0..47263af0970c 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -37,11 +37,12 @@ bool intel_alpm_aux_less_wake_supported(struct intel_dp *intel_dp)
 	return intel_dp->alpm_dpcd & DP_ALPM_AUX_LESS_CAP;
 }
 
-bool intel_alpm_is_alpm_aux_less(struct intel_dp *intel_dp,
-				 const struct intel_crtc_state *crtc_state)
+bool intel_alpm_is_aux_less(struct intel_dp *intel_dp,
+			    const struct intel_crtc_state *crtc_state)
 {
-	return intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) ||
-		(crtc_state->has_lobf && intel_alpm_aux_less_wake_supported(intel_dp));
+	return crtc_state->has_alpm &&
+	       (crtc_state->has_panel_replay ||
+		(crtc_state->has_lobf && intel_alpm_aux_less_wake_supported(intel_dp)));
 }
 
 static bool intel_alpm_source_supported(struct intel_dp *intel_dp)
@@ -509,8 +510,8 @@ static bool intel_alpm_lobf_is_window1_sufficient(struct intel_crtc_state *crtc_
 	return window1 > crtc_state->alpm_state.check_entry_lines;
 }
 
-void intel_alpm_lobf_compute_config_late(struct intel_dp *intel_dp,
-					 struct intel_crtc_state *crtc_state)
+static void intel_alpm_lobf_compute_config_late(struct intel_dp *intel_dp,
+						struct intel_crtc_state *crtc_state)
 {
 	struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
 	int waketime_in_lines, first_sdp_position;
@@ -598,14 +599,34 @@ void intel_alpm_compute_config(struct intel_dp *intel_dp,
 
 	crtc_state->alpm_state.aux_wake_possible = true;
 	crtc_state->alpm_state.aux_less_possible =
-		DISPLAY_VER(display) >= 20 &&
-		(intel_dp_is_edp(intel_dp) ||
-		 (intel_alpm_is_possible(intel_dp, crtc_state) &&
-		  intel_alpm_aux_less_wake_supported(intel_dp)));
+		DISPLAY_VER(display) >= 20 && intel_alpm_is_possible(intel_dp, crtc_state) &&
+		(intel_dp_is_edp(intel_dp) || intel_alpm_aux_less_wake_supported(intel_dp));
 
 	intel_alpm_lobf_compute_config(intel_dp, crtc_state);
 }
 
+/*
+ * Decide whether ALPM is enabled once PSR, Panel Replay and LOBF have been
+ * finalized. eDP Panel Replay and PSR2 always use ALPM, for DP Panel Replay
+ * ALPM is optional and used only if the AUX-less wake time fits.
+ */
+void intel_alpm_compute_config_late(struct intel_dp *intel_dp,
+				    struct intel_crtc_state *crtc_state)
+{
+	int aux_less_wake_lines = crtc_state->alpm_state.aux_less_wake_lines;
+
+	intel_alpm_lobf_compute_config_late(intel_dp, crtc_state);
+
+	if (crtc_state->has_psr && crtc_state->has_panel_replay)
+		crtc_state->has_alpm = intel_dp_is_edp(intel_dp) ||
+			(crtc_state->alpm_state.aux_less_possible &&
+			 intel_psr_wake_lines_fit_into_vblank(crtc_state, aux_less_wake_lines));
+	else if (crtc_state->has_psr && crtc_state->has_sel_update)
+		crtc_state->has_alpm = intel_dp_is_edp(intel_dp);
+	else
+		crtc_state->has_alpm = crtc_state->has_lobf;
+}
+
 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();
@@ -750,7 +771,7 @@ void intel_alpm_pr_as_sdp_update(const struct intel_crtc_state *crtc_state)
 		intel_dp = enc_to_intel_dp(encoder);
 
 		if (!intel_dp->as_sdp_supported ||
-		    !intel_alpm_is_alpm_aux_less(intel_dp, crtc_state))
+		    !intel_alpm_is_aux_less(intel_dp, crtc_state))
 			continue;
 
 		mutex_lock(&intel_dp->alpm.lock);
@@ -767,8 +788,7 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
 	u32 alpm_ctl, alpm_ctl2;
 	int lttpr_count;
 
-	if (DISPLAY_VER(display) < 20 || (!intel_psr_needs_alpm(intel_dp, crtc_state) &&
-					  !crtc_state->has_lobf))
+	if (DISPLAY_VER(display) < 20 || !crtc_state->has_alpm)
 		return;
 
 	mutex_lock(&intel_dp->alpm.lock);
@@ -776,7 +796,7 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
 	 * Panel Replay on eDP is always using ALPM aux less. I.e. no need to
 	 * check panel support at this point.
 	 */
-	if (intel_alpm_is_alpm_aux_less(intel_dp, crtc_state)) {
+	if (intel_alpm_is_aux_less(intel_dp, crtc_state)) {
 		int wake_lines = crtc_state->alpm_state.aux_less_wake_lines;
 
 		alpm_ctl = ALPM_CTL_ALPM_ENABLE |
@@ -832,7 +852,7 @@ void intel_alpm_port_configure(struct intel_dp *intel_dp,
 	if (DISPLAY_VER(display) < 20)
 		return;
 
-	if (intel_alpm_is_alpm_aux_less(intel_dp, crtc_state)) {
+	if (intel_alpm_is_aux_less(intel_dp, crtc_state)) {
 		int lfps_cycle = get_lfps_cycle_count(crtc_state);
 		u32 lfps_cycle_val;
 
@@ -888,13 +908,12 @@ void intel_alpm_enable_sink(struct intel_dp *intel_dp,
 {
 	u8 val;
 
-	if (!intel_psr_needs_alpm(intel_dp, crtc_state) && !crtc_state->has_lobf)
+	if (!crtc_state->has_alpm)
 		return;
 
 	val = DP_ALPM_ENABLE | DP_ALPM_LOCK_ERROR_IRQ_HPD_ENABLE;
 
-	if (crtc_state->has_panel_replay || (crtc_state->has_lobf &&
-					     intel_alpm_aux_less_wake_supported(intel_dp)))
+	if (intel_alpm_is_aux_less(intel_dp, crtc_state))
 		val |= DP_ALPM_MODE_AUX_LESS;
 
 	drm_dp_dpcd_write_byte(&intel_dp->aux, DP_RECEIVER_ALPM_CONFIG, val);
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h b/drivers/gpu/drm/i915/display/intel_alpm.h
index be9b4d761c13..a35a98a55a8d 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -31,14 +31,14 @@ void intel_alpm_lobf_enable(const struct intel_crtc_state *new_crtc_state);
 void intel_alpm_lobf_debugfs_add(struct intel_connector *connector);
 bool intel_alpm_aux_wake_supported(struct intel_dp *intel_dp);
 bool intel_alpm_aux_less_wake_supported(struct intel_dp *intel_dp);
-bool intel_alpm_is_alpm_aux_less(struct intel_dp *intel_dp,
-				 const struct intel_crtc_state *crtc_state);
+bool intel_alpm_is_aux_less(struct intel_dp *intel_dp,
+			    const struct intel_crtc_state *crtc_state);
 bool intel_alpm_pr_as_sdp_skip_frames_enabled(struct intel_dp *intel_dp,
 					      const struct intel_crtc_state *crtc_state);
 void intel_alpm_pr_as_sdp_update(const struct intel_crtc_state *crtc_state);
 void intel_alpm_disable(struct intel_dp *intel_dp);
 bool intel_alpm_get_error(struct intel_dp *intel_dp);
-void intel_alpm_lobf_compute_config_late(struct intel_dp *intel_dp,
-					 struct intel_crtc_state *crtc_state);
+void intel_alpm_compute_config_late(struct intel_dp *intel_dp,
+				    struct intel_crtc_state *crtc_state);
 int intel_alpm_lobf_min_guardband(struct intel_crtc_state *crtc_state);
 #endif
diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
index 814615fe9951..453526c4b3a9 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
@@ -3453,7 +3453,7 @@ void intel_lnl_mac_transmit_lfps(struct intel_encoder *encoder,
 	u8 owned_lane_mask;
 
 	if (DISPLAY_VER(display) < 20 ||
-	    !intel_alpm_is_alpm_aux_less(enc_to_intel_dp(encoder), crtc_state))
+	    !intel_alpm_is_aux_less(enc_to_intel_dp(encoder), crtc_state))
 		return;
 
 	owned_lane_mask = intel_cx0_get_owned_lane_mask(encoder);
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index ce7dc3375f2e..73d82df2ff92 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1475,6 +1475,7 @@ struct intel_crtc_state {
 		bool aux_wake_possible;
 		bool aux_less_possible;
 	} alpm_state;
+	bool has_alpm;
 
 	/* to track changes in plane color blocks */
 	bool plane_color_changed;
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 7827de39e826..43b17d2ed93f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -7594,7 +7594,7 @@ int intel_dp_compute_config_late(struct intel_encoder *encoder,
 	if (ret)
 		return ret;
 
-	intel_alpm_lobf_compute_config_late(intel_dp, crtc_state);
+	intel_alpm_compute_config_late(intel_dp, crtc_state);
 
 	return 0;
 }
diff --git a/drivers/gpu/drm/i915/display/intel_lt_phy.c b/drivers/gpu/drm/i915/display/intel_lt_phy.c
index 5b26957d7fb9..74ef0d29756c 100644
--- a/drivers/gpu/drm/i915/display/intel_lt_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_lt_phy.c
@@ -2371,7 +2371,7 @@ void intel_lt_mac_transmit_lfps(struct intel_encoder *encoder,
 	struct ref_tracker *wakeref;
 	u8 owned_lane_mask;
 
-	if (!intel_alpm_is_alpm_aux_less(intel_dp, crtc_state))
+	if (!intel_alpm_is_aux_less(intel_dp, crtc_state))
 		return;
 
 	wakeref = intel_lt_phy_transaction_begin(encoder);
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index c00ec3f64202..4c429a14b50e 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1426,6 +1426,14 @@ static bool _wake_lines_fit_into_vblank(const struct intel_crtc_state *crtc_stat
 	return true;
 }
 
+bool intel_psr_wake_lines_fit_into_vblank(const struct intel_crtc_state *crtc_state,
+					  int wake_lines)
+{
+	return _wake_lines_fit_into_vblank(crtc_state,
+					   intel_crtc_vblank_length(crtc_state),
+					   wake_lines);
+}
+
 static bool wake_lines_fit_into_vblank(struct intel_dp *intel_dp,
 				       const struct intel_crtc_state *crtc_state,
 				       bool aux_less,
@@ -4547,7 +4555,8 @@ void intel_psr_connector_debugfs_add(struct intel_connector *connector)
 				    connector, &i915_psr_status_fops);
 }
 
-bool intel_psr_needs_alpm(struct intel_dp *intel_dp, const struct intel_crtc_state *crtc_state)
+static bool intel_psr_needs_alpm(struct intel_dp *intel_dp,
+				 const struct intel_crtc_state *crtc_state)
 {
 	/*
 	 * eDP Panel Replay uses always ALPM
diff --git a/drivers/gpu/drm/i915/display/intel_psr.h b/drivers/gpu/drm/i915/display/intel_psr.h
index d545fdaa0de7..2557776a402b 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.h
+++ b/drivers/gpu/drm/i915/display/intel_psr.h
@@ -79,9 +79,10 @@ void intel_psr_trigger_frame_change_event(struct intel_dsb *dsb,
 int intel_psr_min_set_context_latency(const struct intel_crtc_state *crtc_state);
 void intel_psr_connector_debugfs_add(struct intel_connector *connector);
 void intel_psr_debugfs_register(struct intel_display *display);
-bool intel_psr_needs_alpm(struct intel_dp *intel_dp, const struct intel_crtc_state *crtc_state);
 bool intel_psr_needs_alpm_aux_less(struct intel_dp *intel_dp,
 				   const struct intel_crtc_state *crtc_state);
+bool intel_psr_wake_lines_fit_into_vblank(const struct intel_crtc_state *crtc_state,
+					  int wake_lines);
 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);
-- 
2.43.0


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

* [PATCH v7 20/20] drm/i915/dp: Enable AS SDP for DP Panel Replay with AUX-less ALPM
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (18 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 19/20] drm/i915/alpm: Introduce has_alpm to decouple from pr/psr2/lobf Animesh Manna
@ 2026-10-26  5:39 ` Animesh Manna
  2026-10-26  5:50 ` ✗ CI.checkpatch: warning for Enable DP2.1 alpm (rev7) Patchwork
                   ` (3 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Animesh Manna @ 2026-10-26  5:39 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, jani.nikula, suraj.kandpal, Animesh Manna

AS SDP for Panel Replay with AUX-less ALPM and the related
DP_FIXED_VTOTAL_AS_SDP_EN_IN_PR_ACTIVE setting are limited to eDP by
intel_psr_needs_alpm_aux_less(). DP Panel Replay can now use AUX-less
ALPM as well, so base these on the ALPM state instead.

has_alpm is decided only in the late compute config, after AS SDP has
been computed. Use alpm_state.aux_less_possible to decide whether AS
SDP is needed, and has_alpm for the link training DPCD setting, which
happens with the final state.

intel_psr_needs_alpm_aux_less() is now used only within intel_psr.c,
so make it static.

Cc: Jouni Högander <jouni.hogander@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c               | 4 +++-
 drivers/gpu/drm/i915/display/intel_dp_link_training.c | 2 +-
 drivers/gpu/drm/i915/display/intel_psr.c              | 4 ++--
 drivers/gpu/drm/i915/display/intel_psr.h              | 2 --
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 43b17d2ed93f..02ea3f2b00ac 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -3274,7 +3274,9 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
 	if (drm_dp_is_branch(intel_dp->dpcd))
 		return false;
 
-	if (intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) &&
+	/* has_alpm is not final yet, so check if AUX-less ALPM is possible */
+	if (crtc_state->has_panel_replay &&
+	    crtc_state->alpm_state.aux_less_possible &&
 	    !intel_psr_pr_async_video_timing_supported(intel_dp))
 		return true;
 
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 0dbc6174c402..c7a3cfd29e37 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -1124,7 +1124,7 @@ static bool
 intel_dp_pr_with_as_sdp_enabled(struct intel_dp *intel_dp,
 				const struct intel_crtc_state *crtc_state)
 {
-	return intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) &&
+	return crtc_state->has_panel_replay && crtc_state->has_alpm &&
 		(crtc_state->infoframes.enable &
 		 intel_hdmi_infoframe_enable(DP_SDP_ADAPTIVE_SYNC));
 }
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 4c429a14b50e..0875de33f0da 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -4566,8 +4566,8 @@ static bool intel_psr_needs_alpm(struct intel_dp *intel_dp,
 					     crtc_state->has_panel_replay);
 }
 
-bool intel_psr_needs_alpm_aux_less(struct intel_dp *intel_dp,
-				   const struct intel_crtc_state *crtc_state)
+static bool intel_psr_needs_alpm_aux_less(struct intel_dp *intel_dp,
+					  const struct intel_crtc_state *crtc_state)
 {
 	return intel_dp_is_edp(intel_dp) && crtc_state->has_panel_replay;
 }
diff --git a/drivers/gpu/drm/i915/display/intel_psr.h b/drivers/gpu/drm/i915/display/intel_psr.h
index 2557776a402b..8adb27c21408 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.h
+++ b/drivers/gpu/drm/i915/display/intel_psr.h
@@ -79,8 +79,6 @@ void intel_psr_trigger_frame_change_event(struct intel_dsb *dsb,
 int intel_psr_min_set_context_latency(const struct intel_crtc_state *crtc_state);
 void intel_psr_connector_debugfs_add(struct intel_connector *connector);
 void intel_psr_debugfs_register(struct intel_display *display);
-bool intel_psr_needs_alpm_aux_less(struct intel_dp *intel_dp,
-				   const struct intel_crtc_state *crtc_state);
 bool intel_psr_wake_lines_fit_into_vblank(const struct intel_crtc_state *crtc_state,
 					  int wake_lines);
 void intel_psr_compute_config_late(struct intel_dp *intel_dp,
-- 
2.43.0


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

* ✗ CI.checkpatch: warning for Enable DP2.1 alpm (rev7)
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (19 preceding siblings ...)
  2026-10-26  5:39 ` [PATCH v7 20/20] drm/i915/dp: Enable AS SDP for DP Panel Replay with AUX-less ALPM Animesh Manna
@ 2026-10-26  5:50 ` Patchwork
  2026-10-26  5:52 ` ✓ CI.KUnit: success " Patchwork
                   ` (2 subsequent siblings)
  23 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2026-10-26  5:50 UTC (permalink / raw)
  To: Animesh Manna; +Cc: intel-xe

== Series Details ==

Series: Enable DP2.1 alpm (rev7)
URL   : https://patchwork.freedesktop.org/series/156416/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
3009867cd31863246e4afc138520a7a8bd37bb11
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 10f7d9a530325a5a63d453152a6ee3d5addbde00
Author: Animesh Manna <animesh.manna@intel.com>
Date:   Mon Oct 26 11:09:31 2026 +0530

    drm/i915/dp: Enable AS SDP for DP Panel Replay with AUX-less ALPM
    
    AS SDP for Panel Replay with AUX-less ALPM and the related
    DP_FIXED_VTOTAL_AS_SDP_EN_IN_PR_ACTIVE setting are limited to eDP by
    intel_psr_needs_alpm_aux_less(). DP Panel Replay can now use AUX-less
    ALPM as well, so base these on the ALPM state instead.
    
    has_alpm is decided only in the late compute config, after AS SDP has
    been computed. Use alpm_state.aux_less_possible to decide whether AS
    SDP is needed, and has_alpm for the link training DPCD setting, which
    happens with the final state.
    
    intel_psr_needs_alpm_aux_less() is now used only within intel_psr.c,
    so make it static.
    
    Cc: Jouni Högander <jouni.hogander@intel.com>
    Signed-off-by: Animesh Manna <animesh.manna@intel.com>
+ /mt/dim checkpatch d56ff005f0d16ec136ee31fe3238eb447fefdc1a drm-intel
4e4eecc806a9 drm/i915/alpm: Program zero-based LFPS half cycle duration
-:61: WARNING:LONG_LINE: line length of 139 exceeds 100 columns
#61: FILE: drivers/gpu/drm/i915/display/intel_psr_regs.h:345:
+#define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK, (val) - 1)

-:64: WARNING:LONG_LINE: line length of 145 exceeds 100 columns
#64: FILE: drivers/gpu/drm/i915/display/intel_psr_regs.h:347:
+#define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION_MASK, (val) - 1)

-:67: WARNING:LONG_LINE: line length of 144 exceeds 100 columns
#67: FILE: drivers/gpu/drm/i915/display/intel_psr_regs.h:349:
+#define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK, (val) - 1)

total: 0 errors, 3 warnings, 0 checks, 29 lines checked
1db19c552d4e drm/dp: Add DPCD definitions for DP2.1 ALPM capability
f6e3a7f187f7 drm/i915/alpm: Move alpm sink capability readout into a separate function
a61af672a28f drm/i915/alpm: alpm_init() for DP2.1
b014acf66bce drm/i915/alpm: Enable debugfs for DP2.1
8fd2113f218a drm/i915/alpm: Refactor Auxless wake time calculation
42c278a10bf8 drm/i915/alpm: Auxless wake time calculation for Xe3p
868d5535839f drm/i915/alpm: Modify AUX_LESS_WAKE_TIME bitfield for xe3lpd
-:89: WARNING:LONG_LINE: line length of 116 exceeds 100 columns
#89: FILE: drivers/gpu/drm/i915/display/intel_psr_regs.h:306:
+#define  ALPM_CTL_AUX_LESS_WAKE_TIME_XE3LPD(val)	REG_FIELD_PREP(ALPM_CTL_AUX_LESS_WAKE_TIME_MASK_XE3LPD, val)

total: 0 errors, 1 warnings, 0 checks, 55 lines checked
a78d90dbeebc drm/i915/alpm: table based establishment period
afc72b40435f drm/i915/alpm: Half LFPS cycle calculation
-:62: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#62: FILE: drivers/gpu/drm/i915/display/intel_alpm.c:111:
+static void get_lfps_period_min_max_time(const struct intel_crtc_state *crtc_state,
+					int *min, int *max)

total: 0 errors, 0 warnings, 1 checks, 57 lines checked
884969592d27 drm/i915/alpm: Modify LFPS cycle count for DP ALPM
-:64: WARNING:LONG_LINE: line length of 102 exceeds 100 columns
#64: FILE: drivers/gpu/drm/i915/display/intel_alpm.c:755:
+		lfps_ctl_val = PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT(get_lfps_cycle_count(crtc_state)) |

total: 0 errors, 1 warnings, 0 checks, 38 lines checked
d1b9bf044a26 drm/i915/alpm: Modify LFPS_CYCLE_COUNT bitfield for xe3lpd
-:57: WARNING:LONG_LINE: line length of 176 exceeds 100 columns
#57: FILE: drivers/gpu/drm/i915/display/intel_psr_regs.h:341:
+#define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_XE3LPD(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MASK_XE3LPD, (val) - PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MIN)

total: 0 errors, 1 warnings, 0 checks, 32 lines checked
75df0961013a drm/i915/alpm: Program LTTPR count for DP 2.1 ALPM
2357196d069a drm/i915/alpm: Enable MAC Transmitting LFPS for LT PHY
875ec550f045 drm/i915/alpm: Compute and program switch to active latency
97d7edda3519 drm/i915/alpm: Replace is_edp() with alpm_is_possible()
7b5e61a88eb7 drm/i915/alpm: Disallow ALPM for UHBR link rate
45186e28ab7d drm/i915/alpm: Compute ALPM config before PSR config
ab64f3c29245 drm/i915/alpm: Introduce has_alpm to decouple from pr/psr2/lobf
10f7d9a53032 drm/i915/dp: Enable AS SDP for DP Panel Replay with AUX-less ALPM



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

* ✓ CI.KUnit: success for Enable DP2.1 alpm (rev7)
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (20 preceding siblings ...)
  2026-10-26  5:50 ` ✗ CI.checkpatch: warning for Enable DP2.1 alpm (rev7) Patchwork
@ 2026-10-26  5:52 ` Patchwork
  2026-10-26  6:28 ` ✓ Xe.CI.BAT: " Patchwork
  2026-10-26  8:06 ` ✗ Xe.CI.FULL: failure " Patchwork
  23 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2026-10-26  5:52 UTC (permalink / raw)
  To: Animesh Manna; +Cc: intel-xe

== Series Details ==

Series: Enable DP2.1 alpm (rev7)
URL   : https://patchwork.freedesktop.org/series/156416/
State : success

== Summary ==

+ trap cleanup EXIT
+ kunitconfigs=('/kernel/drivers/gpu/tests/.kunitconfig' '/kernel/drivers/gpu/drm/xe/.kunitconfig' '/kernel/drivers/gpu/drm/tests/.kunitconfig' '/kernel/drivers/gpu/drm/ttm/tests/.kunitconfig' '/kernel/drivers/dma-buf/.kunitconfig')
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/tests/.kunitconfig
[05:50:42] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[05:50:46] 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
[05:51:07] Starting KUnit Kernel (1/1)...
[05:51:07] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[05:51:07] ================= gpu_buddy (14 subtests) ==================
[05:51:07] [PASSED] gpu_test_buddy_alloc_limit
[05:51:07] [PASSED] gpu_test_buddy_alloc_optimistic
[05:51:07] [PASSED] gpu_test_buddy_alloc_pessimistic
[05:51:07] [PASSED] gpu_test_buddy_alloc_pathological
[05:51:07] [PASSED] gpu_test_buddy_alloc_contiguous
[05:51:07] [PASSED] gpu_test_buddy_alloc_clear
[05:51:07] [PASSED] gpu_test_buddy_alloc_range
[05:51:08] [PASSED] gpu_test_buddy_alloc_range_bias
[05:51:09] [PASSED] gpu_test_buddy_fragmentation_performance
[05:51:09] [PASSED] gpu_test_buddy_dirty_tracker_performance
[05:51:09] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[05:51:09] [PASSED] gpu_test_buddy_offset_aligned_allocation
[05:51:09] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[05:51:09] [PASSED] gpu_test_buddy_addr_to_block
[05:51:09] ==================== [PASSED] gpu_buddy ====================
[05:51:09] ============================================================
[05:51:09] Testing complete. Ran 14 tests: passed: 14
[05:51:09] Elapsed time: 27.533s total, 4.415s configuring, 21.000s building, 2.066s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/xe/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[05:51:09] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[05:51: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
[05:51:51] Starting KUnit Kernel (1/1)...
[05:51:51] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[05:51:52] ================== guc_buf (11 subtests) ===================
[05:51:52] [PASSED] test_smallest
[05:51:52] [PASSED] test_largest
[05:51:52] [PASSED] test_granular
[05:51:52] [PASSED] test_unique
[05:51:52] [PASSED] test_overlap
[05:51:52] [PASSED] test_reusable
[05:51:52] [PASSED] test_too_big
[05:51:52] [PASSED] test_flush
[05:51:52] [PASSED] test_lookup
[05:51:52] [PASSED] test_data
[05:51:52] [PASSED] test_class
[05:51:52] ===================== [PASSED] guc_buf =====================
[05:51:52] =================== guc_dbm (7 subtests) ===================
[05:51:52] [PASSED] test_empty
[05:51:52] [PASSED] test_default
[05:51:52] ======================== test_size  ========================
[05:51:52] [PASSED] 4
[05:51:52] [PASSED] 8
[05:51:52] [PASSED] 32
[05:51:52] [PASSED] 256
[05:51:52] ==================== [PASSED] test_size ====================
[05:51:52] ======================= test_reuse  ========================
[05:51:52] [PASSED] 4
[05:51:52] [PASSED] 8
[05:51:52] [PASSED] 32
[05:51:52] [PASSED] 256
[05:51:52] =================== [PASSED] test_reuse ====================
[05:51:52] =================== test_range_overlap  ====================
[05:51:52] [PASSED] 4
[05:51:52] [PASSED] 8
[05:51:52] [PASSED] 32
[05:51:52] [PASSED] 256
[05:51:52] =============== [PASSED] test_range_overlap ================
[05:51:52] =================== test_range_compact  ====================
[05:51:52] [PASSED] 4
[05:51:52] [PASSED] 8
[05:51:52] [PASSED] 32
[05:51:52] [PASSED] 256
[05:51:52] =============== [PASSED] test_range_compact ================
[05:51:52] ==================== test_range_spare  =====================
[05:51:52] [PASSED] 4
[05:51:52] [PASSED] 8
[05:51:52] [PASSED] 32
[05:51:52] [PASSED] 256
[05:51:52] ================ [PASSED] test_range_spare =================
[05:51:52] ===================== [PASSED] guc_dbm =====================
[05:51:52] ================== guc_idm (22 subtests) ===================
[05:51:52] [PASSED] bad_init
[05:51:52] [PASSED] no_init
[05:51:52] [PASSED] init_fini
[05:51:52] [PASSED] check_init_small
[05:51:52] [PASSED] check_init_shared
[05:51:52] [PASSED] check_used
[05:51:52] [PASSED] check_quota
[05:51:52] [PASSED] check_all
[05:51:52] [PASSED] check_limits
[05:51:52] [PASSED] check_overlap
[05:51:52] [PASSED] check_overlap_alloc
[05:51:52] [PASSED] check_overlap_release
[05:51:52] [PASSED] check_overlap_partial_init
[05:51:52] [PASSED] check_overlap_partial_shared_range_blocking
[05:51:52] [PASSED] check_used_usable
[05:51:52] [PASSED] check_used_shareable
[05:51:52] [PASSED] check_used_mixed
[05:51:52] [PASSED] check_release_usable_range
[05:51:52] [PASSED] check_release_shareable_range
[05:51:52] [PASSED] check_split_boundaries
[05:51:52] [PASSED] check_shareable_spare
[05:51:52] [PASSED] check_shareable_spare_fragmented_tail
[05:51:52] ===================== [PASSED] guc_idm =====================
[05:51:52] ============== guc_klv_helpers (13 subtests) ===============
[05:51:52] [PASSED] test_count
[05:51:52] [PASSED] test_encode_u32
[05:51:52] [PASSED] test_encode_u64
[05:51:52] [PASSED] test_encode_string
[05:51:52] [PASSED] test_encode_object_raw
[05:51:52] [PASSED] test_encode_object_klv
[05:51:52] [PASSED] test_encode_object_nested
[05:51:52] [PASSED] test_encode_object_basic
[05:51:52] ===================== test_decode_u16  =====================
[05:51:52] [PASSED] empty
[05:51:52] [PASSED] valid
[05:51:52] [PASSED] max
[05:51:52] [PASSED] big
[05:51:52] [PASSED] long
[05:51:52] ================= [PASSED] test_decode_u16 =================
[05:51:52] ===================== test_decode_u32  =====================
[05:51:52] [PASSED] empty
[05:51:52] [PASSED] valid
[05:51:52] [PASSED] max
[05:51:52] [PASSED] long
[05:51:52] ================= [PASSED] test_decode_u32 =================
[05:51:52] ===================== test_decode_u64  =====================
[05:51:52] [PASSED] empty
[05:51:52] [PASSED] short
[05:51:52] [PASSED] valid
[05:51:52] [PASSED] max
[05:51:52] [PASSED] long
[05:51:52] ================= [PASSED] test_decode_u64 =================
[05:51:52] ===================== test_decode_str  =====================
[05:51:52] [PASSED] empty
[05:51:52] [PASSED] one
[05:51:52] [PASSED] one_trash
[05:51:52] [PASSED] two
[05:51:52] [PASSED] two_trash
[05:51:52] [PASSED] three
[05:51:52] [PASSED] dword
[05:51:52] [PASSED] four
[05:51:52] [PASSED] five
[05:51:52] [PASSED] six
[05:51:52] [PASSED] seven
[05:51:52] [PASSED] qword
[05:51:52] ================= [PASSED] test_decode_str =================
[05:51:52] [PASSED] test_print
[05:51:52] ================= [PASSED] guc_klv_helpers =================
[05:51:52] =================== xe_log (4 subtests) ====================
[05:51:52] [PASSED] demo_cper
[05:51:52] [PASSED] demo_dmesg
[05:51:52] ======================= test_dmesg  ========================
[05:51:52] [PASSED] test_fatal
[05:51:52] [PASSED] test_fatal_tile
[05:51:52] [PASSED] test_fatal_gt
[05:51:52] [PASSED] test_fatal_comp
[05:51:52] [PASSED] test_fatal_comp_tile
[05:51:52] [PASSED] test_fatal_comp_gt
[05:51:52] [PASSED] test_fatal_all
[05:51:52] [PASSED] test_recoverable
[05:51:52] [PASSED] test_recoverable_tile
[05:51:52] [PASSED] test_recoverable_gt
[05:51:52] [PASSED] test_recoverable_comp
[05:51:52] [PASSED] test_recoverable_comp_tile
[05:51:52] [PASSED] test_recoverable_comp_gt
[05:51:52] [PASSED] test_recoverable_all
[05:51:52] [PASSED] test_info
[05:51:52] [PASSED] test_info_tile
[05:51:52] [PASSED] test_info_gt
[05:51:52] [PASSED] test_info_err
[05:51:52] [PASSED] test_info_comp
[05:51:52] [PASSED] test_info_comp_tile
[05:51:52] [PASSED] test_info_comp_gt
[05:51:52] [PASSED] test_info_all
[05:51:52] [PASSED] test_hw_fatal
[05:51:52] [PASSED] test_hw_recoverable
[05:51:52] [PASSED] test_hw_corrected
[05:51:52] [PASSED] test_hw_informational
[05:51:52] =================== [PASSED] test_dmesg ====================
[05:51:52] ====================== test_invalid  =======================
[05:51:52] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG)
[05:51:52] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG)
[05:51:52] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG)
[05:51:52] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG)
[05:51:52] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG)
[05:51:52] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG)
[05:51:52] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG)
[05:51:52] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG)
[05:51:52] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG)
[05:51:52] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG)
[05:51:52] ================== [SKIPPED] test_invalid ==================
[05:51:52] ===================== [PASSED] xe_log ======================
[05:51:52] ================== no_relay (3 subtests) ===================
[05:51:52] [PASSED] xe_drops_guc2pf_if_not_ready
[05:51:52] [PASSED] xe_drops_guc2vf_if_not_ready
[05:51:52] [PASSED] xe_rejects_send_if_not_ready
[05:51:52] ==================== [PASSED] no_relay =====================
[05:51:52] ================== pf_relay (14 subtests) ==================
[05:51:52] [PASSED] pf_rejects_guc2pf_too_short
[05:51:52] [PASSED] pf_rejects_guc2pf_too_long
[05:51:52] [PASSED] pf_rejects_guc2pf_no_payload
[05:51:52] [PASSED] pf_fails_no_payload
[05:51:52] [PASSED] pf_fails_bad_origin
[05:51:52] [PASSED] pf_fails_bad_type
[05:51:52] [PASSED] pf_txn_reports_error
[05:51:52] [PASSED] pf_txn_sends_pf2guc
[05:51:52] [PASSED] pf_sends_pf2guc
[05:51:52] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[05:51:52] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[05:51:52] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[05:51:52] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[05:51:52] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[05:51:52] ==================== [PASSED] pf_relay =====================
[05:51:52] ================== vf_relay (3 subtests) ===================
[05:51:52] [PASSED] vf_rejects_guc2vf_too_short
[05:51:52] [PASSED] vf_rejects_guc2vf_too_long
[05:51:52] [PASSED] vf_rejects_guc2vf_no_payload
[05:51:52] ==================== [PASSED] vf_relay =====================
[05:51:52] ================ pf_gt_config (9 subtests) =================
[05:51:52] [PASSED] fair_contexts_1vf
[05:51:52] [PASSED] fair_doorbells_1vf
[05:51:52] [PASSED] fair_ggtt_1vf
[05:51:52] ====================== fair_vram_1vf  ======================
[05:51:52] [PASSED] 3.50 GiB
[05:51:52] [PASSED] 11.5 GiB
[05:51:52] [PASSED] 15.5 GiB
[05:51:52] [PASSED] 31.5 GiB
[05:51:52] [PASSED] 63.5 GiB
[05:51:52] [PASSED] 1.91 GiB
[05:51:52] ================== [PASSED] fair_vram_1vf ==================
[05:51:52] ================ fair_vram_1vf_admin_only  =================
[05:51:52] [PASSED] 3.50 GiB
[05:51:52] [PASSED] 11.5 GiB
[05:51:52] [PASSED] 15.5 GiB
[05:51:52] [PASSED] 31.5 GiB
[05:51:52] [PASSED] 63.5 GiB
[05:51:52] [PASSED] 1.91 GiB
[05:51:52] ============ [PASSED] fair_vram_1vf_admin_only =============
[05:51:52] ====================== fair_contexts  ======================
[05:51:52] [PASSED] 1 VF
[05:51:52] [PASSED] 2 VFs
[05:51:52] [PASSED] 3 VFs
[05:51:52] [PASSED] 4 VFs
[05:51:52] [PASSED] 5 VFs
[05:51:52] [PASSED] 6 VFs
[05:51:52] [PASSED] 7 VFs
[05:51:52] [PASSED] 8 VFs
[05:51:52] [PASSED] 9 VFs
[05:51:52] [PASSED] 10 VFs
[05:51:52] [PASSED] 11 VFs
[05:51:52] [PASSED] 12 VFs
[05:51:52] [PASSED] 13 VFs
[05:51:52] [PASSED] 14 VFs
[05:51:52] [PASSED] 15 VFs
[05:51:52] [PASSED] 16 VFs
[05:51:52] [PASSED] 17 VFs
[05:51:52] [PASSED] 18 VFs
[05:51:52] [PASSED] 19 VFs
[05:51:52] [PASSED] 20 VFs
[05:51:52] [PASSED] 21 VFs
[05:51:52] [PASSED] 22 VFs
[05:51:52] [PASSED] 23 VFs
[05:51:52] [PASSED] 24 VFs
[05:51:52] [PASSED] 25 VFs
[05:51:52] [PASSED] 26 VFs
[05:51:52] [PASSED] 27 VFs
[05:51:52] [PASSED] 28 VFs
[05:51:52] [PASSED] 29 VFs
[05:51:52] [PASSED] 30 VFs
[05:51:52] [PASSED] 31 VFs
[05:51:52] [PASSED] 32 VFs
[05:51:52] [PASSED] 33 VFs
[05:51:52] [PASSED] 34 VFs
[05:51:52] [PASSED] 35 VFs
[05:51:52] [PASSED] 36 VFs
[05:51:52] [PASSED] 37 VFs
[05:51:52] [PASSED] 38 VFs
[05:51:52] [PASSED] 39 VFs
[05:51:52] [PASSED] 40 VFs
[05:51:52] [PASSED] 41 VFs
[05:51:52] [PASSED] 42 VFs
[05:51:52] [PASSED] 43 VFs
[05:51:52] [PASSED] 44 VFs
[05:51:52] [PASSED] 45 VFs
[05:51:52] [PASSED] 46 VFs
[05:51:52] [PASSED] 47 VFs
[05:51:52] [PASSED] 48 VFs
[05:51:52] [PASSED] 49 VFs
[05:51:52] [PASSED] 50 VFs
[05:51:52] [PASSED] 51 VFs
[05:51:52] [PASSED] 52 VFs
[05:51:52] [PASSED] 53 VFs
[05:51:52] [PASSED] 54 VFs
[05:51:52] [PASSED] 55 VFs
[05:51:52] [PASSED] 56 VFs
[05:51:52] [PASSED] 57 VFs
[05:51:52] [PASSED] 58 VFs
[05:51:52] [PASSED] 59 VFs
[05:51:52] [PASSED] 60 VFs
[05:51:52] [PASSED] 61 VFs
[05:51:52] [PASSED] 62 VFs
[05:51:52] [PASSED] 63 VFs
[05:51:52] ================== [PASSED] fair_contexts ==================
[05:51:52] ===================== fair_doorbells  ======================
[05:51:52] [PASSED] 1 VF
[05:51:52] [PASSED] 2 VFs
[05:51:52] [PASSED] 3 VFs
[05:51:52] [PASSED] 4 VFs
[05:51:52] [PASSED] 5 VFs
[05:51:52] [PASSED] 6 VFs
[05:51:52] [PASSED] 7 VFs
[05:51:52] [PASSED] 8 VFs
[05:51:52] [PASSED] 9 VFs
[05:51:52] [PASSED] 10 VFs
[05:51:52] [PASSED] 11 VFs
[05:51:52] [PASSED] 12 VFs
[05:51:52] [PASSED] 13 VFs
[05:51:52] [PASSED] 14 VFs
[05:51:52] [PASSED] 15 VFs
[05:51:52] [PASSED] 16 VFs
[05:51:52] [PASSED] 17 VFs
[05:51:52] [PASSED] 18 VFs
[05:51:52] [PASSED] 19 VFs
[05:51:52] [PASSED] 20 VFs
[05:51:52] [PASSED] 21 VFs
[05:51:52] [PASSED] 22 VFs
[05:51:52] [PASSED] 23 VFs
[05:51:52] [PASSED] 24 VFs
[05:51:52] [PASSED] 25 VFs
[05:51:52] [PASSED] 26 VFs
[05:51:52] [PASSED] 27 VFs
[05:51:52] [PASSED] 28 VFs
[05:51:52] [PASSED] 29 VFs
[05:51:52] [PASSED] 30 VFs
[05:51:52] [PASSED] 31 VFs
[05:51:52] [PASSED] 32 VFs
[05:51:52] [PASSED] 33 VFs
[05:51:52] [PASSED] 34 VFs
[05:51:52] [PASSED] 35 VFs
[05:51:52] [PASSED] 36 VFs
[05:51:52] [PASSED] 37 VFs
[05:51:52] [PASSED] 38 VFs
[05:51:52] [PASSED] 39 VFs
[05:51:52] [PASSED] 40 VFs
[05:51:52] [PASSED] 41 VFs
[05:51:52] [PASSED] 42 VFs
[05:51:52] [PASSED] 43 VFs
[05:51:52] [PASSED] 44 VFs
[05:51:52] [PASSED] 45 VFs
[05:51:52] [PASSED] 46 VFs
[05:51:52] [PASSED] 47 VFs
[05:51:52] [PASSED] 48 VFs
[05:51:52] [PASSED] 49 VFs
[05:51:52] [PASSED] 50 VFs
[05:51:52] [PASSED] 51 VFs
[05:51:52] [PASSED] 52 VFs
[05:51:52] [PASSED] 53 VFs
[05:51:52] [PASSED] 54 VFs
[05:51:52] [PASSED] 55 VFs
[05:51:52] [PASSED] 56 VFs
[05:51:52] [PASSED] 57 VFs
[05:51:52] [PASSED] 58 VFs
[05:51:52] [PASSED] 59 VFs
[05:51:52] [PASSED] 60 VFs
[05:51:52] [PASSED] 61 VFs
[05:51:52] [PASSED] 62 VFs
[05:51:52] [PASSED] 63 VFs
[05:51:52] ================= [PASSED] fair_doorbells ==================
[05:51:52] ======================== fair_ggtt  ========================
[05:51:52] [PASSED] 1 VF
[05:51:52] [PASSED] 2 VFs
[05:51:52] [PASSED] 3 VFs
[05:51:52] [PASSED] 4 VFs
[05:51:52] [PASSED] 5 VFs
[05:51:52] [PASSED] 6 VFs
[05:51:52] [PASSED] 7 VFs
[05:51:52] [PASSED] 8 VFs
[05:51:52] [PASSED] 9 VFs
[05:51:52] [PASSED] 10 VFs
[05:51:52] [PASSED] 11 VFs
[05:51:52] [PASSED] 12 VFs
[05:51:52] [PASSED] 13 VFs
[05:51:52] [PASSED] 14 VFs
[05:51:52] [PASSED] 15 VFs
[05:51:52] [PASSED] 16 VFs
[05:51:52] [PASSED] 17 VFs
[05:51:52] [PASSED] 18 VFs
[05:51:52] [PASSED] 19 VFs
[05:51:52] [PASSED] 20 VFs
[05:51:52] [PASSED] 21 VFs
[05:51:52] [PASSED] 22 VFs
[05:51:52] [PASSED] 23 VFs
[05:51:52] [PASSED] 24 VFs
[05:51:52] [PASSED] 25 VFs
[05:51:52] [PASSED] 26 VFs
[05:51:52] [PASSED] 27 VFs
[05:51:52] [PASSED] 28 VFs
[05:51:52] [PASSED] 29 VFs
[05:51:52] [PASSED] 30 VFs
[05:51:52] [PASSED] 31 VFs
[05:51:52] [PASSED] 32 VFs
[05:51:52] [PASSED] 33 VFs
[05:51:52] [PASSED] 34 VFs
[05:51:52] [PASSED] 35 VFs
[05:51:52] [PASSED] 36 VFs
[05:51:52] [PASSED] 37 VFs
[05:51:52] [PASSED] 38 VFs
[05:51:52] [PASSED] 39 VFs
[05:51:52] [PASSED] 40 VFs
[05:51:52] [PASSED] 41 VFs
[05:51:52] [PASSED] 42 VFs
[05:51:52] [PASSED] 43 VFs
[05:51:52] [PASSED] 44 VFs
[05:51:52] [PASSED] 45 VFs
[05:51:52] [PASSED] 46 VFs
[05:51:52] [PASSED] 47 VFs
[05:51:52] [PASSED] 48 VFs
[05:51:52] [PASSED] 49 VFs
[05:51:52] [PASSED] 50 VFs
[05:51:52] [PASSED] 51 VFs
[05:51:52] [PASSED] 52 VFs
[05:51:52] [PASSED] 53 VFs
[05:51:52] [PASSED] 54 VFs
[05:51:52] [PASSED] 55 VFs
[05:51:52] [PASSED] 56 VFs
[05:51:52] [PASSED] 57 VFs
[05:51:52] [PASSED] 58 VFs
[05:51:52] [PASSED] 59 VFs
[05:51:52] [PASSED] 60 VFs
[05:51:52] [PASSED] 61 VFs
[05:51:52] [PASSED] 62 VFs
[05:51:52] [PASSED] 63 VFs
[05:51:52] ==================== [PASSED] fair_ggtt ====================
[05:51:52] ======================== fair_vram  ========================
[05:51:52] [PASSED] 1 VF
[05:51:52] [PASSED] 2 VFs
[05:51:52] [PASSED] 3 VFs
[05:51:52] [PASSED] 4 VFs
[05:51:52] [PASSED] 5 VFs
[05:51:52] [PASSED] 6 VFs
[05:51:52] [PASSED] 7 VFs
[05:51:52] [PASSED] 8 VFs
[05:51:52] [PASSED] 9 VFs
[05:51:52] [PASSED] 10 VFs
[05:51:52] [PASSED] 11 VFs
[05:51:52] [PASSED] 12 VFs
[05:51:52] [PASSED] 13 VFs
[05:51:52] [PASSED] 14 VFs
[05:51:52] [PASSED] 15 VFs
[05:51:52] [PASSED] 16 VFs
[05:51:52] [PASSED] 17 VFs
[05:51:52] [PASSED] 18 VFs
[05:51:52] [PASSED] 19 VFs
[05:51:52] [PASSED] 20 VFs
[05:51:52] [PASSED] 21 VFs
[05:51:52] [PASSED] 22 VFs
[05:51:52] [PASSED] 23 VFs
[05:51:52] [PASSED] 24 VFs
[05:51:52] [PASSED] 25 VFs
[05:51:52] [PASSED] 26 VFs
[05:51:52] [PASSED] 27 VFs
[05:51:52] [PASSED] 28 VFs
[05:51:52] [PASSED] 29 VFs
[05:51:52] [PASSED] 30 VFs
[05:51:52] [PASSED] 31 VFs
[05:51:52] [PASSED] 32 VFs
[05:51:52] [PASSED] 33 VFs
[05:51:52] [PASSED] 34 VFs
[05:51:52] [PASSED] 35 VFs
[05:51:52] [PASSED] 36 VFs
[05:51:52] [PASSED] 37 VFs
[05:51:52] [PASSED] 38 VFs
[05:51:52] [PASSED] 39 VFs
[05:51:52] [PASSED] 40 VFs
[05:51:52] [PASSED] 41 VFs
[05:51:52] [PASSED] 42 VFs
[05:51:52] [PASSED] 43 VFs
[05:51:52] [PASSED] 44 VFs
[05:51:52] [PASSED] 45 VFs
[05:51:52] [PASSED] 46 VFs
[05:51:52] [PASSED] 47 VFs
[05:51:52] [PASSED] 48 VFs
[05:51:52] [PASSED] 49 VFs
[05:51:52] [PASSED] 50 VFs
[05:51:52] [PASSED] 51 VFs
[05:51:52] [PASSED] 52 VFs
[05:51:52] [PASSED] 53 VFs
[05:51:52] [PASSED] 54 VFs
[05:51:52] [PASSED] 55 VFs
[05:51:52] [PASSED] 56 VFs
[05:51:52] [PASSED] 57 VFs
[05:51:52] [PASSED] 58 VFs
[05:51:52] [PASSED] 59 VFs
[05:51:52] [PASSED] 60 VFs
[05:51:52] [PASSED] 61 VFs
[05:51:52] [PASSED] 62 VFs
[05:51:52] [PASSED] 63 VFs
[05:51:52] ==================== [PASSED] fair_vram ====================
[05:51:52] ================== [PASSED] pf_gt_config ===================
[05:51:52] ===================== lmtt (1 subtest) =====================
[05:51:52] ======================== test_ops  =========================
[05:51:52] [PASSED] 2-level
[05:51:52] [PASSED] multi-level
[05:51:52] ==================== [PASSED] test_ops =====================
[05:51:52] ====================== [PASSED] lmtt =======================
[05:51:52] ================= sriov_packet (1 subtest) =================
[05:51:52] [PASSED] test_descriptor_init
[05:51:52] ================== [PASSED] sriov_packet ===================
[05:51:52] ================= pf_service (11 subtests) =================
[05:51:52] [PASSED] pf_negotiate_any
[05:51:52] [PASSED] pf_negotiate_base_match
[05:51:52] [PASSED] pf_negotiate_base_newer
[05:51:52] [PASSED] pf_negotiate_base_next
[05:51:52] [SKIPPED] pf_negotiate_base_older (no older minor)
[05:51:52] [PASSED] pf_negotiate_base_prev
[05:51:52] [PASSED] pf_negotiate_latest_match
[05:51:52] [PASSED] pf_negotiate_latest_newer
[05:51:52] [PASSED] pf_negotiate_latest_next
[05:51:52] [SKIPPED] pf_negotiate_latest_older (no older minor)
[05:51:52] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[05:51:52] =================== [PASSED] pf_service ====================
[05:51:52] ================= xe_guc_g2g (2 subtests) ==================
[05:51:52] ============== xe_live_guc_g2g_kunit_default  ==============
[05:51:52] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[05:51:52] ============== xe_live_guc_g2g_kunit_allmem  ===============
[05:51:52] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[05:51:52] =================== [SKIPPED] xe_guc_g2g ===================
[05:51:52] =================== xe_mocs (2 subtests) ===================
[05:51:52] ================ xe_live_mocs_kernel_kunit  ================
[05:51:52] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[05:51:52] ================ xe_live_mocs_reset_kunit  =================
[05:51:52] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[05:51:52] ==================== [SKIPPED] xe_mocs =====================
[05:51:52] ================= xe_migrate (3 subtests) ==================
[05:51:52] ================= xe_migrate_sanity_kunit  =================
[05:51:52] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[05:51:52] ================== xe_validate_ccs_kunit  ==================
[05:51:52] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[05:51:52] ============= xe_migrate_access_memory_kunit  ==============
[05:51:52] ========= [SKIPPED] xe_migrate_access_memory_kunit =========
[05:51:52] =================== [SKIPPED] xe_migrate ===================
[05:51:52] ================== xe_dma_buf (1 subtest) ==================
[05:51:52] ==================== xe_dma_buf_kunit  =====================
[05:51:52] ================ [SKIPPED] xe_dma_buf_kunit ================
[05:51:52] =================== [SKIPPED] xe_dma_buf ===================
[05:51:52] ================= xe_bo_shrink (1 subtest) =================
[05:51:52] =================== xe_bo_shrink_kunit  ====================
[05:51:52] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[05:51:52] ================== [SKIPPED] xe_bo_shrink ==================
[05:51:52] ==================== xe_bo (2 subtests) ====================
[05:51:52] ================== xe_ccs_migrate_kunit  ===================
[05:51:52] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[05:51:52] ==================== xe_bo_evict_kunit  ====================
[05:51:52] =============== [SKIPPED] xe_bo_evict_kunit ================
[05:51:52] ===================== [SKIPPED] xe_bo ======================
[05:51:52] =================== xe_any (9 subtests) ====================
[05:51:52] [PASSED] test_to_xe
[05:51:52] [PASSED] test_to_dev
[05:51:52] [PASSED] test_to_pdev
[05:51:52] [PASSED] test_to_drm
[05:51:52] [PASSED] test_if_pdev
[05:51:52] [PASSED] test_if_xe
[05:51:52] [PASSED] test_if_tile
[05:51:52] [PASSED] test_if_gt
[05:51:52] [PASSED] test_to_id
[05:51:52] ===================== [PASSED] xe_any ======================
[05:51:52] ==================== args (13 subtests) ====================
[05:51:52] [PASSED] count_args_test
[05:51:52] [PASSED] call_args_example
[05:51:52] [PASSED] call_args_test
[05:51:52] [PASSED] drop_first_arg_example
[05:51:52] [PASSED] drop_first_arg_test
[05:51:52] [PASSED] first_arg_example
[05:51:52] [PASSED] first_arg_test
[05:51:52] [PASSED] last_arg_example
[05:51:52] [PASSED] last_arg_test
[05:51:52] [PASSED] pick_arg_example
[05:51:52] [PASSED] if_args_example
[05:51:52] [PASSED] if_args_test
[05:51:52] [PASSED] sep_comma_example
[05:51:52] ====================== [PASSED] args =======================
[05:51:52] =================== xe_pci (3 subtests) ====================
[05:51:52] ==================== check_graphics_ip  ====================
[05:51:52] [PASSED] 12.00 Xe_LP
[05:51:52] [PASSED] 12.10 Xe_LP+
[05:51:52] [PASSED] 12.55 Xe_HPG
[05:51:52] [PASSED] 12.60 Xe_HPC
[05:51:52] [PASSED] 12.70 Xe_LPG
[05:51:52] [PASSED] 12.71 Xe_LPG
[05:51:52] [PASSED] 12.74 Xe_LPG+
[05:51:52] [PASSED] 20.01 Xe2_HPG
[05:51:52] [PASSED] 20.02 Xe2_HPG
[05:51:52] [PASSED] 20.04 Xe2_LPG
[05:51:52] [PASSED] 30.00 Xe3_LPG
[05:51:52] [PASSED] 30.01 Xe3_LPG
[05:51:52] [PASSED] 30.03 Xe3_LPG
[05:51:52] [PASSED] 30.04 Xe3_LPG
[05:51:52] [PASSED] 30.05 Xe3_LPG
[05:51:52] [PASSED] 35.10 Xe3p_LPG
[05:51:52] [PASSED] 35.11 Xe3p_XPC
[05:51:52] ================ [PASSED] check_graphics_ip ================
[05:51:52] ===================== check_media_ip  ======================
[05:51:52] [PASSED] 12.00 Xe_M
[05:51:52] [PASSED] 12.55 Xe_HPM
[05:51:52] [PASSED] 13.00 Xe_LPM+
[05:51:52] [PASSED] 13.01 Xe2_HPM
[05:51:52] [PASSED] 20.00 Xe2_LPM
[05:51:52] [PASSED] 30.00 Xe3_LPM
[05:51:52] [PASSED] 30.02 Xe3_LPM
[05:51:52] [PASSED] 35.00 Xe3p_LPM
[05:51:52] [PASSED] 35.03 Xe3p_HPM
[05:51:52] ================= [PASSED] check_media_ip ==================
[05:51:52] =================== check_platform_desc  ===================
[05:51:52] [PASSED] 0x9A60 (TIGERLAKE)
[05:51:52] [PASSED] 0x9A68 (TIGERLAKE)
[05:51:52] [PASSED] 0x9A70 (TIGERLAKE)
[05:51:52] [PASSED] 0x9A40 (TIGERLAKE)
[05:51:52] [PASSED] 0x9A49 (TIGERLAKE)
[05:51:52] [PASSED] 0x9A59 (TIGERLAKE)
[05:51:52] [PASSED] 0x9A78 (TIGERLAKE)
[05:51:52] [PASSED] 0x9AC0 (TIGERLAKE)
[05:51:52] [PASSED] 0x9AC9 (TIGERLAKE)
[05:51:52] [PASSED] 0x9AD9 (TIGERLAKE)
[05:51:52] [PASSED] 0x9AF8 (TIGERLAKE)
[05:51:52] [PASSED] 0x4C80 (ROCKETLAKE)
[05:51:52] [PASSED] 0x4C8A (ROCKETLAKE)
[05:51:52] [PASSED] 0x4C8B (ROCKETLAKE)
[05:51:52] [PASSED] 0x4C8C (ROCKETLAKE)
[05:51:52] [PASSED] 0x4C90 (ROCKETLAKE)
[05:51:52] [PASSED] 0x4C9A (ROCKETLAKE)
[05:51:52] [PASSED] 0x4680 (ALDERLAKE_S)
[05:51:52] [PASSED] 0x4682 (ALDERLAKE_S)
[05:51:52] [PASSED] 0x4688 (ALDERLAKE_S)
[05:51:52] [PASSED] 0x468A (ALDERLAKE_S)
[05:51:52] [PASSED] 0x468B (ALDERLAKE_S)
[05:51:52] [PASSED] 0x4690 (ALDERLAKE_S)
[05:51:52] [PASSED] 0x4692 (ALDERLAKE_S)
[05:51:52] [PASSED] 0x4693 (ALDERLAKE_S)
[05:51:52] [PASSED] 0x46A0 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46A1 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46A2 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46A3 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46A6 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46A8 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46AA (ALDERLAKE_P)
[05:51:52] [PASSED] 0x462A (ALDERLAKE_P)
[05:51:52] [PASSED] 0x4626 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x4628 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46B0 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46B1 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46B2 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46B3 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46C0 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46C1 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46C2 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46C3 (ALDERLAKE_P)
[05:51:52] [PASSED] 0x46D0 (ALDERLAKE_N)
[05:51:52] [PASSED] 0x46D1 (ALDERLAKE_N)
[05:51:52] [PASSED] 0x46D2 (ALDERLAKE_N)
[05:51:52] [PASSED] 0x46D3 (ALDERLAKE_N)
[05:51:52] [PASSED] 0x46D4 (ALDERLAKE_N)
[05:51:52] [PASSED] 0xA721 (ALDERLAKE_P)
[05:51:52] [PASSED] 0xA7A1 (ALDERLAKE_P)
[05:51:52] [PASSED] 0xA7A9 (ALDERLAKE_P)
[05:51:52] [PASSED] 0xA7AC (ALDERLAKE_P)
[05:51:52] [PASSED] 0xA7AD (ALDERLAKE_P)
[05:51:52] [PASSED] 0xA720 (ALDERLAKE_P)
[05:51:52] [PASSED] 0xA7A0 (ALDERLAKE_P)
[05:51:52] [PASSED] 0xA7A8 (ALDERLAKE_P)
[05:51:52] [PASSED] 0xA7AA (ALDERLAKE_P)
[05:51:52] [PASSED] 0xA7AB (ALDERLAKE_P)
[05:51:52] [PASSED] 0xA780 (ALDERLAKE_S)
[05:51:52] [PASSED] 0xA781 (ALDERLAKE_S)
[05:51:52] [PASSED] 0xA782 (ALDERLAKE_S)
[05:51:52] [PASSED] 0xA783 (ALDERLAKE_S)
[05:51:52] [PASSED] 0xA788 (ALDERLAKE_S)
[05:51:52] [PASSED] 0xA789 (ALDERLAKE_S)
[05:51:52] [PASSED] 0xA78A (ALDERLAKE_S)
[05:51:52] [PASSED] 0xA78B (ALDERLAKE_S)
[05:51:52] [PASSED] 0x4905 (DG1)
[05:51:52] [PASSED] 0x4906 (DG1)
[05:51:52] [PASSED] 0x4907 (DG1)
[05:51:52] [PASSED] 0x4908 (DG1)
[05:51:52] [PASSED] 0x4909 (DG1)
[05:51:52] [PASSED] 0x56C0 (DG2)
[05:51:52] [PASSED] 0x56C2 (DG2)
[05:51:52] [PASSED] 0x56C1 (DG2)
[05:51:52] [PASSED] 0x7D51 (METEORLAKE)
[05:51:52] [PASSED] 0x7DD1 (METEORLAKE)
[05:51:52] [PASSED] 0x7D41 (METEORLAKE)
[05:51:52] [PASSED] 0x7D67 (METEORLAKE)
[05:51:52] [PASSED] 0xB640 (METEORLAKE)
[05:51:52] [PASSED] 0x56A0 (DG2)
[05:51:52] [PASSED] 0x56A1 (DG2)
[05:51:52] [PASSED] 0x56A2 (DG2)
[05:51:52] [PASSED] 0x56BE (DG2)
[05:51:52] [PASSED] 0x56BF (DG2)
[05:51:52] [PASSED] 0x5690 (DG2)
[05:51:52] [PASSED] 0x5691 (DG2)
[05:51:52] [PASSED] 0x5692 (DG2)
[05:51:52] [PASSED] 0x56A5 (DG2)
[05:51:52] [PASSED] 0x56A6 (DG2)
[05:51:52] [PASSED] 0x56B0 (DG2)
[05:51:52] [PASSED] 0x56B1 (DG2)
[05:51:52] [PASSED] 0x56BA (DG2)
[05:51:52] [PASSED] 0x56BB (DG2)
[05:51:52] [PASSED] 0x56BC (DG2)
[05:51:52] [PASSED] 0x56BD (DG2)
[05:51:52] [PASSED] 0x5693 (DG2)
[05:51:52] [PASSED] 0x5694 (DG2)
[05:51:52] [PASSED] 0x5695 (DG2)
[05:51:52] [PASSED] 0x56A3 (DG2)
[05:51:52] [PASSED] 0x56A4 (DG2)
[05:51:52] [PASSED] 0x56B2 (DG2)
[05:51:52] [PASSED] 0x56B3 (DG2)
[05:51:52] [PASSED] 0x5696 (DG2)
[05:51:52] [PASSED] 0x5697 (DG2)
[05:51:52] [PASSED] 0xB69 (PVC)
[05:51:52] [PASSED] 0xB6E (PVC)
[05:51:52] [PASSED] 0xBD4 (PVC)
[05:51:52] [PASSED] 0xBD5 (PVC)
[05:51:52] [PASSED] 0xBD6 (PVC)
[05:51:52] [PASSED] 0xBD7 (PVC)
[05:51:52] [PASSED] 0xBD8 (PVC)
[05:51:52] [PASSED] 0xBD9 (PVC)
[05:51:52] [PASSED] 0xBDA (PVC)
[05:51:52] [PASSED] 0xBDB (PVC)
[05:51:52] [PASSED] 0xBE0 (PVC)
[05:51:52] [PASSED] 0xBE1 (PVC)
[05:51:52] [PASSED] 0xBE5 (PVC)
[05:51:52] [PASSED] 0x7D40 (METEORLAKE)
[05:51:52] [PASSED] 0x7D45 (METEORLAKE)
[05:51:52] [PASSED] 0x7D55 (METEORLAKE)
[05:51:52] [PASSED] 0x7D60 (METEORLAKE)
[05:51:52] [PASSED] 0x7DD5 (METEORLAKE)
[05:51:52] [PASSED] 0x6420 (LUNARLAKE)
[05:51:52] [PASSED] 0x64A0 (LUNARLAKE)
[05:51:52] [PASSED] 0x64B0 (LUNARLAKE)
[05:51:52] [PASSED] 0xE202 (BATTLEMAGE)
[05:51:52] [PASSED] 0xE209 (BATTLEMAGE)
[05:51:52] [PASSED] 0xE20B (BATTLEMAGE)
[05:51:52] [PASSED] 0xE20C (BATTLEMAGE)
[05:51:52] [PASSED] 0xE20D (BATTLEMAGE)
[05:51:52] [PASSED] 0xE210 (BATTLEMAGE)
[05:51:52] [PASSED] 0xE211 (BATTLEMAGE)
[05:51:52] [PASSED] 0xE212 (BATTLEMAGE)
[05:51:52] [PASSED] 0xE216 (BATTLEMAGE)
[05:51:52] [PASSED] 0xE220 (BATTLEMAGE)
[05:51:52] [PASSED] 0xE221 (BATTLEMAGE)
[05:51:52] [PASSED] 0xE222 (BATTLEMAGE)
[05:51:52] [PASSED] 0xE223 (BATTLEMAGE)
[05:51:52] [PASSED] 0xB080 (PANTHERLAKE)
[05:51:52] [PASSED] 0xB081 (PANTHERLAKE)
[05:51:52] [PASSED] 0xB082 (PANTHERLAKE)
[05:51:52] [PASSED] 0xB083 (PANTHERLAKE)
[05:51:52] [PASSED] 0xB084 (PANTHERLAKE)
[05:51:52] [PASSED] 0xB085 (PANTHERLAKE)
[05:51:52] [PASSED] 0xB086 (PANTHERLAKE)
[05:51:52] [PASSED] 0xB087 (PANTHERLAKE)
[05:51:52] [PASSED] 0xB08F (PANTHERLAKE)
[05:51:52] [PASSED] 0xB090 (PANTHERLAKE)
[05:51:52] [PASSED] 0xB0A0 (PANTHERLAKE)
[05:51:52] [PASSED] 0xB0A1 (PANTHERLAKE)
[05:51:52] [PASSED] 0xB0B0 (PANTHERLAKE)
[05:51:52] [PASSED] 0xFD80 (PANTHERLAKE)
[05:51:52] [PASSED] 0xFD81 (PANTHERLAKE)
[05:51:52] [PASSED] 0xD740 (NOVALAKE_S)
[05:51:52] [PASSED] 0xD741 (NOVALAKE_S)
[05:51:52] [PASSED] 0xD742 (NOVALAKE_S)
[05:51:52] [PASSED] 0xD743 (NOVALAKE_S)
[05:51:52] [PASSED] 0xD745 (NOVALAKE_S)
[05:51:52] [PASSED] 0xD74A (NOVALAKE_S)
[05:51:52] [PASSED] 0xD74B (NOVALAKE_S)
[05:51:52] [PASSED] 0x674C (CRESCENTISLAND)
[05:51:52] [PASSED] 0x674D (CRESCENTISLAND)
[05:51:52] [PASSED] 0x674E (CRESCENTISLAND)
[05:51:52] [PASSED] 0x674F (CRESCENTISLAND)
[05:51:52] [PASSED] 0x6750 (CRESCENTISLAND)
[05:51:52] [PASSED] 0x6751 (CRESCENTISLAND)
[05:51:52] [PASSED] 0xD750 (NOVALAKE_P)
[05:51:52] [PASSED] 0xD751 (NOVALAKE_P)
[05:51:52] [PASSED] 0xD752 (NOVALAKE_P)
[05:51:52] [PASSED] 0xD753 (NOVALAKE_P)
[05:51:52] [PASSED] 0xD754 (NOVALAKE_P)
[05:51:52] [PASSED] 0xD755 (NOVALAKE_P)
[05:51:52] [PASSED] 0xD756 (NOVALAKE_P)
[05:51:52] [PASSED] 0xD757 (NOVALAKE_P)
[05:51:52] [PASSED] 0xD75F (NOVALAKE_P)
[05:51:52] =============== [PASSED] check_platform_desc ===============
[05:51:52] ===================== [PASSED] xe_pci ======================
[05:51:52] ============= xe_rtp_tables_test (5 subtests) ==============
[05:51:52] ================== xe_rtp_table_gt_test  ===================
[05:51:52] [PASSED] gt_was/14011060649
[05:51:52] [PASSED] gt_was/14011059788
[05:51:52] [PASSED] gt_was/14015795083
[05:51:52] [PASSED] gt_was/16021867713
[05:51:52] [PASSED] gt_was/14019449301
[05:51:52] [PASSED] gt_was/16028005424
[05:51:52] [PASSED] gt_was/14026578760
[05:51:52] [PASSED] gt_was/1409420604
[05:51:52] [PASSED] gt_was/1408615072
[05:51:52] [PASSED] gt_was/22010523718
[05:51:52] [PASSED] gt_was/14011006942
[05:51:52] [PASSED] gt_was/14014830051
[05:51:52] [PASSED] gt_was/18018781329
[05:51:52] [PASSED] gt_was/1509235366
[05:51:52] [PASSED] gt_was/18018781329
[05:51:52] [PASSED] gt_was/16016694945
[05:51:52] [PASSED] gt_was/14018575942
[05:51:52] [PASSED] gt_was/22016670082
[05:51:52] [PASSED] gt_was/22016670082
[05:51:52] [PASSED] gt_was/14017421178
[05:51:52] [PASSED] gt_was/16025250150
[05:51:52] [PASSED] gt_was/14021871409
[05:51:52] [PASSED] gt_was/16021865536
[05:51:52] [PASSED] gt_was/14021486841
[05:51:52] [PASSED] gt_was/14025160223
[05:51:52] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[05:51:52] [PASSED] gt_was/14025635424
[05:51:52] [PASSED] gt_was/16028005424
[05:51:52] ============== [PASSED] xe_rtp_table_gt_test ===============
[05:51:52] ================== xe_rtp_table_gt_test  ===================
[05:51:52] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[05:51:52] [PASSED] gt_tunings/Tuning: 32B Access Enable
[05:51:52] [PASSED] gt_tunings/Tuning: L3 cache
[05:51:52] [PASSED] gt_tunings/Tuning: L3 cache - media
[05:51:52] [PASSED] gt_tunings/Tuning: Compression Overfetch
[05:51:52] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[05:51:52] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[05:51:52] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[05:51:52] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[05:51:52] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[05:51:52] [PASSED] gt_tunings/Tuning: Stateless compression control
[05:51:52] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[05:51:52] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[05:51:52] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[05:51:52] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[05:51:52] [PASSED] gt_tunings/Tuning: Force All Non-Compressible Memory Reads to be 256B Overfetches
[05:51:52] ============== [PASSED] xe_rtp_table_gt_test ===============
[05:51:52] ================== xe_rtp_table_oob_test  ==================
[05:51:52] [PASSED] oob_was/1607983814
[05:51:52] [PASSED] oob_was/16010904313
[05:51:52] [PASSED] oob_was/18022495364
[05:51:52] [PASSED] oob_was/22012773006
[05:51:52] [PASSED] oob_was/14014475959
[05:51:52] [PASSED] oob_was/22011391025
[05:51:52] [PASSED] oob_was/22012727170
[05:51:52] [PASSED] oob_was/22012727685
[05:51:52] [PASSED] oob_was/22016596838
[05:51:52] [PASSED] oob_was/18020744125
[05:51:52] [PASSED] oob_was/1409600907
[05:51:52] [PASSED] oob_was/22014953428
[05:51:52] [PASSED] oob_was/16017236439
[05:51:52] [PASSED] oob_was/14019821291
[05:51:52] [PASSED] oob_was/14015076503
[05:51:52] [PASSED] oob_was/22016122933
[05:51:52] [PASSED] oob_was/14018913170
[05:51:52] [PASSED] oob_was/14018094691
[05:51:52] [PASSED] oob_was/18024947630
[05:51:52] [PASSED] oob_was/16022287689
[05:51:52] [PASSED] oob_was/13011645652
[05:51:52] [PASSED] oob_was/14022293748
[05:51:52] [PASSED] oob_was/22019794406
[05:51:52] [PASSED] oob_was/22019338487
[05:51:52] [PASSED] oob_was/16023588340
[05:51:52] [PASSED] oob_was/14019789679
[05:51:52] [PASSED] oob_was/14022866841
[05:51:52] [PASSED] oob_was/16021333562
[05:51:52] [PASSED] oob_was/14016712196
[05:51:52] [PASSED] oob_was/14015568240
[05:51:52] [PASSED] oob_was/18013179988
[05:51:52] [PASSED] oob_was/1508761755
[05:51:52] [PASSED] oob_was/16023105232
[05:51:52] [PASSED] oob_was/16026508708
[05:51:52] [PASSED] oob_was/14020001231
[05:51:52] [PASSED] oob_was/16023683509
[05:51:52] [PASSED] oob_was/14025515070
[05:51:52] [PASSED] oob_was/15015404425_disable
[05:51:52] [PASSED] oob_was/16026007364
[05:51:52] [PASSED] oob_was/14020316580
[05:51:52] [PASSED] oob_was/14025883347
[05:51:52] [PASSED] oob_was/16029380221
[05:51:52] [PASSED] oob_was/22022079272
[05:51:52] [PASSED] oob_was/16029897822
[05:51:52] [PASSED] oob_was/14027054324
[05:51:52] [PASSED] oob_was/14025941587
[05:51:52] [PASSED] oob_was/16030224309
[05:51:52] ============== [PASSED] xe_rtp_table_oob_test ==============
[05:51:52] ================ xe_rtp_table_dev_oob_test  ================
[05:51:52] [PASSED] device_oob_was/22010954014
[05:51:52] [PASSED] device_oob_was/15015404425
[05:51:52] [PASSED] device_oob_was/22019338487_display
[05:51:52] [PASSED] device_oob_was/14022085890
[05:51:52] [PASSED] device_oob_was/14026539277
[05:51:52] [PASSED] device_oob_was/14026633728
[05:51:52] [PASSED] device_oob_was/14026746987
[05:51:52] [PASSED] device_oob_was/14026779378
[05:51:52] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[05:51:52] ========== xe_rtp_table_missing_upper_bound_test  ==========
[05:51:52] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[05:51:52] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[05:51:52] [PASSED] register_whitelist/1806527549
[05:51:52] [PASSED] register_whitelist/allow_read_ctx_timestamp
[05:51:52] [PASSED] register_whitelist/allow_read_queue_timestamp
[05:51:52] [PASSED] register_whitelist/16014440446
[05:51:52] [PASSED] register_whitelist/16017236439
[05:51:52] [PASSED] register_whitelist/16020183090
[05:51:52] [PASSED] register_whitelist/14024997852
[05:51:52] [PASSED] register_whitelist/14024997852
[05:51:52] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[05:51:52] =============== [PASSED] xe_rtp_tables_test ================
[05:51:52] =================== xe_rtp (3 subtests) ====================
[05:51:52] =================== xe_rtp_rules_tests  ====================
[05:51:52] [PASSED] no
[05:51:52] [PASSED] yes
[05:51:52] [PASSED] no-and-no
[05:51:52] [PASSED] no-and-yes
[05:51:52] [PASSED] yes-and-no
[05:51:52] [PASSED] yes-and-yes
[05:51:52] [PASSED] no-or-no
[05:51:52] [PASSED] no-or-yes
[05:51:52] [PASSED] yes-or-no
[05:51:52] [PASSED] yes-or-yes
[05:51:52] [PASSED] no-yes-or-yes-no
[05:51:52] [PASSED] no-yes-or-yes-yes
[05:51:52] [PASSED] yes-yes-or-no-yes
[05:51:52] [PASSED] yes-yes-or-yes-yes
[05:51:52] [PASSED] no-no-or-yes-or-no
[05:51:52] [PASSED] or
[05:51:52] [PASSED] or-yes
[05:51:52] [PASSED] or-no
[05:51:52] [PASSED] yes-or
[05:51:52] [PASSED] no-or
[05:51:52] [PASSED] no-or-or-yes
[05:51:52] [PASSED] yes-or-or-no
[05:51:52] [PASSED] no-or-or-no
[05:51:52] [PASSED] missing-context-engine-class
[05:51:52] [PASSED] missing-context-engine-class-or-yes
[05:51:52] [PASSED] missing-context-engine-class-or-or-yes
[05:51:52] =============== [PASSED] xe_rtp_rules_tests ================
[05:51:52] =============== xe_rtp_process_to_sr_tests  ================
[05:51:52] [PASSED] coalesce-same-reg
[05:51:52] [PASSED] coalesce-same-reg-literal-and-func
[05:51:52] [PASSED] no-match-no-add
[05:51:52] [PASSED] two-regs-two-entries
[05:51:52] [PASSED] clr-one-set-other
[05:51:52] [PASSED] set-field
[05:51:52] [PASSED] conflict-duplicate
[05:51:52] [PASSED] conflict-not-disjoint
[05:51:52] [PASSED] conflict-not-disjoint-literal-and-func
[05:51:52] [PASSED] conflict-reg-type
[05:51:52] [PASSED] bad-mcr-reg-forced-to-regular
[05:51:52] [PASSED] bad-regular-reg-forced-to-mcr
[05:51:52] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[05:51:52] ================== xe_rtp_process_tests  ===================
[05:51:52] [PASSED] active1
[05:51:52] [PASSED] active2
[05:51:52] [PASSED] active-inactive
[05:51:52] [PASSED] inactive-active
[05:51:52] [PASSED] inactive-active-inactive
[05:51:52] [PASSED] inactive-inactive-inactive
[05:51:52] ============== [PASSED] xe_rtp_process_tests ===============
[05:51:52] ===================== [PASSED] xe_rtp ======================
[05:51:52] ==================== xe_wa (1 subtest) =====================
[05:51:52] ======================== xe_wa_gt  =========================
[05:51:52] [PASSED] TIGERLAKE B0
[05:51:52] [PASSED] DG1 A0
[05:51:52] [PASSED] DG1 B0
[05:51:52] [PASSED] ALDERLAKE_S A0
[05:51:52] [PASSED] ALDERLAKE_S B0
[05:51:52] [PASSED] ALDERLAKE_S C0
[05:51:52] [PASSED] ALDERLAKE_S D0
[05:51:52] [PASSED] ALDERLAKE_P A0
[05:51:52] [PASSED] ALDERLAKE_P B0
[05:51:52] [PASSED] ALDERLAKE_P C0
[05:51:52] [PASSED] ALDERLAKE_S RPLS D0
[05:51:52] [PASSED] ALDERLAKE_P RPLU E0
[05:51:52] [PASSED] DG2 G10 C0
[05:51:52] [PASSED] DG2 G11 B1
[05:51:52] [PASSED] DG2 G12 A1
[05:51:52] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[05:51:52] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[05:51:52] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[05:51:52] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[05:51:52] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[05:51:52] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[05:51:52] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[05:51:52] ==================== [PASSED] xe_wa_gt =====================
[05:51:52] ====================== [PASSED] xe_wa ======================
[05:51:52] ============================================================
[05:51:52] Testing complete. Ran 838 tests: passed: 809, skipped: 29
[05:51:52] Elapsed time: 42.625s total, 1.891s configuring, 39.968s building, 0.731s running

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

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

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[05:52:33] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[05:52:35] 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
[05:52:43] Starting KUnit Kernel (1/1)...
[05:52:43] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[05:52:43] =============== dma-buf-fence (12 subtests) ================
[05:52:43] [PASSED] test_sanitycheck
[05:52:43] [PASSED] test_signaling
[05:52:43] [PASSED] test_add_callback
[05:52:43] [PASSED] test_late_add_callback
[05:52:43] [PASSED] test_rm_callback
[05:52:43] [PASSED] test_late_rm_callback
[05:52:43] [PASSED] test_status
[05:52:43] [PASSED] test_error
[05:52:43] [PASSED] test_wait
[05:52:43] [PASSED] test_wait_timeout
[05:52:43] [PASSED] test_stub
[05:52:43] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[05:52:43] ================== [PASSED] dma-buf-fence ==================
[05:52:43] ============ dma-buf-fence-chain (11 subtests) =============
[05:52:43] [PASSED] test_sanitycheck
[05:52:43] [PASSED] test_find_seqno
[05:52:43] [PASSED] test_find_signaled
[05:52:43] [PASSED] test_find_out_of_order
[05:52:49] [PASSED] test_find_gap
[05:52:49] [PASSED] test_find_race
[05:52:49] [PASSED] test_signal_forward
[05:52:49] [PASSED] test_signal_backward
[05:52:49] [PASSED] test_wait_forward
[05:52:49] [PASSED] test_wait_backward
[05:52:49] [PASSED] test_wait_random
[05:52:49] =============== [PASSED] dma-buf-fence-chain ===============
[05:52:49] ============ dma-buf-fence-unwrap (11 subtests) ============
[05:52:49] [PASSED] test_sanitycheck
[05:52:49] [PASSED] test_unwrap_array
[05:52:49] [PASSED] test_unwrap_chain
[05:52:49] [PASSED] test_unwrap_chain_array
[05:52:49] [PASSED] test_unwrap_merge
[05:52:49] [PASSED] test_unwrap_merge_duplicate
[05:52:49] [PASSED] test_unwrap_merge_seqno
[05:52:49] [PASSED] test_unwrap_merge_order
[05:52:49] [PASSED] test_unwrap_merge_complex
[05:52:49] [PASSED] test_unwrap_merge_complex_seqno
[05:52:49] [PASSED] test_dedup_empty
[05:52:49] ============== [PASSED] dma-buf-fence-unwrap ===============
[05:52:49] ================ dma-buf-resv (5 subtests) =================
[05:52:49] [PASSED] test_sanitycheck
[05:52:49] ===================== test_signaling  ======================
[05:52:49] [PASSED] kernel
[05:52:49] [PASSED] write
[05:52:49] [PASSED] read
[05:52:49] [PASSED] bookkeep
[05:52:49] ================= [PASSED] test_signaling ==================
[05:52:49] ====================== test_for_each  ======================
[05:52:49] [PASSED] kernel
[05:52:49] [PASSED] write
[05:52:49] [PASSED] read
[05:52:49] [PASSED] bookkeep
[05:52:49] ================== [PASSED] test_for_each ==================
[05:52:49] ================= test_for_each_unlocked  ==================
[05:52:49] [PASSED] kernel
[05:52:49] [PASSED] write
[05:52:49] [PASSED] read
[05:52:49] [PASSED] bookkeep
[05:52:49] ============= [PASSED] test_for_each_unlocked ==============
[05:52:49] ===================== test_get_fences  =====================
[05:52:49] [PASSED] kernel
[05:52:49] [PASSED] write
[05:52:49] [PASSED] read
[05:52:49] [PASSED] bookkeep
[05:52:49] ================= [PASSED] test_get_fences =================
[05:52:49] ================== [PASSED] dma-buf-resv ===================
[05:52:49] ============================================================
[05:52:49] Testing complete. Ran 51 tests: passed: 50, skipped: 1
[05:52:49] Elapsed time: 15.937s total, 1.838s configuring, 8.826s building, 5.264s running

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



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

* ✓ Xe.CI.BAT: success for Enable DP2.1 alpm (rev7)
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (21 preceding siblings ...)
  2026-10-26  5:52 ` ✓ CI.KUnit: success " Patchwork
@ 2026-10-26  6:28 ` Patchwork
  2026-10-26  8:06 ` ✗ Xe.CI.FULL: failure " Patchwork
  23 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2026-10-26  6:28 UTC (permalink / raw)
  To: Animesh Manna; +Cc: intel-xe

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

== Series Details ==

Series: Enable DP2.1 alpm (rev7)
URL   : https://patchwork.freedesktop.org/series/156416/
State : success

== Summary ==

CI Bug Log - changes from xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a_BAT -> xe-pw-156416v7_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (15 -> 15)
------------------------------

  No changes in participating hosts


Changes
-------

  No changes found


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

  * IGT: IGT_9163 -> IGT_9164
  * Linux: xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a -> xe-pw-156416v7

  IGT_9163: 9163
  IGT_9164: 9164
  xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a: d56ff005f0d16ec136ee31fe3238eb447fefdc1a
  xe-pw-156416v7: 156416v7

== Logs ==

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

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

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

* Re: [PATCH v7 10/20] drm/i915/alpm: Half LFPS cycle calculation
  2026-10-26  5:39 ` [PATCH v7 10/20] drm/i915/alpm: Half LFPS cycle calculation Animesh Manna
@ 2026-10-26  7:06   ` sashiko-bot
  0 siblings, 0 replies; 31+ messages in thread
From: sashiko-bot @ 2026-10-26  7:06 UTC (permalink / raw)
  To: Animesh Manna, intel-gfx, intel-xe, dri-devel

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] drm/i915/alpm: uninitialized variables in get_lfps_cycle_time()
--

commit 5c47cf246b743bb16ee9903923cc22a473083617
Author: Animesh Manna <animesh.manna@intel.com>

drm/i915/alpm: Half LFPS cycle calculation

This patch updates the LFPS cycle period minimum and maximum calculation for
DP2.1 ALPM by splitting it into HAS_LT_PHY() and non-LT-PHY helpers that check
whether the output type is eDP.

> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
> index 2bf2ca9564391..b6de938990ddb 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
> @@ -81,24 +81,49 @@ static int get_silence_period_symbols(const struct intel_crtc_state *crtc_state)
>  		1000 / 1000;
>  }
>  
> -static void get_lfps_cycle_min_max_time(const struct intel_crtc_state *crtc_state,
> -					int *min, int *max)
> +static void lnl_get_lfps_period_min_max_time(const struct intel_crtc_state *crtc_state,
> +					     int *min, int *max)
>  {
> -	if (crtc_state->port_clock < 540000) {
> -		*min = 65 * LFPS_CYCLE_COUNT;
> -		*max = 75 * LFPS_CYCLE_COUNT;
> -	} else {
> +	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP)) {
> +		if (crtc_state->port_clock < 540000) {
> +			*min = 65 * LFPS_CYCLE_COUNT;
> +			*max = 75 * LFPS_CYCLE_COUNT;
> +		} else {
> +			*min = 140;
> +			*max = 800;
> +		}
> +	}
> +}
> +
> +static void lt_get_lfps_period_min_max_time(const struct intel_crtc_state *crtc_state,
> +					    int *min, int *max)
> +{
> +	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP)) {
>  		*min = 140;
>  		*max = 800;
> +	} else {
> +		*min = 320;
> +		*max = 1600;
>  	}
>  }
>  
> +static void get_lfps_period_min_max_time(const struct intel_crtc_state *crtc_state,
> +					int *min, int *max)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +
> +	if (HAS_LT_PHY(display))
> +		lt_get_lfps_period_min_max_time(crtc_state, min, max);
> +	else
> +		lnl_get_lfps_period_min_max_time(crtc_state, min, max);
> +}
> +
>  static int get_lfps_cycle_time(const struct intel_crtc_state *crtc_state)
>  {
>  	int tlfps_cycle_min, tlfps_cycle_max;
>  
> -	get_lfps_cycle_min_max_time(crtc_state, &tlfps_cycle_min,
> -				    &tlfps_cycle_max);
> +	get_lfps_period_min_max_time(crtc_state, &tlfps_cycle_min,
> +				     &tlfps_cycle_max);
>  
>  	return tlfps_cycle_min +  (tlfps_cycle_max - tlfps_cycle_min) / 2;
>  }

[Severity: High]
Can tlfps_cycle_min and tlfps_cycle_max be used uninitialized in
get_lfps_cycle_time()?

In get_lfps_cycle_time(), tlfps_cycle_min and tlfps_cycle_max are declared
without initialization and passed to get_lfps_period_min_max_time(). When
HAS_LT_PHY(display) is false, get_lfps_period_min_max_time() calls
lnl_get_lfps_period_min_max_time(), which only assigns *min and *max when
intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP) is true.

For non-eDP outputs on !HAS_LT_PHY(display) platforms, *min and *max are
never written before get_lfps_cycle_time() computes:

	return tlfps_cycle_min +  (tlfps_cycle_max - tlfps_cycle_min) / 2;

In particular, get_establishment_period() calls get_lfps_cycle_time() when
lttpr_count > 0, which only occurs in the !intel_crtc_has_type(crtc_state,
INTEL_OUTPUT_EDP) branch:

drivers/gpu/drm/i915/display/intel_alpm.c:get_establishment_period() {
	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP)) {
		num_ml_phy_lock = 7 + DIV_ROUND_UP(6500, tml_phy_lock) + 1;
	} else {
		num_ml_phy_lock = 7;

		lttpr_count = drm_dp_lttpr_count(intel_dp->lttpr_common_caps);
		...
	}
	...
	if (lttpr_count > 0) {
		/* tlw and tcs values are taken from DP2.1 spec */
		int tlw = 13000;
		int tcs = 10000;
		int tlfps_period = get_lfps_cycle_time(crtc_state);
		...
	}
}

Would this leave tlfps_cycle_min and tlfps_cycle_max uninitialized at
runtime for non-eDP DP outputs and trigger -Wmaybe-uninitialized or
-Wsometimes-uninitialized warnings during the build?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261026054001.799894-1-animesh.manna@intel.com?part=10

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

* Re: [PATCH v7 04/20] drm/i915/alpm: alpm_init() for DP2.1
  2026-10-26  5:39 ` [PATCH v7 04/20] drm/i915/alpm: alpm_init() for DP2.1 Animesh Manna
@ 2026-10-26  7:11   ` sashiko-bot
  0 siblings, 0 replies; 31+ messages in thread
From: sashiko-bot @ 2026-10-26  7:11 UTC (permalink / raw)
  To: Animesh Manna, intel-gfx, intel-xe, dri-devel

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] drm/i915/alpm: wrong transcoder ALPM_CTL access in intel_alpm_disable()
--

commit 16555494a05a6a62d73ca6ad3e0999793ea5b8b4
Author: Animesh Manna <animesh.manna@intel.com>

drm/i915/alpm: alpm_init() for DP2.1

This commit initializes ALPM for DP 2.1 on display version 35 and newer,
separating the ALPM mutex initialization from DPCD capability initialization
and checking source support instead of sink capabilities in
intel_alpm_disable().

> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
> index cb1d68fef1986..b6307862b7560 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
[ ... ]
> @@ -750,7 +763,11 @@ void intel_alpm_disable(struct intel_dp *intel_dp)
>  	struct intel_display *display = to_intel_display(intel_dp);
>  	enum transcoder cpu_transcoder = intel_dp->alpm.transcoder;
>  
> -	if (DISPLAY_VER(display) < 20 || !intel_dp->alpm_dpcd)
> +	/*
> +	 * Don't check sink ALPM caps here, they are reset on disconnect
> +	 * before the CRTC is disabled.
> +	 */
> +	if (DISPLAY_VER(display) < 20 || !intel_alpm_source_supported(intel_dp))
>  		return;

[Severity: High]
Can replacing the intel_dp->alpm_dpcd check with
intel_alpm_source_supported(intel_dp) here cause intel_alpm_disable() to
modify ALPM_CTL on the wrong transcoder when ALPM was never configured on
intel_dp?

Because struct intel_digital_port is zero-allocated,
intel_dp->alpm.transcoder starts at 0 (TRANSCODER_A, rather than
INVALID_TRANSCODER), and intel_alpm_init() does not initialize it. Across
the driver, intel_dp->alpm.transcoder is only set in
intel_alpm_configure():

drivers/gpu/drm/i915/display/intel_alpm.c:intel_alpm_configure() {
	lnl_alpm_configure(intel_dp, crtc_state);
	intel_dp->alpm.transcoder = crtc_state->cpu_transcoder;
}

which is only called from intel_psr_enable_source() when
crtc_state->has_psr is true or from intel_alpm_lobf_enable() when
new_crtc_state->has_lobf is true.

However, intel_ddi_disable_dp() unconditionally calls
intel_alpm_disable(intel_dp) whenever any DP or eDP encoder is disabled:

drivers/gpu/drm/i915/display/intel_ddi.c:intel_ddi_disable_dp() {
	...
	intel_panel_unprepare(old_conn_state);
	intel_psr_disable(intel_dp, old_crtc_state);
	intel_alpm_disable(intel_dp);
	...
}

And intel_dp_short_pulse() also calls intel_alpm_disable(intel_dp) if
reading DP_RECEIVER_ALPM_STATUS fails or reports an error:

drivers/gpu/drm/i915/display/intel_dp.c:intel_dp_short_pulse() {
	...
	if (intel_alpm_get_error(intel_dp)) {
		intel_alpm_disable(intel_dp);
		intel_dp->alpm.sink_alpm_error = true;
	}
	...
}

Previously, !intel_dp->alpm_dpcd caused intel_alpm_disable() to return
early for external DP connectors and eDP panels without ALPM support. With
this change, if an external DP connector on DISPLAY_VER(display) >= 35 (or
an eDP connector on DISPLAY_VER(display) >= 20) is enabled on
TRANSCODER_B/C/D without PSR, Panel Replay, or LOBF, intel_alpm_configure()
is never called and intel_dp->alpm.transcoder remains TRANSCODER_A (or a
stale transcoder from a previous modeset).

When that connector is later disabled or hits the short HPD pulse error
path, intel_alpm_disable() will lock that connector's intel_dp->alpm.lock
and clear ALPM_CTL_ALPM_ENABLE | ALPM_CTL_LOBF_ENABLE in
ALPM_CTL(display, TRANSCODER_A). If TRANSCODER_A is active on another
connector (such as eDP on Pipe A), this races with Pipe A and disables its
active ALPM/LOBF state; if TRANSCODER_A's power well is off, it triggers an
unclaimed MMIO register access.

Should intel_dp->alpm.transcoder be initialized to INVALID_TRANSCODER in
intel_alpm_init(), reset to INVALID_TRANSCODER in intel_alpm_disable(), and
checked for INVALID_TRANSCODER before accessing ALPM_CTL()?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261026054001.799894-1-animesh.manna@intel.com?part=4

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

* Re: [PATCH v7 16/20] drm/i915/alpm: Replace is_edp() with alpm_is_possible()
  2026-10-26  5:39 ` [PATCH v7 16/20] drm/i915/alpm: Replace is_edp() with alpm_is_possible() Animesh Manna
@ 2026-10-26  7:16   ` sashiko-bot
  0 siblings, 0 replies; 31+ messages in thread
From: sashiko-bot @ 2026-10-26  7:16 UTC (permalink / raw)
  To: Animesh Manna, intel-gfx, intel-xe, dri-devel

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] drm/i915/alpm: uninitialized mutex lock in intel_alpm_lobf_disable()
--

commit 3691f816d97c5d3f84209f1900c4bc02406c352b
Author: Animesh Manna <animesh.manna@intel.com>

drm/i915/alpm: Replace is_edp() with alpm_is_possible()

This commit introduces intel_alpm_is_possible() to check ALPM capability
from DPCD and LTTPR info instead of checking intel_dp_is_edp() in
intel_alpm_lobf_compute_config(). It also removes the intel_dp_is_edp()
checks from intel_alpm_lobf_enable() and intel_alpm_lobf_disable().

> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
> index 4e761022485d7..205f1ae10d431 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.c

[ ... ]

> @@ -829,9 +848,6 @@ void intel_alpm_lobf_disable(const struct intel_crtc_state *new_crtc_state)
>  
>  		intel_dp = enc_to_intel_dp(encoder);
>  
> -		if (!intel_dp_is_edp(intel_dp))
> -			continue;
> -
>  		mutex_lock(&intel_dp->alpm.lock);
>  		intel_de_write(display, ALPM_CTL(display, cpu_transcoder), 0);
>  		drm_dbg_kms(display->drm, "Link off between frames (LOBF) disabled\n");

[Severity: High]
Can removing the intel_dp_is_edp() check in intel_alpm_lobf_disable() cause
mutex_lock(&intel_dp->alpm.lock) to be called on an uninitialized mutex?

In drivers/gpu/drm/i915/display/intel_alpm.c, intel_alpm_init() only
initializes alpm.lock when intel_alpm_source_supported(intel_dp) is true:

void intel_alpm_init(struct intel_dp *intel_dp)
{
	if (!intel_alpm_source_supported(intel_dp))
		return;

	mutex_init(&intel_dp->alpm.lock);
}

On platforms with DISPLAY_VER between 20 and 34, intel_alpm_source_supported()
is only true for eDP encoders, so non-eDP DP encoders leave alpm.lock
uninitialized.

In drivers/gpu/drm/i915/display/intel_display.c, intel_pre_plane_update()
checks whether LOBF is being disabled via intel_crtc_lobf_disabling(), which
inspects old_crtc_state->has_lobf, but then passes new_crtc_state to
intel_alpm_lobf_disable():

	if (intel_crtc_lobf_disabling(old_crtc_state, new_crtc_state))
		intel_alpm_lobf_disable(new_crtc_state);

If a CRTC with LOBF active on an eDP encoder (old_crtc_state->has_lobf is
true) is switched in an atomic modeset to a non-eDP DP encoder
(new_crtc_state->has_lobf is false), intel_alpm_lobf_disable() iterates over
new_crtc_state->uapi.encoder_mask and calls mutex_lock(&intel_dp->alpm.lock)
on the non-eDP encoder whose mutex was never initialized.

Additionally, because intel_alpm_lobf_disable() inspects new_crtc_state
rather than old_crtc_state, disabling a CRTC by detaching its connector
(leaving new_crtc_state->uapi.encoder_mask empty) skips the loop and leaves
ALPM_CTL enabled, or on DISPLAY_VER >= 35 locks the new encoder's alpm.lock
instead of the old encoder's.

Should intel_pre_plane_update() pass old_crtc_state to
intel_alpm_lobf_disable(const struct intel_crtc_state *old_crtc_state) so it
operates on the encoder and transcoder where LOBF was previously enabled?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261026054001.799894-1-animesh.manna@intel.com?part=16

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

* Re: [PATCH v7 19/20] drm/i915/alpm: Introduce has_alpm to decouple from pr/psr2/lobf
  2026-10-26  5:39 ` [PATCH v7 19/20] drm/i915/alpm: Introduce has_alpm to decouple from pr/psr2/lobf Animesh Manna
@ 2026-10-26  7:23   ` sashiko-bot
  0 siblings, 0 replies; 31+ messages in thread
From: sashiko-bot @ 2026-10-26  7:23 UTC (permalink / raw)
  To: Animesh Manna, intel-gfx, intel-xe, dri-devel

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] drm/i915/alpm: ALPM left enabled on DP Panel Replay disable or !has_alpm
- [Medium] drm/i915/alpm: intel_psr_min_guardband() skips DP Panel Replay ALPM wake lines
--

commit 599e7704f4924a7a5dd73754cb1a7ffd13dae956
Author: Animesh Manna <animesh.manna@intel.com>

drm/i915/alpm: Introduce has_alpm to decouple from pr/psr2/lobf

This patch introduces crtc_state->has_alpm in intel_alpm_compute_config_late()
to decouple ALPM enablement from Panel Replay, PSR2, and LOBF so that DP 2.1
Panel Replay can operate with or without ALPM.

> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
> index 65d06e8ebbe06..47263af0970cf 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
[ ... ]
> @@ -598,14 +599,34 @@ void intel_alpm_compute_config(struct intel_dp *intel_dp,
>  
>  	crtc_state->alpm_state.aux_wake_possible = true;
>  	crtc_state->alpm_state.aux_less_possible =
> -		DISPLAY_VER(display) >= 20 &&
> -		(intel_dp_is_edp(intel_dp) ||
> -		 (intel_alpm_is_possible(intel_dp, crtc_state) &&
> -		  intel_alpm_aux_less_wake_supported(intel_dp)));
> +		DISPLAY_VER(display) >= 20 && intel_alpm_is_possible(intel_dp, crtc_state) &&
> +		(intel_dp_is_edp(intel_dp) || intel_alpm_aux_less_wake_supported(intel_dp));
>  
>  	intel_alpm_lobf_compute_config(intel_dp, crtc_state);
>  }
>  
> +/*
> + * Decide whether ALPM is enabled once PSR, Panel Replay and LOBF have been
> + * finalized. eDP Panel Replay and PSR2 always use ALPM, for DP Panel Replay
> + * ALPM is optional and used only if the AUX-less wake time fits.
> + */
> +void intel_alpm_compute_config_late(struct intel_dp *intel_dp,
> +				    struct intel_crtc_state *crtc_state)
> +{
> +	int aux_less_wake_lines = crtc_state->alpm_state.aux_less_wake_lines;
> +
> +	intel_alpm_lobf_compute_config_late(intel_dp, crtc_state);
> +
> +	if (crtc_state->has_psr && crtc_state->has_panel_replay)
> +		crtc_state->has_alpm = intel_dp_is_edp(intel_dp) ||
> +			(crtc_state->alpm_state.aux_less_possible &&
> +			 intel_psr_wake_lines_fit_into_vblank(crtc_state, aux_less_wake_lines));

[Severity: Medium]
Can intel_psr_wake_lines_fit_into_vblank() fail to enable crtc_state->has_alpm
on external DP Panel Replay because intel_psr_min_guardband() does not reserve
aux_less_wake_lines for non-eDP outputs?

On DISPLAY_VER(display) >= 35, intel_vrr_always_use_vrr_tg() and
intel_vrr_use_optimized_guardband() are used, so before
intel_dp_compute_config_late() -> intel_alpm_compute_config_late() runs,
intel_crtc_compute_config() -> intel_vrr_compute_guardband() ->
intel_vrr_compute_optimized_guardband() computes crtc_state->vrr.guardband and
adjusts crtc_vblank_start:

drivers/gpu/drm/i915/display/intel_vrr.c:intel_vrr_compute_optimized_guardband() {
	...
	if (intel_crtc_has_dp_encoder(crtc_state)) {
		guardband = max(guardband, intel_psr_min_guardband(crtc_state));
		guardband = max(guardband, intel_dp_sdp_min_guardband(crtc_state, true));
		guardband = max(guardband, intel_alpm_lobf_min_guardband(crtc_state));
	}
	...
}

drivers/gpu/drm/i915/display/intel_vrr.c:intel_vrr_compute_guardband() {
	...
	if (intel_vrr_always_use_vrr_tg(display)) {
		adjusted_mode->crtc_vblank_start  =
			adjusted_mode->crtc_vtotal - crtc_state->vrr.guardband;
	...
}

However, intel_psr_min_guardband() in drivers/gpu/drm/i915/display/intel_psr.c
currently skips non-eDP encoders:

drivers/gpu/drm/i915/display/intel_psr.c:intel_psr_min_guardband() {
	...
	if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP))
		return 0;

	if (crtc_state->has_panel_replay)
		wake_lines = crtc_state->alpm_state.aux_less_wake_lines;
	...
}

When crtc_state->has_lobf is false (for example, when !intel_dp->as_sdp_supported,
intel_dp->alpm.lobf_disable_debug is set, or intel_dp->alpm.sink_alpm_error is
set), intel_alpm_lobf_min_guardband() also returns 0. That shrinks
crtc_state->vrr.guardband (and therefore intel_crtc_vblank_length(crtc_state))
to the prefill/SDP guardband, which can be smaller than aux_less_wake_lines
even when the mode's full vblank is large enough.

Should intel_psr_min_guardband() also reserve aux_less_wake_lines for external
DP Panel Replay when crtc_state->alpm_state.aux_less_possible is true?

> +	else if (crtc_state->has_psr && crtc_state->has_sel_update)
> +		crtc_state->has_alpm = intel_dp_is_edp(intel_dp);
> +	else
> +		crtc_state->has_alpm = crtc_state->has_lobf;
> +}
[ ... ]
> @@ -767,8 +788,7 @@ static void lnl_alpm_configure(struct intel_dp *intel_dp,
>  	u32 alpm_ctl, alpm_ctl2;
>  	int lttpr_count;
>  
> -	if (DISPLAY_VER(display) < 20 || (!intel_psr_needs_alpm(intel_dp, crtc_state) &&
> -					  !crtc_state->has_lobf))
> +	if (DISPLAY_VER(display) < 20 || !crtc_state->has_alpm)
>  		return;
[ ... ]
> @@ -888,13 +908,12 @@ void intel_alpm_enable_sink(struct intel_dp *intel_dp,
>  {
>  	u8 val;
>  
> -	if (!intel_psr_needs_alpm(intel_dp, crtc_state) && !crtc_state->has_lobf)
> +	if (!crtc_state->has_alpm)
>  		return;
>  
>  	val = DP_ALPM_ENABLE | DP_ALPM_LOCK_ERROR_IRQ_HPD_ENABLE;
>  
> -	if (crtc_state->has_panel_replay || (crtc_state->has_lobf &&
> -					     intel_alpm_aux_less_wake_supported(intel_dp)))
> +	if (intel_alpm_is_aux_less(intel_dp, crtc_state))
>  		val |= DP_ALPM_MODE_AUX_LESS;
>  
>  	drm_dp_dpcd_write_byte(&intel_dp->aux, DP_RECEIVER_ALPM_CONFIG, val);

[Severity: High]
With crtc_state->has_alpm now enabling ALPM in lnl_alpm_configure() and
intel_alpm_enable_sink() for non-eDP Panel Replay, can ALPM remain enabled on
both the source and sink when DP Panel Replay is later disabled or reconfigured
to !crtc_state->has_alpm?

In drivers/gpu/drm/i915/display/intel_psr.c, intel_psr_disable_locked() still
guards intel_alpm_disable() with intel_dp_is_edp() and only clears
DP_RECEIVER_ALPM_CONFIG when !intel_dp->psr.panel_replay_enabled:

drivers/gpu/drm/i915/display/intel_psr.c:intel_psr_disable_locked() {
	...
	if (intel_dp->psr.panel_replay_enabled && intel_dp_is_edp(intel_dp))
		intel_alpm_disable(intel_dp);

	/* Disable PSR on Sink */
	if (!intel_dp->psr.panel_replay_enabled) {
		drm_dp_dpcd_write_byte(&intel_dp->aux, DP_PSR_EN_CFG, 0);

		if (intel_dp->psr.sel_update_enabled)
			drm_dp_dpcd_write_byte(&intel_dp->aux,
					       DP_RECEIVER_ALPM_CONFIG, 0);
	}
}

When external DP Panel Replay (!intel_dp_is_edp(intel_dp)) with ALPM is
disabled without a full encoder disable (such as in
intel_psr_pre_plane_update() when all planes become inactive, during fastsets,
or on a sink error in intel_psr_short_pulse()), intel_alpm_disable() is skipped
and ALPM_CTL_ALPM_ENABLE stays set in ALPM_CTL. Subsequent re-enables in
intel_psr_post_plane_update() -> intel_psr_enable_locked() ->
intel_psr_enable_source() -> intel_alpm_configure() -> lnl_alpm_configure()
then rewrite ALPM_CTL, ALPM_CTL2, and PR_ALPM_CTL while ALPM is still enabled
in hardware.

Furthermore, because neither intel_psr_disable_locked() nor
intel_alpm_enable_sink() clears DP_RECEIVER_ALPM_CONFIG for Panel Replay when
transitioning to !crtc_state->has_alpm, won't DP_RECEIVER_ALPM_CONFIG remain
enabled on the sink (and ALPM_CTL remain enabled on the source across a
fastset) if a subsequent commit runs Panel Replay without ALPM?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261026054001.799894-1-animesh.manna@intel.com?part=19

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

* ✗ Xe.CI.FULL: failure for Enable DP2.1 alpm (rev7)
  2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
                   ` (22 preceding siblings ...)
  2026-10-26  6:28 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-10-26  8:06 ` Patchwork
  23 siblings, 0 replies; 31+ messages in thread
From: Patchwork @ 2026-10-26  8:06 UTC (permalink / raw)
  To: Animesh Manna; +Cc: intel-xe

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

== Series Details ==

Series: Enable DP2.1 alpm (rev7)
URL   : https://patchwork.freedesktop.org/series/156416/
State : failure

== Summary ==

CI Bug Log - changes from xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a_FULL -> xe-pw-156416v7_FULL
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-156416v7_FULL absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-156416v7_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 (3 -> 3)
------------------------------

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-156416v7_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-invalidate-imm:
    - shard-ptl:          [PASS][1] -> [FAIL][2] +3 other tests fail
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-ptl-2/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-invalidate-imm.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-1/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-invalidate-imm.html

  
New tests
---------

  New tests have been introduced between xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a_FULL and xe-pw-156416v7_FULL:

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

  * igt@xe_oa@tail-address-wrap@oam-2-1m:
    - Statuses : 1 pass(s)
    - Exec time: [0.12] s

  * igt@xe_oa@tail-address-wrap@sag-1-1m:
    - Statuses : 1 pass(s)
    - Exec time: [0.12] s

  

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

  Here are the changes found in xe-pw-156416v7_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_big_fb@4-tiled-32bpp-rotate-90:
    - shard-ptl:          NOTRUN -> [SKIP][3] ([Intel XE#5901]) +3 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-8/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-90:
    - shard-lnl:          NOTRUN -> [SKIP][4] ([Intel XE#1407])
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-1/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
    - shard-bmg:          NOTRUN -> [SKIP][5] ([Intel XE#607] / [Intel XE#7361])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-3/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-180:
    - shard-ptl:          NOTRUN -> [SKIP][6] ([Intel XE#5808]) +6 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-5/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#1124]) +2 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-5/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-lnl:          NOTRUN -> [SKIP][8] ([Intel XE#1124]) +1 other test skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-3/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_bw@connected-linear-tiling-3-displays-target-2160x1440p:
    - shard-ptl:          NOTRUN -> [SKIP][9] ([Intel XE#7679])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-5/igt@kms_bw@connected-linear-tiling-3-displays-target-2160x1440p.html

  * igt@kms_bw@connected-linear-tiling-4-displays-target-2160x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][10] ([Intel XE#7679])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-6/igt@kms_bw@connected-linear-tiling-4-displays-target-2160x1440p.html

  * igt@kms_bw@linear-tiling-1-displays-target-1920x1080p:
    - shard-bmg:          [PASS][11] -> [SKIP][12] ([Intel XE#367])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-bmg-7/igt@kms_bw@linear-tiling-1-displays-target-1920x1080p.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-1/igt@kms_bw@linear-tiling-1-displays-target-1920x1080p.html

  * igt@kms_bw@linear-tiling-4-displays-target-3840x2160p:
    - shard-ptl:          NOTRUN -> [SKIP][13] ([Intel XE#367])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-3/igt@kms_bw@linear-tiling-4-displays-target-3840x2160p.html

  * igt@kms_ccs@bad-pixel-format-yf-tiled-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][14] ([Intel XE#2887]) +1 other test skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-6/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc:
    - shard-ptl:          NOTRUN -> [SKIP][15] ([Intel XE#5822]) +5 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-8/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
    - shard-bmg:          [PASS][16] -> [INCOMPLETE][17] ([Intel XE#7084] / [Intel XE#8150]) +1 other test incomplete
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-10/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#3432])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-b-dp-1:
    - shard-bmg:          NOTRUN -> [SKIP][19] ([Intel XE#2652]) +3 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-b-dp-1.html

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][20] ([Intel XE#2887]) +3 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-4/igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs.html

  * igt@kms_chamelium_audio@hdmi-audio-after-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][21] ([Intel XE#2252]) +1 other test skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-6/igt@kms_chamelium_audio@hdmi-audio-after-suspend.html

  * igt@kms_chamelium_color@ctm-0-50:
    - shard-lnl:          NOTRUN -> [SKIP][22] ([Intel XE#306] / [Intel XE#7358])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-5/igt@kms_chamelium_color@ctm-0-50.html

  * igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lim:
    - shard-ptl:          NOTRUN -> [SKIP][23] ([Intel XE#8391]) +3 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-8/igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lim.html

  * igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709-lim-lut1d:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#7358]) +1 other test skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-1/igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709-lim-lut1d.html

  * igt@kms_chamelium_color_pipeline@plane-lut1d-ctm3x4-lut1d:
    - shard-lnl:          NOTRUN -> [SKIP][25] ([Intel XE#7358])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-5/igt@kms_chamelium_color_pipeline@plane-lut1d-ctm3x4-lut1d.html

  * igt@kms_chamelium_edid@dp-mode-timings:
    - shard-ptl:          NOTRUN -> [SKIP][26] ([Intel XE#2252]) +1 other test skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@kms_chamelium_edid@dp-mode-timings.html

  * igt@kms_color_pipeline@plane-lut1d-ctm3x4@pipe-a-plane-3:
    - shard-ptl:          NOTRUN -> [SKIP][27] ([Intel XE#6969]) +7 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-3/igt@kms_color_pipeline@plane-lut1d-ctm3x4@pipe-a-plane-3.html

  * igt@kms_content_protection@atomic-dpms-hdcp14@pipe-a-dp-1:
    - shard-bmg:          NOTRUN -> [FAIL][28] ([Intel XE#3304])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-7/igt@kms_content_protection@atomic-dpms-hdcp14@pipe-a-dp-1.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-bmg:          NOTRUN -> [SKIP][29] ([Intel XE#2390] / [Intel XE#6974])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-2/igt@kms_content_protection@dp-mst-lic-type-1.html
    - shard-ptl:          NOTRUN -> [SKIP][30] ([Intel XE#5832] / [Intel XE#6974])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-6/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@dp-mst-type-0-suspend-resume:
    - shard-ptl:          NOTRUN -> [SKIP][31] ([Intel XE#6974])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-3/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html

  * igt@kms_content_protection@legacy:
    - shard-lnl:          NOTRUN -> [SKIP][32] ([Intel XE#7642])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-6/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@lic-type-0-hdcp14@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][33] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-4/igt@kms_content_protection@lic-type-0-hdcp14@pipe-a-dp-2.html

  * igt@kms_cursor_crc@cursor-onscreen-32x10:
    - shard-bmg:          NOTRUN -> [SKIP][34] ([Intel XE#2320]) +1 other test skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-3/igt@kms_cursor_crc@cursor-onscreen-32x10.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-lnl:          NOTRUN -> [SKIP][35] ([Intel XE#2321] / [Intel XE#7355])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-8/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-random-256x85:
    - shard-lnl:          NOTRUN -> [SKIP][36] ([Intel XE#1424])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-5/igt@kms_cursor_crc@cursor-random-256x85.html

  * igt@kms_cursor_crc@cursor-rapid-movement-256x85:
    - shard-ptl:          NOTRUN -> [SKIP][37] ([Intel XE#5900]) +3 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-8/igt@kms_cursor_crc@cursor-rapid-movement-256x85.html

  * igt@kms_cursor_crc@cursor-sliding-512x512:
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#2321] / [Intel XE#7355])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-8/igt@kms_cursor_crc@cursor-sliding-512x512.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
    - shard-ptl:          NOTRUN -> [SKIP][39] ([Intel XE#5962])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-2/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size:
    - shard-lnl:          NOTRUN -> [SKIP][40] ([Intel XE#309] / [Intel XE#7343])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-2/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html

  * igt@kms_dp_link_training@uhbr-mst:
    - shard-ptl:          NOTRUN -> [SKIP][41] ([Intel XE#9533])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@kms_dp_link_training@uhbr-mst.html

  * igt@kms_dsc@dsc-with-output-formats-with-bpc:
    - shard-lnl:          NOTRUN -> [SKIP][42] ([Intel XE#8265]) +1 other test skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-4/igt@kms_dsc@dsc-with-output-formats-with-bpc.html

  * igt@kms_feature_discovery@chamelium:
    - shard-bmg:          NOTRUN -> [SKIP][43] ([Intel XE#2372] / [Intel XE#7359])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-9/igt@kms_feature_discovery@chamelium.html
    - shard-ptl:          NOTRUN -> [SKIP][44] ([Intel XE#7359])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-1/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@display-4x:
    - shard-bmg:          NOTRUN -> [SKIP][45] ([Intel XE#1138] / [Intel XE#7344])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-10/igt@kms_feature_discovery@display-4x.html
    - shard-ptl:          NOTRUN -> [SKIP][46] ([Intel XE#7344])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-7/igt@kms_feature_discovery@display-4x.html

  * igt@kms_flip@2x-plain-flip-interruptible:
    - shard-ptl:          NOTRUN -> [SKIP][47] ([Intel XE#2316]) +2 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-1/igt@kms_flip@2x-plain-flip-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][48] ([Intel XE#7178] / [Intel XE#7351])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-10/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-upscaling:
    - shard-ptl:          NOTRUN -> [SKIP][49] ([Intel XE#7178]) +2 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-8/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling:
    - shard-lnl:          NOTRUN -> [SKIP][50] ([Intel XE#7178] / [Intel XE#7351])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling.html

  * igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc:
    - shard-ptl:          NOTRUN -> [SKIP][51] ([Intel XE#5800] / [Intel XE#6312]) +6 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-3/igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-indfb-msflip-blt:
    - shard-ptl:          NOTRUN -> [SKIP][52] ([Intel XE#6312]) +7 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-5/igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move:
    - shard-lnl:          NOTRUN -> [SKIP][53] ([Intel XE#656] / [Intel XE#7905]) +3 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-ptl:          NOTRUN -> [SKIP][54] ([Intel XE#5812]) +49 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][55] ([Intel XE#7061] / [Intel XE#7356])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-blt.html
    - shard-ptl:          NOTRUN -> [SKIP][56] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary:
    - shard-bmg:          NOTRUN -> [SKIP][57] ([Intel XE#4141]) +6 other tests skip
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-plflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][58] ([Intel XE#6312] / [Intel XE#651])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-4/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen:
    - shard-bmg:          NOTRUN -> [SKIP][59] ([Intel XE#2311]) +22 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-pri-indfb-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][60] ([Intel XE#6312])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-abgr161616f-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][61] ([Intel XE#7061])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcdrrshdr-abgr161616f-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-abgr161616f-draw-mmap-wc:
    - shard-bmg:          NOTRUN -> [SKIP][62] ([Intel XE#7061]) +2 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcdrrshdr-abgr161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-shrfb-pgflip-blt:
    - shard-ptl:          NOTRUN -> [SKIP][63] ([Intel XE#7865]) +13 other tests skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-1/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-shrfb-msflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][64] ([Intel XE#7905]) +8 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-6/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-shrfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-shrfb-plflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][65] ([Intel XE#2313]) +13 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-abgr161616f-draw-render:
    - shard-ptl:          NOTRUN -> [SKIP][66] ([Intel XE#7061]) +1 other test skip
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-5/igt@kms_frontbuffer_tracking@fbcpsrhdr-abgr161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@psrhdr-rgb101010-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][67] ([Intel XE#7865]) +4 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-5/igt@kms_frontbuffer_tracking@psrhdr-rgb101010-draw-render.html

  * igt@kms_hdmi_audio_bw@suspend-mem-audio-recovery:
    - shard-ptl:          NOTRUN -> [SKIP][68] ([Intel XE#9312])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-1/igt@kms_hdmi_audio_bw@suspend-mem-audio-recovery.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-lnl:          NOTRUN -> [SKIP][69] ([Intel XE#6901])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-8/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@invalid-modeset-force-ultra-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][70] ([Intel XE#6911] / [Intel XE#7466])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-7/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
    - shard-ptl:          NOTRUN -> [SKIP][71] ([Intel XE#6900])
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-6/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html

  * igt@kms_mst@mst-suspend-read-crc:
    - shard-ptl:          NOTRUN -> [SKIP][72] ([Intel XE#8348])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-6/igt@kms_mst@mst-suspend-read-crc.html

  * igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier:
    - shard-lnl:          NOTRUN -> [SKIP][73] ([Intel XE#7283])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-1/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier:
    - shard-bmg:          NOTRUN -> [SKIP][74] ([Intel XE#7283]) +1 other test skip
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-3/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier.html
    - shard-ptl:          NOTRUN -> [SKIP][75] ([Intel XE#7283])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-1/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier.html

  * igt@kms_plane_lowres@tiling-x:
    - shard-ptl:          NOTRUN -> [SKIP][76] ([Intel XE#5946])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@kms_plane_lowres@tiling-x.html

  * igt@kms_plane_multiple@2x-tiling-none:
    - shard-ptl:          NOTRUN -> [SKIP][77] ([Intel XE#4596] / [Intel XE#5854])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-3/igt@kms_plane_multiple@2x-tiling-none.html

  * igt@kms_plane_multiple@tiling-yf:
    - shard-ptl:          NOTRUN -> [SKIP][78] ([Intel XE#5020])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-5/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_plane_scaling@2x-scaler-multi-pipe:
    - shard-ptl:          NOTRUN -> [SKIP][79] ([Intel XE#5879] / [Intel XE#7343])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-6/igt@kms_plane_scaling@2x-scaler-multi-pipe.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5:
    - shard-lnl:          NOTRUN -> [SKIP][80] ([Intel XE#2763] / [Intel XE#6886]) +3 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-5/igt@kms_plane_scaling@planes-downscale-factor-0-5.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-d:
    - shard-ptl:          NOTRUN -> [SKIP][81] ([Intel XE#6886]) +4 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-3/igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-d.html

  * igt@kms_pm_backlight@brightness-with-dpms:
    - shard-bmg:          NOTRUN -> [SKIP][82] ([Intel XE#2938] / [Intel XE#7376] / [Intel XE#7760])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-4/igt@kms_pm_backlight@brightness-with-dpms.html

  * igt@kms_pm_dc@dc3co-framedrop-check:
    - shard-ptl:          NOTRUN -> [SKIP][83] ([Intel XE#8395] / [Intel XE#8396]) +1 other test skip
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@kms_pm_dc@dc3co-framedrop-check.html

  * igt@kms_pm_dc@dc3co-framedrop-check@psr2-xrgb8888:
    - shard-ptl:          NOTRUN -> [SKIP][84] ([Intel XE#8396]) +1 other test skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@kms_pm_dc@dc3co-framedrop-check@psr2-xrgb8888.html

  * igt@kms_pm_dc@deep-pkgc:
    - shard-lnl:          [PASS][85] -> [FAIL][86] ([Intel XE#2029] / [Intel XE#7395])
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-lnl-3/igt@kms_pm_dc@deep-pkgc.html
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-3/igt@kms_pm_dc@deep-pkgc.html

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf:
    - shard-ptl:          NOTRUN -> [SKIP][87] ([Intel XE#7304]) +2 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-7/igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf@pipe-a-edp-1:
    - shard-ptl:          NOTRUN -> [SKIP][88] ([Intel XE#5858]) +1 other test skip
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf@pipe-a-edp-1.html

  * igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area@pipe-b-edp-1:
    - shard-ptl:          NOTRUN -> [SKIP][89] ([Intel XE#5858] / [Intel XE#7304]) +3 other tests skip
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-3/igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area@pipe-b-edp-1.html

  * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb:
    - shard-bmg:          NOTRUN -> [SKIP][90] ([Intel XE#1489]) +2 other tests skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-8/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb.html

  * igt@kms_psr@fbc-psr2-sprite-blt:
    - shard-bmg:          NOTRUN -> [SKIP][91] ([Intel XE#2234] / [Intel XE#2850]) +5 other tests skip
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-8/igt@kms_psr@fbc-psr2-sprite-blt.html

  * igt@kms_psr@fbc-psr2-sprite-blt@edp-1:
    - shard-ptl:          NOTRUN -> [SKIP][92] ([Intel XE#1406] / [Intel XE#5835]) +3 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-5/igt@kms_psr@fbc-psr2-sprite-blt@edp-1.html

  * igt@kms_psr@pr-dpms:
    - shard-ptl:          NOTRUN -> [SKIP][93] ([Intel XE#1406])
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@kms_psr@pr-dpms.html

  * igt@kms_rotation_crc@bad-pixel-format:
    - shard-ptl:          NOTRUN -> [SKIP][94] ([Intel XE#5821])
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@kms_rotation_crc@bad-pixel-format.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-ptl:          NOTRUN -> [SKIP][95] ([Intel XE#5813])
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_setmode@invalid-clone-exclusive-crtc:
    - shard-bmg:          NOTRUN -> [SKIP][96] ([Intel XE#1435] / [Intel XE#8695])
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-9/igt@kms_setmode@invalid-clone-exclusive-crtc.html
    - shard-ptl:          NOTRUN -> [SKIP][97] ([Intel XE#5910])
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-2/igt@kms_setmode@invalid-clone-exclusive-crtc.html

  * igt@sriov_basic@pf-unbind-with-vfs-enabled-numvfs-all:
    - shard-bmg:          NOTRUN -> [ABORT][98] ([Intel XE#8868])
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-9/igt@sriov_basic@pf-unbind-with-vfs-enabled-numvfs-all.html

  * igt@xe_configfs@survivability-mode:
    - shard-ptl:          NOTRUN -> [SKIP][99] ([Intel XE#8428])
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-6/igt@xe_configfs@survivability-mode.html

  * igt@xe_create@multigpu-create-massive-size:
    - shard-ptl:          NOTRUN -> [SKIP][100] ([Intel XE#5878])
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@xe_create@multigpu-create-massive-size.html

  * igt@xe_evict@evict-large-external:
    - shard-ptl:          NOTRUN -> [SKIP][101] ([Intel XE#5764]) +5 other tests skip
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-6/igt@xe_evict@evict-large-external.html

  * igt@xe_evict_ccs@evict-overcommit-parallel-instantfree-reopen:
    - shard-lnl:          NOTRUN -> [SKIP][102] ([Intel XE#6540] / [Intel XE#688]) +1 other test skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-4/igt@xe_evict_ccs@evict-overcommit-parallel-instantfree-reopen.html

  * igt@xe_exec_balancer@no-exec-virtual-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][103] ([Intel XE#7482]) +3 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-5/igt@xe_exec_balancer@no-exec-virtual-rebind.html

  * igt@xe_exec_balancer@once-parallel-userptr-rebind:
    - shard-ptl:          NOTRUN -> [SKIP][104] ([Intel XE#7482]) +6 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-2/igt@xe_exec_balancer@once-parallel-userptr-rebind.html

  * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][105] ([Intel XE#2322] / [Intel XE#7372]) +3 other tests skip
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-6/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind.html

  * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate:
    - shard-lnl:          NOTRUN -> [SKIP][106] ([Intel XE#1392])
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-3/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate.html

  * igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-rebind:
    - shard-ptl:          NOTRUN -> [SKIP][107] ([Intel XE#5575] / [Intel XE#7484]) +3 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-7/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-rebind.html

  * igt@xe_exec_fault_mode@many-execqueues-multi-queue-invalid-fault:
    - shard-bmg:          NOTRUN -> [SKIP][108] ([Intel XE#8374]) +2 other tests skip
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-9/igt@xe_exec_fault_mode@many-execqueues-multi-queue-invalid-fault.html

  * igt@xe_exec_fault_mode@once-multi-queue-invalid-fault:
    - shard-lnl:          NOTRUN -> [SKIP][109] ([Intel XE#8374]) +2 other tests skip
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-8/igt@xe_exec_fault_mode@once-multi-queue-invalid-fault.html

  * igt@xe_exec_fault_mode@twice-multi-queue-userptr-invalidate-race:
    - shard-ptl:          NOTRUN -> [SKIP][110] ([Intel XE#8374]) +1 other test skip
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-2/igt@xe_exec_fault_mode@twice-multi-queue-userptr-invalidate-race.html

  * igt@xe_exec_mix_modes@exec-multi-queue-spinner-interrupted-lr:
    - shard-bmg:          NOTRUN -> [SKIP][111] ([Intel XE#9003])
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-8/igt@xe_exec_mix_modes@exec-multi-queue-spinner-interrupted-lr.html
    - shard-ptl:          NOTRUN -> [SKIP][112] ([Intel XE#9003])
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-8/igt@xe_exec_mix_modes@exec-multi-queue-spinner-interrupted-lr.html

  * igt@xe_exec_multi_queue@few-execs-preempt-mode-priority:
    - shard-ptl:          NOTRUN -> [SKIP][113] ([Intel XE#8364]) +11 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-7/igt@xe_exec_multi_queue@few-execs-preempt-mode-priority.html

  * igt@xe_exec_multi_queue@many-execs-preempt-mode-dyn-priority:
    - shard-bmg:          NOTRUN -> [SKIP][114] ([Intel XE#8364]) +7 other tests skip
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-10/igt@xe_exec_multi_queue@many-execs-preempt-mode-dyn-priority.html

  * igt@xe_exec_multi_queue@one-queue-preempt-mode-priority-smem:
    - shard-lnl:          NOTRUN -> [SKIP][115] ([Intel XE#8364]) +2 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-4/igt@xe_exec_multi_queue@one-queue-preempt-mode-priority-smem.html

  * igt@xe_exec_reset@cm-multi-queue-close-fd:
    - shard-ptl:          NOTRUN -> [SKIP][116] ([Intel XE#8369])
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-6/igt@xe_exec_reset@cm-multi-queue-close-fd.html

  * igt@xe_exec_reset@multi-queue-cat-error-on-secondary:
    - shard-lnl:          NOTRUN -> [SKIP][117] ([Intel XE#8369])
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-6/igt@xe_exec_reset@multi-queue-cat-error-on-secondary.html

  * igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-single-vma:
    - shard-ptl:          NOTRUN -> [SKIP][118] ([Intel XE#6196])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-2/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-single-vma.html

  * igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][119] ([Intel XE#8378]) +4 other tests skip
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-9/igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr-invalidate.html

  * igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][120] ([Intel XE#8378])
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-3/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-rebind.html

  * igt@xe_exec_threads@threads-multi-queue-hang-basic:
    - shard-ptl:          NOTRUN -> [SKIP][121] ([Intel XE#8378]) +5 other tests skip
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-1/igt@xe_exec_threads@threads-multi-queue-hang-basic.html

  * igt@xe_madvise@atomic-global:
    - shard-lnl:          NOTRUN -> [SKIP][122] ([Intel XE#7980])
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-3/igt@xe_madvise@atomic-global.html

  * igt@xe_mmap@pci-membarrier:
    - shard-ptl:          NOTRUN -> [SKIP][123] ([Intel XE#5100] / [Intel XE#7408])
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-2/igt@xe_mmap@pci-membarrier.html

  * igt@xe_multigpu_svm@mgpu-concurrent-access-basic:
    - shard-lnl:          NOTRUN -> [SKIP][124] ([Intel XE#6964])
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-3/igt@xe_multigpu_svm@mgpu-concurrent-access-basic.html

  * igt@xe_multigpu_svm@mgpu-latency-copy-prefetch:
    - shard-ptl:          NOTRUN -> [SKIP][125] ([Intel XE#6964])
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-5/igt@xe_multigpu_svm@mgpu-latency-copy-prefetch.html

  * igt@xe_pat@l2-flush-opt-svm-pat-restrict:
    - shard-ptl:          NOTRUN -> [SKIP][126] ([Intel XE#7590])
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-6/igt@xe_pat@l2-flush-opt-svm-pat-restrict.html

  * igt@xe_pat@pat-sw-hw-compare:
    - shard-ptl:          NOTRUN -> [FAIL][127] ([Intel XE#7695]) +1 other test fail
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-7/igt@xe_pat@pat-sw-hw-compare.html
    - shard-bmg:          NOTRUN -> [FAIL][128] ([Intel XE#7695])
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-6/igt@xe_pat@pat-sw-hw-compare.html

  * igt@xe_pm@s2idle-d3cold-basic-exec:
    - shard-bmg:          NOTRUN -> [SKIP][129] ([Intel XE#2284] / [Intel XE#7370])
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-8/igt@xe_pm@s2idle-d3cold-basic-exec.html
    - shard-ptl:          NOTRUN -> [SKIP][130] ([Intel XE#5741])
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-5/igt@xe_pm@s2idle-d3cold-basic-exec.html

  * igt@xe_pm@s4-mocs:
    - shard-lnl:          [PASS][131] -> [ABORT][132] ([Intel XE#9362]) +1 other test abort
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-lnl-3/igt@xe_pm@s4-mocs.html
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-5/igt@xe_pm@s4-mocs.html

  * igt@xe_pm_residency@gt-c6-freeze@gt1:
    - shard-bmg:          [PASS][133] -> [FAIL][134] ([Intel XE#9254]) +1 other test fail
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-bmg-10/igt@xe_pm_residency@gt-c6-freeze@gt1.html
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-4/igt@xe_pm_residency@gt-c6-freeze@gt1.html

  * igt@xe_pxp@pxp-stale-bo-exec-post-rpm:
    - shard-bmg:          NOTRUN -> [SKIP][135] ([Intel XE#4733] / [Intel XE#7417])
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-4/igt@xe_pxp@pxp-stale-bo-exec-post-rpm.html

  * igt@xe_query@multigpu-query-hwconfig:
    - shard-bmg:          NOTRUN -> [SKIP][136] ([Intel XE#944]) +1 other test skip
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-4/igt@xe_query@multigpu-query-hwconfig.html

  * igt@xe_query@multigpu-query-invalid-query:
    - shard-ptl:          NOTRUN -> [SKIP][137] ([Intel XE#6019]) +2 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@xe_query@multigpu-query-invalid-query.html

  * igt@xe_survivability@i2c-functionality:
    - shard-lnl:          NOTRUN -> [SKIP][138] ([Intel XE#8415])
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-5/igt@xe_survivability@i2c-functionality.html

  * igt@xe_vm@overcommit-fault-vram-lr:
    - shard-ptl:          NOTRUN -> [SKIP][139] ([Intel XE#9597])
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-3/igt@xe_vm@overcommit-fault-vram-lr.html

  
#### Possible fixes ####

  * igt@kms_async_flips@alternate-sync-async-flip:
    - shard-bmg:          [FAIL][140] ([Intel XE#3718] / [Intel XE#6078]) -> [PASS][141]
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-bmg-9/igt@kms_async_flips@alternate-sync-async-flip.html
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-4/igt@kms_async_flips@alternate-sync-async-flip.html

  * igt@kms_async_flips@alternate-sync-async-flip@pipe-a-dp-2:
    - shard-bmg:          [FAIL][142] ([Intel XE#6078]) -> [PASS][143]
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-bmg-9/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-dp-2.html
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-4/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-dp-2.html

  * igt@kms_cursor_edge_walk@256x256-top-bottom@pipe-a-edp-1:
    - shard-ptl:          [FAIL][144] ([Intel XE#9673]) -> [PASS][145] +1 other test pass
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-ptl-3/igt@kms_cursor_edge_walk@256x256-top-bottom@pipe-a-edp-1.html
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-2/igt@kms_cursor_edge_walk@256x256-top-bottom@pipe-a-edp-1.html

  * igt@kms_flip@flip-vs-expired-vblank@b-edp1:
    - shard-lnl:          [FAIL][146] ([Intel XE#301]) -> [PASS][147] +2 other tests pass
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html

  * igt@kms_hdmi_audio_bw@audio-bw-hblank80:
    - shard-bmg:          [FAIL][148] ([Intel XE#9313]) -> [PASS][149]
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-bmg-10/igt@kms_hdmi_audio_bw@audio-bw-hblank80.html
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-8/igt@kms_hdmi_audio_bw@audio-bw-hblank80.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-ptl:          [SKIP][150] ([Intel XE#7308]) -> [PASS][151]
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-ptl-4/igt@kms_hdmi_inject@inject-audio.html
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-4/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_pm_dc@dc5-dpms-suspend-resume:
    - shard-lnl:          [FAIL][152] ([Intel XE#8399]) -> [PASS][153]
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-lnl-8/igt@kms_pm_dc@dc5-dpms-suspend-resume.html
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-5/igt@kms_pm_dc@dc5-dpms-suspend-resume.html

  * igt@xe_exec_threads@threads-hang-userptr-invalidate-race:
    - shard-lnl:          [FAIL][154] ([Intel XE#9096]) -> [PASS][155]
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-lnl-6/igt@xe_exec_threads@threads-hang-userptr-invalidate-race.html
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-8/igt@xe_exec_threads@threads-hang-userptr-invalidate-race.html

  * igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
    - shard-bmg:          [ABORT][156] ([Intel XE#6652] / [Intel XE#9470]) -> [PASS][157]
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-bmg-2/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-4/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html

  * igt@xe_pm@s4-basic:
    - shard-lnl:          [DMESG-WARN][158] ([Intel XE#7727]) -> [PASS][159]
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-lnl-5/igt@xe_pm@s4-basic.html
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-8/igt@xe_pm@s4-basic.html

  * igt@xe_pm@s4-mocs:
    - shard-ptl:          [ABORT][160] ([Intel XE#9362]) -> [PASS][161] +1 other test pass
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-ptl-3/igt@xe_pm@s4-mocs.html
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-6/igt@xe_pm@s4-mocs.html

  * igt@xe_pm@s4-vm-bind-prefetch:
    - shard-lnl:          [ABORT][162] ([Intel XE#9362]) -> [PASS][163]
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-lnl-2/igt@xe_pm@s4-vm-bind-prefetch.html
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-8/igt@xe_pm@s4-vm-bind-prefetch.html

  
#### Warnings ####

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-bmg:          [SKIP][164] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][165] ([Intel XE#2426] / [Intel XE#5848])
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-bmg-1/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_vrr@lobf@pipe-a-edp-1:
    - shard-ptl:          [SKIP][166] ([Intel XE#7638] / [Intel XE#9277]) -> [SKIP][167] ([Intel XE#9277])
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-ptl-8/igt@kms_vrr@lobf@pipe-a-edp-1.html
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-ptl-7/igt@kms_vrr@lobf@pipe-a-edp-1.html
    - shard-lnl:          [SKIP][168] ([Intel XE#7638] / [Intel XE#9271]) -> [SKIP][169] ([Intel XE#9271])
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a/shard-lnl-1/igt@kms_vrr@lobf@pipe-a-edp-1.html
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156416v7/shard-lnl-2/igt@kms_vrr@lobf@pipe-a-edp-1.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [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#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
  [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#2372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2372
  [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
  [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#2938]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2938
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [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#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
  [Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
  [Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
  [Intel XE#5741]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5741
  [Intel XE#5764]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5764
  [Intel XE#5800]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5800
  [Intel XE#5808]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5808
  [Intel XE#5812]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5812
  [Intel XE#5813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5813
  [Intel XE#5821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5821
  [Intel XE#5822]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5822
  [Intel XE#5832]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5832
  [Intel XE#5835]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5835
  [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
  [Intel XE#5854]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5854
  [Intel XE#5858]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5858
  [Intel XE#5878]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5878
  [Intel XE#5879]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5879
  [Intel XE#5900]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5900
  [Intel XE#5901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5901
  [Intel XE#5910]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5910
  [Intel XE#5946]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5946
  [Intel XE#5962]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5962
  [Intel XE#6019]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6019
  [Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
  [Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
  [Intel XE#6196]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6196
  [Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
  [Intel XE#6900]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6900
  [Intel XE#6901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6901
  [Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#6969]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6969
  [Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
  [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#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
  [Intel XE#7308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7308
  [Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
  [Intel XE#7344]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7344
  [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#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
  [Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
  [Intel XE#7359]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7359
  [Intel XE#7361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7361
  [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#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
  [Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
  [Intel XE#7395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7395
  [Intel XE#7408]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7408
  [Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
  [Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
  [Intel XE#7466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7466
  [Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
  [Intel XE#7484]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7484
  [Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
  [Intel XE#7638]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7638
  [Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
  [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
  [Intel XE#7695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7695
  [Intel XE#7727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7727
  [Intel XE#7760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7760
  [Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
  [Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
  [Intel XE#7980]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7980
  [Intel XE#8150]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8150
  [Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
  [Intel XE#8348]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8348
  [Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
  [Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
  [Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
  [Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
  [Intel XE#8391]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8391
  [Intel XE#8395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8395
  [Intel XE#8396]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8396
  [Intel XE#8399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8399
  [Intel XE#8415]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8415
  [Intel XE#8428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8428
  [Intel XE#8695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8695
  [Intel XE#8868]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8868
  [Intel XE#9003]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9003
  [Intel XE#9096]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9096
  [Intel XE#9254]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9254
  [Intel XE#9271]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9271
  [Intel XE#9277]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9277
  [Intel XE#9312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9312
  [Intel XE#9313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9313
  [Intel XE#9362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9362
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#9470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9470
  [Intel XE#9533]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9533
  [Intel XE#9597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9597
  [Intel XE#9673]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9673


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

  * IGT: IGT_9163 -> IGT_9164
  * Linux: xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a -> xe-pw-156416v7

  IGT_9163: 9163
  IGT_9164: 9164
  xe-6010-d56ff005f0d16ec136ee31fe3238eb447fefdc1a: d56ff005f0d16ec136ee31fe3238eb447fefdc1a
  xe-pw-156416v7: 156416v7

== Logs ==

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

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

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

* Re: [PATCH v7 01/20] drm/i915/alpm: Program zero-based LFPS half cycle duration
  2026-10-26  5:39 ` [PATCH v7 01/20] drm/i915/alpm: Program zero-based LFPS half cycle duration Animesh Manna
@ 2026-10-27 15:33   ` Jani Nikula
  2026-10-28  5:42     ` Manna, Animesh
  0 siblings, 1 reply; 31+ messages in thread
From: Jani Nikula @ 2026-10-27 15:33 UTC (permalink / raw)
  To: Animesh Manna, intel-gfx, intel-xe, dri-devel
  Cc: jouni.hogander, suraj.kandpal, Animesh Manna

On Mon, 26 Oct 2026, Animesh Manna <animesh.manna@intel.com> wrote:
> The LFPS Half Cycle Duration field, as well as the First and Last LFPS
> Half Cycle Duration fields, in PORT_ALPM_LFPS_CTL are zero-based: per
> Bspec the value programmed must be N_Symbol - 1. The number of symbols
> was programmed directly, making each half cycle one symbol clock too
> long.
>
> Subtract one in the PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION,
> PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION and
> PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION field macros so the
> programmed value matches the zero-based field encoding.
>
> Since the fields now encode 1 to 32 symbols, update the bounds check
> in _lnl_compute_aux_less_alpm_params() to accept a half cycle of 32
> symbols and reject 0, which cannot be encoded.
>
> v2: Adjust half cycle bounds check for zero-based encoding. [sashiko]
>
> Bspec: 71632
> Cc: Jouni Högander <jouni.hogander@intel.com>
> Signed-off-by: Animesh Manna <animesh.manna@intel.com>
> Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_alpm.c     |  3 ++-
>  drivers/gpu/drm/i915/display/intel_psr_regs.h | 12 +++++++++---
>  2 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
> index f54b29e193ee..8542bd9c9666 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
> @@ -134,7 +134,8 @@ _lnl_compute_aux_less_alpm_params(struct intel_dp *intel_dp,
>  
>  	if (aux_less_wake_lines > ALPM_CTL_AUX_LESS_WAKE_TIME_MASK ||
>  	    silence_period > PORT_ALPM_CTL_SILENCE_PERIOD_MASK ||
> -	    lfps_half_cycle > PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK)
> +	    lfps_half_cycle < 1 ||
> +	    lfps_half_cycle > PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK + 1)
>  		return false;
>  
>  	if (display->params.psr_safest_params)
> diff --git a/drivers/gpu/drm/i915/display/intel_psr_regs.h b/drivers/gpu/drm/i915/display/intel_psr_regs.h
> index a57bc111290d..78a05387eab5 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_psr_regs.h
> @@ -335,11 +335,17 @@
>  #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MASK		REG_GENMASK(27, 24)
>  #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MIN		7
>  #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT(val)		REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MASK, (val) - PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MIN)
> +/*
> + * The LFPS half cycle duration fields (including the first and last half
> + * cycle) are zero-based, i.e. the value programmed is N_Symbol - 1.
> + *
> + * Bspec: 71632
> + */

Please let's not normalize adding bspec references to code comments.

>  #define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK	REG_GENMASK(20, 16)
> -#define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK, val)
> +#define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK, (val) - 1)
>  #define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION_MASK	REG_GENMASK(12, 8)
> -#define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION_MASK, val)
> +#define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION_MASK, (val) - 1)
>  #define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK	REG_GENMASK(4, 0)
> -#define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK, val)
> +#define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION(val)	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK, (val) - 1)
>  
>  #endif /* __INTEL_PSR_REGS_H__ */

-- 
Jani Nikula, Intel

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

* RE: [PATCH v7 01/20] drm/i915/alpm: Program zero-based LFPS half cycle duration
  2026-10-27 15:33   ` Jani Nikula
@ 2026-10-28  5:42     ` Manna, Animesh
  0 siblings, 0 replies; 31+ messages in thread
From: Manna, Animesh @ 2026-10-28  5:42 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
  Cc: Hogander, Jouni, Kandpal, Suraj



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Tuesday, October 27, 2026 9:04 PM
> To: Manna, Animesh <animesh.manna@intel.com>; intel-
> gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Cc: Hogander, Jouni <jouni.hogander@intel.com>; Kandpal, Suraj
> <suraj.kandpal@intel.com>; Manna, Animesh <animesh.manna@intel.com>
> Subject: Re: [PATCH v7 01/20] drm/i915/alpm: Program zero-based LFPS half
> cycle duration
> 
> On Mon, 26 Oct 2026, Animesh Manna <animesh.manna@intel.com> wrote:
> > The LFPS Half Cycle Duration field, as well as the First and Last LFPS
> > Half Cycle Duration fields, in PORT_ALPM_LFPS_CTL are zero-based: per
> > Bspec the value programmed must be N_Symbol - 1. The number of
> symbols
> > was programmed directly, making each half cycle one symbol clock too
> > long.
> >
> > Subtract one in the PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION,
> > PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION and
> > PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION field macros so
> the
> > programmed value matches the zero-based field encoding.
> >
> > Since the fields now encode 1 to 32 symbols, update the bounds check
> > in _lnl_compute_aux_less_alpm_params() to accept a half cycle of 32
> > symbols and reject 0, which cannot be encoded.
> >
> > v2: Adjust half cycle bounds check for zero-based encoding. [sashiko]
> >
> > Bspec: 71632
> > Cc: Jouni Högander <jouni.hogander@intel.com>
> > Signed-off-by: Animesh Manna <animesh.manna@intel.com>
> > Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_alpm.c     |  3 ++-
> >  drivers/gpu/drm/i915/display/intel_psr_regs.h | 12 +++++++++---
> >  2 files changed, 11 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c
> > b/drivers/gpu/drm/i915/display/intel_alpm.c
> > index f54b29e193ee..8542bd9c9666 100644
> > --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> > +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
> > @@ -134,7 +134,8 @@ _lnl_compute_aux_less_alpm_params(struct
> intel_dp
> > *intel_dp,
> >
> >  	if (aux_less_wake_lines > ALPM_CTL_AUX_LESS_WAKE_TIME_MASK
> ||
> >  	    silence_period > PORT_ALPM_CTL_SILENCE_PERIOD_MASK ||
> > -	    lfps_half_cycle >
> PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK)
> > +	    lfps_half_cycle < 1 ||
> > +	    lfps_half_cycle >
> > +PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK + 1)
> >  		return false;
> >
> >  	if (display->params.psr_safest_params)
> > diff --git a/drivers/gpu/drm/i915/display/intel_psr_regs.h
> > b/drivers/gpu/drm/i915/display/intel_psr_regs.h
> > index a57bc111290d..78a05387eab5 100644
> > --- a/drivers/gpu/drm/i915/display/intel_psr_regs.h
> > +++ b/drivers/gpu/drm/i915/display/intel_psr_regs.h
> > @@ -335,11 +335,17 @@
> >  #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MASK
> 	REG_GENMASK(27, 24)
> >  #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MIN		7
> >  #define  PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT(val)
> 	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MASK,
> (val) - PORT_ALPM_LFPS_CTL_LFPS_CYCLE_COUNT_MIN)
> > +/*
> > + * The LFPS half cycle duration fields (including the first and last
> > +half
> > + * cycle) are zero-based, i.e. the value programmed is N_Symbol - 1.
> > + *
> > + * Bspec: 71632
> > + */
> 
> Please let's not normalize adding bspec references to code comments.

Sure, will drop in next version.

Regards,
Animesh

> 
> >  #define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION_MASK
> 	REG_GENMASK(20, 16)
> > -#define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(val)
> 	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATIO
> N_MASK, val)
> > +#define  PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATION(val)
> 	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LFPS_HALF_CYCLE_DURATIO
> N_MASK, (val) - 1)
> >  #define
> PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION_MASK
> 	REG_GENMASK(12, 8)
> > -#define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(val)
> 	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_D
> URATION_MASK, val)
> > +#define  PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION(val)
> 	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_D
> URATION_MASK, (val) - 1)
> >  #define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION_MASK
> 	REG_GENMASK(4, 0)
> > -#define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION(val)
> 	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DU
> RATION_MASK, val)
> > +#define  PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION(val)
> 	REG_FIELD_PREP(PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DU
> RATION_MASK, (val) - 1)
> >
> >  #endif /* __INTEL_PSR_REGS_H__ */
> 
> --
> Jani Nikula, Intel

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

end of thread, other threads:[~2026-10-28  5:42 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-26  5:39 [PATCH v7 00/20] Enable DP2.1 alpm Animesh Manna
2026-10-26  5:39 ` [PATCH v7 01/20] drm/i915/alpm: Program zero-based LFPS half cycle duration Animesh Manna
2026-10-27 15:33   ` Jani Nikula
2026-10-28  5:42     ` Manna, Animesh
2026-10-26  5:39 ` [PATCH v7 02/20] drm/dp: Add DPCD definitions for DP2.1 ALPM capability Animesh Manna
2026-10-26  5:39 ` [PATCH v7 03/20] drm/i915/alpm: Move alpm sink capability readout into a separate function Animesh Manna
2026-10-26  5:39 ` [PATCH v7 04/20] drm/i915/alpm: alpm_init() for DP2.1 Animesh Manna
2026-10-26  7:11   ` sashiko-bot
2026-10-26  5:39 ` [PATCH v7 05/20] drm/i915/alpm: Enable debugfs " Animesh Manna
2026-10-26  5:39 ` [PATCH v7 06/20] drm/i915/alpm: Refactor Auxless wake time calculation Animesh Manna
2026-10-26  5:39 ` [PATCH v7 07/20] drm/i915/alpm: Auxless wake time calculation for Xe3p Animesh Manna
2026-10-26  5:39 ` [PATCH v7 08/20] drm/i915/alpm: Modify AUX_LESS_WAKE_TIME bitfield for xe3lpd Animesh Manna
2026-10-26  5:39 ` [PATCH v7 09/20] drm/i915/alpm: table based establishment period Animesh Manna
2026-10-26  5:39 ` [PATCH v7 10/20] drm/i915/alpm: Half LFPS cycle calculation Animesh Manna
2026-10-26  7:06   ` sashiko-bot
2026-10-26  5:39 ` [PATCH v7 11/20] drm/i915/alpm: Modify LFPS cycle count for DP ALPM Animesh Manna
2026-10-26  5:39 ` [PATCH v7 12/20] drm/i915/alpm: Modify LFPS_CYCLE_COUNT bitfield for xe3lpd Animesh Manna
2026-10-26  5:39 ` [PATCH v7 13/20] drm/i915/alpm: Program LTTPR count for DP 2.1 ALPM Animesh Manna
2026-10-26  5:39 ` [PATCH v7 14/20] drm/i915/alpm: Enable MAC Transmitting LFPS for LT PHY Animesh Manna
2026-10-26  5:39 ` [PATCH v7 15/20] drm/i915/alpm: Compute and program switch to active latency Animesh Manna
2026-10-26  5:39 ` [PATCH v7 16/20] drm/i915/alpm: Replace is_edp() with alpm_is_possible() Animesh Manna
2026-10-26  7:16   ` sashiko-bot
2026-10-26  5:39 ` [PATCH v7 17/20] drm/i915/alpm: Disallow ALPM for UHBR link rate Animesh Manna
2026-10-26  5:39 ` [PATCH v7 18/20] drm/i915/alpm: Compute ALPM config before PSR config Animesh Manna
2026-10-26  5:39 ` [PATCH v7 19/20] drm/i915/alpm: Introduce has_alpm to decouple from pr/psr2/lobf Animesh Manna
2026-10-26  7:23   ` sashiko-bot
2026-10-26  5:39 ` [PATCH v7 20/20] drm/i915/dp: Enable AS SDP for DP Panel Replay with AUX-less ALPM Animesh Manna
2026-10-26  5:50 ` ✗ CI.checkpatch: warning for Enable DP2.1 alpm (rev7) Patchwork
2026-10-26  5:52 ` ✓ CI.KUnit: success " Patchwork
2026-10-26  6:28 ` ✓ Xe.CI.BAT: " Patchwork
2026-10-26  8:06 ` ✗ Xe.CI.FULL: failure " Patchwork

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