Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/10] drm/i915/display: identify display steppings in display code
@ 2024-08-20 19:00 Jani Nikula
  2024-08-20 19:00 ` [PATCH 01/10] drm/xe/display: fix compat IS_DISPLAY_STEP() range end Jani Nikula
                   ` (17 more replies)
  0 siblings, 18 replies; 38+ messages in thread
From: Jani Nikula @ 2024-08-20 19:00 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper, Jani Nikula

Use a Single Point of Truth for display stepping detection instead of
duplicating in i915 and xe.

BR,
Jani.


Jani Nikula (10):
  drm/xe/display: fix compat IS_DISPLAY_STEP() range end
  drm/xe/display: remove intel_display_step_name() to simplify
  drm/xe/display: remove the unused compat HAS_GMD_ID()
  drm/xe/step: define more steppings E-J
  drm/i915/display: rename IS_DISPLAY_IP_RANGE() to
    IS_DISPLAY_VER_FULL()
  drm/i915/display: rename IS_DISPLAY_IP_STEP() to IS_DISPLAY_VER_STEP()
  drm/i915/display: identify display steppings in display probe
  drm/i915/display: switch to display detected steppings
  drm/i915: remove display stepping handling
  drm/xe: remove display stepping handling

 .../drm/i915/display/intel_display_device.c   | 226 +++++++++++++++++-
 .../drm/i915/display/intel_display_device.h   |  19 +-
 .../drm/i915/display/intel_display_power.c    |   2 +-
 drivers/gpu/drm/i915/display/intel_dmc.c      |   2 +-
 drivers/gpu/drm/i915/display/intel_fbc.c      |   2 +-
 drivers/gpu/drm/i915/display/intel_hdcp.c     |   6 +-
 drivers/gpu/drm/i915/display/intel_pmdemand.c |   2 +-
 drivers/gpu/drm/i915/display/intel_psr.c      |   8 +-
 drivers/gpu/drm/i915/i915_drv.h               |   5 -
 drivers/gpu/drm/i915/intel_device_info.c      |   1 -
 drivers/gpu/drm/i915/intel_step.c             |  84 +++----
 drivers/gpu/drm/i915/intel_step.h             |   2 -
 .../gpu/drm/xe/compat-i915-headers/i915_drv.h |   5 -
 .../drm/xe/compat-i915-headers/intel_step.h   |  10 +-
 drivers/gpu/drm/xe/xe_debugfs.c               |   3 +-
 drivers/gpu/drm/xe/xe_pci.c                   |   3 +-
 drivers/gpu/drm/xe/xe_step.c                  |  57 ++---
 drivers/gpu/drm/xe/xe_step_types.h            |  30 ++-
 18 files changed, 332 insertions(+), 135 deletions(-)

-- 
2.39.2


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

* [PATCH 01/10] drm/xe/display: fix compat IS_DISPLAY_STEP() range end
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
@ 2024-08-20 19:00 ` Jani Nikula
  2024-08-20 19:31   ` Lucas De Marchi
  2024-08-20 19:00 ` [PATCH 02/10] drm/xe/display: remove intel_display_step_name() to simplify Jani Nikula
                   ` (16 subsequent siblings)
  17 siblings, 1 reply; 38+ messages in thread
From: Jani Nikula @ 2024-08-20 19:00 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper, Jani Nikula

It's supposed to be an open range at the end like in i915. Fingers
crossed that nobody relies on this definition.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
index 2feedddf1e40..1f1ad4d3ef51 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
@@ -83,7 +83,7 @@ static inline struct drm_i915_private *kdev_to_i915(struct device *kdev)
 #define HAS_GMD_ID(xe) GRAPHICS_VERx100(xe) >= 1270
 
 /* Workarounds not handled yet */
-#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step <= last; })
+#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })
 
 #define IS_LP(xe) (0)
 #define IS_GEN9_LP(xe) (0)
-- 
2.39.2


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

* [PATCH 02/10] drm/xe/display: remove intel_display_step_name() to simplify
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
  2024-08-20 19:00 ` [PATCH 01/10] drm/xe/display: fix compat IS_DISPLAY_STEP() range end Jani Nikula
@ 2024-08-20 19:00 ` Jani Nikula
  2024-08-20 22:32   ` Matt Roper
  2024-08-20 19:00 ` [PATCH 03/10] drm/xe/display: remove the unused compat HAS_GMD_ID() Jani Nikula
                   ` (15 subsequent siblings)
  17 siblings, 1 reply; 38+ messages in thread
From: Jani Nikula @ 2024-08-20 19:00 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper, Jani Nikula

The intel_display_step_name() is an unnecessary extra
indirection. Simplify by just adding a macro to map intel_step_name() to
xe_step_name().

We'll need to temporarily add a compat INTEL_DISPLAY_STEP() for this.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dmc.c            | 2 +-
 drivers/gpu/drm/i915/intel_step.c                   | 5 -----
 drivers/gpu/drm/i915/intel_step.h                   | 1 -
 drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h   | 2 ++
 drivers/gpu/drm/xe/compat-i915-headers/intel_step.h | 9 +--------
 5 files changed, 4 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
index 73977b173898..7c756d5ba2a2 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc.c
@@ -391,7 +391,7 @@ static const struct stepping_info *
 intel_get_stepping_info(struct drm_i915_private *i915,
 			struct stepping_info *si)
 {
-	const char *step_name = intel_display_step_name(i915);
+	const char *step_name = intel_step_name(INTEL_DISPLAY_STEP(i915));
 
 	si->stepping = step_name[0];
 	si->substepping = step_name[1];
diff --git a/drivers/gpu/drm/i915/intel_step.c b/drivers/gpu/drm/i915/intel_step.c
index a5adfb5d8fd2..80464e4edcce 100644
--- a/drivers/gpu/drm/i915/intel_step.c
+++ b/drivers/gpu/drm/i915/intel_step.c
@@ -275,8 +275,3 @@ const char *intel_step_name(enum intel_step step)
 		return "**";
 	}
 }
-
-const char *intel_display_step_name(struct drm_i915_private *i915)
-{
-	return intel_step_name(RUNTIME_INFO(i915)->step.display_step);
-}
diff --git a/drivers/gpu/drm/i915/intel_step.h b/drivers/gpu/drm/i915/intel_step.h
index b6f43b624774..96dfca4cba73 100644
--- a/drivers/gpu/drm/i915/intel_step.h
+++ b/drivers/gpu/drm/i915/intel_step.h
@@ -78,6 +78,5 @@ enum intel_step {
 
 void intel_step_init(struct drm_i915_private *i915);
 const char *intel_step_name(enum intel_step step);
-const char *intel_display_step_name(struct drm_i915_private *i915);
 
 #endif /* __INTEL_STEP_H__ */
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
index 1f1ad4d3ef51..82b934fe230a 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
@@ -82,6 +82,8 @@ static inline struct drm_i915_private *kdev_to_i915(struct device *kdev)
 
 #define HAS_GMD_ID(xe) GRAPHICS_VERx100(xe) >= 1270
 
+#define INTEL_DISPLAY_STEP(xe) ((xe)->info.step.display)
+
 /* Workarounds not handled yet */
 #define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })
 
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
index 0006ef812346..ee3f45b668b9 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
@@ -6,15 +6,8 @@
 #ifndef __INTEL_STEP_H__
 #define __INTEL_STEP_H__
 
-#include "xe_device_types.h"
 #include "xe_step.h"
 
-#define intel_display_step_name xe_display_step_name
-
-static inline
-const char *xe_display_step_name(struct xe_device *xe)
-{
-	return xe_step_name(xe->info.step.display);
-}
+#define intel_step_name xe_step_name
 
 #endif /* __INTEL_STEP_H__ */
-- 
2.39.2


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

* [PATCH 03/10] drm/xe/display: remove the unused compat HAS_GMD_ID()
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
  2024-08-20 19:00 ` [PATCH 01/10] drm/xe/display: fix compat IS_DISPLAY_STEP() range end Jani Nikula
  2024-08-20 19:00 ` [PATCH 02/10] drm/xe/display: remove intel_display_step_name() to simplify Jani Nikula
@ 2024-08-20 19:00 ` Jani Nikula
  2024-08-20 22:40   ` Matt Roper
  2024-08-20 19:00 ` [PATCH 04/10] drm/xe/step: define more steppings E-J Jani Nikula
                   ` (14 subsequent siblings)
  17 siblings, 1 reply; 38+ messages in thread
From: Jani Nikula @ 2024-08-20 19:00 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper, Jani Nikula

The display code no longer needs or uses HAS_GMD_ID(). Remove it from
the compat header.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
index 82b934fe230a..7492979ac3bc 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
@@ -80,8 +80,6 @@ static inline struct drm_i915_private *kdev_to_i915(struct device *kdev)
 
 #define IS_MOBILE(xe) (xe && 0)
 
-#define HAS_GMD_ID(xe) GRAPHICS_VERx100(xe) >= 1270
-
 #define INTEL_DISPLAY_STEP(xe) ((xe)->info.step.display)
 
 /* Workarounds not handled yet */
-- 
2.39.2


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

* [PATCH 04/10] drm/xe/step: define more steppings E-J
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (2 preceding siblings ...)
  2024-08-20 19:00 ` [PATCH 03/10] drm/xe/display: remove the unused compat HAS_GMD_ID() Jani Nikula
@ 2024-08-20 19:00 ` Jani Nikula
  2024-08-20 22:48   ` Matt Roper
  2024-08-20 19:00 ` [PATCH 05/10] drm/i915/display: rename IS_DISPLAY_IP_RANGE() to IS_DISPLAY_VER_FULL() Jani Nikula
                   ` (13 subsequent siblings)
  17 siblings, 1 reply; 38+ messages in thread
From: Jani Nikula @ 2024-08-20 19:00 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper, Jani Nikula

These are primarily needed for compat reasons with display code in
upcoming changes. There's no harm in having them.

While at it, add a comment about the requirement to match against GMD ID
value spacing.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/xe/xe_step_types.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_step_types.h b/drivers/gpu/drm/xe/xe_step_types.h
index ccc9b4795e95..95b38d2d6c50 100644
--- a/drivers/gpu/drm/xe/xe_step_types.h
+++ b/drivers/gpu/drm/xe/xe_step_types.h
@@ -17,6 +17,10 @@ struct xe_step_info {
 
 #define STEP_ENUM_VAL(name)  STEP_##name,
 
+/*
+ * Always define four minor steppings 0-3 for each stepping to match GMD ID
+ * spacing of values. See xe_step_gmdid_get().
+ */
 #define STEP_NAME_LIST(func)		\
 	func(A0)			\
 	func(A1)			\
@@ -34,7 +38,30 @@ struct xe_step_info {
 	func(D1)			\
 	func(D2)			\
 	func(D3)			\
-	func(E0)
+	func(E0)			\
+	func(E1)			\
+	func(E2)			\
+	func(E3)			\
+	func(F0)			\
+	func(F1)			\
+	func(F2)			\
+	func(F3)			\
+	func(G0)			\
+	func(G1)			\
+	func(G2)			\
+	func(G3)			\
+	func(H0)			\
+	func(H1)			\
+	func(H2)			\
+	func(H3)			\
+	func(I0)			\
+	func(I1)			\
+	func(I2)			\
+	func(I3)			\
+	func(J0)			\
+	func(J1)			\
+	func(J2)			\
+	func(J3)
 
 /*
  * Symbolic steppings that do not match the hardware. These are valid both as gt
-- 
2.39.2


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

* [PATCH 05/10] drm/i915/display: rename IS_DISPLAY_IP_RANGE() to IS_DISPLAY_VER_FULL()
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (3 preceding siblings ...)
  2024-08-20 19:00 ` [PATCH 04/10] drm/xe/step: define more steppings E-J Jani Nikula
@ 2024-08-20 19:00 ` Jani Nikula
  2024-08-20 22:54   ` Matt Roper
  2024-08-20 19:00 ` [PATCH 06/10] drm/i915/display: rename IS_DISPLAY_IP_STEP() to IS_DISPLAY_VER_STEP() Jani Nikula
                   ` (12 subsequent siblings)
  17 siblings, 1 reply; 38+ messages in thread
From: Jani Nikula @ 2024-08-20 19:00 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper, Jani Nikula

Unify macro naming. Be more in line with DISPLAY_VER() and
IS_DISPLAY_VER().

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_device.h | 4 ++--
 drivers/gpu/drm/i915/display/intel_display_power.c  | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index 13453ea4daea..30c624989902 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -161,7 +161,7 @@ enum intel_display_subplatform {
 #define SUPPORTS_TV(i915)		(DISPLAY_INFO(i915)->supports_tv)
 
 /* Check that device has a display IP version within the specific range. */
-#define IS_DISPLAY_IP_RANGE(__i915, from, until) ( \
+#define IS_DISPLAY_VER_FULL(__i915, from, until) ( \
 	BUILD_BUG_ON_ZERO((from) < IP_VER(2, 0)) + \
 	(DISPLAY_VER_FULL(__i915) >= (from) && \
 	 DISPLAY_VER_FULL(__i915) <= (until)))
@@ -182,7 +182,7 @@ enum intel_display_subplatform {
  * stepping bound for the specified IP version.
  */
 #define IS_DISPLAY_IP_STEP(__i915, ipver, from, until) \
-	(IS_DISPLAY_IP_RANGE((__i915), (ipver), (ipver)) && \
+	(IS_DISPLAY_VER_FULL((__i915), (ipver), (ipver)) && \
 	 IS_DISPLAY_STEP((__i915), (from), (until)))
 
 #define DISPLAY_INFO(i915)		(__to_intel_display(i915)->info.__device_info)
diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c
index 39ab3117265c..ef2fdbf97346 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power.c
@@ -1684,7 +1684,7 @@ static void icl_display_core_init(struct drm_i915_private *dev_priv,
 		intel_dmc_load_program(dev_priv);
 
 	/* Wa_14011508470:tgl,dg1,rkl,adl-s,adl-p,dg2 */
-	if (IS_DISPLAY_IP_RANGE(dev_priv, IP_VER(12, 0), IP_VER(13, 0)))
+	if (IS_DISPLAY_VER_FULL(dev_priv, IP_VER(12, 0), IP_VER(13, 0)))
 		intel_de_rmw(dev_priv, GEN11_CHICKEN_DCPR_2, 0,
 			     DCPR_CLEAR_MEMSTAT_DIS | DCPR_SEND_RESP_IMM |
 			     DCPR_MASK_LPMODE | DCPR_MASK_MAXLATENCY_MEMUP_CLR);
-- 
2.39.2


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

* [PATCH 06/10] drm/i915/display: rename IS_DISPLAY_IP_STEP() to IS_DISPLAY_VER_STEP()
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (4 preceding siblings ...)
  2024-08-20 19:00 ` [PATCH 05/10] drm/i915/display: rename IS_DISPLAY_IP_RANGE() to IS_DISPLAY_VER_FULL() Jani Nikula
@ 2024-08-20 19:00 ` Jani Nikula
  2024-08-20 22:56   ` Matt Roper
  2024-08-20 19:00 ` [PATCH 07/10] drm/i915/display: identify display steppings in display probe Jani Nikula
                   ` (11 subsequent siblings)
  17 siblings, 1 reply; 38+ messages in thread
From: Jani Nikula @ 2024-08-20 19:00 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper, Jani Nikula

Unify macro naming on VER.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_device.h | 6 +++---
 drivers/gpu/drm/i915/display/intel_fbc.c            | 2 +-
 drivers/gpu/drm/i915/display/intel_hdcp.c           | 6 +++---
 drivers/gpu/drm/i915/display/intel_pmdemand.c       | 2 +-
 drivers/gpu/drm/i915/display/intel_psr.c            | 8 ++++----
 5 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index 30c624989902..8bd342658291 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -175,13 +175,13 @@ enum intel_display_subplatform {
  * hardware fix is present and the software workaround is no longer necessary.
  * E.g.,
  *
- *    IS_DISPLAY_IP_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_B2)
- *    IS_DISPLAY_IP_STEP(i915, IP_VER(14, 0), STEP_C0, STEP_FOREVER)
+ *    IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_B2)
+ *    IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_C0, STEP_FOREVER)
  *
  * "STEP_FOREVER" can be passed as "until" for workarounds that have no upper
  * stepping bound for the specified IP version.
  */
-#define IS_DISPLAY_IP_STEP(__i915, ipver, from, until) \
+#define IS_DISPLAY_VER_STEP(__i915, ipver, from, until) \
 	(IS_DISPLAY_VER_FULL((__i915), (ipver), (ipver)) && \
 	 IS_DISPLAY_STEP((__i915), (from), (until)))
 
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index 5eda258616ae..52b79bacef4d 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -1346,7 +1346,7 @@ static int intel_fbc_check_plane(struct intel_atomic_state *state,
 
 	/* Wa_14016291713 */
 	if ((IS_DISPLAY_VER(display, 12, 13) ||
-	     IS_DISPLAY_IP_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_C0)) &&
+	     IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_C0)) &&
 	    crtc_state->has_psr && !crtc_state->has_panel_replay) {
 		plane_state->no_fbc_reason = "PSR1 enabled (Wa_14016291713)";
 		return 0;
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index 05402ae6b569..94418f218448 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -42,11 +42,11 @@ intel_hdcp_disable_hdcp_line_rekeying(struct intel_encoder *encoder,
 		return;
 
 	if (DISPLAY_VER(dev_priv) >= 14) {
-		if (IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 0), STEP_D0, STEP_FOREVER))
+		if (IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 0), STEP_D0, STEP_FOREVER))
 			intel_de_rmw(dev_priv, MTL_CHICKEN_TRANS(hdcp->cpu_transcoder),
 				     0, HDCP_LINE_REKEY_DISABLE);
-		else if (IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 1), STEP_B0, STEP_FOREVER) ||
-			 IS_DISPLAY_IP_STEP(dev_priv, IP_VER(20, 0), STEP_B0, STEP_FOREVER))
+		else if (IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 1), STEP_B0, STEP_FOREVER) ||
+			 IS_DISPLAY_VER_STEP(dev_priv, IP_VER(20, 0), STEP_B0, STEP_FOREVER))
 			intel_de_rmw(dev_priv,
 				     TRANS_DDI_FUNC_CTL(dev_priv, hdcp->cpu_transcoder),
 				     0, TRANS_DDI_HDCP_LINE_REKEY_DISABLE);
diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c b/drivers/gpu/drm/i915/display/intel_pmdemand.c
index 9ca981b7a12c..ceaf9e3147da 100644
--- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
+++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
@@ -92,7 +92,7 @@ int intel_pmdemand_init(struct drm_i915_private *i915)
 				     &pmdemand_state->base,
 				     &intel_pmdemand_funcs);
 
-	if (IS_DISPLAY_IP_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_C0))
+	if (IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_C0))
 		/* Wa_14016740474 */
 		intel_de_rmw(i915, XELPD_CHICKEN_DCPR_3, 0, DMD_RSP_TIMEOUT_DISABLE);
 
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 9cb1cdaaeefa..dea3694ddc3a 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1862,14 +1862,14 @@ static void intel_psr_enable_source(struct intel_dp *intel_dp,
 		 * cause issues if non-supported panels are used.
 		 */
 		if (!intel_dp->psr.panel_replay_enabled &&
-		    (IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0) ||
+		    (IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0) ||
 		     IS_ALDERLAKE_P(dev_priv)))
 			intel_de_rmw(dev_priv, hsw_chicken_trans_reg(dev_priv, cpu_transcoder),
 				     0, ADLP_1_BASED_X_GRANULARITY);
 
 		/* Wa_16012604467:adlp,mtl[a0,b0] */
 		if (!intel_dp->psr.panel_replay_enabled &&
-		    IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0))
+		    IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0))
 			intel_de_rmw(dev_priv,
 				     MTL_CLKGATE_DIS_TRANS(dev_priv, cpu_transcoder),
 				     0,
@@ -2051,7 +2051,7 @@ static void intel_psr_disable_locked(struct intel_dp *intel_dp)
 	if (intel_dp->psr.sel_update_enabled) {
 		/* Wa_16012604467:adlp,mtl[a0,b0] */
 		if (!intel_dp->psr.panel_replay_enabled &&
-		    IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0))
+		    IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0))
 			intel_de_rmw(dev_priv,
 				     MTL_CLKGATE_DIS_TRANS(dev_priv, cpu_transcoder),
 				     MTL_CLKGATE_DIS_TRANS_DMASC_GATING_DIS, 0);
@@ -2536,7 +2536,7 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state,
 
 	/* Wa_14014971492 */
 	if (!crtc_state->has_panel_replay &&
-	    ((IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0) ||
+	    ((IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0) ||
 	      IS_ALDERLAKE_P(dev_priv) || IS_TIGERLAKE(dev_priv))) &&
 	    crtc_state->splitter.enable)
 		crtc_state->psr2_su_area.y1 = 0;
-- 
2.39.2


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

* [PATCH 07/10] drm/i915/display: identify display steppings in display probe
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (5 preceding siblings ...)
  2024-08-20 19:00 ` [PATCH 06/10] drm/i915/display: rename IS_DISPLAY_IP_STEP() to IS_DISPLAY_VER_STEP() Jani Nikula
@ 2024-08-20 19:00 ` Jani Nikula
  2024-08-20 23:52   ` Matt Roper
  2024-08-21  9:50   ` [PATCH v2] " Jani Nikula
  2024-08-20 19:00 ` [PATCH 08/10] drm/i915/display: switch to display detected steppings Jani Nikula
                   ` (10 subsequent siblings)
  17 siblings, 2 replies; 38+ messages in thread
From: Jani Nikula @ 2024-08-20 19:00 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper, Jani Nikula

Both i915 and xe have code to identify display steppings. Start
deduplicating this by, uh, adding a third copy in display code. This is
not yet used for anything other than debug logging. We'll switch over
later.

For platforms before GMD ID, attach the mapping from PCI revision to
stepping in the platform and subplatform descriptors. This is a
considerably cleaner approach than having it completely separate.

Also add a separate field for stepping in display runtime info,
preserving the value from GMD ID.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 .../drm/i915/display/intel_display_device.c   | 224 +++++++++++++++++-
 .../drm/i915/display/intel_display_device.h   |   3 +-
 .../drm/xe/compat-i915-headers/intel_step.h   |   1 +
 3 files changed, 216 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
index a31f89df2c0a..1ac3ab3954a1 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.c
+++ b/drivers/gpu/drm/i915/display/intel_display_device.c
@@ -16,14 +16,25 @@
 #include "intel_display_power.h"
 #include "intel_display_reg_defs.h"
 #include "intel_fbc.h"
+#include "intel_step.h"
 
 __diag_push();
 __diag_ignore_all("-Woverride-init", "Allow field initialization overrides for display info");
 
+struct stepping_desc {
+	const enum intel_step *map; /* revid to step map */
+	size_t size; /* map size */
+};
+
+#define STEP_INFO(_map)				\
+	.step_info.map = _map,			\
+	.step_info.size = ARRAY_SIZE(_map)
+
 struct subplatform_desc {
 	enum intel_display_subplatform subplatform;
 	const char *name;
 	const u16 *pciidlist;
+	struct stepping_desc step_info;
 };
 
 struct platform_desc {
@@ -31,6 +42,7 @@ struct platform_desc {
 	const char *name;
 	const struct subplatform_desc *subplatforms;
 	const struct intel_display_device_info *info; /* NULL for GMD ID */
+	struct stepping_desc step_info;
 };
 
 #define PLATFORM(_platform)			 \
@@ -610,6 +622,13 @@ static const u16 skl_ulx_ids[] = {
 	0
 };
 
+static const enum intel_step skl_steppings[] = {
+	[0x6] = STEP_G0,
+	[0x7] = STEP_H0,
+	[0x9] = STEP_J0,
+	[0xA] = STEP_I1,
+};
+
 static const struct platform_desc skl_desc = {
 	PLATFORM(SKYLAKE),
 	.subplatforms = (const struct subplatform_desc[]) {
@@ -618,6 +637,7 @@ static const struct platform_desc skl_desc = {
 		{},
 	},
 	.info = &skl_display,
+	STEP_INFO(skl_steppings),
 };
 
 static const u16 kbl_ult_ids[] = {
@@ -634,6 +654,16 @@ static const u16 kbl_ulx_ids[] = {
 	0
 };
 
+static const enum intel_step kbl_steppings[] = {
+	[1] = STEP_B0,
+	[2] = STEP_B0,
+	[3] = STEP_B0,
+	[4] = STEP_C0,
+	[5] = STEP_B1,
+	[6] = STEP_B1,
+	[7] = STEP_C0,
+};
+
 static const struct platform_desc kbl_desc = {
 	PLATFORM(KABYLAKE),
 	.subplatforms = (const struct subplatform_desc[]) {
@@ -642,6 +672,7 @@ static const struct platform_desc kbl_desc = {
 		{},
 	},
 	.info = &skl_display,
+	STEP_INFO(kbl_steppings),
 };
 
 static const u16 cfl_ult_ids[] = {
@@ -706,6 +737,13 @@ static const struct platform_desc cml_desc = {
 		BIT(TRANSCODER_DSI_A) | BIT(TRANSCODER_DSI_C), \
 	.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C)
 
+static const enum intel_step bxt_steppings[] = {
+	[0xA] = STEP_C0,
+	[0xB] = STEP_C0,
+	[0xC] = STEP_D0,
+	[0xD] = STEP_E0,
+};
+
 static const struct platform_desc bxt_desc = {
 	PLATFORM(BROXTON),
 	.info = &(const struct intel_display_device_info) {
@@ -714,6 +752,11 @@ static const struct platform_desc bxt_desc = {
 
 		.__runtime_defaults.ip.ver = 9,
 	},
+	STEP_INFO(bxt_steppings),
+};
+
+static const enum intel_step glk_steppings[] = {
+	[3] = STEP_B0,
 };
 
 static const struct platform_desc glk_desc = {
@@ -725,6 +768,7 @@ static const struct platform_desc glk_desc = {
 
 		.__runtime_defaults.ip.ver = 10,
 	},
+	STEP_INFO(glk_steppings),
 };
 
 #define ICL_DISPLAY \
@@ -773,6 +817,10 @@ static const u16 icl_port_f_ids[] = {
 	0
 };
 
+static const enum intel_step icl_steppings[] = {
+	[7] = STEP_D0,
+};
+
 static const struct platform_desc icl_desc = {
 	PLATFORM(ICELAKE),
 	.subplatforms = (const struct subplatform_desc[]) {
@@ -784,6 +832,7 @@ static const struct platform_desc icl_desc = {
 
 		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D) | BIT(PORT_E),
 	},
+	STEP_INFO(icl_steppings),
 };
 
 static const struct intel_display_device_info jsl_ehl_display = {
@@ -792,14 +841,21 @@ static const struct intel_display_device_info jsl_ehl_display = {
 	.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D),
 };
 
+static const enum intel_step jsl_ehl_steppings[] = {
+	[0] = STEP_A0,
+	[1] = STEP_B0,
+};
+
 static const struct platform_desc jsl_desc = {
 	PLATFORM(JASPERLAKE),
 	.info = &jsl_ehl_display,
+	STEP_INFO(jsl_ehl_steppings),
 };
 
 static const struct platform_desc ehl_desc = {
 	PLATFORM(ELKHARTLAKE),
 	.info = &jsl_ehl_display,
+	STEP_INFO(jsl_ehl_steppings),
 };
 
 #define XE_D_DISPLAY \
@@ -850,10 +906,23 @@ static const u16 tgl_uy_ids[] = {
 	0
 };
 
+static const enum intel_step tgl_steppings[] = {
+	[0] = STEP_B0,
+	[1] = STEP_D0,
+};
+
+static const enum intel_step tgl_uy_steppings[] = {
+	[0] = STEP_A0,
+	[1] = STEP_C0,
+	[2] = STEP_C0,
+	[3] = STEP_D0,
+};
+
 static const struct platform_desc tgl_desc = {
 	PLATFORM(TIGERLAKE),
 	.subplatforms = (const struct subplatform_desc[]) {
-		{ INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids },
+		{ INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids,
+		  STEP_INFO(tgl_uy_steppings) },
 		{},
 	},
 	.info = &(const struct intel_display_device_info) {
@@ -866,6 +935,12 @@ static const struct platform_desc tgl_desc = {
 		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
 		BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4) | BIT(PORT_TC5) | BIT(PORT_TC6),
 	},
+	STEP_INFO(tgl_steppings),
+};
+
+static const enum intel_step dg1_steppings[] = {
+	[0] = STEP_A0,
+	[1] = STEP_B0,
 };
 
 static const struct platform_desc dg1_desc = {
@@ -876,6 +951,13 @@ static const struct platform_desc dg1_desc = {
 		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
 		BIT(PORT_TC1) | BIT(PORT_TC2),
 	},
+	STEP_INFO(dg1_steppings),
+};
+
+static const enum intel_step rkl_steppings[] = {
+	[0] = STEP_A0,
+	[1] = STEP_B0,
+	[4] = STEP_C0,
 };
 
 static const struct platform_desc rkl_desc = {
@@ -892,6 +974,7 @@ static const struct platform_desc rkl_desc = {
 		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
 		BIT(PORT_TC1) | BIT(PORT_TC2),
 	},
+	STEP_INFO(rkl_steppings),
 };
 
 static const u16 adls_rpls_ids[] = {
@@ -899,10 +982,24 @@ static const u16 adls_rpls_ids[] = {
 	0
 };
 
+static const enum intel_step adl_s_steppings[] = {
+	[0x0] = STEP_A0,
+	[0x1] = STEP_A2,
+	[0x4] = STEP_B0,
+	[0x8] = STEP_B0,
+	[0xC] = STEP_C0,
+};
+
+static const enum intel_step adl_s_rpl_s_steppings[] = {
+	[0x4] = STEP_D0,
+	[0xC] = STEP_C0,
+};
+
 static const struct platform_desc adl_s_desc = {
 	PLATFORM(ALDERLAKE_S),
 	.subplatforms = (const struct subplatform_desc[]) {
-		{ INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids },
+		{ INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids,
+		  STEP_INFO(adl_s_rpl_s_steppings) },
 		{},
 	},
 	.info = &(const struct intel_display_device_info) {
@@ -913,6 +1010,7 @@ static const struct platform_desc adl_s_desc = {
 		.__runtime_defaults.port_mask = BIT(PORT_A) |
 		BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4),
 	},
+	STEP_INFO(adl_s_steppings),
 };
 
 #define XE_LPD_FEATURES \
@@ -986,15 +1084,34 @@ static const u16 adlp_rplp_ids[] = {
 	0
 };
 
+static const enum intel_step adl_p_steppings[] = {
+	[0x0] = STEP_A0,
+	[0x4] = STEP_B0,
+	[0x8] = STEP_C0,
+	[0xC] = STEP_D0,
+};
+
+static const enum intel_step adl_p_adl_n_steppings[] = {
+	[0x0] = STEP_D0,
+};
+
+static const enum intel_step adl_p_rpl_pu_steppings[] = {
+	[0x4] = STEP_E0,
+};
+
 static const struct platform_desc adl_p_desc = {
 	PLATFORM(ALDERLAKE_P),
 	.subplatforms = (const struct subplatform_desc[]) {
-		{ INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids },
-		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids },
-		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids },
+		{ INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids,
+		  STEP_INFO(adl_p_adl_n_steppings) },
+		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids,
+		  STEP_INFO(adl_p_rpl_pu_steppings) },
+		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids,
+		  STEP_INFO(adl_p_rpl_pu_steppings) },
 		{},
 	},
 	.info = &xe_lpd_display,
+	STEP_INFO(adl_p_steppings),
 };
 
 static const struct intel_display_device_info xe_hpd_display = {
@@ -1023,12 +1140,33 @@ static const u16 dg2_g12_ids[] = {
 	0
 };
 
+static const enum intel_step dg2_g10_steppings[] = {
+	[0x0] = STEP_A0,
+	[0x1] = STEP_A0,
+	[0x4] = STEP_B0,
+	[0x8] = STEP_C0,
+};
+
+static const enum intel_step dg2_g11_steppings[] = {
+	[0x0] = STEP_B0,
+	[0x4] = STEP_C0,
+	[0x5] = STEP_C0,
+};
+
+static const enum intel_step dg2_g12_steppings[] = {
+	[0x0] = STEP_C0,
+	[0x1] = STEP_C0,
+};
+
 static const struct platform_desc dg2_desc = {
 	PLATFORM(DG2),
 	.subplatforms = (const struct subplatform_desc[]) {
-		{ INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids },
-		{ INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids },
-		{ INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids },
+		{ INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids,
+		  STEP_INFO(dg2_g10_steppings) },
+		{ INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids,
+		  STEP_INFO(dg2_g11_steppings) },
+		{ INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids,
+		  STEP_INFO(dg2_g12_steppings) },
 		{},
 	},
 	.info = &xe_hpd_display,
@@ -1261,13 +1399,66 @@ find_subplatform_desc(struct pci_dev *pdev, const struct platform_desc *desc)
 	return NULL;
 }
 
+static enum intel_step get_pre_gmdid_step(struct intel_display *display,
+					  const struct stepping_desc *main,
+					  const struct stepping_desc *sub)
+{
+	struct pci_dev *pdev = to_pci_dev(display->drm->dev);
+	const enum intel_step *map = main->map;
+	int size = main->size;
+	int revision = pdev->revision;
+	enum intel_step step;
+
+	/* subplatform stepping info trumps main platform info */
+	if (sub->map && sub->size) {
+		map = sub->map;
+		size = sub->size;
+	}
+
+	/* not all platforms define steppings, and it's fine */
+	if (!map || !size)
+		return STEP_NONE;
+
+	if (revision < size && map[revision] != STEP_NONE) {
+		step = map[revision];
+	} else {
+		drm_warn(display->drm, "Unknown revision 0x%02x\n", revision);
+
+		/*
+		 * If we hit a gap in the revision to step map, use the information
+		 * for the next revision.
+		 *
+		 * This may be wrong in all sorts of ways, especially if the
+		 * steppings in the array are not monotonically increasing, but
+		 * it's better than defaulting to 0.
+		 */
+		while (revision < size && map[revision] == STEP_NONE)
+			revision++;
+
+		if (revision < size) {
+			drm_dbg_kms(display->drm, "Using display stepping for revision 0x%02x\n",
+				    revision);
+			step = map[revision];
+		} else {
+			drm_dbg_kms(display->drm, "Using future display stepping\n");
+			step = STEP_FUTURE;
+		}
+	}
+
+	drm_WARN_ON(display->drm, step == STEP_NONE);
+
+	return step;
+}
+
 void intel_display_device_probe(struct drm_i915_private *i915)
 {
+	struct intel_display *display = &i915->display;
 	struct pci_dev *pdev = to_pci_dev(i915->drm.dev);
 	const struct intel_display_device_info *info;
 	struct intel_display_ip_ver ip_ver = {};
 	const struct platform_desc *desc;
 	const struct subplatform_desc *subdesc;
+	enum intel_step step;
 
 	/* Add drm device backpointer as early as possible. */
 	i915->display.drm = &i915->drm;
@@ -1307,13 +1498,24 @@ void intel_display_device_probe(struct drm_i915_private *i915)
 		DISPLAY_RUNTIME_INFO(i915)->subplatform = subdesc->subplatform;
 	}
 
-	if (ip_ver.ver || ip_ver.rel || ip_ver.step)
+	if (ip_ver.ver || ip_ver.rel || ip_ver.step) {
 		DISPLAY_RUNTIME_INFO(i915)->ip = ip_ver;
+		step = STEP_A0 + ip_ver.step;
+		if (step > STEP_FUTURE) {
+			drm_dbg_kms(display->drm, "Using future display stepping\n");
+			step = STEP_FUTURE;
+		}
+	} else {
+		step = get_pre_gmdid_step(display, &desc->step_info, &subdesc->step_info);
+	}
+
+	DISPLAY_RUNTIME_INFO(i915)->step = step;
 
-	drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u\n",
+	drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u stepping %s\n",
 		 desc->name, subdesc ? "/" : "", subdesc ? subdesc->name : "",
 		 pdev->device, DISPLAY_RUNTIME_INFO(i915)->ip.ver,
-		 DISPLAY_RUNTIME_INFO(i915)->ip.rel);
+		 DISPLAY_RUNTIME_INFO(i915)->ip.rel,
+		 step != STEP_NONE ? intel_step_name(step) : "N/A");
 
 	return;
 
diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index 8bd342658291..1c75cbd68dea 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -201,8 +201,9 @@ struct intel_display_runtime_info {
 	struct intel_display_ip_ver {
 		u16 ver;
 		u16 rel;
-		u16 step;
+		u16 step; /* hardware */
 	} ip;
+	int step; /* symbolic */
 
 	u8 pipe_mask;
 	u8 cpu_transcoder_mask;
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
index ee3f45b668b9..2cf13a572ab0 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
@@ -8,6 +8,7 @@
 
 #include "xe_step.h"
 
+#define intel_step xe_step
 #define intel_step_name xe_step_name
 
 #endif /* __INTEL_STEP_H__ */
-- 
2.39.2


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

* [PATCH 08/10] drm/i915/display: switch to display detected steppings
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (6 preceding siblings ...)
  2024-08-20 19:00 ` [PATCH 07/10] drm/i915/display: identify display steppings in display probe Jani Nikula
@ 2024-08-20 19:00 ` Jani Nikula
  2024-08-21  0:01   ` Matt Roper
  2024-08-20 19:00 ` [PATCH 09/10] drm/i915: remove display stepping handling Jani Nikula
                   ` (9 subsequent siblings)
  17 siblings, 1 reply; 38+ messages in thread
From: Jani Nikula @ 2024-08-20 19:00 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper, Jani Nikula

Move the stepping related macros over to display. We can proceed to
remove the compat macros from xe.

Note: Looks like we've failed to actually initialize the display
stepping for GMD ID based platforms in the xe driver. It does get set in
display runtime info, but until now the compat macro used
xe->info.step.display which was not set for GMD ID.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_device.c | 2 ++
 drivers/gpu/drm/i915/display/intel_display_device.h | 6 ++++++
 drivers/gpu/drm/i915/i915_drv.h                     | 5 -----
 drivers/gpu/drm/i915/intel_device_info.c            | 1 -
 drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h   | 5 -----
 5 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
index 1ac3ab3954a1..06b55ae38a44 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.c
+++ b/drivers/gpu/drm/i915/display/intel_display_device.c
@@ -1711,6 +1711,8 @@ void intel_display_device_info_print(const struct intel_display_device_info *inf
 		drm_printf(p, "display version: %u\n",
 			   runtime->ip.ver);
 
+	drm_printf(p, "display stepping: %s\n", intel_step_name(runtime->step));
+
 #define PRINT_FLAG(name) drm_printf(p, "%s: %s\n", #name, str_yes_no(info->name))
 	DEV_INFO_DISPLAY_FOR_EACH_FLAG(PRINT_FLAG);
 #undef PRINT_FLAG
diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index 1c75cbd68dea..611be3fa3af6 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -194,6 +194,12 @@ enum intel_display_subplatform {
 #define IS_DISPLAY_VER(i915, from, until) \
 	(DISPLAY_VER(i915) >= (from) && DISPLAY_VER(i915) <= (until))
 
+#define INTEL_DISPLAY_STEP(__i915) (DISPLAY_RUNTIME_INFO(__i915)->step)
+
+#define IS_DISPLAY_STEP(__i915, since, until) \
+	(drm_WARN_ON(__to_intel_display(__i915)->drm, INTEL_DISPLAY_STEP(__i915) == STEP_NONE), \
+	 INTEL_DISPLAY_STEP(__i915) >= (since) && INTEL_DISPLAY_STEP(__i915) < (until))
+
 struct intel_display_runtime_info {
 	enum intel_display_platform platform;
 	enum intel_display_subplatform subplatform;
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 94f7f6cc444c..3b1b16e71cf9 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -408,15 +408,10 @@ static inline struct intel_gt *to_gt(const struct drm_i915_private *i915)
 
 #define INTEL_REVID(i915)	(to_pci_dev((i915)->drm.dev)->revision)
 
-#define INTEL_DISPLAY_STEP(__i915) (RUNTIME_INFO(__i915)->step.display_step)
 #define INTEL_GRAPHICS_STEP(__i915) (RUNTIME_INFO(__i915)->step.graphics_step)
 #define INTEL_MEDIA_STEP(__i915) (RUNTIME_INFO(__i915)->step.media_step)
 #define INTEL_BASEDIE_STEP(__i915) (RUNTIME_INFO(__i915)->step.basedie_step)
 
-#define IS_DISPLAY_STEP(__i915, since, until) \
-	(drm_WARN_ON(&(__i915)->drm, INTEL_DISPLAY_STEP(__i915) == STEP_NONE), \
-	 INTEL_DISPLAY_STEP(__i915) >= (since) && INTEL_DISPLAY_STEP(__i915) < (until))
-
 #define IS_GRAPHICS_STEP(__i915, since, until) \
 	(drm_WARN_ON(&(__i915)->drm, INTEL_GRAPHICS_STEP(__i915) == STEP_NONE), \
 	 INTEL_GRAPHICS_STEP(__i915) >= (since) && INTEL_GRAPHICS_STEP(__i915) < (until))
diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
index d26de37719a7..8b3e44dd504c 100644
--- a/drivers/gpu/drm/i915/intel_device_info.c
+++ b/drivers/gpu/drm/i915/intel_device_info.c
@@ -108,7 +108,6 @@ void intel_device_info_print(const struct intel_device_info *info,
 
 	drm_printf(p, "graphics stepping: %s\n", intel_step_name(runtime->step.graphics_step));
 	drm_printf(p, "media stepping: %s\n", intel_step_name(runtime->step.media_step));
-	drm_printf(p, "display stepping: %s\n", intel_step_name(runtime->step.display_step));
 	drm_printf(p, "base die stepping: %s\n", intel_step_name(runtime->step.basedie_step));
 
 	drm_printf(p, "gt: %d\n", info->gt);
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
index 7492979ac3bc..97be452f003b 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
@@ -80,11 +80,6 @@ static inline struct drm_i915_private *kdev_to_i915(struct device *kdev)
 
 #define IS_MOBILE(xe) (xe && 0)
 
-#define INTEL_DISPLAY_STEP(xe) ((xe)->info.step.display)
-
-/* Workarounds not handled yet */
-#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })
-
 #define IS_LP(xe) (0)
 #define IS_GEN9_LP(xe) (0)
 #define IS_GEN9_BC(xe) (0)
-- 
2.39.2


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

* [PATCH 09/10] drm/i915: remove display stepping handling
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (7 preceding siblings ...)
  2024-08-20 19:00 ` [PATCH 08/10] drm/i915/display: switch to display detected steppings Jani Nikula
@ 2024-08-20 19:00 ` Jani Nikula
  2024-08-21  0:04   ` Matt Roper
  2024-08-20 19:00 ` [PATCH 10/10] drm/xe: " Jani Nikula
                   ` (8 subsequent siblings)
  17 siblings, 1 reply; 38+ messages in thread
From: Jani Nikula @ 2024-08-20 19:00 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper, Jani Nikula

The code is now unused. Remove.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/intel_step.c | 79 ++++++++++++++-----------------
 drivers/gpu/drm/i915/intel_step.h |  1 -
 2 files changed, 36 insertions(+), 44 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_step.c b/drivers/gpu/drm/i915/intel_step.c
index 80464e4edcce..285b96fadfd5 100644
--- a/drivers/gpu/drm/i915/intel_step.c
+++ b/drivers/gpu/drm/i915/intel_step.c
@@ -23,8 +23,7 @@
  * use a macro to define these to make it easier to identify the platforms
  * where the two steppings can deviate.
  */
-#define COMMON_STEP(x)  .graphics_step = STEP_##x, .display_step = STEP_##x, .media_step = STEP_##x
-#define COMMON_GT_MEDIA_STEP(x)  .graphics_step = STEP_##x, .media_step = STEP_##x
+#define COMMON_STEP(x)  .graphics_step = STEP_##x, .media_step = STEP_##x
 
 static const struct intel_step_info skl_revids[] = {
 	[0x6] = { COMMON_STEP(G0) },
@@ -34,13 +33,13 @@ static const struct intel_step_info skl_revids[] = {
 };
 
 static const struct intel_step_info kbl_revids[] = {
-	[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
-	[2] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B0 },
-	[3] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_B0 },
-	[4] = { COMMON_GT_MEDIA_STEP(F0), .display_step = STEP_C0 },
-	[5] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B1 },
-	[6] = { COMMON_GT_MEDIA_STEP(D1), .display_step = STEP_B1 },
-	[7] = { COMMON_GT_MEDIA_STEP(G0), .display_step = STEP_C0 },
+	[1] = { COMMON_STEP(B0) },
+	[2] = { COMMON_STEP(C0) },
+	[3] = { COMMON_STEP(D0) },
+	[4] = { COMMON_STEP(F0) },
+	[5] = { COMMON_STEP(C0) },
+	[6] = { COMMON_STEP(D1) },
+	[7] = { COMMON_STEP(G0) },
 };
 
 static const struct intel_step_info bxt_revids[] = {
@@ -64,16 +63,16 @@ static const struct intel_step_info jsl_ehl_revids[] = {
 };
 
 static const struct intel_step_info tgl_uy_revids[] = {
-	[0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
-	[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_C0 },
-	[2] = { COMMON_GT_MEDIA_STEP(B1), .display_step = STEP_C0 },
-	[3] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_D0 },
+	[0] = { COMMON_STEP(A0) },
+	[1] = { COMMON_STEP(B0) },
+	[2] = { COMMON_STEP(B1) },
+	[3] = { COMMON_STEP(C0) },
 };
 
 /* Same GT stepping between tgl_uy_revids and tgl_revids don't mean the same HW */
 static const struct intel_step_info tgl_revids[] = {
-	[0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_B0 },
-	[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_D0 },
+	[0] = { COMMON_STEP(A0) },
+	[1] = { COMMON_STEP(B0) },
 };
 
 static const struct intel_step_info rkl_revids[] = {
@@ -88,49 +87,49 @@ static const struct intel_step_info dg1_revids[] = {
 };
 
 static const struct intel_step_info adls_revids[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
-	[0x1] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A2 },
-	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
-	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B0 },
-	[0xC] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_C0 },
+	[0x0] = { COMMON_STEP(A0) },
+	[0x1] = { COMMON_STEP(A0) },
+	[0x4] = { COMMON_STEP(B0) },
+	[0x8] = { COMMON_STEP(C0) },
+	[0xC] = { COMMON_STEP(D0) },
 };
 
 static const struct intel_step_info adlp_revids[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
-	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
-	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_C0 },
-	[0xC] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_D0 },
+	[0x0] = { COMMON_STEP(A0) },
+	[0x4] = { COMMON_STEP(B0) },
+	[0x8] = { COMMON_STEP(C0) },
+	[0xC] = { COMMON_STEP(C0) },
 };
 
 static const struct intel_step_info dg2_g10_revid_step_tbl[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
-	[0x1] = { COMMON_GT_MEDIA_STEP(A1), .display_step = STEP_A0 },
-	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
-	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_C0 },
+	[0x0] = { COMMON_STEP(A0) },
+	[0x1] = { COMMON_STEP(A1) },
+	[0x4] = { COMMON_STEP(B0) },
+	[0x8] = { COMMON_STEP(C0) },
 };
 
 static const struct intel_step_info dg2_g11_revid_step_tbl[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_B0 },
-	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_C0 },
-	[0x5] = { COMMON_GT_MEDIA_STEP(B1), .display_step = STEP_C0 },
+	[0x0] = { COMMON_STEP(A0) },
+	[0x4] = { COMMON_STEP(B0) },
+	[0x5] = { COMMON_STEP(B1) },
 };
 
 static const struct intel_step_info dg2_g12_revid_step_tbl[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_C0 },
-	[0x1] = { COMMON_GT_MEDIA_STEP(A1), .display_step = STEP_C0 },
+	[0x0] = { COMMON_STEP(A0) },
+	[0x1] = { COMMON_STEP(A1) },
 };
 
 static const struct intel_step_info adls_rpls_revids[] = {
-	[0x4] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_D0 },
-	[0xC] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_C0 },
+	[0x4] = { COMMON_STEP(D0) },
+	[0xC] = { COMMON_STEP(D0) },
 };
 
 static const struct intel_step_info adlp_rplp_revids[] = {
-	[0x4] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_E0 },
+	[0x4] = { COMMON_STEP(C0) },
 };
 
 static const struct intel_step_info adlp_n_revids[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_D0 },
+	[0x0] = { COMMON_STEP(A0) },
 };
 
 static u8 gmd_to_intel_step(struct drm_i915_private *i915,
@@ -158,11 +157,6 @@ void intel_step_init(struct drm_i915_private *i915)
 						       &RUNTIME_INFO(i915)->graphics.ip);
 		step.media_step = gmd_to_intel_step(i915,
 						    &RUNTIME_INFO(i915)->media.ip);
-		step.display_step = STEP_A0 + DISPLAY_RUNTIME_INFO(i915)->ip.step;
-		if (step.display_step >= STEP_FUTURE) {
-			drm_dbg(&i915->drm, "Using future display steppings\n");
-			step.display_step = STEP_FUTURE;
-		}
 
 		RUNTIME_INFO(i915)->step = step;
 
@@ -252,7 +246,6 @@ void intel_step_init(struct drm_i915_private *i915)
 		} else {
 			drm_dbg(&i915->drm, "Using future steppings\n");
 			step.graphics_step = STEP_FUTURE;
-			step.display_step = STEP_FUTURE;
 		}
 	}
 
diff --git a/drivers/gpu/drm/i915/intel_step.h b/drivers/gpu/drm/i915/intel_step.h
index 96dfca4cba73..83bd1190edf5 100644
--- a/drivers/gpu/drm/i915/intel_step.h
+++ b/drivers/gpu/drm/i915/intel_step.h
@@ -16,7 +16,6 @@ struct intel_step_info {
 	 * the expectation breaks gmd_to_intel_step().
 	 */
 	u8 graphics_step;	/* Represents the compute tile on Xe_HPC */
-	u8 display_step;
 	u8 media_step;
 	u8 basedie_step;
 };
-- 
2.39.2


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

* [PATCH 10/10] drm/xe: remove display stepping handling
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (8 preceding siblings ...)
  2024-08-20 19:00 ` [PATCH 09/10] drm/i915: remove display stepping handling Jani Nikula
@ 2024-08-20 19:00 ` Jani Nikula
  2024-08-21  0:04   ` Matt Roper
  2024-08-20 19:30 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: identify display steppings in display code Patchwork
                   ` (7 subsequent siblings)
  17 siblings, 1 reply; 38+ messages in thread
From: Jani Nikula @ 2024-08-20 19:00 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper, Jani Nikula

The code is now unused. Remove.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/xe/xe_debugfs.c    |  3 +-
 drivers/gpu/drm/xe/xe_pci.c        |  3 +-
 drivers/gpu/drm/xe/xe_step.c       | 57 +++++++++++++-----------------
 drivers/gpu/drm/xe/xe_step_types.h |  1 -
 4 files changed, 27 insertions(+), 37 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index 1011e5d281fa..a64bae36e0e3 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -47,10 +47,9 @@ static int info(struct seq_file *m, void *data)
 
 	drm_printf(&p, "graphics_verx100 %d\n", xe->info.graphics_verx100);
 	drm_printf(&p, "media_verx100 %d\n", xe->info.media_verx100);
-	drm_printf(&p, "stepping G:%s M:%s D:%s B:%s\n",
+	drm_printf(&p, "stepping G:%s M:%s B:%s\n",
 		   xe_step_name(xe->info.step.graphics),
 		   xe_step_name(xe->info.step.media),
-		   xe_step_name(xe->info.step.display),
 		   xe_step_name(xe->info.step.basedie));
 	drm_printf(&p, "is_dgfx %s\n", str_yes_no(xe->info.is_dgfx));
 	drm_printf(&p, "platform %d\n", xe->info.platform);
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 3c34b032ebf4..0c2342988650 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -838,10 +838,9 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 		xe->info.dma_mask_size, xe->info.tile_count,
 		xe->info.has_heci_gscfi, xe->info.has_heci_cscfi);
 
-	drm_dbg(&xe->drm, "Stepping = (G:%s, M:%s, D:%s, B:%s)\n",
+	drm_dbg(&xe->drm, "Stepping = (G:%s, M:%s, B:%s)\n",
 		xe_step_name(xe->info.step.graphics),
 		xe_step_name(xe->info.step.media),
-		xe_step_name(xe->info.step.display),
 		xe_step_name(xe->info.step.basedie));
 
 	drm_dbg(&xe->drm, "SR-IOV support: %s (mode: %s)\n",
diff --git a/drivers/gpu/drm/xe/xe_step.c b/drivers/gpu/drm/xe/xe_step.c
index eaf1b718f26c..c77b5c317fa0 100644
--- a/drivers/gpu/drm/xe/xe_step.c
+++ b/drivers/gpu/drm/xe/xe_step.c
@@ -28,23 +28,17 @@
  * use a macro to define these to make it easier to identify the platforms
  * where the two steppings can deviate.
  */
-#define COMMON_GT_MEDIA_STEP(x_)	\
-	.graphics = STEP_##x_,		\
-	.media = STEP_##x_
-
 #define COMMON_STEP(x_)			\
-	COMMON_GT_MEDIA_STEP(x_),	\
 	.graphics = STEP_##x_,		\
-	.media = STEP_##x_,		\
-	.display = STEP_##x_
+	.media = STEP_##x_
 
 __diag_push();
 __diag_ignore_all("-Woverride-init", "Allow field overrides in table");
 
 /* Same GT stepping between tgl_uy_revids and tgl_revids don't mean the same HW */
 static const struct xe_step_info tgl_revids[] = {
-	[0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_B0 },
-	[1] = { COMMON_GT_MEDIA_STEP(B0), .display = STEP_D0 },
+	[0] = { COMMON_STEP(A0) },
+	[1] = { COMMON_STEP(B0) },
 };
 
 static const struct xe_step_info dg1_revids[] = {
@@ -53,49 +47,49 @@ static const struct xe_step_info dg1_revids[] = {
 };
 
 static const struct xe_step_info adls_revids[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_A0 },
-	[0x1] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_A2 },
-	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display = STEP_B0 },
-	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display = STEP_B0 },
-	[0xC] = { COMMON_GT_MEDIA_STEP(D0), .display = STEP_C0 },
+	[0x0] = { COMMON_STEP(A0) },
+	[0x1] = { COMMON_STEP(A0) },
+	[0x4] = { COMMON_STEP(B0) },
+	[0x8] = { COMMON_STEP(C0) },
+	[0xC] = { COMMON_STEP(D0) },
 };
 
 static const struct xe_step_info adls_rpls_revids[] = {
-	[0x4] = { COMMON_GT_MEDIA_STEP(D0), .display = STEP_D0 },
-	[0xC] = { COMMON_GT_MEDIA_STEP(D0), .display = STEP_C0 },
+	[0x4] = { COMMON_STEP(D0) },
+	[0xC] = { COMMON_STEP(D0) },
 };
 
 static const struct xe_step_info adlp_revids[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_A0 },
-	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display = STEP_B0 },
-	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display = STEP_C0 },
-	[0xC] = { COMMON_GT_MEDIA_STEP(C0), .display = STEP_D0 },
+	[0x0] = { COMMON_STEP(A0) },
+	[0x4] = { COMMON_STEP(B0) },
+	[0x8] = { COMMON_STEP(C0) },
+	[0xC] = { COMMON_STEP(C0) },
 };
 
 static const struct xe_step_info adlp_rpl_revids[] = {
-	[0x4] = { COMMON_GT_MEDIA_STEP(C0), .display = STEP_E0 },
+	[0x4] = { COMMON_STEP(C0) },
 };
 
 static const struct xe_step_info adln_revids[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_D0 },
+	[0x0] = { COMMON_STEP(A0) },
 };
 
 static const struct xe_step_info dg2_g10_revid_step_tbl[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_A0 },
-	[0x1] = { COMMON_GT_MEDIA_STEP(A1), .display = STEP_A0 },
-	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display = STEP_B0 },
-	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display = STEP_C0 },
+	[0x0] = { COMMON_STEP(A0) },
+	[0x1] = { COMMON_STEP(A1) },
+	[0x4] = { COMMON_STEP(B0) },
+	[0x8] = { COMMON_STEP(C0) },
 };
 
 static const struct xe_step_info dg2_g11_revid_step_tbl[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_B0 },
-	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display = STEP_C0 },
-	[0x5] = { COMMON_GT_MEDIA_STEP(B1), .display = STEP_C0 },
+	[0x0] = { COMMON_STEP(A0) },
+	[0x4] = { COMMON_STEP(B0) },
+	[0x5] = { COMMON_STEP(B1) },
 };
 
 static const struct xe_step_info dg2_g12_revid_step_tbl[] = {
-	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_C0 },
-	[0x1] = { COMMON_GT_MEDIA_STEP(A1), .display = STEP_C0 },
+	[0x0] = { COMMON_STEP(A0) },
+	[0x1] = { COMMON_STEP(A1) },
 };
 
 static const struct xe_step_info pvc_revid_step_tbl[] = {
@@ -195,7 +189,6 @@ struct xe_step_info xe_step_pre_gmdid_get(struct xe_device *xe)
 		} else {
 			drm_dbg(&xe->drm, "Using future steppings\n");
 			step.graphics = STEP_FUTURE;
-			step.display = STEP_FUTURE;
 		}
 	}
 
diff --git a/drivers/gpu/drm/xe/xe_step_types.h b/drivers/gpu/drm/xe/xe_step_types.h
index 95b38d2d6c50..d978cc2512f2 100644
--- a/drivers/gpu/drm/xe/xe_step_types.h
+++ b/drivers/gpu/drm/xe/xe_step_types.h
@@ -11,7 +11,6 @@
 struct xe_step_info {
 	u8 graphics;
 	u8 media;
-	u8 display;
 	u8 basedie;
 };
 
-- 
2.39.2


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

* ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: identify display steppings in display code
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (9 preceding siblings ...)
  2024-08-20 19:00 ` [PATCH 10/10] drm/xe: " Jani Nikula
@ 2024-08-20 19:30 ` Patchwork
  2024-08-20 19:30 ` ✗ Fi.CI.SPARSE: " Patchwork
                   ` (6 subsequent siblings)
  17 siblings, 0 replies; 38+ messages in thread
From: Patchwork @ 2024-08-20 19:30 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/display: identify display steppings in display code
URL   : https://patchwork.freedesktop.org/series/137534/
State : warning

== Summary ==

Error: dim checkpatch failed
4068a072c61e drm/xe/display: fix compat IS_DISPLAY_STEP() range end
-:20: WARNING:LONG_LINE: line length of 116 exceeds 100 columns
#20: FILE: drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h:86:
+#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })

-:20: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'first' may be better as '(first)' to avoid precedence issues
#20: FILE: drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h:86:
+#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })

-:20: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'last' may be better as '(last)' to avoid precedence issues
#20: FILE: drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h:86:
+#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })

total: 0 errors, 1 warnings, 2 checks, 8 lines checked
6604ed43e8eb drm/xe/display: remove intel_display_step_name() to simplify
46e4d0a0614d drm/xe/display: remove the unused compat HAS_GMD_ID()
009ec2ba1dd4 drm/xe/step: define more steppings E-J
ff0bbce1336d drm/i915/display: rename IS_DISPLAY_IP_RANGE() to IS_DISPLAY_VER_FULL()
-:21: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i915' - possible side-effects?
#21: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:164:
+#define IS_DISPLAY_VER_FULL(__i915, from, until) ( \
 	BUILD_BUG_ON_ZERO((from) < IP_VER(2, 0)) + \
 	(DISPLAY_VER_FULL(__i915) >= (from) && \
 	 DISPLAY_VER_FULL(__i915) <= (until)))

-:21: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'from' - possible side-effects?
#21: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:164:
+#define IS_DISPLAY_VER_FULL(__i915, from, until) ( \
 	BUILD_BUG_ON_ZERO((from) < IP_VER(2, 0)) + \
 	(DISPLAY_VER_FULL(__i915) >= (from) && \
 	 DISPLAY_VER_FULL(__i915) <= (until)))

total: 0 errors, 0 warnings, 2 checks, 24 lines checked
d23997fc8856 drm/i915/display: rename IS_DISPLAY_IP_STEP() to IS_DISPLAY_VER_STEP()
-:28: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i915' - possible side-effects?
#28: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:184:
+#define IS_DISPLAY_VER_STEP(__i915, ipver, from, until) \
 	(IS_DISPLAY_VER_FULL((__i915), (ipver), (ipver)) && \
 	 IS_DISPLAY_STEP((__i915), (from), (until)))

-:28: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'ipver' - possible side-effects?
#28: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:184:
+#define IS_DISPLAY_VER_STEP(__i915, ipver, from, until) \
 	(IS_DISPLAY_VER_FULL((__i915), (ipver), (ipver)) && \
 	 IS_DISPLAY_STEP((__i915), (from), (until)))

total: 0 errors, 0 warnings, 2 checks, 78 lines checked
84d23f7bcce0 drm/i915/display: identify display steppings in display probe
-:38: CHECK:MACRO_ARG_REUSE: Macro argument reuse '_map' - possible side-effects?
#38: FILE: drivers/gpu/drm/i915/display/intel_display_device.c:29:
+#define STEP_INFO(_map)				\
+	.step_info.map = _map,			\
+	.step_info.size = ARRAY_SIZE(_map)

total: 0 errors, 0 warnings, 1 checks, 415 lines checked
5505af80a4bb drm/i915/display: switch to display detected steppings
-:39: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i915' - possible side-effects?
#39: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:199:
+#define IS_DISPLAY_STEP(__i915, since, until) \
+	(drm_WARN_ON(__to_intel_display(__i915)->drm, INTEL_DISPLAY_STEP(__i915) == STEP_NONE), \
+	 INTEL_DISPLAY_STEP(__i915) >= (since) && INTEL_DISPLAY_STEP(__i915) < (until))

total: 0 errors, 0 warnings, 1 checks, 53 lines checked
dab2e3b4af43 drm/i915: remove display stepping handling
b0eabc5e5736 drm/xe: remove display stepping handling



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

* ✗ Fi.CI.SPARSE: warning for drm/i915/display: identify display steppings in display code
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (10 preceding siblings ...)
  2024-08-20 19:30 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: identify display steppings in display code Patchwork
@ 2024-08-20 19:30 ` Patchwork
  2024-08-20 19:40 ` ✗ Fi.CI.BAT: failure " Patchwork
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 38+ messages in thread
From: Patchwork @ 2024-08-20 19:30 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/display: identify display steppings in display code
URL   : https://patchwork.freedesktop.org/series/137534/
State : warning

== Summary ==

Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.



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

* Re: [PATCH 01/10] drm/xe/display: fix compat IS_DISPLAY_STEP() range end
  2024-08-20 19:00 ` [PATCH 01/10] drm/xe/display: fix compat IS_DISPLAY_STEP() range end Jani Nikula
@ 2024-08-20 19:31   ` Lucas De Marchi
  2024-08-20 22:29     ` Matt Roper
  0 siblings, 1 reply; 38+ messages in thread
From: Lucas De Marchi @ 2024-08-20 19:31 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, rodrigo.vivi, matthew.d.roper

On Tue, Aug 20, 2024 at 10:00:34PM GMT, Jani Nikula wrote:
>It's supposed to be an open range at the end like in i915. Fingers
>crossed that nobody relies on this definition.

we are checking for step though, so IMO this deserves a

	Fixes: 44e694958b95 ("drm/xe/display: Implement display support")

from a git grep, for the platforms relevants to xe, this mostly affects
ADL-P that is used as a test vehicle.

>
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>---
> drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
>index 2feedddf1e40..1f1ad4d3ef51 100644
>--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
>+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
>@@ -83,7 +83,7 @@ static inline struct drm_i915_private *kdev_to_i915(struct device *kdev)
> #define HAS_GMD_ID(xe) GRAPHICS_VERx100(xe) >= 1270
>
> /* Workarounds not handled yet */

I guess this can be removed already.

>-#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step <= last; })
>+#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })

Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

thanks
Lucas De Marchi


>
> #define IS_LP(xe) (0)
> #define IS_GEN9_LP(xe) (0)
>-- 
>2.39.2
>

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

* ✗ Fi.CI.BAT: failure for drm/i915/display: identify display steppings in display code
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (11 preceding siblings ...)
  2024-08-20 19:30 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-08-20 19:40 ` Patchwork
  2024-08-21 10:38 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: identify display steppings in display code (rev2) Patchwork
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 38+ messages in thread
From: Patchwork @ 2024-08-20 19:40 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915/display: identify display steppings in display code
URL   : https://patchwork.freedesktop.org/series/137534/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_15265 -> Patchwork_137534v1
====================================================

Summary
-------

  **FAILURE**

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

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

Participating hosts (40 -> 39)
------------------------------

  Missing    (1): fi-snb-2520m 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_module_load@load:
    - fi-ilk-650:         [PASS][1] -> [ABORT][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-ilk-650/igt@i915_module_load@load.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-ilk-650/igt@i915_module_load@load.html
    - bat-jsl-1:          [PASS][3] -> [ABORT][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-jsl-1/igt@i915_module_load@load.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-jsl-1/igt@i915_module_load@load.html
    - fi-blb-e6850:       [PASS][5] -> [ABORT][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-blb-e6850/igt@i915_module_load@load.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-blb-e6850/igt@i915_module_load@load.html
    - fi-bsw-n3050:       [PASS][7] -> [ABORT][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-bsw-n3050/igt@i915_module_load@load.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-bsw-n3050/igt@i915_module_load@load.html
    - bat-adlp-6:         [PASS][9] -> [ABORT][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-adlp-6/igt@i915_module_load@load.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-adlp-6/igt@i915_module_load@load.html
    - fi-rkl-11600:       [PASS][11] -> [ABORT][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-rkl-11600/igt@i915_module_load@load.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-rkl-11600/igt@i915_module_load@load.html
    - fi-pnv-d510:        [PASS][13] -> [ABORT][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-pnv-d510/igt@i915_module_load@load.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-pnv-d510/igt@i915_module_load@load.html
    - bat-dg1-7:          [PASS][15] -> [ABORT][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-dg1-7/igt@i915_module_load@load.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-dg1-7/igt@i915_module_load@load.html
    - fi-glk-j4005:       [PASS][17] -> [ABORT][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-glk-j4005/igt@i915_module_load@load.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-glk-j4005/igt@i915_module_load@load.html
    - bat-adlp-9:         [PASS][19] -> [ABORT][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-adlp-9/igt@i915_module_load@load.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-adlp-9/igt@i915_module_load@load.html
    - bat-rpls-4:         [PASS][21] -> [ABORT][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-rpls-4/igt@i915_module_load@load.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-rpls-4/igt@i915_module_load@load.html
    - fi-kbl-7567u:       [PASS][23] -> [ABORT][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-kbl-7567u/igt@i915_module_load@load.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-kbl-7567u/igt@i915_module_load@load.html
    - fi-cfl-8700k:       [PASS][25] -> [ABORT][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-cfl-8700k/igt@i915_module_load@load.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-cfl-8700k/igt@i915_module_load@load.html
    - bat-apl-1:          [PASS][27] -> [ABORT][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-apl-1/igt@i915_module_load@load.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-apl-1/igt@i915_module_load@load.html
    - fi-elk-e7500:       [PASS][29] -> [ABORT][30]
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-elk-e7500/igt@i915_module_load@load.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-elk-e7500/igt@i915_module_load@load.html
    - bat-adlm-1:         [PASS][31] -> [ABORT][32]
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-adlm-1/igt@i915_module_load@load.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-adlm-1/igt@i915_module_load@load.html
    - fi-cfl-guc:         [PASS][33] -> [ABORT][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-cfl-guc/igt@i915_module_load@load.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-cfl-guc/igt@i915_module_load@load.html
    - fi-kbl-x1275:       [PASS][35] -> [ABORT][36]
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-kbl-x1275/igt@i915_module_load@load.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-kbl-x1275/igt@i915_module_load@load.html
    - bat-adlp-11:        [PASS][37] -> [ABORT][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-adlp-11/igt@i915_module_load@load.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-adlp-11/igt@i915_module_load@load.html
    - fi-ivb-3770:        [PASS][39] -> [ABORT][40]
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-ivb-3770/igt@i915_module_load@load.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-ivb-3770/igt@i915_module_load@load.html
    - fi-kbl-guc:         [PASS][41] -> [ABORT][42]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/fi-kbl-guc/igt@i915_module_load@load.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/fi-kbl-guc/igt@i915_module_load@load.html
    - bat-adls-6:         [PASS][43] -> [ABORT][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-adls-6/igt@i915_module_load@load.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-adls-6/igt@i915_module_load@load.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@objects:
    - bat-arls-1:         [PASS][45] -> [DMESG-FAIL][46] ([i915#10262]) +35 other tests dmesg-fail
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-arls-1/igt@i915_selftest@live@objects.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-arls-1/igt@i915_selftest@live@objects.html

  * igt@i915_selftest@live@sanitycheck:
    - bat-arls-1:         [PASS][47] -> [DMESG-WARN][48] ([i915#10341])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-arls-1/igt@i915_selftest@live@sanitycheck.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-arls-1/igt@i915_selftest@live@sanitycheck.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@gt_lrc:
    - bat-twl-1:          [INCOMPLETE][49] ([i915#10886] / [i915#9413]) -> [PASS][50]
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15265/bat-twl-1/igt@i915_selftest@live@gt_lrc.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v1/bat-twl-1/igt@i915_selftest@live@gt_lrc.html

  
  [i915#10262]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10262
  [i915#10341]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10341
  [i915#10886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10886
  [i915#9413]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9413


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

  * Linux: CI_DRM_15265 -> Patchwork_137534v1

  CI-20190529: 20190529
  CI_DRM_15265: aadc820a10ab50bd57179c0feb238bedde6a9d3b @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7979: 403645635240cf6b72455731d0f086278b05e456 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_137534v1: aadc820a10ab50bd57179c0feb238bedde6a9d3b @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

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

* Re: [PATCH 01/10] drm/xe/display: fix compat IS_DISPLAY_STEP() range end
  2024-08-20 19:31   ` Lucas De Marchi
@ 2024-08-20 22:29     ` Matt Roper
  0 siblings, 0 replies; 38+ messages in thread
From: Matt Roper @ 2024-08-20 22:29 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: Jani Nikula, intel-gfx, intel-xe, rodrigo.vivi

On Tue, Aug 20, 2024 at 02:31:20PM -0500, Lucas De Marchi wrote:
> On Tue, Aug 20, 2024 at 10:00:34PM GMT, Jani Nikula wrote:
> > It's supposed to be an open range at the end like in i915. Fingers
> > crossed that nobody relies on this definition.

I think the various IS_DISPLAY_IP_STEP uses in the driver were already
assuming the corrected logic from this patch, so we've just been
applying workarounds to some steppings where they weren't technically
required.  The risk now would be if a workaround was somehow recorded
with incorrect bounds in the workaround database itself and we were
masking that misdocumentation with the wrong logic.  That doesn't seem
terribly likely though.

> 
> we are checking for step though, so IMO this deserves a
> 
> 	Fixes: 44e694958b95 ("drm/xe/display: Implement display support")
> 
> from a git grep, for the platforms relevants to xe, this mostly affects
> ADL-P that is used as a test vehicle.

A simple grep is a bit misleading because IS_DISPLAY_STEP gets used by
IS_DISPLAY_IP_STEP, which is what we use instead on the newer
GMD_ID-based platforms.  If you grep instead for IS_DISPLAY_IP_STEP, it
turns up some MTL, BMG, and LNL workarounds that would have been
impacted.  But as noted above, I still don't think there's much risk
here since it would only be a problem if the workaround documentation
itself was incorrect.

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> 
> > 
> > Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> > ---
> > drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> > index 2feedddf1e40..1f1ad4d3ef51 100644
> > --- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> > +++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> > @@ -83,7 +83,7 @@ static inline struct drm_i915_private *kdev_to_i915(struct device *kdev)
> > #define HAS_GMD_ID(xe) GRAPHICS_VERx100(xe) >= 1270
> > 
> > /* Workarounds not handled yet */
> 
> I guess this can be removed already.
> 
> > -#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step <= last; })
> > +#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })
> 
> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
> 
> thanks
> Lucas De Marchi
> 
> 
> > 
> > #define IS_LP(xe) (0)
> > #define IS_GEN9_LP(xe) (0)
> > -- 
> > 2.39.2
> > 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH 02/10] drm/xe/display: remove intel_display_step_name() to simplify
  2024-08-20 19:00 ` [PATCH 02/10] drm/xe/display: remove intel_display_step_name() to simplify Jani Nikula
@ 2024-08-20 22:32   ` Matt Roper
  0 siblings, 0 replies; 38+ messages in thread
From: Matt Roper @ 2024-08-20 22:32 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Tue, Aug 20, 2024 at 10:00:35PM +0300, Jani Nikula wrote:
> The intel_display_step_name() is an unnecessary extra
> indirection. Simplify by just adding a macro to map intel_step_name() to
> xe_step_name().
> 
> We'll need to temporarily add a compat INTEL_DISPLAY_STEP() for this.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_dmc.c            | 2 +-
>  drivers/gpu/drm/i915/intel_step.c                   | 5 -----
>  drivers/gpu/drm/i915/intel_step.h                   | 1 -
>  drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h   | 2 ++
>  drivers/gpu/drm/xe/compat-i915-headers/intel_step.h | 9 +--------
>  5 files changed, 4 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
> index 73977b173898..7c756d5ba2a2 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc.c
> @@ -391,7 +391,7 @@ static const struct stepping_info *
>  intel_get_stepping_info(struct drm_i915_private *i915,
>  			struct stepping_info *si)
>  {
> -	const char *step_name = intel_display_step_name(i915);
> +	const char *step_name = intel_step_name(INTEL_DISPLAY_STEP(i915));
>  
>  	si->stepping = step_name[0];
>  	si->substepping = step_name[1];
> diff --git a/drivers/gpu/drm/i915/intel_step.c b/drivers/gpu/drm/i915/intel_step.c
> index a5adfb5d8fd2..80464e4edcce 100644
> --- a/drivers/gpu/drm/i915/intel_step.c
> +++ b/drivers/gpu/drm/i915/intel_step.c
> @@ -275,8 +275,3 @@ const char *intel_step_name(enum intel_step step)
>  		return "**";
>  	}
>  }
> -
> -const char *intel_display_step_name(struct drm_i915_private *i915)
> -{
> -	return intel_step_name(RUNTIME_INFO(i915)->step.display_step);
> -}
> diff --git a/drivers/gpu/drm/i915/intel_step.h b/drivers/gpu/drm/i915/intel_step.h
> index b6f43b624774..96dfca4cba73 100644
> --- a/drivers/gpu/drm/i915/intel_step.h
> +++ b/drivers/gpu/drm/i915/intel_step.h
> @@ -78,6 +78,5 @@ enum intel_step {
>  
>  void intel_step_init(struct drm_i915_private *i915);
>  const char *intel_step_name(enum intel_step step);
> -const char *intel_display_step_name(struct drm_i915_private *i915);
>  
>  #endif /* __INTEL_STEP_H__ */
> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> index 1f1ad4d3ef51..82b934fe230a 100644
> --- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> @@ -82,6 +82,8 @@ static inline struct drm_i915_private *kdev_to_i915(struct device *kdev)
>  
>  #define HAS_GMD_ID(xe) GRAPHICS_VERx100(xe) >= 1270
>  
> +#define INTEL_DISPLAY_STEP(xe) ((xe)->info.step.display)
> +
>  /* Workarounds not handled yet */
>  #define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })
>  
> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
> index 0006ef812346..ee3f45b668b9 100644
> --- a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
> @@ -6,15 +6,8 @@
>  #ifndef __INTEL_STEP_H__
>  #define __INTEL_STEP_H__
>  
> -#include "xe_device_types.h"
>  #include "xe_step.h"
>  
> -#define intel_display_step_name xe_display_step_name
> -
> -static inline
> -const char *xe_display_step_name(struct xe_device *xe)
> -{
> -	return xe_step_name(xe->info.step.display);
> -}
> +#define intel_step_name xe_step_name
>  
>  #endif /* __INTEL_STEP_H__ */
> -- 
> 2.39.2
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH 03/10] drm/xe/display: remove the unused compat HAS_GMD_ID()
  2024-08-20 19:00 ` [PATCH 03/10] drm/xe/display: remove the unused compat HAS_GMD_ID() Jani Nikula
@ 2024-08-20 22:40   ` Matt Roper
  0 siblings, 0 replies; 38+ messages in thread
From: Matt Roper @ 2024-08-20 22:40 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Tue, Aug 20, 2024 at 10:00:36PM +0300, Jani Nikula wrote:
> The display code no longer needs or uses HAS_GMD_ID(). Remove it from
> the compat header.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> ---
>  drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> index 82b934fe230a..7492979ac3bc 100644
> --- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> @@ -80,8 +80,6 @@ static inline struct drm_i915_private *kdev_to_i915(struct device *kdev)
>  
>  #define IS_MOBILE(xe) (xe && 0)
>  
> -#define HAS_GMD_ID(xe) GRAPHICS_VERx100(xe) >= 1270
> -
>  #define INTEL_DISPLAY_STEP(xe) ((xe)->info.step.display)
>  
>  /* Workarounds not handled yet */
> -- 
> 2.39.2
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH 04/10] drm/xe/step: define more steppings E-J
  2024-08-20 19:00 ` [PATCH 04/10] drm/xe/step: define more steppings E-J Jani Nikula
@ 2024-08-20 22:48   ` Matt Roper
  0 siblings, 0 replies; 38+ messages in thread
From: Matt Roper @ 2024-08-20 22:48 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Tue, Aug 20, 2024 at 10:00:37PM +0300, Jani Nikula wrote:
> These are primarily needed for compat reasons with display code in
> upcoming changes. There's no harm in having them.
> 
> While at it, add a comment about the requirement to match against GMD ID
> value spacing.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> ---
>  drivers/gpu/drm/xe/xe_step_types.h | 29 ++++++++++++++++++++++++++++-
>  1 file changed, 28 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_step_types.h b/drivers/gpu/drm/xe/xe_step_types.h
> index ccc9b4795e95..95b38d2d6c50 100644
> --- a/drivers/gpu/drm/xe/xe_step_types.h
> +++ b/drivers/gpu/drm/xe/xe_step_types.h
> @@ -17,6 +17,10 @@ struct xe_step_info {
>  
>  #define STEP_ENUM_VAL(name)  STEP_##name,
>  
> +/*
> + * Always define four minor steppings 0-3 for each stepping to match GMD ID
> + * spacing of values. See xe_step_gmdid_get().
> + */
>  #define STEP_NAME_LIST(func)		\
>  	func(A0)			\
>  	func(A1)			\
> @@ -34,7 +38,30 @@ struct xe_step_info {
>  	func(D1)			\
>  	func(D2)			\
>  	func(D3)			\
> -	func(E0)
> +	func(E0)			\
> +	func(E1)			\
> +	func(E2)			\
> +	func(E3)			\
> +	func(F0)			\
> +	func(F1)			\
> +	func(F2)			\
> +	func(F3)			\
> +	func(G0)			\
> +	func(G1)			\
> +	func(G2)			\
> +	func(G3)			\
> +	func(H0)			\
> +	func(H1)			\
> +	func(H2)			\
> +	func(H3)			\
> +	func(I0)			\
> +	func(I1)			\
> +	func(I2)			\
> +	func(I3)			\
> +	func(J0)			\
> +	func(J1)			\
> +	func(J2)			\
> +	func(J3)
>  
>  /*
>   * Symbolic steppings that do not match the hardware. These are valid both as gt
> -- 
> 2.39.2
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH 05/10] drm/i915/display: rename IS_DISPLAY_IP_RANGE() to IS_DISPLAY_VER_FULL()
  2024-08-20 19:00 ` [PATCH 05/10] drm/i915/display: rename IS_DISPLAY_IP_RANGE() to IS_DISPLAY_VER_FULL() Jani Nikula
@ 2024-08-20 22:54   ` Matt Roper
  0 siblings, 0 replies; 38+ messages in thread
From: Matt Roper @ 2024-08-20 22:54 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Tue, Aug 20, 2024 at 10:00:38PM +0300, Jani Nikula wrote:
> Unify macro naming. Be more in line with DISPLAY_VER() and
> IS_DISPLAY_VER().
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

This does make it less consistent with the i915-specific graphics/media
macros, but since the goal is to make display its own unit that should
be fine.

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_display_device.h | 4 ++--
>  drivers/gpu/drm/i915/display/intel_display_power.c  | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
> index 13453ea4daea..30c624989902 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
> @@ -161,7 +161,7 @@ enum intel_display_subplatform {
>  #define SUPPORTS_TV(i915)		(DISPLAY_INFO(i915)->supports_tv)
>  
>  /* Check that device has a display IP version within the specific range. */
> -#define IS_DISPLAY_IP_RANGE(__i915, from, until) ( \
> +#define IS_DISPLAY_VER_FULL(__i915, from, until) ( \
>  	BUILD_BUG_ON_ZERO((from) < IP_VER(2, 0)) + \
>  	(DISPLAY_VER_FULL(__i915) >= (from) && \
>  	 DISPLAY_VER_FULL(__i915) <= (until)))
> @@ -182,7 +182,7 @@ enum intel_display_subplatform {
>   * stepping bound for the specified IP version.
>   */
>  #define IS_DISPLAY_IP_STEP(__i915, ipver, from, until) \
> -	(IS_DISPLAY_IP_RANGE((__i915), (ipver), (ipver)) && \
> +	(IS_DISPLAY_VER_FULL((__i915), (ipver), (ipver)) && \
>  	 IS_DISPLAY_STEP((__i915), (from), (until)))
>  
>  #define DISPLAY_INFO(i915)		(__to_intel_display(i915)->info.__device_info)
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c
> index 39ab3117265c..ef2fdbf97346 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> @@ -1684,7 +1684,7 @@ static void icl_display_core_init(struct drm_i915_private *dev_priv,
>  		intel_dmc_load_program(dev_priv);
>  
>  	/* Wa_14011508470:tgl,dg1,rkl,adl-s,adl-p,dg2 */
> -	if (IS_DISPLAY_IP_RANGE(dev_priv, IP_VER(12, 0), IP_VER(13, 0)))
> +	if (IS_DISPLAY_VER_FULL(dev_priv, IP_VER(12, 0), IP_VER(13, 0)))
>  		intel_de_rmw(dev_priv, GEN11_CHICKEN_DCPR_2, 0,
>  			     DCPR_CLEAR_MEMSTAT_DIS | DCPR_SEND_RESP_IMM |
>  			     DCPR_MASK_LPMODE | DCPR_MASK_MAXLATENCY_MEMUP_CLR);
> -- 
> 2.39.2
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH 06/10] drm/i915/display: rename IS_DISPLAY_IP_STEP() to IS_DISPLAY_VER_STEP()
  2024-08-20 19:00 ` [PATCH 06/10] drm/i915/display: rename IS_DISPLAY_IP_STEP() to IS_DISPLAY_VER_STEP() Jani Nikula
@ 2024-08-20 22:56   ` Matt Roper
  0 siblings, 0 replies; 38+ messages in thread
From: Matt Roper @ 2024-08-20 22:56 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Tue, Aug 20, 2024 at 10:00:39PM +0300, Jani Nikula wrote:
> Unify macro naming on VER.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_display_device.h | 6 +++---
>  drivers/gpu/drm/i915/display/intel_fbc.c            | 2 +-
>  drivers/gpu/drm/i915/display/intel_hdcp.c           | 6 +++---
>  drivers/gpu/drm/i915/display/intel_pmdemand.c       | 2 +-
>  drivers/gpu/drm/i915/display/intel_psr.c            | 8 ++++----
>  5 files changed, 12 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
> index 30c624989902..8bd342658291 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
> @@ -175,13 +175,13 @@ enum intel_display_subplatform {
>   * hardware fix is present and the software workaround is no longer necessary.
>   * E.g.,
>   *
> - *    IS_DISPLAY_IP_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_B2)
> - *    IS_DISPLAY_IP_STEP(i915, IP_VER(14, 0), STEP_C0, STEP_FOREVER)
> + *    IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_B2)
> + *    IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_C0, STEP_FOREVER)
>   *
>   * "STEP_FOREVER" can be passed as "until" for workarounds that have no upper
>   * stepping bound for the specified IP version.
>   */
> -#define IS_DISPLAY_IP_STEP(__i915, ipver, from, until) \
> +#define IS_DISPLAY_VER_STEP(__i915, ipver, from, until) \
>  	(IS_DISPLAY_VER_FULL((__i915), (ipver), (ipver)) && \
>  	 IS_DISPLAY_STEP((__i915), (from), (until)))
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> index 5eda258616ae..52b79bacef4d 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -1346,7 +1346,7 @@ static int intel_fbc_check_plane(struct intel_atomic_state *state,
>  
>  	/* Wa_14016291713 */
>  	if ((IS_DISPLAY_VER(display, 12, 13) ||
> -	     IS_DISPLAY_IP_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_C0)) &&
> +	     IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_C0)) &&
>  	    crtc_state->has_psr && !crtc_state->has_panel_replay) {
>  		plane_state->no_fbc_reason = "PSR1 enabled (Wa_14016291713)";
>  		return 0;
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index 05402ae6b569..94418f218448 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> @@ -42,11 +42,11 @@ intel_hdcp_disable_hdcp_line_rekeying(struct intel_encoder *encoder,
>  		return;
>  
>  	if (DISPLAY_VER(dev_priv) >= 14) {
> -		if (IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 0), STEP_D0, STEP_FOREVER))
> +		if (IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 0), STEP_D0, STEP_FOREVER))
>  			intel_de_rmw(dev_priv, MTL_CHICKEN_TRANS(hdcp->cpu_transcoder),
>  				     0, HDCP_LINE_REKEY_DISABLE);
> -		else if (IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 1), STEP_B0, STEP_FOREVER) ||
> -			 IS_DISPLAY_IP_STEP(dev_priv, IP_VER(20, 0), STEP_B0, STEP_FOREVER))
> +		else if (IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 1), STEP_B0, STEP_FOREVER) ||
> +			 IS_DISPLAY_VER_STEP(dev_priv, IP_VER(20, 0), STEP_B0, STEP_FOREVER))
>  			intel_de_rmw(dev_priv,
>  				     TRANS_DDI_FUNC_CTL(dev_priv, hdcp->cpu_transcoder),
>  				     0, TRANS_DDI_HDCP_LINE_REKEY_DISABLE);
> diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c b/drivers/gpu/drm/i915/display/intel_pmdemand.c
> index 9ca981b7a12c..ceaf9e3147da 100644
> --- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
> +++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
> @@ -92,7 +92,7 @@ int intel_pmdemand_init(struct drm_i915_private *i915)
>  				     &pmdemand_state->base,
>  				     &intel_pmdemand_funcs);
>  
> -	if (IS_DISPLAY_IP_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_C0))
> +	if (IS_DISPLAY_VER_STEP(i915, IP_VER(14, 0), STEP_A0, STEP_C0))
>  		/* Wa_14016740474 */
>  		intel_de_rmw(i915, XELPD_CHICKEN_DCPR_3, 0, DMD_RSP_TIMEOUT_DISABLE);
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
> index 9cb1cdaaeefa..dea3694ddc3a 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -1862,14 +1862,14 @@ static void intel_psr_enable_source(struct intel_dp *intel_dp,
>  		 * cause issues if non-supported panels are used.
>  		 */
>  		if (!intel_dp->psr.panel_replay_enabled &&
> -		    (IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0) ||
> +		    (IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0) ||
>  		     IS_ALDERLAKE_P(dev_priv)))
>  			intel_de_rmw(dev_priv, hsw_chicken_trans_reg(dev_priv, cpu_transcoder),
>  				     0, ADLP_1_BASED_X_GRANULARITY);
>  
>  		/* Wa_16012604467:adlp,mtl[a0,b0] */
>  		if (!intel_dp->psr.panel_replay_enabled &&
> -		    IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0))
> +		    IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0))
>  			intel_de_rmw(dev_priv,
>  				     MTL_CLKGATE_DIS_TRANS(dev_priv, cpu_transcoder),
>  				     0,
> @@ -2051,7 +2051,7 @@ static void intel_psr_disable_locked(struct intel_dp *intel_dp)
>  	if (intel_dp->psr.sel_update_enabled) {
>  		/* Wa_16012604467:adlp,mtl[a0,b0] */
>  		if (!intel_dp->psr.panel_replay_enabled &&
> -		    IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0))
> +		    IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0))
>  			intel_de_rmw(dev_priv,
>  				     MTL_CLKGATE_DIS_TRANS(dev_priv, cpu_transcoder),
>  				     MTL_CLKGATE_DIS_TRANS_DMASC_GATING_DIS, 0);
> @@ -2536,7 +2536,7 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state,
>  
>  	/* Wa_14014971492 */
>  	if (!crtc_state->has_panel_replay &&
> -	    ((IS_DISPLAY_IP_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0) ||
> +	    ((IS_DISPLAY_VER_STEP(dev_priv, IP_VER(14, 0), STEP_A0, STEP_B0) ||
>  	      IS_ALDERLAKE_P(dev_priv) || IS_TIGERLAKE(dev_priv))) &&
>  	    crtc_state->splitter.enable)
>  		crtc_state->psr2_su_area.y1 = 0;
> -- 
> 2.39.2
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH 07/10] drm/i915/display: identify display steppings in display probe
  2024-08-20 19:00 ` [PATCH 07/10] drm/i915/display: identify display steppings in display probe Jani Nikula
@ 2024-08-20 23:52   ` Matt Roper
  2024-08-21  8:59     ` Jani Nikula
  2024-08-21  9:50   ` [PATCH v2] " Jani Nikula
  1 sibling, 1 reply; 38+ messages in thread
From: Matt Roper @ 2024-08-20 23:52 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Tue, Aug 20, 2024 at 10:00:40PM +0300, Jani Nikula wrote:
> Both i915 and xe have code to identify display steppings. Start
> deduplicating this by, uh, adding a third copy in display code. This is
> not yet used for anything other than debug logging. We'll switch over
> later.
> 
> For platforms before GMD ID, attach the mapping from PCI revision to
> stepping in the platform and subplatform descriptors. This is a
> considerably cleaner approach than having it completely separate.
> 
> Also add a separate field for stepping in display runtime info,
> preserving the value from GMD ID.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  .../drm/i915/display/intel_display_device.c   | 224 +++++++++++++++++-
>  .../drm/i915/display/intel_display_device.h   |   3 +-
>  .../drm/xe/compat-i915-headers/intel_step.h   |   1 +
>  3 files changed, 216 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
> index a31f89df2c0a..1ac3ab3954a1 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.c
> @@ -16,14 +16,25 @@
>  #include "intel_display_power.h"
>  #include "intel_display_reg_defs.h"
>  #include "intel_fbc.h"
> +#include "intel_step.h"
>  
>  __diag_push();
>  __diag_ignore_all("-Woverride-init", "Allow field initialization overrides for display info");
>  
> +struct stepping_desc {
> +	const enum intel_step *map; /* revid to step map */
> +	size_t size; /* map size */
> +};
> +
> +#define STEP_INFO(_map)				\
> +	.step_info.map = _map,			\
> +	.step_info.size = ARRAY_SIZE(_map)
> +
>  struct subplatform_desc {
>  	enum intel_display_subplatform subplatform;
>  	const char *name;
>  	const u16 *pciidlist;
> +	struct stepping_desc step_info;
>  };
>  
>  struct platform_desc {
> @@ -31,6 +42,7 @@ struct platform_desc {
>  	const char *name;
>  	const struct subplatform_desc *subplatforms;
>  	const struct intel_display_device_info *info; /* NULL for GMD ID */
> +	struct stepping_desc step_info;
>  };
>  
>  #define PLATFORM(_platform)			 \
> @@ -610,6 +622,13 @@ static const u16 skl_ulx_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step skl_steppings[] = {
> +	[0x6] = STEP_G0,
> +	[0x7] = STEP_H0,
> +	[0x9] = STEP_J0,
> +	[0xA] = STEP_I1,
> +};
> +
>  static const struct platform_desc skl_desc = {
>  	PLATFORM(SKYLAKE),
>  	.subplatforms = (const struct subplatform_desc[]) {
> @@ -618,6 +637,7 @@ static const struct platform_desc skl_desc = {
>  		{},
>  	},
>  	.info = &skl_display,
> +	STEP_INFO(skl_steppings),
>  };
>  
>  static const u16 kbl_ult_ids[] = {
> @@ -634,6 +654,16 @@ static const u16 kbl_ulx_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step kbl_steppings[] = {
> +	[1] = STEP_B0,
> +	[2] = STEP_B0,
> +	[3] = STEP_B0,
> +	[4] = STEP_C0,
> +	[5] = STEP_B1,
> +	[6] = STEP_B1,
> +	[7] = STEP_C0,
> +};
> +
>  static const struct platform_desc kbl_desc = {
>  	PLATFORM(KABYLAKE),
>  	.subplatforms = (const struct subplatform_desc[]) {
> @@ -642,6 +672,7 @@ static const struct platform_desc kbl_desc = {
>  		{},
>  	},
>  	.info = &skl_display,
> +	STEP_INFO(kbl_steppings),
>  };
>  
>  static const u16 cfl_ult_ids[] = {
> @@ -706,6 +737,13 @@ static const struct platform_desc cml_desc = {
>  		BIT(TRANSCODER_DSI_A) | BIT(TRANSCODER_DSI_C), \
>  	.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C)
>  
> +static const enum intel_step bxt_steppings[] = {
> +	[0xA] = STEP_C0,
> +	[0xB] = STEP_C0,
> +	[0xC] = STEP_D0,
> +	[0xD] = STEP_E0,
> +};
> +
>  static const struct platform_desc bxt_desc = {
>  	PLATFORM(BROXTON),
>  	.info = &(const struct intel_display_device_info) {
> @@ -714,6 +752,11 @@ static const struct platform_desc bxt_desc = {
>  
>  		.__runtime_defaults.ip.ver = 9,
>  	},
> +	STEP_INFO(bxt_steppings),
> +};
> +
> +static const enum intel_step glk_steppings[] = {
> +	[3] = STEP_B0,
>  };
>  
>  static const struct platform_desc glk_desc = {
> @@ -725,6 +768,7 @@ static const struct platform_desc glk_desc = {
>  
>  		.__runtime_defaults.ip.ver = 10,
>  	},
> +	STEP_INFO(glk_steppings),
>  };
>  
>  #define ICL_DISPLAY \
> @@ -773,6 +817,10 @@ static const u16 icl_port_f_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step icl_steppings[] = {
> +	[7] = STEP_D0,
> +};
> +
>  static const struct platform_desc icl_desc = {
>  	PLATFORM(ICELAKE),
>  	.subplatforms = (const struct subplatform_desc[]) {
> @@ -784,6 +832,7 @@ static const struct platform_desc icl_desc = {
>  
>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D) | BIT(PORT_E),
>  	},
> +	STEP_INFO(icl_steppings),
>  };
>  
>  static const struct intel_display_device_info jsl_ehl_display = {
> @@ -792,14 +841,21 @@ static const struct intel_display_device_info jsl_ehl_display = {
>  	.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D),
>  };
>  
> +static const enum intel_step jsl_ehl_steppings[] = {
> +	[0] = STEP_A0,
> +	[1] = STEP_B0,
> +};
> +
>  static const struct platform_desc jsl_desc = {
>  	PLATFORM(JASPERLAKE),
>  	.info = &jsl_ehl_display,
> +	STEP_INFO(jsl_ehl_steppings),
>  };
>  
>  static const struct platform_desc ehl_desc = {
>  	PLATFORM(ELKHARTLAKE),
>  	.info = &jsl_ehl_display,
> +	STEP_INFO(jsl_ehl_steppings),
>  };
>  
>  #define XE_D_DISPLAY \
> @@ -850,10 +906,23 @@ static const u16 tgl_uy_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step tgl_steppings[] = {
> +	[0] = STEP_B0,
> +	[1] = STEP_D0,
> +};
> +
> +static const enum intel_step tgl_uy_steppings[] = {
> +	[0] = STEP_A0,
> +	[1] = STEP_C0,
> +	[2] = STEP_C0,
> +	[3] = STEP_D0,
> +};
> +
>  static const struct platform_desc tgl_desc = {
>  	PLATFORM(TIGERLAKE),
>  	.subplatforms = (const struct subplatform_desc[]) {
> -		{ INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids },
> +		{ INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids,
> +		  STEP_INFO(tgl_uy_steppings) },
>  		{},
>  	},
>  	.info = &(const struct intel_display_device_info) {
> @@ -866,6 +935,12 @@ static const struct platform_desc tgl_desc = {
>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>  		BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4) | BIT(PORT_TC5) | BIT(PORT_TC6),
>  	},
> +	STEP_INFO(tgl_steppings),
> +};
> +
> +static const enum intel_step dg1_steppings[] = {
> +	[0] = STEP_A0,
> +	[1] = STEP_B0,
>  };
>  
>  static const struct platform_desc dg1_desc = {
> @@ -876,6 +951,13 @@ static const struct platform_desc dg1_desc = {
>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>  		BIT(PORT_TC1) | BIT(PORT_TC2),
>  	},
> +	STEP_INFO(dg1_steppings),
> +};
> +
> +static const enum intel_step rkl_steppings[] = {
> +	[0] = STEP_A0,
> +	[1] = STEP_B0,
> +	[4] = STEP_C0,
>  };
>  
>  static const struct platform_desc rkl_desc = {
> @@ -892,6 +974,7 @@ static const struct platform_desc rkl_desc = {
>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>  		BIT(PORT_TC1) | BIT(PORT_TC2),
>  	},
> +	STEP_INFO(rkl_steppings),
>  };
>  
>  static const u16 adls_rpls_ids[] = {
> @@ -899,10 +982,24 @@ static const u16 adls_rpls_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step adl_s_steppings[] = {
> +	[0x0] = STEP_A0,
> +	[0x1] = STEP_A2,
> +	[0x4] = STEP_B0,
> +	[0x8] = STEP_B0,
> +	[0xC] = STEP_C0,
> +};
> +
> +static const enum intel_step adl_s_rpl_s_steppings[] = {
> +	[0x4] = STEP_D0,
> +	[0xC] = STEP_C0,
> +};
> +
>  static const struct platform_desc adl_s_desc = {
>  	PLATFORM(ALDERLAKE_S),
>  	.subplatforms = (const struct subplatform_desc[]) {
> -		{ INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids },
> +		{ INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids,
> +		  STEP_INFO(adl_s_rpl_s_steppings) },
>  		{},
>  	},
>  	.info = &(const struct intel_display_device_info) {
> @@ -913,6 +1010,7 @@ static const struct platform_desc adl_s_desc = {
>  		.__runtime_defaults.port_mask = BIT(PORT_A) |
>  		BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4),
>  	},
> +	STEP_INFO(adl_s_steppings),
>  };
>  
>  #define XE_LPD_FEATURES \
> @@ -986,15 +1084,34 @@ static const u16 adlp_rplp_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step adl_p_steppings[] = {
> +	[0x0] = STEP_A0,
> +	[0x4] = STEP_B0,
> +	[0x8] = STEP_C0,
> +	[0xC] = STEP_D0,
> +};
> +
> +static const enum intel_step adl_p_adl_n_steppings[] = {
> +	[0x0] = STEP_D0,
> +};
> +
> +static const enum intel_step adl_p_rpl_pu_steppings[] = {
> +	[0x4] = STEP_E0,
> +};
> +
>  static const struct platform_desc adl_p_desc = {
>  	PLATFORM(ALDERLAKE_P),
>  	.subplatforms = (const struct subplatform_desc[]) {
> -		{ INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids },
> -		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids },
> -		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids },
> +		{ INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids,
> +		  STEP_INFO(adl_p_adl_n_steppings) },
> +		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids,
> +		  STEP_INFO(adl_p_rpl_pu_steppings) },
> +		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids,
> +		  STEP_INFO(adl_p_rpl_pu_steppings) },
>  		{},
>  	},
>  	.info = &xe_lpd_display,
> +	STEP_INFO(adl_p_steppings),
>  };
>  
>  static const struct intel_display_device_info xe_hpd_display = {
> @@ -1023,12 +1140,33 @@ static const u16 dg2_g12_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step dg2_g10_steppings[] = {
> +	[0x0] = STEP_A0,
> +	[0x1] = STEP_A0,
> +	[0x4] = STEP_B0,
> +	[0x8] = STEP_C0,
> +};
> +
> +static const enum intel_step dg2_g11_steppings[] = {
> +	[0x0] = STEP_B0,
> +	[0x4] = STEP_C0,
> +	[0x5] = STEP_C0,
> +};
> +
> +static const enum intel_step dg2_g12_steppings[] = {
> +	[0x0] = STEP_C0,
> +	[0x1] = STEP_C0,
> +};
> +
>  static const struct platform_desc dg2_desc = {
>  	PLATFORM(DG2),
>  	.subplatforms = (const struct subplatform_desc[]) {
> -		{ INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids },
> -		{ INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids },
> -		{ INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids },
> +		{ INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids,
> +		  STEP_INFO(dg2_g10_steppings) },
> +		{ INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids,
> +		  STEP_INFO(dg2_g11_steppings) },
> +		{ INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids,
> +		  STEP_INFO(dg2_g12_steppings) },
>  		{},
>  	},
>  	.info = &xe_hpd_display,
> @@ -1261,13 +1399,66 @@ find_subplatform_desc(struct pci_dev *pdev, const struct platform_desc *desc)
>  	return NULL;
>  }
>  
> +static enum intel_step get_pre_gmdid_step(struct intel_display *display,
> +					  const struct stepping_desc *main,
> +					  const struct stepping_desc *sub)
> +{
> +	struct pci_dev *pdev = to_pci_dev(display->drm->dev);
> +	const enum intel_step *map = main->map;
> +	int size = main->size;
> +	int revision = pdev->revision;
> +	enum intel_step step;
> +
> +	/* subplatform stepping info trumps main platform info */
> +	if (sub->map && sub->size) {
> +		map = sub->map;
> +		size = sub->size;
> +	}
> +
> +	/* not all platforms define steppings, and it's fine */
> +	if (!map || !size)
> +		return STEP_NONE;
> +
> +	if (revision < size && map[revision] != STEP_NONE) {
> +		step = map[revision];
> +	} else {
> +		drm_warn(display->drm, "Unknown revision 0x%02x\n", revision);
> +
> +		/*
> +		 * If we hit a gap in the revision to step map, use the information
> +		 * for the next revision.
> +		 *
> +		 * This may be wrong in all sorts of ways, especially if the
> +		 * steppings in the array are not monotonically increasing, but
> +		 * it's better than defaulting to 0.
> +		 */
> +		while (revision < size && map[revision] == STEP_NONE)
> +			revision++;
> +
> +		if (revision < size) {
> +			drm_dbg_kms(display->drm, "Using display stepping for revision 0x%02x\n",
> +				    revision);
> +			step = map[revision];
> +		} else {
> +			drm_dbg_kms(display->drm, "Using future display stepping\n");
> +			step = STEP_FUTURE;
> +		}
> +	}
> +
> +	drm_WARN_ON(display->drm, step == STEP_NONE);
> +
> +	return step;
> +}
> +
>  void intel_display_device_probe(struct drm_i915_private *i915)
>  {
> +	struct intel_display *display = &i915->display;
>  	struct pci_dev *pdev = to_pci_dev(i915->drm.dev);
>  	const struct intel_display_device_info *info;
>  	struct intel_display_ip_ver ip_ver = {};
>  	const struct platform_desc *desc;
>  	const struct subplatform_desc *subdesc;
> +	enum intel_step step;
>  
>  	/* Add drm device backpointer as early as possible. */
>  	i915->display.drm = &i915->drm;
> @@ -1307,13 +1498,24 @@ void intel_display_device_probe(struct drm_i915_private *i915)
>  		DISPLAY_RUNTIME_INFO(i915)->subplatform = subdesc->subplatform;
>  	}
>  
> -	if (ip_ver.ver || ip_ver.rel || ip_ver.step)
> +	if (ip_ver.ver || ip_ver.rel || ip_ver.step) {
>  		DISPLAY_RUNTIME_INFO(i915)->ip = ip_ver;
> +		step = STEP_A0 + ip_ver.step;
> +		if (step > STEP_FUTURE) {
> +			drm_dbg_kms(display->drm, "Using future display stepping\n");
> +			step = STEP_FUTURE;
> +		}
> +	} else {
> +		step = get_pre_gmdid_step(display, &desc->step_info, &subdesc->step_info);

Can't subdesc still be NULL here?  And if we change this to something
like "subdesc ? &subdesc->step_info : NULL" then we'll also need a
nullcheck inside get_pre_gmdid_step as well to prevent a npd.


Matt

> +	}
> +
> +	DISPLAY_RUNTIME_INFO(i915)->step = step;
>  
> -	drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u\n",
> +	drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u stepping %s\n",
>  		 desc->name, subdesc ? "/" : "", subdesc ? subdesc->name : "",
>  		 pdev->device, DISPLAY_RUNTIME_INFO(i915)->ip.ver,
> -		 DISPLAY_RUNTIME_INFO(i915)->ip.rel);
> +		 DISPLAY_RUNTIME_INFO(i915)->ip.rel,
> +		 step != STEP_NONE ? intel_step_name(step) : "N/A");
>  
>  	return;
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
> index 8bd342658291..1c75cbd68dea 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
> @@ -201,8 +201,9 @@ struct intel_display_runtime_info {
>  	struct intel_display_ip_ver {
>  		u16 ver;
>  		u16 rel;
> -		u16 step;
> +		u16 step; /* hardware */
>  	} ip;
> +	int step; /* symbolic */
>  
>  	u8 pipe_mask;
>  	u8 cpu_transcoder_mask;
> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
> index ee3f45b668b9..2cf13a572ab0 100644
> --- a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
> @@ -8,6 +8,7 @@
>  
>  #include "xe_step.h"
>  
> +#define intel_step xe_step
>  #define intel_step_name xe_step_name
>  
>  #endif /* __INTEL_STEP_H__ */
> -- 
> 2.39.2
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH 08/10] drm/i915/display: switch to display detected steppings
  2024-08-20 19:00 ` [PATCH 08/10] drm/i915/display: switch to display detected steppings Jani Nikula
@ 2024-08-21  0:01   ` Matt Roper
  0 siblings, 0 replies; 38+ messages in thread
From: Matt Roper @ 2024-08-21  0:01 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Tue, Aug 20, 2024 at 10:00:41PM +0300, Jani Nikula wrote:
> Move the stepping related macros over to display. We can proceed to
> remove the compat macros from xe.
> 
> Note: Looks like we've failed to actually initialize the display
> stepping for GMD ID based platforms in the xe driver. It does get set in
> display runtime info, but until now the compat macro used
> xe->info.step.display which was not set for GMD ID.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_display_device.c | 2 ++
>  drivers/gpu/drm/i915/display/intel_display_device.h | 6 ++++++
>  drivers/gpu/drm/i915/i915_drv.h                     | 5 -----
>  drivers/gpu/drm/i915/intel_device_info.c            | 1 -
>  drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h   | 5 -----
>  5 files changed, 8 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
> index 1ac3ab3954a1..06b55ae38a44 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.c
> @@ -1711,6 +1711,8 @@ void intel_display_device_info_print(const struct intel_display_device_info *inf
>  		drm_printf(p, "display version: %u\n",
>  			   runtime->ip.ver);
>  
> +	drm_printf(p, "display stepping: %s\n", intel_step_name(runtime->step));
> +
>  #define PRINT_FLAG(name) drm_printf(p, "%s: %s\n", #name, str_yes_no(info->name))
>  	DEV_INFO_DISPLAY_FOR_EACH_FLAG(PRINT_FLAG);
>  #undef PRINT_FLAG
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
> index 1c75cbd68dea..611be3fa3af6 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
> @@ -194,6 +194,12 @@ enum intel_display_subplatform {
>  #define IS_DISPLAY_VER(i915, from, until) \
>  	(DISPLAY_VER(i915) >= (from) && DISPLAY_VER(i915) <= (until))
>  
> +#define INTEL_DISPLAY_STEP(__i915) (DISPLAY_RUNTIME_INFO(__i915)->step)
> +
> +#define IS_DISPLAY_STEP(__i915, since, until) \
> +	(drm_WARN_ON(__to_intel_display(__i915)->drm, INTEL_DISPLAY_STEP(__i915) == STEP_NONE), \
> +	 INTEL_DISPLAY_STEP(__i915) >= (since) && INTEL_DISPLAY_STEP(__i915) < (until))
> +
>  struct intel_display_runtime_info {
>  	enum intel_display_platform platform;
>  	enum intel_display_subplatform subplatform;
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 94f7f6cc444c..3b1b16e71cf9 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -408,15 +408,10 @@ static inline struct intel_gt *to_gt(const struct drm_i915_private *i915)
>  
>  #define INTEL_REVID(i915)	(to_pci_dev((i915)->drm.dev)->revision)
>  
> -#define INTEL_DISPLAY_STEP(__i915) (RUNTIME_INFO(__i915)->step.display_step)
>  #define INTEL_GRAPHICS_STEP(__i915) (RUNTIME_INFO(__i915)->step.graphics_step)
>  #define INTEL_MEDIA_STEP(__i915) (RUNTIME_INFO(__i915)->step.media_step)
>  #define INTEL_BASEDIE_STEP(__i915) (RUNTIME_INFO(__i915)->step.basedie_step)
>  
> -#define IS_DISPLAY_STEP(__i915, since, until) \
> -	(drm_WARN_ON(&(__i915)->drm, INTEL_DISPLAY_STEP(__i915) == STEP_NONE), \
> -	 INTEL_DISPLAY_STEP(__i915) >= (since) && INTEL_DISPLAY_STEP(__i915) < (until))
> -
>  #define IS_GRAPHICS_STEP(__i915, since, until) \
>  	(drm_WARN_ON(&(__i915)->drm, INTEL_GRAPHICS_STEP(__i915) == STEP_NONE), \
>  	 INTEL_GRAPHICS_STEP(__i915) >= (since) && INTEL_GRAPHICS_STEP(__i915) < (until))
> diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
> index d26de37719a7..8b3e44dd504c 100644
> --- a/drivers/gpu/drm/i915/intel_device_info.c
> +++ b/drivers/gpu/drm/i915/intel_device_info.c
> @@ -108,7 +108,6 @@ void intel_device_info_print(const struct intel_device_info *info,
>  
>  	drm_printf(p, "graphics stepping: %s\n", intel_step_name(runtime->step.graphics_step));
>  	drm_printf(p, "media stepping: %s\n", intel_step_name(runtime->step.media_step));
> -	drm_printf(p, "display stepping: %s\n", intel_step_name(runtime->step.display_step));
>  	drm_printf(p, "base die stepping: %s\n", intel_step_name(runtime->step.basedie_step));
>  
>  	drm_printf(p, "gt: %d\n", info->gt);
> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> index 7492979ac3bc..97be452f003b 100644
> --- a/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
> @@ -80,11 +80,6 @@ static inline struct drm_i915_private *kdev_to_i915(struct device *kdev)
>  
>  #define IS_MOBILE(xe) (xe && 0)
>  
> -#define INTEL_DISPLAY_STEP(xe) ((xe)->info.step.display)
> -
> -/* Workarounds not handled yet */
> -#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })
> -
>  #define IS_LP(xe) (0)
>  #define IS_GEN9_LP(xe) (0)
>  #define IS_GEN9_BC(xe) (0)
> -- 
> 2.39.2
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH 09/10] drm/i915: remove display stepping handling
  2024-08-20 19:00 ` [PATCH 09/10] drm/i915: remove display stepping handling Jani Nikula
@ 2024-08-21  0:04   ` Matt Roper
  2024-08-21  0:08     ` Matt Roper
  0 siblings, 1 reply; 38+ messages in thread
From: Matt Roper @ 2024-08-21  0:04 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Tue, Aug 20, 2024 at 10:00:42PM +0300, Jani Nikula wrote:
> The code is now unused. Remove.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> ---
>  drivers/gpu/drm/i915/intel_step.c | 79 ++++++++++++++-----------------
>  drivers/gpu/drm/i915/intel_step.h |  1 -
>  2 files changed, 36 insertions(+), 44 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_step.c b/drivers/gpu/drm/i915/intel_step.c
> index 80464e4edcce..285b96fadfd5 100644
> --- a/drivers/gpu/drm/i915/intel_step.c
> +++ b/drivers/gpu/drm/i915/intel_step.c
> @@ -23,8 +23,7 @@
>   * use a macro to define these to make it easier to identify the platforms
>   * where the two steppings can deviate.
>   */
> -#define COMMON_STEP(x)  .graphics_step = STEP_##x, .display_step = STEP_##x, .media_step = STEP_##x
> -#define COMMON_GT_MEDIA_STEP(x)  .graphics_step = STEP_##x, .media_step = STEP_##x
> +#define COMMON_STEP(x)  .graphics_step = STEP_##x, .media_step = STEP_##x
>  
>  static const struct intel_step_info skl_revids[] = {
>  	[0x6] = { COMMON_STEP(G0) },
> @@ -34,13 +33,13 @@ static const struct intel_step_info skl_revids[] = {
>  };
>  
>  static const struct intel_step_info kbl_revids[] = {
> -	[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
> -	[2] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B0 },
> -	[3] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_B0 },
> -	[4] = { COMMON_GT_MEDIA_STEP(F0), .display_step = STEP_C0 },
> -	[5] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B1 },
> -	[6] = { COMMON_GT_MEDIA_STEP(D1), .display_step = STEP_B1 },
> -	[7] = { COMMON_GT_MEDIA_STEP(G0), .display_step = STEP_C0 },
> +	[1] = { COMMON_STEP(B0) },
> +	[2] = { COMMON_STEP(C0) },
> +	[3] = { COMMON_STEP(D0) },
> +	[4] = { COMMON_STEP(F0) },
> +	[5] = { COMMON_STEP(C0) },
> +	[6] = { COMMON_STEP(D1) },
> +	[7] = { COMMON_STEP(G0) },
>  };
>  
>  static const struct intel_step_info bxt_revids[] = {
> @@ -64,16 +63,16 @@ static const struct intel_step_info jsl_ehl_revids[] = {
>  };
>  
>  static const struct intel_step_info tgl_uy_revids[] = {
> -	[0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
> -	[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_C0 },
> -	[2] = { COMMON_GT_MEDIA_STEP(B1), .display_step = STEP_C0 },
> -	[3] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_D0 },
> +	[0] = { COMMON_STEP(A0) },
> +	[1] = { COMMON_STEP(B0) },
> +	[2] = { COMMON_STEP(B1) },
> +	[3] = { COMMON_STEP(C0) },
>  };
>  
>  /* Same GT stepping between tgl_uy_revids and tgl_revids don't mean the same HW */
>  static const struct intel_step_info tgl_revids[] = {
> -	[0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_B0 },
> -	[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_D0 },
> +	[0] = { COMMON_STEP(A0) },
> +	[1] = { COMMON_STEP(B0) },
>  };
>  
>  static const struct intel_step_info rkl_revids[] = {
> @@ -88,49 +87,49 @@ static const struct intel_step_info dg1_revids[] = {
>  };
>  
>  static const struct intel_step_info adls_revids[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
> -	[0x1] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A2 },
> -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
> -	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B0 },
> -	[0xC] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_C0 },
> +	[0x0] = { COMMON_STEP(A0) },
> +	[0x1] = { COMMON_STEP(A0) },
> +	[0x4] = { COMMON_STEP(B0) },
> +	[0x8] = { COMMON_STEP(C0) },
> +	[0xC] = { COMMON_STEP(D0) },
>  };
>  
>  static const struct intel_step_info adlp_revids[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
> -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
> -	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_C0 },
> -	[0xC] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_D0 },
> +	[0x0] = { COMMON_STEP(A0) },
> +	[0x4] = { COMMON_STEP(B0) },
> +	[0x8] = { COMMON_STEP(C0) },
> +	[0xC] = { COMMON_STEP(C0) },
>  };
>  
>  static const struct intel_step_info dg2_g10_revid_step_tbl[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
> -	[0x1] = { COMMON_GT_MEDIA_STEP(A1), .display_step = STEP_A0 },
> -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
> -	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_C0 },
> +	[0x0] = { COMMON_STEP(A0) },
> +	[0x1] = { COMMON_STEP(A1) },
> +	[0x4] = { COMMON_STEP(B0) },
> +	[0x8] = { COMMON_STEP(C0) },
>  };
>  
>  static const struct intel_step_info dg2_g11_revid_step_tbl[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_B0 },
> -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_C0 },
> -	[0x5] = { COMMON_GT_MEDIA_STEP(B1), .display_step = STEP_C0 },
> +	[0x0] = { COMMON_STEP(A0) },
> +	[0x4] = { COMMON_STEP(B0) },
> +	[0x5] = { COMMON_STEP(B1) },
>  };
>  
>  static const struct intel_step_info dg2_g12_revid_step_tbl[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_C0 },
> -	[0x1] = { COMMON_GT_MEDIA_STEP(A1), .display_step = STEP_C0 },
> +	[0x0] = { COMMON_STEP(A0) },
> +	[0x1] = { COMMON_STEP(A1) },
>  };
>  
>  static const struct intel_step_info adls_rpls_revids[] = {
> -	[0x4] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_D0 },
> -	[0xC] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_C0 },
> +	[0x4] = { COMMON_STEP(D0) },
> +	[0xC] = { COMMON_STEP(D0) },
>  };
>  
>  static const struct intel_step_info adlp_rplp_revids[] = {
> -	[0x4] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_E0 },
> +	[0x4] = { COMMON_STEP(C0) },
>  };
>  
>  static const struct intel_step_info adlp_n_revids[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_D0 },
> +	[0x0] = { COMMON_STEP(A0) },
>  };
>  
>  static u8 gmd_to_intel_step(struct drm_i915_private *i915,
> @@ -158,11 +157,6 @@ void intel_step_init(struct drm_i915_private *i915)
>  						       &RUNTIME_INFO(i915)->graphics.ip);
>  		step.media_step = gmd_to_intel_step(i915,
>  						    &RUNTIME_INFO(i915)->media.ip);
> -		step.display_step = STEP_A0 + DISPLAY_RUNTIME_INFO(i915)->ip.step;
> -		if (step.display_step >= STEP_FUTURE) {
> -			drm_dbg(&i915->drm, "Using future display steppings\n");
> -			step.display_step = STEP_FUTURE;
> -		}
>  
>  		RUNTIME_INFO(i915)->step = step;
>  
> @@ -252,7 +246,6 @@ void intel_step_init(struct drm_i915_private *i915)
>  		} else {
>  			drm_dbg(&i915->drm, "Using future steppings\n");
>  			step.graphics_step = STEP_FUTURE;
> -			step.display_step = STEP_FUTURE;
>  		}
>  	}
>  
> diff --git a/drivers/gpu/drm/i915/intel_step.h b/drivers/gpu/drm/i915/intel_step.h
> index 96dfca4cba73..83bd1190edf5 100644
> --- a/drivers/gpu/drm/i915/intel_step.h
> +++ b/drivers/gpu/drm/i915/intel_step.h
> @@ -16,7 +16,6 @@ struct intel_step_info {
>  	 * the expectation breaks gmd_to_intel_step().
>  	 */
>  	u8 graphics_step;	/* Represents the compute tile on Xe_HPC */
> -	u8 display_step;
>  	u8 media_step;
>  	u8 basedie_step;
>  };
> -- 
> 2.39.2
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH 10/10] drm/xe: remove display stepping handling
  2024-08-20 19:00 ` [PATCH 10/10] drm/xe: " Jani Nikula
@ 2024-08-21  0:04   ` Matt Roper
  0 siblings, 0 replies; 38+ messages in thread
From: Matt Roper @ 2024-08-21  0:04 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Tue, Aug 20, 2024 at 10:00:43PM +0300, Jani Nikula wrote:
> The code is now unused. Remove.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> ---
>  drivers/gpu/drm/xe/xe_debugfs.c    |  3 +-
>  drivers/gpu/drm/xe/xe_pci.c        |  3 +-
>  drivers/gpu/drm/xe/xe_step.c       | 57 +++++++++++++-----------------
>  drivers/gpu/drm/xe/xe_step_types.h |  1 -
>  4 files changed, 27 insertions(+), 37 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
> index 1011e5d281fa..a64bae36e0e3 100644
> --- a/drivers/gpu/drm/xe/xe_debugfs.c
> +++ b/drivers/gpu/drm/xe/xe_debugfs.c
> @@ -47,10 +47,9 @@ static int info(struct seq_file *m, void *data)
>  
>  	drm_printf(&p, "graphics_verx100 %d\n", xe->info.graphics_verx100);
>  	drm_printf(&p, "media_verx100 %d\n", xe->info.media_verx100);
> -	drm_printf(&p, "stepping G:%s M:%s D:%s B:%s\n",
> +	drm_printf(&p, "stepping G:%s M:%s B:%s\n",
>  		   xe_step_name(xe->info.step.graphics),
>  		   xe_step_name(xe->info.step.media),
> -		   xe_step_name(xe->info.step.display),
>  		   xe_step_name(xe->info.step.basedie));
>  	drm_printf(&p, "is_dgfx %s\n", str_yes_no(xe->info.is_dgfx));
>  	drm_printf(&p, "platform %d\n", xe->info.platform);
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 3c34b032ebf4..0c2342988650 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -838,10 +838,9 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>  		xe->info.dma_mask_size, xe->info.tile_count,
>  		xe->info.has_heci_gscfi, xe->info.has_heci_cscfi);
>  
> -	drm_dbg(&xe->drm, "Stepping = (G:%s, M:%s, D:%s, B:%s)\n",
> +	drm_dbg(&xe->drm, "Stepping = (G:%s, M:%s, B:%s)\n",
>  		xe_step_name(xe->info.step.graphics),
>  		xe_step_name(xe->info.step.media),
> -		xe_step_name(xe->info.step.display),
>  		xe_step_name(xe->info.step.basedie));
>  
>  	drm_dbg(&xe->drm, "SR-IOV support: %s (mode: %s)\n",
> diff --git a/drivers/gpu/drm/xe/xe_step.c b/drivers/gpu/drm/xe/xe_step.c
> index eaf1b718f26c..c77b5c317fa0 100644
> --- a/drivers/gpu/drm/xe/xe_step.c
> +++ b/drivers/gpu/drm/xe/xe_step.c
> @@ -28,23 +28,17 @@
>   * use a macro to define these to make it easier to identify the platforms
>   * where the two steppings can deviate.
>   */
> -#define COMMON_GT_MEDIA_STEP(x_)	\
> -	.graphics = STEP_##x_,		\
> -	.media = STEP_##x_
> -
>  #define COMMON_STEP(x_)			\
> -	COMMON_GT_MEDIA_STEP(x_),	\
>  	.graphics = STEP_##x_,		\
> -	.media = STEP_##x_,		\
> -	.display = STEP_##x_
> +	.media = STEP_##x_
>  
>  __diag_push();
>  __diag_ignore_all("-Woverride-init", "Allow field overrides in table");
>  
>  /* Same GT stepping between tgl_uy_revids and tgl_revids don't mean the same HW */
>  static const struct xe_step_info tgl_revids[] = {
> -	[0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_B0 },
> -	[1] = { COMMON_GT_MEDIA_STEP(B0), .display = STEP_D0 },
> +	[0] = { COMMON_STEP(A0) },
> +	[1] = { COMMON_STEP(B0) },
>  };
>  
>  static const struct xe_step_info dg1_revids[] = {
> @@ -53,49 +47,49 @@ static const struct xe_step_info dg1_revids[] = {
>  };
>  
>  static const struct xe_step_info adls_revids[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_A0 },
> -	[0x1] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_A2 },
> -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display = STEP_B0 },
> -	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display = STEP_B0 },
> -	[0xC] = { COMMON_GT_MEDIA_STEP(D0), .display = STEP_C0 },
> +	[0x0] = { COMMON_STEP(A0) },
> +	[0x1] = { COMMON_STEP(A0) },
> +	[0x4] = { COMMON_STEP(B0) },
> +	[0x8] = { COMMON_STEP(C0) },
> +	[0xC] = { COMMON_STEP(D0) },
>  };
>  
>  static const struct xe_step_info adls_rpls_revids[] = {
> -	[0x4] = { COMMON_GT_MEDIA_STEP(D0), .display = STEP_D0 },
> -	[0xC] = { COMMON_GT_MEDIA_STEP(D0), .display = STEP_C0 },
> +	[0x4] = { COMMON_STEP(D0) },
> +	[0xC] = { COMMON_STEP(D0) },
>  };
>  
>  static const struct xe_step_info adlp_revids[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_A0 },
> -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display = STEP_B0 },
> -	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display = STEP_C0 },
> -	[0xC] = { COMMON_GT_MEDIA_STEP(C0), .display = STEP_D0 },
> +	[0x0] = { COMMON_STEP(A0) },
> +	[0x4] = { COMMON_STEP(B0) },
> +	[0x8] = { COMMON_STEP(C0) },
> +	[0xC] = { COMMON_STEP(C0) },
>  };
>  
>  static const struct xe_step_info adlp_rpl_revids[] = {
> -	[0x4] = { COMMON_GT_MEDIA_STEP(C0), .display = STEP_E0 },
> +	[0x4] = { COMMON_STEP(C0) },
>  };
>  
>  static const struct xe_step_info adln_revids[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_D0 },
> +	[0x0] = { COMMON_STEP(A0) },
>  };
>  
>  static const struct xe_step_info dg2_g10_revid_step_tbl[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_A0 },
> -	[0x1] = { COMMON_GT_MEDIA_STEP(A1), .display = STEP_A0 },
> -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display = STEP_B0 },
> -	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display = STEP_C0 },
> +	[0x0] = { COMMON_STEP(A0) },
> +	[0x1] = { COMMON_STEP(A1) },
> +	[0x4] = { COMMON_STEP(B0) },
> +	[0x8] = { COMMON_STEP(C0) },
>  };
>  
>  static const struct xe_step_info dg2_g11_revid_step_tbl[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_B0 },
> -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display = STEP_C0 },
> -	[0x5] = { COMMON_GT_MEDIA_STEP(B1), .display = STEP_C0 },
> +	[0x0] = { COMMON_STEP(A0) },
> +	[0x4] = { COMMON_STEP(B0) },
> +	[0x5] = { COMMON_STEP(B1) },
>  };
>  
>  static const struct xe_step_info dg2_g12_revid_step_tbl[] = {
> -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display = STEP_C0 },
> -	[0x1] = { COMMON_GT_MEDIA_STEP(A1), .display = STEP_C0 },
> +	[0x0] = { COMMON_STEP(A0) },
> +	[0x1] = { COMMON_STEP(A1) },
>  };
>  
>  static const struct xe_step_info pvc_revid_step_tbl[] = {
> @@ -195,7 +189,6 @@ struct xe_step_info xe_step_pre_gmdid_get(struct xe_device *xe)
>  		} else {
>  			drm_dbg(&xe->drm, "Using future steppings\n");
>  			step.graphics = STEP_FUTURE;
> -			step.display = STEP_FUTURE;
>  		}
>  	}
>  
> diff --git a/drivers/gpu/drm/xe/xe_step_types.h b/drivers/gpu/drm/xe/xe_step_types.h
> index 95b38d2d6c50..d978cc2512f2 100644
> --- a/drivers/gpu/drm/xe/xe_step_types.h
> +++ b/drivers/gpu/drm/xe/xe_step_types.h
> @@ -11,7 +11,6 @@
>  struct xe_step_info {
>  	u8 graphics;
>  	u8 media;
> -	u8 display;
>  	u8 basedie;
>  };
>  
> -- 
> 2.39.2
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH 09/10] drm/i915: remove display stepping handling
  2024-08-21  0:04   ` Matt Roper
@ 2024-08-21  0:08     ` Matt Roper
  0 siblings, 0 replies; 38+ messages in thread
From: Matt Roper @ 2024-08-21  0:08 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Tue, Aug 20, 2024 at 05:04:12PM -0700, Matt Roper wrote:
> On Tue, Aug 20, 2024 at 10:00:42PM +0300, Jani Nikula wrote:
> > The code is now unused. Remove.
> > 
> > Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> 
> Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

BTW, after this series lands, we should also go back and drop
IS_BASEDIE_STEP and its related code from i915 as well.  That was only
relevant to PVC and i915 no longer present in i915.


Matt

> 
> > ---
> >  drivers/gpu/drm/i915/intel_step.c | 79 ++++++++++++++-----------------
> >  drivers/gpu/drm/i915/intel_step.h |  1 -
> >  2 files changed, 36 insertions(+), 44 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_step.c b/drivers/gpu/drm/i915/intel_step.c
> > index 80464e4edcce..285b96fadfd5 100644
> > --- a/drivers/gpu/drm/i915/intel_step.c
> > +++ b/drivers/gpu/drm/i915/intel_step.c
> > @@ -23,8 +23,7 @@
> >   * use a macro to define these to make it easier to identify the platforms
> >   * where the two steppings can deviate.
> >   */
> > -#define COMMON_STEP(x)  .graphics_step = STEP_##x, .display_step = STEP_##x, .media_step = STEP_##x
> > -#define COMMON_GT_MEDIA_STEP(x)  .graphics_step = STEP_##x, .media_step = STEP_##x
> > +#define COMMON_STEP(x)  .graphics_step = STEP_##x, .media_step = STEP_##x
> >  
> >  static const struct intel_step_info skl_revids[] = {
> >  	[0x6] = { COMMON_STEP(G0) },
> > @@ -34,13 +33,13 @@ static const struct intel_step_info skl_revids[] = {
> >  };
> >  
> >  static const struct intel_step_info kbl_revids[] = {
> > -	[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
> > -	[2] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B0 },
> > -	[3] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_B0 },
> > -	[4] = { COMMON_GT_MEDIA_STEP(F0), .display_step = STEP_C0 },
> > -	[5] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B1 },
> > -	[6] = { COMMON_GT_MEDIA_STEP(D1), .display_step = STEP_B1 },
> > -	[7] = { COMMON_GT_MEDIA_STEP(G0), .display_step = STEP_C0 },
> > +	[1] = { COMMON_STEP(B0) },
> > +	[2] = { COMMON_STEP(C0) },
> > +	[3] = { COMMON_STEP(D0) },
> > +	[4] = { COMMON_STEP(F0) },
> > +	[5] = { COMMON_STEP(C0) },
> > +	[6] = { COMMON_STEP(D1) },
> > +	[7] = { COMMON_STEP(G0) },
> >  };
> >  
> >  static const struct intel_step_info bxt_revids[] = {
> > @@ -64,16 +63,16 @@ static const struct intel_step_info jsl_ehl_revids[] = {
> >  };
> >  
> >  static const struct intel_step_info tgl_uy_revids[] = {
> > -	[0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
> > -	[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_C0 },
> > -	[2] = { COMMON_GT_MEDIA_STEP(B1), .display_step = STEP_C0 },
> > -	[3] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_D0 },
> > +	[0] = { COMMON_STEP(A0) },
> > +	[1] = { COMMON_STEP(B0) },
> > +	[2] = { COMMON_STEP(B1) },
> > +	[3] = { COMMON_STEP(C0) },
> >  };
> >  
> >  /* Same GT stepping between tgl_uy_revids and tgl_revids don't mean the same HW */
> >  static const struct intel_step_info tgl_revids[] = {
> > -	[0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_B0 },
> > -	[1] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_D0 },
> > +	[0] = { COMMON_STEP(A0) },
> > +	[1] = { COMMON_STEP(B0) },
> >  };
> >  
> >  static const struct intel_step_info rkl_revids[] = {
> > @@ -88,49 +87,49 @@ static const struct intel_step_info dg1_revids[] = {
> >  };
> >  
> >  static const struct intel_step_info adls_revids[] = {
> > -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
> > -	[0x1] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A2 },
> > -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
> > -	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_B0 },
> > -	[0xC] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_C0 },
> > +	[0x0] = { COMMON_STEP(A0) },
> > +	[0x1] = { COMMON_STEP(A0) },
> > +	[0x4] = { COMMON_STEP(B0) },
> > +	[0x8] = { COMMON_STEP(C0) },
> > +	[0xC] = { COMMON_STEP(D0) },
> >  };
> >  
> >  static const struct intel_step_info adlp_revids[] = {
> > -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
> > -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
> > -	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_C0 },
> > -	[0xC] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_D0 },
> > +	[0x0] = { COMMON_STEP(A0) },
> > +	[0x4] = { COMMON_STEP(B0) },
> > +	[0x8] = { COMMON_STEP(C0) },
> > +	[0xC] = { COMMON_STEP(C0) },
> >  };
> >  
> >  static const struct intel_step_info dg2_g10_revid_step_tbl[] = {
> > -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_A0 },
> > -	[0x1] = { COMMON_GT_MEDIA_STEP(A1), .display_step = STEP_A0 },
> > -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_B0 },
> > -	[0x8] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_C0 },
> > +	[0x0] = { COMMON_STEP(A0) },
> > +	[0x1] = { COMMON_STEP(A1) },
> > +	[0x4] = { COMMON_STEP(B0) },
> > +	[0x8] = { COMMON_STEP(C0) },
> >  };
> >  
> >  static const struct intel_step_info dg2_g11_revid_step_tbl[] = {
> > -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_B0 },
> > -	[0x4] = { COMMON_GT_MEDIA_STEP(B0), .display_step = STEP_C0 },
> > -	[0x5] = { COMMON_GT_MEDIA_STEP(B1), .display_step = STEP_C0 },
> > +	[0x0] = { COMMON_STEP(A0) },
> > +	[0x4] = { COMMON_STEP(B0) },
> > +	[0x5] = { COMMON_STEP(B1) },
> >  };
> >  
> >  static const struct intel_step_info dg2_g12_revid_step_tbl[] = {
> > -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_C0 },
> > -	[0x1] = { COMMON_GT_MEDIA_STEP(A1), .display_step = STEP_C0 },
> > +	[0x0] = { COMMON_STEP(A0) },
> > +	[0x1] = { COMMON_STEP(A1) },
> >  };
> >  
> >  static const struct intel_step_info adls_rpls_revids[] = {
> > -	[0x4] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_D0 },
> > -	[0xC] = { COMMON_GT_MEDIA_STEP(D0), .display_step = STEP_C0 },
> > +	[0x4] = { COMMON_STEP(D0) },
> > +	[0xC] = { COMMON_STEP(D0) },
> >  };
> >  
> >  static const struct intel_step_info adlp_rplp_revids[] = {
> > -	[0x4] = { COMMON_GT_MEDIA_STEP(C0), .display_step = STEP_E0 },
> > +	[0x4] = { COMMON_STEP(C0) },
> >  };
> >  
> >  static const struct intel_step_info adlp_n_revids[] = {
> > -	[0x0] = { COMMON_GT_MEDIA_STEP(A0), .display_step = STEP_D0 },
> > +	[0x0] = { COMMON_STEP(A0) },
> >  };
> >  
> >  static u8 gmd_to_intel_step(struct drm_i915_private *i915,
> > @@ -158,11 +157,6 @@ void intel_step_init(struct drm_i915_private *i915)
> >  						       &RUNTIME_INFO(i915)->graphics.ip);
> >  		step.media_step = gmd_to_intel_step(i915,
> >  						    &RUNTIME_INFO(i915)->media.ip);
> > -		step.display_step = STEP_A0 + DISPLAY_RUNTIME_INFO(i915)->ip.step;
> > -		if (step.display_step >= STEP_FUTURE) {
> > -			drm_dbg(&i915->drm, "Using future display steppings\n");
> > -			step.display_step = STEP_FUTURE;
> > -		}
> >  
> >  		RUNTIME_INFO(i915)->step = step;
> >  
> > @@ -252,7 +246,6 @@ void intel_step_init(struct drm_i915_private *i915)
> >  		} else {
> >  			drm_dbg(&i915->drm, "Using future steppings\n");
> >  			step.graphics_step = STEP_FUTURE;
> > -			step.display_step = STEP_FUTURE;
> >  		}
> >  	}
> >  
> > diff --git a/drivers/gpu/drm/i915/intel_step.h b/drivers/gpu/drm/i915/intel_step.h
> > index 96dfca4cba73..83bd1190edf5 100644
> > --- a/drivers/gpu/drm/i915/intel_step.h
> > +++ b/drivers/gpu/drm/i915/intel_step.h
> > @@ -16,7 +16,6 @@ struct intel_step_info {
> >  	 * the expectation breaks gmd_to_intel_step().
> >  	 */
> >  	u8 graphics_step;	/* Represents the compute tile on Xe_HPC */
> > -	u8 display_step;
> >  	u8 media_step;
> >  	u8 basedie_step;
> >  };
> > -- 
> > 2.39.2
> > 
> 
> -- 
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH 07/10] drm/i915/display: identify display steppings in display probe
  2024-08-20 23:52   ` Matt Roper
@ 2024-08-21  8:59     ` Jani Nikula
  0 siblings, 0 replies; 38+ messages in thread
From: Jani Nikula @ 2024-08-21  8:59 UTC (permalink / raw)
  To: Matt Roper; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Tue, 20 Aug 2024, Matt Roper <matthew.d.roper@intel.com> wrote:
> On Tue, Aug 20, 2024 at 10:00:40PM +0300, Jani Nikula wrote:
>> Both i915 and xe have code to identify display steppings. Start
>> deduplicating this by, uh, adding a third copy in display code. This is
>> not yet used for anything other than debug logging. We'll switch over
>> later.
>> 
>> For platforms before GMD ID, attach the mapping from PCI revision to
>> stepping in the platform and subplatform descriptors. This is a
>> considerably cleaner approach than having it completely separate.
>> 
>> Also add a separate field for stepping in display runtime info,
>> preserving the value from GMD ID.
>> 
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>>  .../drm/i915/display/intel_display_device.c   | 224 +++++++++++++++++-
>>  .../drm/i915/display/intel_display_device.h   |   3 +-
>>  .../drm/xe/compat-i915-headers/intel_step.h   |   1 +
>>  3 files changed, 216 insertions(+), 12 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
>> index a31f89df2c0a..1ac3ab3954a1 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_device.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_device.c
>> @@ -16,14 +16,25 @@
>>  #include "intel_display_power.h"
>>  #include "intel_display_reg_defs.h"
>>  #include "intel_fbc.h"
>> +#include "intel_step.h"
>>  
>>  __diag_push();
>>  __diag_ignore_all("-Woverride-init", "Allow field initialization overrides for display info");
>>  
>> +struct stepping_desc {
>> +	const enum intel_step *map; /* revid to step map */
>> +	size_t size; /* map size */
>> +};
>> +
>> +#define STEP_INFO(_map)				\
>> +	.step_info.map = _map,			\
>> +	.step_info.size = ARRAY_SIZE(_map)
>> +
>>  struct subplatform_desc {
>>  	enum intel_display_subplatform subplatform;
>>  	const char *name;
>>  	const u16 *pciidlist;
>> +	struct stepping_desc step_info;
>>  };
>>  
>>  struct platform_desc {
>> @@ -31,6 +42,7 @@ struct platform_desc {
>>  	const char *name;
>>  	const struct subplatform_desc *subplatforms;
>>  	const struct intel_display_device_info *info; /* NULL for GMD ID */
>> +	struct stepping_desc step_info;
>>  };
>>  
>>  #define PLATFORM(_platform)			 \
>> @@ -610,6 +622,13 @@ static const u16 skl_ulx_ids[] = {
>>  	0
>>  };
>>  
>> +static const enum intel_step skl_steppings[] = {
>> +	[0x6] = STEP_G0,
>> +	[0x7] = STEP_H0,
>> +	[0x9] = STEP_J0,
>> +	[0xA] = STEP_I1,
>> +};
>> +
>>  static const struct platform_desc skl_desc = {
>>  	PLATFORM(SKYLAKE),
>>  	.subplatforms = (const struct subplatform_desc[]) {
>> @@ -618,6 +637,7 @@ static const struct platform_desc skl_desc = {
>>  		{},
>>  	},
>>  	.info = &skl_display,
>> +	STEP_INFO(skl_steppings),
>>  };
>>  
>>  static const u16 kbl_ult_ids[] = {
>> @@ -634,6 +654,16 @@ static const u16 kbl_ulx_ids[] = {
>>  	0
>>  };
>>  
>> +static const enum intel_step kbl_steppings[] = {
>> +	[1] = STEP_B0,
>> +	[2] = STEP_B0,
>> +	[3] = STEP_B0,
>> +	[4] = STEP_C0,
>> +	[5] = STEP_B1,
>> +	[6] = STEP_B1,
>> +	[7] = STEP_C0,
>> +};
>> +
>>  static const struct platform_desc kbl_desc = {
>>  	PLATFORM(KABYLAKE),
>>  	.subplatforms = (const struct subplatform_desc[]) {
>> @@ -642,6 +672,7 @@ static const struct platform_desc kbl_desc = {
>>  		{},
>>  	},
>>  	.info = &skl_display,
>> +	STEP_INFO(kbl_steppings),
>>  };
>>  
>>  static const u16 cfl_ult_ids[] = {
>> @@ -706,6 +737,13 @@ static const struct platform_desc cml_desc = {
>>  		BIT(TRANSCODER_DSI_A) | BIT(TRANSCODER_DSI_C), \
>>  	.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C)
>>  
>> +static const enum intel_step bxt_steppings[] = {
>> +	[0xA] = STEP_C0,
>> +	[0xB] = STEP_C0,
>> +	[0xC] = STEP_D0,
>> +	[0xD] = STEP_E0,
>> +};
>> +
>>  static const struct platform_desc bxt_desc = {
>>  	PLATFORM(BROXTON),
>>  	.info = &(const struct intel_display_device_info) {
>> @@ -714,6 +752,11 @@ static const struct platform_desc bxt_desc = {
>>  
>>  		.__runtime_defaults.ip.ver = 9,
>>  	},
>> +	STEP_INFO(bxt_steppings),
>> +};
>> +
>> +static const enum intel_step glk_steppings[] = {
>> +	[3] = STEP_B0,
>>  };
>>  
>>  static const struct platform_desc glk_desc = {
>> @@ -725,6 +768,7 @@ static const struct platform_desc glk_desc = {
>>  
>>  		.__runtime_defaults.ip.ver = 10,
>>  	},
>> +	STEP_INFO(glk_steppings),
>>  };
>>  
>>  #define ICL_DISPLAY \
>> @@ -773,6 +817,10 @@ static const u16 icl_port_f_ids[] = {
>>  	0
>>  };
>>  
>> +static const enum intel_step icl_steppings[] = {
>> +	[7] = STEP_D0,
>> +};
>> +
>>  static const struct platform_desc icl_desc = {
>>  	PLATFORM(ICELAKE),
>>  	.subplatforms = (const struct subplatform_desc[]) {
>> @@ -784,6 +832,7 @@ static const struct platform_desc icl_desc = {
>>  
>>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D) | BIT(PORT_E),
>>  	},
>> +	STEP_INFO(icl_steppings),
>>  };
>>  
>>  static const struct intel_display_device_info jsl_ehl_display = {
>> @@ -792,14 +841,21 @@ static const struct intel_display_device_info jsl_ehl_display = {
>>  	.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D),
>>  };
>>  
>> +static const enum intel_step jsl_ehl_steppings[] = {
>> +	[0] = STEP_A0,
>> +	[1] = STEP_B0,
>> +};
>> +
>>  static const struct platform_desc jsl_desc = {
>>  	PLATFORM(JASPERLAKE),
>>  	.info = &jsl_ehl_display,
>> +	STEP_INFO(jsl_ehl_steppings),
>>  };
>>  
>>  static const struct platform_desc ehl_desc = {
>>  	PLATFORM(ELKHARTLAKE),
>>  	.info = &jsl_ehl_display,
>> +	STEP_INFO(jsl_ehl_steppings),
>>  };
>>  
>>  #define XE_D_DISPLAY \
>> @@ -850,10 +906,23 @@ static const u16 tgl_uy_ids[] = {
>>  	0
>>  };
>>  
>> +static const enum intel_step tgl_steppings[] = {
>> +	[0] = STEP_B0,
>> +	[1] = STEP_D0,
>> +};
>> +
>> +static const enum intel_step tgl_uy_steppings[] = {
>> +	[0] = STEP_A0,
>> +	[1] = STEP_C0,
>> +	[2] = STEP_C0,
>> +	[3] = STEP_D0,
>> +};
>> +
>>  static const struct platform_desc tgl_desc = {
>>  	PLATFORM(TIGERLAKE),
>>  	.subplatforms = (const struct subplatform_desc[]) {
>> -		{ INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids },
>> +		{ INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids,
>> +		  STEP_INFO(tgl_uy_steppings) },
>>  		{},
>>  	},
>>  	.info = &(const struct intel_display_device_info) {
>> @@ -866,6 +935,12 @@ static const struct platform_desc tgl_desc = {
>>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>>  		BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4) | BIT(PORT_TC5) | BIT(PORT_TC6),
>>  	},
>> +	STEP_INFO(tgl_steppings),
>> +};
>> +
>> +static const enum intel_step dg1_steppings[] = {
>> +	[0] = STEP_A0,
>> +	[1] = STEP_B0,
>>  };
>>  
>>  static const struct platform_desc dg1_desc = {
>> @@ -876,6 +951,13 @@ static const struct platform_desc dg1_desc = {
>>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>>  		BIT(PORT_TC1) | BIT(PORT_TC2),
>>  	},
>> +	STEP_INFO(dg1_steppings),
>> +};
>> +
>> +static const enum intel_step rkl_steppings[] = {
>> +	[0] = STEP_A0,
>> +	[1] = STEP_B0,
>> +	[4] = STEP_C0,
>>  };
>>  
>>  static const struct platform_desc rkl_desc = {
>> @@ -892,6 +974,7 @@ static const struct platform_desc rkl_desc = {
>>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>>  		BIT(PORT_TC1) | BIT(PORT_TC2),
>>  	},
>> +	STEP_INFO(rkl_steppings),
>>  };
>>  
>>  static const u16 adls_rpls_ids[] = {
>> @@ -899,10 +982,24 @@ static const u16 adls_rpls_ids[] = {
>>  	0
>>  };
>>  
>> +static const enum intel_step adl_s_steppings[] = {
>> +	[0x0] = STEP_A0,
>> +	[0x1] = STEP_A2,
>> +	[0x4] = STEP_B0,
>> +	[0x8] = STEP_B0,
>> +	[0xC] = STEP_C0,
>> +};
>> +
>> +static const enum intel_step adl_s_rpl_s_steppings[] = {
>> +	[0x4] = STEP_D0,
>> +	[0xC] = STEP_C0,
>> +};
>> +
>>  static const struct platform_desc adl_s_desc = {
>>  	PLATFORM(ALDERLAKE_S),
>>  	.subplatforms = (const struct subplatform_desc[]) {
>> -		{ INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids },
>> +		{ INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids,
>> +		  STEP_INFO(adl_s_rpl_s_steppings) },
>>  		{},
>>  	},
>>  	.info = &(const struct intel_display_device_info) {
>> @@ -913,6 +1010,7 @@ static const struct platform_desc adl_s_desc = {
>>  		.__runtime_defaults.port_mask = BIT(PORT_A) |
>>  		BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4),
>>  	},
>> +	STEP_INFO(adl_s_steppings),
>>  };
>>  
>>  #define XE_LPD_FEATURES \
>> @@ -986,15 +1084,34 @@ static const u16 adlp_rplp_ids[] = {
>>  	0
>>  };
>>  
>> +static const enum intel_step adl_p_steppings[] = {
>> +	[0x0] = STEP_A0,
>> +	[0x4] = STEP_B0,
>> +	[0x8] = STEP_C0,
>> +	[0xC] = STEP_D0,
>> +};
>> +
>> +static const enum intel_step adl_p_adl_n_steppings[] = {
>> +	[0x0] = STEP_D0,
>> +};
>> +
>> +static const enum intel_step adl_p_rpl_pu_steppings[] = {
>> +	[0x4] = STEP_E0,
>> +};
>> +
>>  static const struct platform_desc adl_p_desc = {
>>  	PLATFORM(ALDERLAKE_P),
>>  	.subplatforms = (const struct subplatform_desc[]) {
>> -		{ INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids },
>> -		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids },
>> -		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids },
>> +		{ INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids,
>> +		  STEP_INFO(adl_p_adl_n_steppings) },
>> +		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids,
>> +		  STEP_INFO(adl_p_rpl_pu_steppings) },
>> +		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids,
>> +		  STEP_INFO(adl_p_rpl_pu_steppings) },
>>  		{},
>>  	},
>>  	.info = &xe_lpd_display,
>> +	STEP_INFO(adl_p_steppings),
>>  };
>>  
>>  static const struct intel_display_device_info xe_hpd_display = {
>> @@ -1023,12 +1140,33 @@ static const u16 dg2_g12_ids[] = {
>>  	0
>>  };
>>  
>> +static const enum intel_step dg2_g10_steppings[] = {
>> +	[0x0] = STEP_A0,
>> +	[0x1] = STEP_A0,
>> +	[0x4] = STEP_B0,
>> +	[0x8] = STEP_C0,
>> +};
>> +
>> +static const enum intel_step dg2_g11_steppings[] = {
>> +	[0x0] = STEP_B0,
>> +	[0x4] = STEP_C0,
>> +	[0x5] = STEP_C0,
>> +};
>> +
>> +static const enum intel_step dg2_g12_steppings[] = {
>> +	[0x0] = STEP_C0,
>> +	[0x1] = STEP_C0,
>> +};
>> +
>>  static const struct platform_desc dg2_desc = {
>>  	PLATFORM(DG2),
>>  	.subplatforms = (const struct subplatform_desc[]) {
>> -		{ INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids },
>> -		{ INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids },
>> -		{ INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids },
>> +		{ INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids,
>> +		  STEP_INFO(dg2_g10_steppings) },
>> +		{ INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids,
>> +		  STEP_INFO(dg2_g11_steppings) },
>> +		{ INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids,
>> +		  STEP_INFO(dg2_g12_steppings) },
>>  		{},
>>  	},
>>  	.info = &xe_hpd_display,
>> @@ -1261,13 +1399,66 @@ find_subplatform_desc(struct pci_dev *pdev, const struct platform_desc *desc)
>>  	return NULL;
>>  }
>>  
>> +static enum intel_step get_pre_gmdid_step(struct intel_display *display,
>> +					  const struct stepping_desc *main,
>> +					  const struct stepping_desc *sub)
>> +{
>> +	struct pci_dev *pdev = to_pci_dev(display->drm->dev);
>> +	const enum intel_step *map = main->map;
>> +	int size = main->size;
>> +	int revision = pdev->revision;
>> +	enum intel_step step;
>> +
>> +	/* subplatform stepping info trumps main platform info */
>> +	if (sub->map && sub->size) {
>> +		map = sub->map;
>> +		size = sub->size;
>> +	}
>> +
>> +	/* not all platforms define steppings, and it's fine */
>> +	if (!map || !size)
>> +		return STEP_NONE;
>> +
>> +	if (revision < size && map[revision] != STEP_NONE) {
>> +		step = map[revision];
>> +	} else {
>> +		drm_warn(display->drm, "Unknown revision 0x%02x\n", revision);
>> +
>> +		/*
>> +		 * If we hit a gap in the revision to step map, use the information
>> +		 * for the next revision.
>> +		 *
>> +		 * This may be wrong in all sorts of ways, especially if the
>> +		 * steppings in the array are not monotonically increasing, but
>> +		 * it's better than defaulting to 0.
>> +		 */
>> +		while (revision < size && map[revision] == STEP_NONE)
>> +			revision++;
>> +
>> +		if (revision < size) {
>> +			drm_dbg_kms(display->drm, "Using display stepping for revision 0x%02x\n",
>> +				    revision);
>> +			step = map[revision];
>> +		} else {
>> +			drm_dbg_kms(display->drm, "Using future display stepping\n");
>> +			step = STEP_FUTURE;
>> +		}
>> +	}
>> +
>> +	drm_WARN_ON(display->drm, step == STEP_NONE);
>> +
>> +	return step;
>> +}
>> +
>>  void intel_display_device_probe(struct drm_i915_private *i915)
>>  {
>> +	struct intel_display *display = &i915->display;
>>  	struct pci_dev *pdev = to_pci_dev(i915->drm.dev);
>>  	const struct intel_display_device_info *info;
>>  	struct intel_display_ip_ver ip_ver = {};
>>  	const struct platform_desc *desc;
>>  	const struct subplatform_desc *subdesc;
>> +	enum intel_step step;
>>  
>>  	/* Add drm device backpointer as early as possible. */
>>  	i915->display.drm = &i915->drm;
>> @@ -1307,13 +1498,24 @@ void intel_display_device_probe(struct drm_i915_private *i915)
>>  		DISPLAY_RUNTIME_INFO(i915)->subplatform = subdesc->subplatform;
>>  	}
>>  
>> -	if (ip_ver.ver || ip_ver.rel || ip_ver.step)
>> +	if (ip_ver.ver || ip_ver.rel || ip_ver.step) {
>>  		DISPLAY_RUNTIME_INFO(i915)->ip = ip_ver;
>> +		step = STEP_A0 + ip_ver.step;
>> +		if (step > STEP_FUTURE) {
>> +			drm_dbg_kms(display->drm, "Using future display stepping\n");
>> +			step = STEP_FUTURE;
>> +		}
>> +	} else {
>> +		step = get_pre_gmdid_step(display, &desc->step_info, &subdesc->step_info);
>
> Can't subdesc still be NULL here?  And if we change this to something
> like "subdesc ? &subdesc->step_info : NULL" then we'll also need a
> nullcheck inside get_pre_gmdid_step as well to prevent a npd.

Indeed, good catch! And CI appears to have caught it too.

Thanks,
Jani.

>
>
> Matt
>
>> +	}
>> +
>> +	DISPLAY_RUNTIME_INFO(i915)->step = step;
>>  
>> -	drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u\n",
>> +	drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u stepping %s\n",
>>  		 desc->name, subdesc ? "/" : "", subdesc ? subdesc->name : "",
>>  		 pdev->device, DISPLAY_RUNTIME_INFO(i915)->ip.ver,
>> -		 DISPLAY_RUNTIME_INFO(i915)->ip.rel);
>> +		 DISPLAY_RUNTIME_INFO(i915)->ip.rel,
>> +		 step != STEP_NONE ? intel_step_name(step) : "N/A");
>>  
>>  	return;
>>  
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
>> index 8bd342658291..1c75cbd68dea 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
>> @@ -201,8 +201,9 @@ struct intel_display_runtime_info {
>>  	struct intel_display_ip_ver {
>>  		u16 ver;
>>  		u16 rel;
>> -		u16 step;
>> +		u16 step; /* hardware */
>>  	} ip;
>> +	int step; /* symbolic */
>>  
>>  	u8 pipe_mask;
>>  	u8 cpu_transcoder_mask;
>> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
>> index ee3f45b668b9..2cf13a572ab0 100644
>> --- a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
>> +++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
>> @@ -8,6 +8,7 @@
>>  
>>  #include "xe_step.h"
>>  
>> +#define intel_step xe_step
>>  #define intel_step_name xe_step_name
>>  
>>  #endif /* __INTEL_STEP_H__ */
>> -- 
>> 2.39.2
>> 

-- 
Jani Nikula, Intel

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

* [PATCH v2] drm/i915/display: identify display steppings in display probe
  2024-08-20 19:00 ` [PATCH 07/10] drm/i915/display: identify display steppings in display probe Jani Nikula
  2024-08-20 23:52   ` Matt Roper
@ 2024-08-21  9:50   ` Jani Nikula
  2024-08-21 13:48     ` Matt Roper
  2024-08-21 13:52     ` Gustavo Sousa
  1 sibling, 2 replies; 38+ messages in thread
From: Jani Nikula @ 2024-08-21  9:50 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper

Both i915 and xe have code to identify display steppings. Start
deduplicating this by, uh, adding a third copy in display code. This is
not yet used for anything other than debug logging. We'll switch over
later.

For platforms before GMD ID, attach the mapping from PCI revision to
stepping in the platform and subplatform descriptors. This is a
considerably cleaner approach than having it completely separate.

Also add a separate field for stepping in display runtime info,
preserving the value from GMD ID.

v2: Handle NULL subdesc (Matt)

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 .../drm/i915/display/intel_display_device.c   | 225 +++++++++++++++++-
 .../drm/i915/display/intel_display_device.h   |   3 +-
 .../drm/xe/compat-i915-headers/intel_step.h   |   1 +
 3 files changed, 217 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
index b28d55fa0c3a..dfa923672492 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.c
+++ b/drivers/gpu/drm/i915/display/intel_display_device.c
@@ -16,14 +16,25 @@
 #include "intel_display_power.h"
 #include "intel_display_reg_defs.h"
 #include "intel_fbc.h"
+#include "intel_step.h"
 
 __diag_push();
 __diag_ignore_all("-Woverride-init", "Allow field initialization overrides for display info");
 
+struct stepping_desc {
+	const enum intel_step *map; /* revid to step map */
+	size_t size; /* map size */
+};
+
+#define STEP_INFO(_map)				\
+	.step_info.map = _map,			\
+	.step_info.size = ARRAY_SIZE(_map)
+
 struct subplatform_desc {
 	enum intel_display_subplatform subplatform;
 	const char *name;
 	const u16 *pciidlist;
+	struct stepping_desc step_info;
 };
 
 struct platform_desc {
@@ -31,6 +42,7 @@ struct platform_desc {
 	const char *name;
 	const struct subplatform_desc *subplatforms;
 	const struct intel_display_device_info *info; /* NULL for GMD ID */
+	struct stepping_desc step_info;
 };
 
 #define PLATFORM(_platform)			 \
@@ -610,6 +622,13 @@ static const u16 skl_ulx_ids[] = {
 	0
 };
 
+static const enum intel_step skl_steppings[] = {
+	[0x6] = STEP_G0,
+	[0x7] = STEP_H0,
+	[0x9] = STEP_J0,
+	[0xA] = STEP_I1,
+};
+
 static const struct platform_desc skl_desc = {
 	PLATFORM(SKYLAKE),
 	.subplatforms = (const struct subplatform_desc[]) {
@@ -618,6 +637,7 @@ static const struct platform_desc skl_desc = {
 		{},
 	},
 	.info = &skl_display,
+	STEP_INFO(skl_steppings),
 };
 
 static const u16 kbl_ult_ids[] = {
@@ -634,6 +654,16 @@ static const u16 kbl_ulx_ids[] = {
 	0
 };
 
+static const enum intel_step kbl_steppings[] = {
+	[1] = STEP_B0,
+	[2] = STEP_B0,
+	[3] = STEP_B0,
+	[4] = STEP_C0,
+	[5] = STEP_B1,
+	[6] = STEP_B1,
+	[7] = STEP_C0,
+};
+
 static const struct platform_desc kbl_desc = {
 	PLATFORM(KABYLAKE),
 	.subplatforms = (const struct subplatform_desc[]) {
@@ -642,6 +672,7 @@ static const struct platform_desc kbl_desc = {
 		{},
 	},
 	.info = &skl_display,
+	STEP_INFO(kbl_steppings),
 };
 
 static const u16 cfl_ult_ids[] = {
@@ -706,6 +737,13 @@ static const struct platform_desc cml_desc = {
 		BIT(TRANSCODER_DSI_A) | BIT(TRANSCODER_DSI_C), \
 	.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C)
 
+static const enum intel_step bxt_steppings[] = {
+	[0xA] = STEP_C0,
+	[0xB] = STEP_C0,
+	[0xC] = STEP_D0,
+	[0xD] = STEP_E0,
+};
+
 static const struct platform_desc bxt_desc = {
 	PLATFORM(BROXTON),
 	.info = &(const struct intel_display_device_info) {
@@ -714,6 +752,11 @@ static const struct platform_desc bxt_desc = {
 
 		.__runtime_defaults.ip.ver = 9,
 	},
+	STEP_INFO(bxt_steppings),
+};
+
+static const enum intel_step glk_steppings[] = {
+	[3] = STEP_B0,
 };
 
 static const struct platform_desc glk_desc = {
@@ -725,6 +768,7 @@ static const struct platform_desc glk_desc = {
 
 		.__runtime_defaults.ip.ver = 10,
 	},
+	STEP_INFO(glk_steppings),
 };
 
 #define ICL_DISPLAY \
@@ -773,6 +817,10 @@ static const u16 icl_port_f_ids[] = {
 	0
 };
 
+static const enum intel_step icl_steppings[] = {
+	[7] = STEP_D0,
+};
+
 static const struct platform_desc icl_desc = {
 	PLATFORM(ICELAKE),
 	.subplatforms = (const struct subplatform_desc[]) {
@@ -784,6 +832,7 @@ static const struct platform_desc icl_desc = {
 
 		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D) | BIT(PORT_E),
 	},
+	STEP_INFO(icl_steppings),
 };
 
 static const struct intel_display_device_info jsl_ehl_display = {
@@ -792,14 +841,21 @@ static const struct intel_display_device_info jsl_ehl_display = {
 	.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D),
 };
 
+static const enum intel_step jsl_ehl_steppings[] = {
+	[0] = STEP_A0,
+	[1] = STEP_B0,
+};
+
 static const struct platform_desc jsl_desc = {
 	PLATFORM(JASPERLAKE),
 	.info = &jsl_ehl_display,
+	STEP_INFO(jsl_ehl_steppings),
 };
 
 static const struct platform_desc ehl_desc = {
 	PLATFORM(ELKHARTLAKE),
 	.info = &jsl_ehl_display,
+	STEP_INFO(jsl_ehl_steppings),
 };
 
 #define XE_D_DISPLAY \
@@ -850,10 +906,23 @@ static const u16 tgl_uy_ids[] = {
 	0
 };
 
+static const enum intel_step tgl_steppings[] = {
+	[0] = STEP_B0,
+	[1] = STEP_D0,
+};
+
+static const enum intel_step tgl_uy_steppings[] = {
+	[0] = STEP_A0,
+	[1] = STEP_C0,
+	[2] = STEP_C0,
+	[3] = STEP_D0,
+};
+
 static const struct platform_desc tgl_desc = {
 	PLATFORM(TIGERLAKE),
 	.subplatforms = (const struct subplatform_desc[]) {
-		{ INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids },
+		{ INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids,
+		  STEP_INFO(tgl_uy_steppings) },
 		{},
 	},
 	.info = &(const struct intel_display_device_info) {
@@ -866,6 +935,12 @@ static const struct platform_desc tgl_desc = {
 		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
 		BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4) | BIT(PORT_TC5) | BIT(PORT_TC6),
 	},
+	STEP_INFO(tgl_steppings),
+};
+
+static const enum intel_step dg1_steppings[] = {
+	[0] = STEP_A0,
+	[1] = STEP_B0,
 };
 
 static const struct platform_desc dg1_desc = {
@@ -876,6 +951,13 @@ static const struct platform_desc dg1_desc = {
 		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
 		BIT(PORT_TC1) | BIT(PORT_TC2),
 	},
+	STEP_INFO(dg1_steppings),
+};
+
+static const enum intel_step rkl_steppings[] = {
+	[0] = STEP_A0,
+	[1] = STEP_B0,
+	[4] = STEP_C0,
 };
 
 static const struct platform_desc rkl_desc = {
@@ -892,6 +974,7 @@ static const struct platform_desc rkl_desc = {
 		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
 		BIT(PORT_TC1) | BIT(PORT_TC2),
 	},
+	STEP_INFO(rkl_steppings),
 };
 
 static const u16 adls_rpls_ids[] = {
@@ -899,10 +982,24 @@ static const u16 adls_rpls_ids[] = {
 	0
 };
 
+static const enum intel_step adl_s_steppings[] = {
+	[0x0] = STEP_A0,
+	[0x1] = STEP_A2,
+	[0x4] = STEP_B0,
+	[0x8] = STEP_B0,
+	[0xC] = STEP_C0,
+};
+
+static const enum intel_step adl_s_rpl_s_steppings[] = {
+	[0x4] = STEP_D0,
+	[0xC] = STEP_C0,
+};
+
 static const struct platform_desc adl_s_desc = {
 	PLATFORM(ALDERLAKE_S),
 	.subplatforms = (const struct subplatform_desc[]) {
-		{ INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids },
+		{ INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids,
+		  STEP_INFO(adl_s_rpl_s_steppings) },
 		{},
 	},
 	.info = &(const struct intel_display_device_info) {
@@ -913,6 +1010,7 @@ static const struct platform_desc adl_s_desc = {
 		.__runtime_defaults.port_mask = BIT(PORT_A) |
 		BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4),
 	},
+	STEP_INFO(adl_s_steppings),
 };
 
 #define XE_LPD_FEATURES \
@@ -986,15 +1084,34 @@ static const u16 adlp_rplp_ids[] = {
 	0
 };
 
+static const enum intel_step adl_p_steppings[] = {
+	[0x0] = STEP_A0,
+	[0x4] = STEP_B0,
+	[0x8] = STEP_C0,
+	[0xC] = STEP_D0,
+};
+
+static const enum intel_step adl_p_adl_n_steppings[] = {
+	[0x0] = STEP_D0,
+};
+
+static const enum intel_step adl_p_rpl_pu_steppings[] = {
+	[0x4] = STEP_E0,
+};
+
 static const struct platform_desc adl_p_desc = {
 	PLATFORM(ALDERLAKE_P),
 	.subplatforms = (const struct subplatform_desc[]) {
-		{ INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids },
-		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids },
-		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids },
+		{ INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids,
+		  STEP_INFO(adl_p_adl_n_steppings) },
+		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids,
+		  STEP_INFO(adl_p_rpl_pu_steppings) },
+		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids,
+		  STEP_INFO(adl_p_rpl_pu_steppings) },
 		{},
 	},
 	.info = &xe_lpd_display,
+	STEP_INFO(adl_p_steppings),
 };
 
 static const struct intel_display_device_info xe_hpd_display = {
@@ -1023,12 +1140,33 @@ static const u16 dg2_g12_ids[] = {
 	0
 };
 
+static const enum intel_step dg2_g10_steppings[] = {
+	[0x0] = STEP_A0,
+	[0x1] = STEP_A0,
+	[0x4] = STEP_B0,
+	[0x8] = STEP_C0,
+};
+
+static const enum intel_step dg2_g11_steppings[] = {
+	[0x0] = STEP_B0,
+	[0x4] = STEP_C0,
+	[0x5] = STEP_C0,
+};
+
+static const enum intel_step dg2_g12_steppings[] = {
+	[0x0] = STEP_C0,
+	[0x1] = STEP_C0,
+};
+
 static const struct platform_desc dg2_desc = {
 	PLATFORM(DG2),
 	.subplatforms = (const struct subplatform_desc[]) {
-		{ INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids },
-		{ INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids },
-		{ INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids },
+		{ INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids,
+		  STEP_INFO(dg2_g10_steppings) },
+		{ INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids,
+		  STEP_INFO(dg2_g11_steppings) },
+		{ INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids,
+		  STEP_INFO(dg2_g12_steppings) },
 		{},
 	},
 	.info = &xe_hpd_display,
@@ -1261,13 +1399,66 @@ find_subplatform_desc(struct pci_dev *pdev, const struct platform_desc *desc)
 	return NULL;
 }
 
+static enum intel_step get_pre_gmdid_step(struct intel_display *display,
+					  const struct stepping_desc *main,
+					  const struct stepping_desc *sub)
+{
+	struct pci_dev *pdev = to_pci_dev(display->drm->dev);
+	const enum intel_step *map = main->map;
+	int size = main->size;
+	int revision = pdev->revision;
+	enum intel_step step;
+
+	/* subplatform stepping info trumps main platform info */
+	if (sub && sub->map && sub->size) {
+		map = sub->map;
+		size = sub->size;
+	}
+
+	/* not all platforms define steppings, and it's fine */
+	if (!map || !size)
+		return STEP_NONE;
+
+	if (revision < size && map[revision] != STEP_NONE) {
+		step = map[revision];
+	} else {
+		drm_warn(display->drm, "Unknown revision 0x%02x\n", revision);
+
+		/*
+		 * If we hit a gap in the revision to step map, use the information
+		 * for the next revision.
+		 *
+		 * This may be wrong in all sorts of ways, especially if the
+		 * steppings in the array are not monotonically increasing, but
+		 * it's better than defaulting to 0.
+		 */
+		while (revision < size && map[revision] == STEP_NONE)
+			revision++;
+
+		if (revision < size) {
+			drm_dbg_kms(display->drm, "Using display stepping for revision 0x%02x\n",
+				    revision);
+			step = map[revision];
+		} else {
+			drm_dbg_kms(display->drm, "Using future display stepping\n");
+			step = STEP_FUTURE;
+		}
+	}
+
+	drm_WARN_ON(display->drm, step == STEP_NONE);
+
+	return step;
+}
+
 void intel_display_device_probe(struct drm_i915_private *i915)
 {
+	struct intel_display *display = &i915->display;
 	struct pci_dev *pdev = to_pci_dev(i915->drm.dev);
 	const struct intel_display_device_info *info;
 	struct intel_display_ip_ver ip_ver = {};
 	const struct platform_desc *desc;
 	const struct subplatform_desc *subdesc;
+	enum intel_step step;
 
 	/* Add drm device backpointer as early as possible. */
 	i915->display.drm = &i915->drm;
@@ -1307,13 +1498,25 @@ void intel_display_device_probe(struct drm_i915_private *i915)
 		DISPLAY_RUNTIME_INFO(i915)->subplatform = subdesc->subplatform;
 	}
 
-	if (ip_ver.ver || ip_ver.rel || ip_ver.step)
+	if (ip_ver.ver || ip_ver.rel || ip_ver.step) {
 		DISPLAY_RUNTIME_INFO(i915)->ip = ip_ver;
+		step = STEP_A0 + ip_ver.step;
+		if (step > STEP_FUTURE) {
+			drm_dbg_kms(display->drm, "Using future display stepping\n");
+			step = STEP_FUTURE;
+		}
+	} else {
+		step = get_pre_gmdid_step(display, &desc->step_info,
+					  subdesc ? &subdesc->step_info : NULL);
+	}
+
+	DISPLAY_RUNTIME_INFO(i915)->step = step;
 
-	drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u\n",
+	drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u stepping %s\n",
 		 desc->name, subdesc ? "/" : "", subdesc ? subdesc->name : "",
 		 pdev->device, DISPLAY_RUNTIME_INFO(i915)->ip.ver,
-		 DISPLAY_RUNTIME_INFO(i915)->ip.rel);
+		 DISPLAY_RUNTIME_INFO(i915)->ip.rel,
+		 step != STEP_NONE ? intel_step_name(step) : "N/A");
 
 	return;
 
diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index ccf1710cb9df..4615c3ba60aa 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -201,8 +201,9 @@ struct intel_display_runtime_info {
 	struct intel_display_ip_ver {
 		u16 ver;
 		u16 rel;
-		u16 step;
+		u16 step; /* hardware */
 	} ip;
+	int step; /* symbolic */
 
 	u32 rawclk_freq;
 
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
index ee3f45b668b9..2cf13a572ab0 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
@@ -8,6 +8,7 @@
 
 #include "xe_step.h"
 
+#define intel_step xe_step
 #define intel_step_name xe_step_name
 
 #endif /* __INTEL_STEP_H__ */
-- 
2.39.2


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

* ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: identify display steppings in display code (rev2)
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (12 preceding siblings ...)
  2024-08-20 19:40 ` ✗ Fi.CI.BAT: failure " Patchwork
@ 2024-08-21 10:38 ` Patchwork
  2024-08-21 10:38 ` ✗ Fi.CI.SPARSE: " Patchwork
                   ` (3 subsequent siblings)
  17 siblings, 0 replies; 38+ messages in thread
From: Patchwork @ 2024-08-21 10:38 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/display: identify display steppings in display code (rev2)
URL   : https://patchwork.freedesktop.org/series/137534/
State : warning

== Summary ==

Error: dim checkpatch failed
6f5838885c18 drm/xe/display: fix compat IS_DISPLAY_STEP() range end
-:22: WARNING:LONG_LINE: line length of 116 exceeds 100 columns
#22: FILE: drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h:86:
+#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })

-:22: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'first' may be better as '(first)' to avoid precedence issues
#22: FILE: drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h:86:
+#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })

-:22: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'last' may be better as '(last)' to avoid precedence issues
#22: FILE: drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h:86:
+#define IS_DISPLAY_STEP(xe, first, last) ({u8 __step = (xe)->info.step.display; first <= __step && __step < last; })

total: 0 errors, 1 warnings, 2 checks, 8 lines checked
25a08a4fec06 drm/xe/display: remove intel_display_step_name() to simplify
b34f97ec5e6c drm/xe/display: remove the unused compat HAS_GMD_ID()
f47d23de224a drm/xe/step: define more steppings E-J
d4b2b4c419f7 drm/i915/display: rename IS_DISPLAY_IP_RANGE() to IS_DISPLAY_VER_FULL()
-:22: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i915' - possible side-effects?
#22: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:164:
+#define IS_DISPLAY_VER_FULL(__i915, from, until) ( \
 	BUILD_BUG_ON_ZERO((from) < IP_VER(2, 0)) + \
 	(DISPLAY_VER_FULL(__i915) >= (from) && \
 	 DISPLAY_VER_FULL(__i915) <= (until)))

-:22: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'from' - possible side-effects?
#22: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:164:
+#define IS_DISPLAY_VER_FULL(__i915, from, until) ( \
 	BUILD_BUG_ON_ZERO((from) < IP_VER(2, 0)) + \
 	(DISPLAY_VER_FULL(__i915) >= (from) && \
 	 DISPLAY_VER_FULL(__i915) <= (until)))

total: 0 errors, 0 warnings, 2 checks, 24 lines checked
9cfa9a66c18c drm/i915/display: rename IS_DISPLAY_IP_STEP() to IS_DISPLAY_VER_STEP()
-:29: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i915' - possible side-effects?
#29: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:184:
+#define IS_DISPLAY_VER_STEP(__i915, ipver, from, until) \
 	(IS_DISPLAY_VER_FULL((__i915), (ipver), (ipver)) && \
 	 IS_DISPLAY_STEP((__i915), (from), (until)))

-:29: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'ipver' - possible side-effects?
#29: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:184:
+#define IS_DISPLAY_VER_STEP(__i915, ipver, from, until) \
 	(IS_DISPLAY_VER_FULL((__i915), (ipver), (ipver)) && \
 	 IS_DISPLAY_STEP((__i915), (from), (until)))

total: 0 errors, 0 warnings, 2 checks, 78 lines checked
1f1eca290f08 drm/i915/display: identify display steppings in display probe
-:40: CHECK:MACRO_ARG_REUSE: Macro argument reuse '_map' - possible side-effects?
#40: FILE: drivers/gpu/drm/i915/display/intel_display_device.c:29:
+#define STEP_INFO(_map)				\
+	.step_info.map = _map,			\
+	.step_info.size = ARRAY_SIZE(_map)

total: 0 errors, 0 warnings, 1 checks, 416 lines checked
8c6ea698523e drm/i915/display: switch to display detected steppings
-:40: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i915' - possible side-effects?
#40: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:199:
+#define IS_DISPLAY_STEP(__i915, since, until) \
+	(drm_WARN_ON(__to_intel_display(__i915)->drm, INTEL_DISPLAY_STEP(__i915) == STEP_NONE), \
+	 INTEL_DISPLAY_STEP(__i915) >= (since) && INTEL_DISPLAY_STEP(__i915) < (until))

total: 0 errors, 0 warnings, 1 checks, 53 lines checked
0689379bc8fa drm/i915: remove display stepping handling
7d56409883ac drm/xe: remove display stepping handling



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

* ✗ Fi.CI.SPARSE: warning for drm/i915/display: identify display steppings in display code (rev2)
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (13 preceding siblings ...)
  2024-08-21 10:38 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: identify display steppings in display code (rev2) Patchwork
@ 2024-08-21 10:38 ` Patchwork
  2024-08-21 10:49 ` ✓ Fi.CI.BAT: success " Patchwork
                   ` (2 subsequent siblings)
  17 siblings, 0 replies; 38+ messages in thread
From: Patchwork @ 2024-08-21 10:38 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/display: identify display steppings in display code (rev2)
URL   : https://patchwork.freedesktop.org/series/137534/
State : warning

== Summary ==

Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.



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

* ✓ Fi.CI.BAT: success for drm/i915/display: identify display steppings in display code (rev2)
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (14 preceding siblings ...)
  2024-08-21 10:38 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-08-21 10:49 ` Patchwork
  2024-08-21 12:22 ` ✗ Fi.CI.IGT: failure " Patchwork
  2024-08-22 10:52 ` [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
  17 siblings, 0 replies; 38+ messages in thread
From: Patchwork @ 2024-08-21 10:49 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915/display: identify display steppings in display code (rev2)
URL   : https://patchwork.freedesktop.org/series/137534/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_15268 -> Patchwork_137534v2
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (41 -> 38)
------------------------------

  Missing    (3): bat-dg2-11 bat-arlh-2 fi-snb-2520m 

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

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

### IGT changes ###

#### Suppressed ####

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

  * igt@kms_flip@basic-plain-flip@a-edp1:
    - {bat-arlh-3}:       [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/bat-arlh-3/igt@kms_flip@basic-plain-flip@a-edp1.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/bat-arlh-3/igt@kms_flip@basic-plain-flip@a-edp1.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_pipe_crc_basic@nonblocking-crc:
    - bat-arls-5:         NOTRUN -> [INCOMPLETE][3] ([i915#11320])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/bat-arls-5/igt@kms_pipe_crc_basic@nonblocking-crc.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@hangcheck:
    - bat-arls-2:         [DMESG-WARN][4] ([i915#11349]) -> [PASS][5]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/bat-arls-2/igt@i915_selftest@live@hangcheck.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/bat-arls-2/igt@i915_selftest@live@hangcheck.html

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

  [i915#11320]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11320
  [i915#11349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11349


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

  * Linux: CI_DRM_15268 -> Patchwork_137534v2

  CI-20190529: 20190529
  CI_DRM_15268: e455d7c00376d7a71e6fda6694d4e284ca1f70ab @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7981: f4e2ada1adec484cf506b5ec7e9acb3ae62228f1 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_137534v2: e455d7c00376d7a71e6fda6694d4e284ca1f70ab @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

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

* ✗ Fi.CI.IGT: failure for drm/i915/display: identify display steppings in display code (rev2)
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (15 preceding siblings ...)
  2024-08-21 10:49 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2024-08-21 12:22 ` Patchwork
  2024-08-22 10:52 ` [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
  17 siblings, 0 replies; 38+ messages in thread
From: Patchwork @ 2024-08-21 12:22 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915/display: identify display steppings in display code (rev2)
URL   : https://patchwork.freedesktop.org/series/137534/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_15268_full -> Patchwork_137534v2_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_137534v2_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_137534v2_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 (11 -> 10)
------------------------------

  Missing    (1): shard-snb-0 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@gem_exec_balancer@nop:
    - shard-dg2:          [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-6/igt@gem_exec_balancer@nop.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-11/igt@gem_exec_balancer@nop.html

  * igt@gem_mmap_offset@open-flood:
    - shard-dg1:          NOTRUN -> [INCOMPLETE][3]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@gem_mmap_offset@open-flood.html

  * igt@kms_plane_lowres@tiling-y@pipe-c-hdmi-a-1:
    - shard-glk:          NOTRUN -> [INCOMPLETE][4]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-glk9/igt@kms_plane_lowres@tiling-y@pipe-c-hdmi-a-1.html

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

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

### IGT changes ###

#### Issues hit ####

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

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

  * igt@drm_fdinfo@busy-idle@vcs1:
    - shard-dg1:          NOTRUN -> [SKIP][7] ([i915#8414]) +4 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@drm_fdinfo@busy-idle@vcs1.html

  * igt@drm_fdinfo@idle@rcs0:
    - shard-rkl:          NOTRUN -> [FAIL][8] ([i915#7742])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@drm_fdinfo@idle@rcs0.html

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

  * igt@gem_ccs@ctrl-surf-copy-new-ctx:
    - shard-rkl:          NOTRUN -> [SKIP][10] ([i915#9323])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@gem_ccs@ctrl-surf-copy-new-ctx.html

  * igt@gem_ctx_persistence@hang:
    - shard-snb:          NOTRUN -> [SKIP][11] ([i915#1099])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-snb7/igt@gem_ctx_persistence@hang.html

  * igt@gem_ctx_persistence@heartbeat-hang:
    - shard-dg2:          NOTRUN -> [SKIP][12] ([i915#8555]) +1 other test skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-4/igt@gem_ctx_persistence@heartbeat-hang.html

  * igt@gem_ctx_persistence@hostile:
    - shard-tglu:         [PASS][13] -> [FAIL][14] ([i915#11980])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-tglu-8/igt@gem_ctx_persistence@hostile.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-tglu-3/igt@gem_ctx_persistence@hostile.html

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

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

  * igt@gem_exec_balancer@bonded-dual:
    - shard-dg2:          NOTRUN -> [SKIP][17] ([i915#4771])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@gem_exec_balancer@bonded-dual.html

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

  * igt@gem_exec_capture@capture-invisible@lmem0:
    - shard-dg2:          NOTRUN -> [SKIP][19] ([i915#6334]) +1 other test skip
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@gem_exec_capture@capture-invisible@lmem0.html

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

  * igt@gem_exec_capture@capture@vecs0-lmem0:
    - shard-dg2:          NOTRUN -> [FAIL][21] ([i915#11965]) +3 other tests fail
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@gem_exec_capture@capture@vecs0-lmem0.html

  * igt@gem_exec_endless@dispatch@bcs0:
    - shard-dg2:          [PASS][22] -> [TIMEOUT][23] ([i915#3778] / [i915#7016])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-6/igt@gem_exec_endless@dispatch@bcs0.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-11/igt@gem_exec_endless@dispatch@bcs0.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-glk:          [PASS][24] -> [FAIL][25] ([i915#2846])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-glk8/igt@gem_exec_fair@basic-deadline.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-glk5/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none-rrul@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][26] ([i915#2842])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-glk8/igt@gem_exec_fair@basic-none-rrul@rcs0.html

  * igt@gem_exec_fair@basic-pace-share:
    - shard-dg2:          NOTRUN -> [SKIP][27] ([i915#3539] / [i915#4852]) +1 other test skip
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-7/igt@gem_exec_fair@basic-pace-share.html

  * igt@gem_exec_fair@basic-sync:
    - shard-dg1:          NOTRUN -> [SKIP][28] ([i915#3539])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@gem_exec_fair@basic-sync.html

  * igt@gem_exec_fair@basic-throttle:
    - shard-dg2:          NOTRUN -> [SKIP][29] ([i915#3539]) +2 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@gem_exec_fair@basic-throttle.html
    - shard-mtlp:         NOTRUN -> [SKIP][30] ([i915#4473] / [i915#4771])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@gem_exec_fair@basic-throttle.html

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

  * igt@gem_exec_fence@concurrent:
    - shard-dg2:          NOTRUN -> [SKIP][32] ([i915#4812])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-7/igt@gem_exec_fence@concurrent.html

  * igt@gem_exec_flush@basic-uc-rw-default:
    - shard-dg1:          NOTRUN -> [SKIP][33] ([i915#3539] / [i915#4852]) +1 other test skip
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@gem_exec_flush@basic-uc-rw-default.html

  * igt@gem_exec_params@secure-non-master:
    - shard-dg2:          NOTRUN -> [SKIP][34] +14 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@gem_exec_params@secure-non-master.html

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

  * igt@gem_exec_reloc@basic-gtt-read:
    - shard-dg2:          NOTRUN -> [SKIP][36] ([i915#3281]) +4 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@gem_exec_reloc@basic-gtt-read.html
    - shard-rkl:          NOTRUN -> [SKIP][37] ([i915#3281]) +4 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-read.html

  * igt@gem_exec_reloc@basic-write-wc-noreloc:
    - shard-mtlp:         NOTRUN -> [SKIP][38] ([i915#3281])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@gem_exec_reloc@basic-write-wc-noreloc.html

  * igt@gem_exec_schedule@deep@rcs0:
    - shard-mtlp:         NOTRUN -> [SKIP][39] ([i915#4537])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@gem_exec_schedule@deep@rcs0.html

  * igt@gem_exec_suspend@basic-s4-devices@smem:
    - shard-rkl:          NOTRUN -> [ABORT][40] ([i915#7975] / [i915#8213]) +1 other test abort
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-2/igt@gem_exec_suspend@basic-s4-devices@smem.html

  * igt@gem_fenced_exec_thrash@no-spare-fences-busy:
    - shard-dg1:          NOTRUN -> [SKIP][41] ([i915#4860])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@gem_fenced_exec_thrash@no-spare-fences-busy.html

  * igt@gem_lmem_swapping@basic:
    - shard-mtlp:         NOTRUN -> [SKIP][42] ([i915#4613])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@gem_lmem_swapping@basic.html

  * igt@gem_lmem_swapping@heavy-verify-random-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][43] ([i915#4613]) +1 other test skip
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-5/igt@gem_lmem_swapping@heavy-verify-random-ccs.html

  * igt@gem_lmem_swapping@smem-oom:
    - shard-glk:          NOTRUN -> [SKIP][44] ([i915#4613]) +4 other tests skip
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-glk9/igt@gem_lmem_swapping@smem-oom.html

  * igt@gem_media_vme:
    - shard-rkl:          NOTRUN -> [SKIP][45] ([i915#284])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-2/igt@gem_media_vme.html

  * igt@gem_mmap_gtt@basic-write-cpu-read-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][46] ([i915#4077]) +1 other test skip
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@gem_mmap_gtt@basic-write-cpu-read-gtt.html

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

  * igt@gem_mmap_wc@bad-object:
    - shard-dg2:          NOTRUN -> [SKIP][48] ([i915#4083]) +3 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@gem_mmap_wc@bad-object.html

  * igt@gem_mmap_wc@bad-offset:
    - shard-mtlp:         NOTRUN -> [SKIP][49] ([i915#4083]) +1 other test skip
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@gem_mmap_wc@bad-offset.html

  * igt@gem_pread@bench:
    - shard-dg1:          NOTRUN -> [SKIP][50] ([i915#3282])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@gem_pread@bench.html

  * igt@gem_pread@exhaustion:
    - shard-glk:          NOTRUN -> [WARN][51] ([i915#2658])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-glk8/igt@gem_pread@exhaustion.html

  * igt@gem_pread@snoop:
    - shard-dg2:          NOTRUN -> [SKIP][52] ([i915#3282]) +2 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@gem_pread@snoop.html

  * igt@gem_pwrite@basic-exhaustion:
    - shard-rkl:          NOTRUN -> [SKIP][53] ([i915#3282]) +5 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-2/igt@gem_pwrite@basic-exhaustion.html

  * igt@gem_pxp@protected-encrypted-src-copy-not-readible:
    - shard-rkl:          NOTRUN -> [SKIP][54] ([i915#4270]) +2 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-2/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html

  * igt@gem_pxp@regular-baseline-src-copy-readible:
    - shard-dg2:          NOTRUN -> [SKIP][55] ([i915#4270]) +1 other test skip
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@gem_pxp@regular-baseline-src-copy-readible.html

  * igt@gem_pxp@reject-modify-context-protection-off-3:
    - shard-snb:          NOTRUN -> [SKIP][56] +70 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-snb7/igt@gem_pxp@reject-modify-context-protection-off-3.html

  * igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][57] ([i915#8428]) +1 other test skip
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html

  * igt@gem_render_copy@y-tiled-to-vebox-linear:
    - shard-dg2:          NOTRUN -> [SKIP][58] ([i915#5190] / [i915#8428]) +3 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@gem_render_copy@y-tiled-to-vebox-linear.html

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

  * igt@gem_set_tiling_vs_pwrite:
    - shard-dg2:          NOTRUN -> [SKIP][60] ([i915#4079])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@gem_set_tiling_vs_pwrite.html

  * igt@gem_softpin@allocator-evict@vcs0:
    - shard-dg2:          [PASS][61] -> [INCOMPLETE][62] ([i915#10652])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-4/igt@gem_softpin@allocator-evict@vcs0.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-10/igt@gem_softpin@allocator-evict@vcs0.html

  * igt@gem_userptr_blits@dmabuf-unsync:
    - shard-dg2:          NOTRUN -> [SKIP][63] ([i915#3297]) +1 other test skip
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-4/igt@gem_userptr_blits@dmabuf-unsync.html

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

  * igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy:
    - shard-dg2:          NOTRUN -> [SKIP][65] ([i915#3297] / [i915#4880])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy.html
    - shard-mtlp:         NOTRUN -> [SKIP][66] ([i915#3297])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy.html

  * igt@gem_userptr_blits@unsync-unmap:
    - shard-rkl:          NOTRUN -> [SKIP][67] ([i915#3297]) +1 other test skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-2/igt@gem_userptr_blits@unsync-unmap.html

  * igt@gen3_render_tiledy_blits:
    - shard-mtlp:         NOTRUN -> [SKIP][68] +6 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@gen3_render_tiledy_blits.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-glk:          NOTRUN -> [ABORT][69] ([i915#5566])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-glk8/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@basic-rejected-ctx-param:
    - shard-dg1:          NOTRUN -> [SKIP][70] ([i915#2527])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@gen9_exec_parse@basic-rejected-ctx-param.html

  * igt@gen9_exec_parse@bb-start-param:
    - shard-dg2:          NOTRUN -> [SKIP][71] ([i915#2856]) +2 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@gen9_exec_parse@bb-start-param.html
    - shard-rkl:          NOTRUN -> [SKIP][72] ([i915#2527]) +1 other test skip
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-3/igt@gen9_exec_parse@bb-start-param.html
    - shard-mtlp:         NOTRUN -> [SKIP][73] ([i915#2856])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@gen9_exec_parse@bb-start-param.html

  * igt@i915_module_load@load:
    - shard-glk:          NOTRUN -> [SKIP][74] ([i915#6227])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-glk9/igt@i915_module_load@load.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-glk:          [PASS][75] -> [ABORT][76] ([i915#9820])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-glk8/igt@i915_module_load@reload-with-fault-injection.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-glk6/igt@i915_module_load@reload-with-fault-injection.html
    - shard-dg2:          NOTRUN -> [ABORT][77] ([i915#9820])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-7/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0:
    - shard-dg1:          [PASS][78] -> [FAIL][79] ([i915#3591])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg1-15/igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-16/igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0.html

  * igt@i915_pm_rps@min-max-config-loaded:
    - shard-dg2:          NOTRUN -> [SKIP][80] ([i915#11681] / [i915#6621])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-4/igt@i915_pm_rps@min-max-config-loaded.html

  * igt@i915_pm_rps@thresholds-park:
    - shard-dg2:          NOTRUN -> [SKIP][81] ([i915#11681]) +1 other test skip
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-7/igt@i915_pm_rps@thresholds-park.html

  * igt@i915_pm_sseu@full-enable:
    - shard-rkl:          NOTRUN -> [SKIP][82] ([i915#4387])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-5/igt@i915_pm_sseu@full-enable.html

  * igt@i915_selftest@live@hangcheck:
    - shard-mtlp:         [PASS][83] -> [DMESG-WARN][84] ([i915#11349])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-mtlp-2/igt@i915_selftest@live@hangcheck.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-4/igt@i915_selftest@live@hangcheck.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-rkl:          NOTRUN -> [INCOMPLETE][85] ([i915#4817])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-3/igt@i915_suspend@basic-s3-without-i915.html
    - shard-mtlp:         NOTRUN -> [SKIP][86] ([i915#6645])
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling:
    - shard-dg1:          NOTRUN -> [SKIP][87] ([i915#4212])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-4-y-rc-ccs:
    - shard-dg1:          NOTRUN -> [SKIP][88] ([i915#8709]) +7 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-14/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-4-y-rc-ccs.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-dp-4-4-rc-ccs-cc:
    - shard-dg2:          NOTRUN -> [SKIP][89] ([i915#8709]) +11 other tests skip
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-11/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-dp-4-4-rc-ccs-cc.html

  * igt@kms_atomic_transition@modeset-transition@2x-outputs:
    - shard-glk:          NOTRUN -> [FAIL][90] ([i915#11859])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-glk8/igt@kms_atomic_transition@modeset-transition@2x-outputs.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1:
    - shard-mtlp:         [PASS][91] -> [FAIL][92] ([i915#11808] / [i915#5956])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-mtlp-3/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-5/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels@pipe-a-edp-1.html

  * igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-1:
    - shard-tglu:         [PASS][93] -> [FAIL][94] ([i915#11808])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-tglu-5/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-1.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-tglu-7/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-1.html

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

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180:
    - shard-dg1:          NOTRUN -> [SKIP][96] ([i915#4538] / [i915#5286]) +1 other test skip
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-mtlp:         NOTRUN -> [DMESG-FAIL][97] ([i915#11627] / [i915#2017])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@linear-64bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][98] ([i915#3638]) +4 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-3/igt@kms_big_fb@linear-64bpp-rotate-90.html

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

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

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-90:
    - shard-dg1:          NOTRUN -> [SKIP][101] ([i915#4538])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_big_fb@yf-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-rkl:          NOTRUN -> [SKIP][102] +28 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-2/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_big_joiner@basic-force-joiner:
    - shard-dg1:          NOTRUN -> [SKIP][103] ([i915#10656])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_big_joiner@basic-force-joiner.html

  * igt@kms_ccs@bad-aux-stride-y-tiled-ccs@pipe-c-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][104] ([i915#6095]) +55 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-14/igt@kms_ccs@bad-aux-stride-y-tiled-ccs@pipe-c-hdmi-a-4.html

  * igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][105] ([i915#10307] / [i915#10434] / [i915#6095]) +3 other tests skip
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2:
    - shard-glk:          NOTRUN -> [SKIP][106] +157 other tests skip
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-glk8/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs@pipe-a-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][107] ([i915#6095]) +11 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs@pipe-a-edp-1.html

  * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][108] ([i915#10307] / [i915#6095]) +155 other tests skip
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-10/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-d-hdmi-a-1.html

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

  * igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][110] ([i915#11616] / [i915#7213]) +3 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1.html

  * igt@kms_chamelium_edid@dp-edid-read:
    - shard-dg1:          NOTRUN -> [SKIP][111] ([i915#7828]) +1 other test skip
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_chamelium_edid@dp-edid-read.html

  * igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k:
    - shard-dg2:          NOTRUN -> [SKIP][112] ([i915#7828]) +8 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k.html

  * igt@kms_chamelium_frames@hdmi-crc-single:
    - shard-rkl:          NOTRUN -> [SKIP][113] ([i915#7828]) +9 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@kms_chamelium_frames@hdmi-crc-single.html

  * igt@kms_chamelium_hpd@dp-hpd-for-each-pipe:
    - shard-mtlp:         NOTRUN -> [SKIP][114] ([i915#7828]) +2 other tests skip
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][115] ([i915#7118] / [i915#9424])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-5/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-dg2:          NOTRUN -> [SKIP][116] ([i915#3299]) +1 other test skip
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@kms_content_protection@dp-mst-lic-type-0.html
    - shard-rkl:          NOTRUN -> [SKIP][117] ([i915#3116])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@kms_content_protection@dp-mst-lic-type-0.html

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

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

  * igt@kms_content_protection@type1:
    - shard-rkl:          NOTRUN -> [SKIP][120] ([i915#7118] / [i915#9424])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-5/igt@kms_content_protection@type1.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x512:
    - shard-dg2:          NOTRUN -> [SKIP][121] ([i915#11453])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html
    - shard-rkl:          NOTRUN -> [SKIP][122] ([i915#11453])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html

  * igt@kms_cursor_crc@cursor-sliding-32x32:
    - shard-mtlp:         NOTRUN -> [SKIP][123] ([i915#3555] / [i915#8814]) +2 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_cursor_crc@cursor-sliding-32x32.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - shard-rkl:          NOTRUN -> [SKIP][124] ([i915#4103])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-5/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-legacy:
    - shard-mtlp:         NOTRUN -> [SKIP][125] ([i915#9809]) +1 other test skip
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-dg1:          NOTRUN -> [SKIP][126] ([i915#4103] / [i915#4213])
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-dg2:          NOTRUN -> [SKIP][127] ([i915#3555]) +6 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@kms_display_modes@extended-mode-basic.html
    - shard-rkl:          NOTRUN -> [SKIP][128] ([i915#3555]) +6 other tests skip
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][129] ([i915#3804])
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-5/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2.html

  * igt@kms_dp_aux_dev:
    - shard-dg2:          NOTRUN -> [SKIP][130] ([i915#1257])
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@kms_dp_aux_dev.html
    - shard-rkl:          NOTRUN -> [SKIP][131] ([i915#1257])
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-3/igt@kms_dp_aux_dev.html

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

  * igt@kms_feature_discovery@chamelium:
    - shard-dg1:          NOTRUN -> [SKIP][133] ([i915#4854])
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-dg2:          NOTRUN -> [SKIP][134] ([i915#9337])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@kms_feature_discovery@dp-mst.html
    - shard-rkl:          NOTRUN -> [SKIP][135] ([i915#9337])
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-3/igt@kms_feature_discovery@dp-mst.html
    - shard-mtlp:         NOTRUN -> [SKIP][136] ([i915#9337])
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_feature_discovery@psr1:
    - shard-dg2:          NOTRUN -> [SKIP][137] ([i915#658])
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-4/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip@2x-flip-vs-absolute-wf_vblank:
    - shard-mtlp:         NOTRUN -> [SKIP][138] ([i915#3637]) +1 other test skip
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_flip@2x-flip-vs-absolute-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible:
    - shard-dg1:          NOTRUN -> [SKIP][139] ([i915#9934]) +1 other test skip
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible.html

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

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

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

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][143] ([i915#2672]) +1 other test skip
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-4/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-dg1:          NOTRUN -> [SKIP][144] ([i915#2587] / [i915#2672])
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-dg2:          NOTRUN -> [SKIP][145] ([i915#8708]) +16 other tests skip
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-move:
    - shard-mtlp:         NOTRUN -> [SKIP][146] ([i915#1825]) +6 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt:
    - shard-dg1:          NOTRUN -> [SKIP][147] +3 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][148] ([i915#8708]) +2 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-mmap-gtt.html

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

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render:
    - shard-dg2:          NOTRUN -> [SKIP][150] ([i915#5354]) +24 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite:
    - shard-dg2:          NOTRUN -> [SKIP][151] ([i915#10433] / [i915#3458]) +1 other test skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-render:
    - shard-dg2:          NOTRUN -> [SKIP][152] ([i915#3458]) +11 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render:
    - shard-rkl:          NOTRUN -> [SKIP][153] ([i915#3023]) +14 other tests skip
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite:
    - shard-dg1:          NOTRUN -> [SKIP][154] ([i915#3458]) +3 other tests skip
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite.html

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

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc:
    - shard-dg1:          NOTRUN -> [SKIP][156] ([i915#8708]) +5 other tests skip
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_hdr@static-swap:
    - shard-dg2:          NOTRUN -> [SKIP][157] ([i915#3555] / [i915#8228])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-4/igt@kms_hdr@static-swap.html

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

  * igt@kms_plane@pixel-format-source-clamping@pipe-a-plane-3:
    - shard-tglu:         [PASS][159] -> [ABORT][160] ([i915#10354])
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-tglu-9/igt@kms_plane@pixel-format-source-clamping@pipe-a-plane-3.html
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-tglu-8/igt@kms_plane@pixel-format-source-clamping@pipe-a-plane-3.html

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

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-dg2:          NOTRUN -> [SKIP][162] ([i915#6953] / [i915#9423])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-5/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4:
    - shard-dg1:          [PASS][163] -> [FAIL][164] ([i915#8292])
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg1-15/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4.html
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-18/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4.html

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

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

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-c-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][167] ([i915#5176]) +3 other tests skip
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-c-edp-1.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][168] ([i915#9423]) +3 other tests skip
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b-hdmi-a-2.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][169] ([i915#5235]) +1 other test skip
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-4/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b-hdmi-a-1.html

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

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][171] ([i915#9728]) +5 other tests skip
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-2/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b-hdmi-a-1.html

  * igt@kms_pm_backlight@fade:
    - shard-rkl:          NOTRUN -> [SKIP][172] ([i915#5354])
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@kms_pm_backlight@fade.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-mtlp:         NOTRUN -> [SKIP][173] ([i915#10139])
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_pm_dc@dc6-dpms.html
    - shard-dg2:          NOTRUN -> [SKIP][174] ([i915#5978])
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@kms_pm_dc@dc6-dpms.html
    - shard-rkl:          NOTRUN -> [SKIP][175] ([i915#3361])
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-3/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-dg1:          NOTRUN -> [SKIP][176] ([i915#9685])
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-dg2:          [PASS][177] -> [SKIP][178] ([i915#9519])
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-8/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-3/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-rkl:          [PASS][179] -> [SKIP][180] ([i915#9519]) +2 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-2/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@fences-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][181] ([i915#4077]) +8 other tests skip
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-4/igt@kms_pm_rpm@fences-dpms.html

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

  * igt@kms_psr2_sf@fbc-overlay-plane-update-continuous-sf:
    - shard-dg2:          NOTRUN -> [SKIP][183] ([i915#11520]) +3 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@kms_psr2_sf@fbc-overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@fbc-overlay-plane-update-continuous-sf@psr2-pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][184] ([i915#9808]) +1 other test skip
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_psr2_sf@fbc-overlay-plane-update-continuous-sf@psr2-pipe-b-edp-1.html

  * igt@kms_psr2_sf@fbc-overlay-plane-update-sf-dmg-area:
    - shard-dg1:          NOTRUN -> [SKIP][185] ([i915#11520])
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_psr2_sf@fbc-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@overlay-plane-update-continuous-sf:
    - shard-rkl:          NOTRUN -> [SKIP][186] ([i915#11520]) +3 other tests skip
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@kms_psr2_sf@overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-rkl:          NOTRUN -> [SKIP][187] ([i915#9683])
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-5/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@fbc-pr-sprite-blt:
    - shard-dg2:          NOTRUN -> [SKIP][188] ([i915#1072] / [i915#9732]) +16 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@kms_psr@fbc-pr-sprite-blt.html

  * igt@kms_psr@fbc-pr-sprite-plane-move:
    - shard-mtlp:         NOTRUN -> [SKIP][189] ([i915#9688]) +1 other test skip
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_psr@fbc-pr-sprite-plane-move.html

  * igt@kms_psr@fbc-psr2-sprite-render:
    - shard-rkl:          NOTRUN -> [SKIP][190] ([i915#1072] / [i915#9732]) +17 other tests skip
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-2/igt@kms_psr@fbc-psr2-sprite-render.html

  * igt@kms_psr@psr-sprite-mmap-cpu:
    - shard-dg1:          NOTRUN -> [SKIP][191] ([i915#1072] / [i915#9732]) +5 other tests skip
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_psr@psr-sprite-mmap-cpu.html

  * igt@kms_rotation_crc@exhaust-fences:
    - shard-dg2:          NOTRUN -> [SKIP][192] ([i915#4235])
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-4/igt@kms_rotation_crc@exhaust-fences.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-dg2:          NOTRUN -> [SKIP][193] ([i915#11131] / [i915#5190])
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-4/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1:
    - shard-snb:          [PASS][194] -> [FAIL][195] ([i915#9196])
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-snb5/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-snb4/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [FAIL][196] ([i915#9196])
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-3/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-2.html

  * igt@kms_vrr@flip-basic:
    - shard-mtlp:         NOTRUN -> [SKIP][197] ([i915#3555] / [i915#8808])
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@kms_vrr@flip-basic.html

  * igt@kms_vrr@negative-basic:
    - shard-dg1:          NOTRUN -> [SKIP][198] ([i915#3555] / [i915#9906])
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@kms_vrr@negative-basic.html

  * igt@kms_writeback@writeback-invalid-parameters:
    - shard-dg2:          NOTRUN -> [SKIP][199] ([i915#2437])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@kms_writeback@writeback-invalid-parameters.html
    - shard-rkl:          NOTRUN -> [SKIP][200] ([i915#2437])
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@kms_writeback@writeback-invalid-parameters.html

  * igt@perf_pmu@event-wait@rcs0:
    - shard-mtlp:         NOTRUN -> [SKIP][201] ([i915#3555] / [i915#8807])
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@perf_pmu@event-wait@rcs0.html

  * igt@prime_vgem@basic-read:
    - shard-dg2:          NOTRUN -> [SKIP][202] ([i915#3291] / [i915#3708])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@prime_vgem@basic-read.html

  * igt@prime_vgem@fence-read-hang:
    - shard-mtlp:         NOTRUN -> [SKIP][203] ([i915#3708]) +1 other test skip
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-2/igt@prime_vgem@fence-read-hang.html
    - shard-dg2:          NOTRUN -> [SKIP][204] ([i915#3708]) +1 other test skip
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-8/igt@prime_vgem@fence-read-hang.html
    - shard-rkl:          NOTRUN -> [SKIP][205] ([i915#3708]) +1 other test skip
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-3/igt@prime_vgem@fence-read-hang.html

  * igt@sriov_basic@enable-vfs-autoprobe-on:
    - shard-dg2:          NOTRUN -> [SKIP][206] ([i915#9917])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@sriov_basic@enable-vfs-autoprobe-on.html
    - shard-rkl:          NOTRUN -> [SKIP][207] ([i915#9917])
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@sriov_basic@enable-vfs-autoprobe-on.html

  * igt@syncobj_timeline@invalid-wait-zero-handles:
    - shard-dg2:          NOTRUN -> [FAIL][208] ([i915#9781])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@syncobj_timeline@invalid-wait-zero-handles.html
    - shard-rkl:          NOTRUN -> [FAIL][209] ([i915#9781])
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-6/igt@syncobj_timeline@invalid-wait-zero-handles.html

  
#### Possible fixes ####

  * igt@drm_fdinfo@most-busy-idle-check-all@rcs0:
    - shard-rkl:          [FAIL][210] ([i915#7742]) -> [PASS][211]
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-rkl-6/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-2/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html

  * igt@drm_fdinfo@virtual-idle:
    - shard-rkl:          [FAIL][212] ([i915#11900] / [i915#7742]) -> [PASS][213]
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-rkl-1/igt@drm_fdinfo@virtual-idle.html
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-5/igt@drm_fdinfo@virtual-idle.html

  * igt@gem_exec_fair@basic-none@vcs0:
    - shard-rkl:          [FAIL][214] ([i915#2842]) -> [PASS][215] +1 other test pass
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-rkl-5/igt@gem_exec_fair@basic-none@vcs0.html
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-3/igt@gem_exec_fair@basic-none@vcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-tglu:         [FAIL][216] ([i915#2842]) -> [PASS][217]
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-tglu-8/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-tglu-3/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_lmem_swapping@smem-oom@lmem0:
    - shard-dg2:          [TIMEOUT][218] ([i915#5493]) -> [PASS][219]
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-8/igt@gem_lmem_swapping@smem-oom@lmem0.html
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-3/igt@gem_lmem_swapping@smem-oom@lmem0.html

  * igt@gem_softpin@allocator-evict@vcs1:
    - shard-dg1:          [INCOMPLETE][220] ([i915#10652]) -> [PASS][221]
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg1-18/igt@gem_softpin@allocator-evict@vcs1.html
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg1-15/igt@gem_softpin@allocator-evict@vcs1.html

  * igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1:
    - shard-mtlp:         [FAIL][222] ([i915#11808] / [i915#5956]) -> [PASS][223]
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-mtlp-5/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-6/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html

  * igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a1:
    - shard-tglu:         [DMESG-FAIL][224] ([i915#1982]) -> [PASS][225]
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-tglu-9/igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a1.html
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-tglu-9/igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a1.html

  * igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a1:
    - shard-tglu:         [INCOMPLETE][226] -> [PASS][227]
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-tglu-9/igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a1.html
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-tglu-9/igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt:
    - shard-dg2:          [DMESG-WARN][228] ([i915#1982]) -> [PASS][229]
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite:
    - shard-dg2:          [FAIL][230] ([i915#6880]) -> [PASS][231]
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite.html
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-10/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite.html

  * igt@kms_plane_lowres@tiling-y@pipe-a-hdmi-a-1:
    - shard-glk:          [INCOMPLETE][232] ([i915#9878]) -> [PASS][233]
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-glk7/igt@kms_plane_lowres@tiling-y@pipe-a-hdmi-a-1.html
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-glk9/igt@kms_plane_lowres@tiling-y@pipe-a-hdmi-a-1.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-dg2:          [SKIP][234] ([i915#9519]) -> [PASS][235] +1 other test pass
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-2/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-7/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
    - shard-rkl:          [SKIP][236] ([i915#9519]) -> [PASS][237]
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-rkl-6/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-2/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@kms_sysfs_edid_timing:
    - shard-dg2:          [FAIL][238] ([IGT#2]) -> [PASS][239]
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-6/igt@kms_sysfs_edid_timing.html
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-11/igt@kms_sysfs_edid_timing.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1:
    - shard-snb:          [FAIL][240] ([i915#9196]) -> [PASS][241]
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-snb5/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-snb4/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html

  
#### Warnings ####

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-tglu:         [ABORT][242] ([i915#9820]) -> [ABORT][243] ([i915#10887] / [i915#9820])
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-tglu-8/igt@i915_module_load@reload-with-fault-injection.html
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-tglu-3/igt@i915_module_load@reload-with-fault-injection.html
    - shard-mtlp:         [ABORT][244] ([i915#10131] / [i915#10887] / [i915#9820]) -> [ABORT][245] ([i915#11231])
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-mtlp-6/igt@i915_module_load@reload-with-fault-injection.html
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-mtlp-4/igt@i915_module_load@reload-with-fault-injection.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-dg2:          [SKIP][246] ([i915#11453] / [i915#3359]) -> [SKIP][247] ([i915#11453])
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-11/igt@kms_cursor_crc@cursor-onscreen-512x170.html
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-5/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-dg2:          [SKIP][248] ([i915#11453]) -> [SKIP][249] ([i915#11453] / [i915#3359]) +1 other test skip
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-6/igt@kms_cursor_crc@cursor-random-512x170.html
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-11/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu:
    - shard-dg2:          [SKIP][250] ([i915#10433] / [i915#3458]) -> [SKIP][251] ([i915#3458]) +1 other test skip
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu.html
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-10/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-cpu.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-rkl:          [SKIP][252] ([i915#4070] / [i915#4816]) -> [SKIP][253] ([i915#4816])
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-rkl-5/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-rkl-3/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_psr@psr2-cursor-blt:
    - shard-dg2:          [SKIP][254] ([i915#1072] / [i915#9732]) -> [SKIP][255] ([i915#1072] / [i915#9673] / [i915#9732]) +2 other tests skip
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-6/igt@kms_psr@psr2-cursor-blt.html
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-11/igt@kms_psr@psr2-cursor-blt.html

  * igt@kms_psr@psr2-cursor-plane-move:
    - shard-dg2:          [SKIP][256] ([i915#1072] / [i915#9673] / [i915#9732]) -> [SKIP][257] ([i915#1072] / [i915#9732]) +8 other tests skip
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15268/shard-dg2-11/igt@kms_psr@psr2-cursor-plane-move.html
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_137534v2/shard-dg2-6/igt@kms_psr@psr2-cursor-plane-move.html

  
  [IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
  [i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
  [i915#10139]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10139
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10354
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10652]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10652
  [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10887]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10887
  [i915#1099]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1099
  [i915#11131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11131
  [i915#11231]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11231
  [i915#11349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11349
  [i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#11616]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11616
  [i915#11627]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11627
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#11808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11808
  [i915#11859]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11859
  [i915#11900]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11900
  [i915#11965]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11965
  [i915#11980]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11980
  [i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
  [i915#2017]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2017
  [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
  [i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359
  [i915#3361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3591]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3778]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3778
  [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#4070]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4235
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387
  [i915#4473]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4473
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
  [i915#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816
  [i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
  [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
  [i915#5176]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5176
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
  [i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493
  [i915#5566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5566
  [i915#5882]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5882
  [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
  [i915#5978]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5978
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6227]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6227
  [i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#6645]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6645
  [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
  [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
  [i915#7016]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7016
  [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
  [i915#7213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7213
  [i915#7742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7742
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7862]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7862
  [i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
  [i915#8213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8213
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8292
  [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
  [i915#8807]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8807
  [i915#8808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8808
  [i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
  [i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
  [i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
  [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
  [i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9728]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9728
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9781
  [i915#9808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9808
  [i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
  [i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
  [i915#9878]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9878
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934


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

  * Linux: CI_DRM_15268 -> Patchwork_137534v2

  CI-20190529: 20190529
  CI_DRM_15268: e455d7c00376d7a71e6fda6694d4e284ca1f70ab @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7981: f4e2ada1adec484cf506b5ec7e9acb3ae62228f1 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_137534v2: e455d7c00376d7a71e6fda6694d4e284ca1f70ab @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

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

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

* Re: [PATCH v2] drm/i915/display: identify display steppings in display probe
  2024-08-21  9:50   ` [PATCH v2] " Jani Nikula
@ 2024-08-21 13:48     ` Matt Roper
  2024-08-21 13:52     ` Gustavo Sousa
  1 sibling, 0 replies; 38+ messages in thread
From: Matt Roper @ 2024-08-21 13:48 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, lucas.demarchi, rodrigo.vivi

On Wed, Aug 21, 2024 at 12:50:36PM +0300, Jani Nikula wrote:
> Both i915 and xe have code to identify display steppings. Start
> deduplicating this by, uh, adding a third copy in display code. This is
> not yet used for anything other than debug logging. We'll switch over
> later.
> 
> For platforms before GMD ID, attach the mapping from PCI revision to
> stepping in the platform and subplatform descriptors. This is a
> considerably cleaner approach than having it completely separate.
> 
> Also add a separate field for stepping in display runtime info,
> preserving the value from GMD ID.
> 
> v2: Handle NULL subdesc (Matt)
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> ---
>  .../drm/i915/display/intel_display_device.c   | 225 +++++++++++++++++-
>  .../drm/i915/display/intel_display_device.h   |   3 +-
>  .../drm/xe/compat-i915-headers/intel_step.h   |   1 +
>  3 files changed, 217 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
> index b28d55fa0c3a..dfa923672492 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.c
> @@ -16,14 +16,25 @@
>  #include "intel_display_power.h"
>  #include "intel_display_reg_defs.h"
>  #include "intel_fbc.h"
> +#include "intel_step.h"
>  
>  __diag_push();
>  __diag_ignore_all("-Woverride-init", "Allow field initialization overrides for display info");
>  
> +struct stepping_desc {
> +	const enum intel_step *map; /* revid to step map */
> +	size_t size; /* map size */
> +};
> +
> +#define STEP_INFO(_map)				\
> +	.step_info.map = _map,			\
> +	.step_info.size = ARRAY_SIZE(_map)
> +
>  struct subplatform_desc {
>  	enum intel_display_subplatform subplatform;
>  	const char *name;
>  	const u16 *pciidlist;
> +	struct stepping_desc step_info;
>  };
>  
>  struct platform_desc {
> @@ -31,6 +42,7 @@ struct platform_desc {
>  	const char *name;
>  	const struct subplatform_desc *subplatforms;
>  	const struct intel_display_device_info *info; /* NULL for GMD ID */
> +	struct stepping_desc step_info;
>  };
>  
>  #define PLATFORM(_platform)			 \
> @@ -610,6 +622,13 @@ static const u16 skl_ulx_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step skl_steppings[] = {
> +	[0x6] = STEP_G0,
> +	[0x7] = STEP_H0,
> +	[0x9] = STEP_J0,
> +	[0xA] = STEP_I1,
> +};
> +
>  static const struct platform_desc skl_desc = {
>  	PLATFORM(SKYLAKE),
>  	.subplatforms = (const struct subplatform_desc[]) {
> @@ -618,6 +637,7 @@ static const struct platform_desc skl_desc = {
>  		{},
>  	},
>  	.info = &skl_display,
> +	STEP_INFO(skl_steppings),
>  };
>  
>  static const u16 kbl_ult_ids[] = {
> @@ -634,6 +654,16 @@ static const u16 kbl_ulx_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step kbl_steppings[] = {
> +	[1] = STEP_B0,
> +	[2] = STEP_B0,
> +	[3] = STEP_B0,
> +	[4] = STEP_C0,
> +	[5] = STEP_B1,
> +	[6] = STEP_B1,
> +	[7] = STEP_C0,
> +};
> +
>  static const struct platform_desc kbl_desc = {
>  	PLATFORM(KABYLAKE),
>  	.subplatforms = (const struct subplatform_desc[]) {
> @@ -642,6 +672,7 @@ static const struct platform_desc kbl_desc = {
>  		{},
>  	},
>  	.info = &skl_display,
> +	STEP_INFO(kbl_steppings),
>  };
>  
>  static const u16 cfl_ult_ids[] = {
> @@ -706,6 +737,13 @@ static const struct platform_desc cml_desc = {
>  		BIT(TRANSCODER_DSI_A) | BIT(TRANSCODER_DSI_C), \
>  	.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C)
>  
> +static const enum intel_step bxt_steppings[] = {
> +	[0xA] = STEP_C0,
> +	[0xB] = STEP_C0,
> +	[0xC] = STEP_D0,
> +	[0xD] = STEP_E0,
> +};
> +
>  static const struct platform_desc bxt_desc = {
>  	PLATFORM(BROXTON),
>  	.info = &(const struct intel_display_device_info) {
> @@ -714,6 +752,11 @@ static const struct platform_desc bxt_desc = {
>  
>  		.__runtime_defaults.ip.ver = 9,
>  	},
> +	STEP_INFO(bxt_steppings),
> +};
> +
> +static const enum intel_step glk_steppings[] = {
> +	[3] = STEP_B0,
>  };
>  
>  static const struct platform_desc glk_desc = {
> @@ -725,6 +768,7 @@ static const struct platform_desc glk_desc = {
>  
>  		.__runtime_defaults.ip.ver = 10,
>  	},
> +	STEP_INFO(glk_steppings),
>  };
>  
>  #define ICL_DISPLAY \
> @@ -773,6 +817,10 @@ static const u16 icl_port_f_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step icl_steppings[] = {
> +	[7] = STEP_D0,
> +};
> +
>  static const struct platform_desc icl_desc = {
>  	PLATFORM(ICELAKE),
>  	.subplatforms = (const struct subplatform_desc[]) {
> @@ -784,6 +832,7 @@ static const struct platform_desc icl_desc = {
>  
>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D) | BIT(PORT_E),
>  	},
> +	STEP_INFO(icl_steppings),
>  };
>  
>  static const struct intel_display_device_info jsl_ehl_display = {
> @@ -792,14 +841,21 @@ static const struct intel_display_device_info jsl_ehl_display = {
>  	.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D),
>  };
>  
> +static const enum intel_step jsl_ehl_steppings[] = {
> +	[0] = STEP_A0,
> +	[1] = STEP_B0,
> +};
> +
>  static const struct platform_desc jsl_desc = {
>  	PLATFORM(JASPERLAKE),
>  	.info = &jsl_ehl_display,
> +	STEP_INFO(jsl_ehl_steppings),
>  };
>  
>  static const struct platform_desc ehl_desc = {
>  	PLATFORM(ELKHARTLAKE),
>  	.info = &jsl_ehl_display,
> +	STEP_INFO(jsl_ehl_steppings),
>  };
>  
>  #define XE_D_DISPLAY \
> @@ -850,10 +906,23 @@ static const u16 tgl_uy_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step tgl_steppings[] = {
> +	[0] = STEP_B0,
> +	[1] = STEP_D0,
> +};
> +
> +static const enum intel_step tgl_uy_steppings[] = {
> +	[0] = STEP_A0,
> +	[1] = STEP_C0,
> +	[2] = STEP_C0,
> +	[3] = STEP_D0,
> +};
> +
>  static const struct platform_desc tgl_desc = {
>  	PLATFORM(TIGERLAKE),
>  	.subplatforms = (const struct subplatform_desc[]) {
> -		{ INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids },
> +		{ INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids,
> +		  STEP_INFO(tgl_uy_steppings) },
>  		{},
>  	},
>  	.info = &(const struct intel_display_device_info) {
> @@ -866,6 +935,12 @@ static const struct platform_desc tgl_desc = {
>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>  		BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4) | BIT(PORT_TC5) | BIT(PORT_TC6),
>  	},
> +	STEP_INFO(tgl_steppings),
> +};
> +
> +static const enum intel_step dg1_steppings[] = {
> +	[0] = STEP_A0,
> +	[1] = STEP_B0,
>  };
>  
>  static const struct platform_desc dg1_desc = {
> @@ -876,6 +951,13 @@ static const struct platform_desc dg1_desc = {
>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>  		BIT(PORT_TC1) | BIT(PORT_TC2),
>  	},
> +	STEP_INFO(dg1_steppings),
> +};
> +
> +static const enum intel_step rkl_steppings[] = {
> +	[0] = STEP_A0,
> +	[1] = STEP_B0,
> +	[4] = STEP_C0,
>  };
>  
>  static const struct platform_desc rkl_desc = {
> @@ -892,6 +974,7 @@ static const struct platform_desc rkl_desc = {
>  		.__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>  		BIT(PORT_TC1) | BIT(PORT_TC2),
>  	},
> +	STEP_INFO(rkl_steppings),
>  };
>  
>  static const u16 adls_rpls_ids[] = {
> @@ -899,10 +982,24 @@ static const u16 adls_rpls_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step adl_s_steppings[] = {
> +	[0x0] = STEP_A0,
> +	[0x1] = STEP_A2,
> +	[0x4] = STEP_B0,
> +	[0x8] = STEP_B0,
> +	[0xC] = STEP_C0,
> +};
> +
> +static const enum intel_step adl_s_rpl_s_steppings[] = {
> +	[0x4] = STEP_D0,
> +	[0xC] = STEP_C0,
> +};
> +
>  static const struct platform_desc adl_s_desc = {
>  	PLATFORM(ALDERLAKE_S),
>  	.subplatforms = (const struct subplatform_desc[]) {
> -		{ INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids },
> +		{ INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids,
> +		  STEP_INFO(adl_s_rpl_s_steppings) },
>  		{},
>  	},
>  	.info = &(const struct intel_display_device_info) {
> @@ -913,6 +1010,7 @@ static const struct platform_desc adl_s_desc = {
>  		.__runtime_defaults.port_mask = BIT(PORT_A) |
>  		BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4),
>  	},
> +	STEP_INFO(adl_s_steppings),
>  };
>  
>  #define XE_LPD_FEATURES \
> @@ -986,15 +1084,34 @@ static const u16 adlp_rplp_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step adl_p_steppings[] = {
> +	[0x0] = STEP_A0,
> +	[0x4] = STEP_B0,
> +	[0x8] = STEP_C0,
> +	[0xC] = STEP_D0,
> +};
> +
> +static const enum intel_step adl_p_adl_n_steppings[] = {
> +	[0x0] = STEP_D0,
> +};
> +
> +static const enum intel_step adl_p_rpl_pu_steppings[] = {
> +	[0x4] = STEP_E0,
> +};
> +
>  static const struct platform_desc adl_p_desc = {
>  	PLATFORM(ALDERLAKE_P),
>  	.subplatforms = (const struct subplatform_desc[]) {
> -		{ INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids },
> -		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids },
> -		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids },
> +		{ INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids,
> +		  STEP_INFO(adl_p_adl_n_steppings) },
> +		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids,
> +		  STEP_INFO(adl_p_rpl_pu_steppings) },
> +		{ INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids,
> +		  STEP_INFO(adl_p_rpl_pu_steppings) },
>  		{},
>  	},
>  	.info = &xe_lpd_display,
> +	STEP_INFO(adl_p_steppings),
>  };
>  
>  static const struct intel_display_device_info xe_hpd_display = {
> @@ -1023,12 +1140,33 @@ static const u16 dg2_g12_ids[] = {
>  	0
>  };
>  
> +static const enum intel_step dg2_g10_steppings[] = {
> +	[0x0] = STEP_A0,
> +	[0x1] = STEP_A0,
> +	[0x4] = STEP_B0,
> +	[0x8] = STEP_C0,
> +};
> +
> +static const enum intel_step dg2_g11_steppings[] = {
> +	[0x0] = STEP_B0,
> +	[0x4] = STEP_C0,
> +	[0x5] = STEP_C0,
> +};
> +
> +static const enum intel_step dg2_g12_steppings[] = {
> +	[0x0] = STEP_C0,
> +	[0x1] = STEP_C0,
> +};
> +
>  static const struct platform_desc dg2_desc = {
>  	PLATFORM(DG2),
>  	.subplatforms = (const struct subplatform_desc[]) {
> -		{ INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids },
> -		{ INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids },
> -		{ INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids },
> +		{ INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids,
> +		  STEP_INFO(dg2_g10_steppings) },
> +		{ INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids,
> +		  STEP_INFO(dg2_g11_steppings) },
> +		{ INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids,
> +		  STEP_INFO(dg2_g12_steppings) },
>  		{},
>  	},
>  	.info = &xe_hpd_display,
> @@ -1261,13 +1399,66 @@ find_subplatform_desc(struct pci_dev *pdev, const struct platform_desc *desc)
>  	return NULL;
>  }
>  
> +static enum intel_step get_pre_gmdid_step(struct intel_display *display,
> +					  const struct stepping_desc *main,
> +					  const struct stepping_desc *sub)
> +{
> +	struct pci_dev *pdev = to_pci_dev(display->drm->dev);
> +	const enum intel_step *map = main->map;
> +	int size = main->size;
> +	int revision = pdev->revision;
> +	enum intel_step step;
> +
> +	/* subplatform stepping info trumps main platform info */
> +	if (sub && sub->map && sub->size) {
> +		map = sub->map;
> +		size = sub->size;
> +	}
> +
> +	/* not all platforms define steppings, and it's fine */
> +	if (!map || !size)
> +		return STEP_NONE;
> +
> +	if (revision < size && map[revision] != STEP_NONE) {
> +		step = map[revision];
> +	} else {
> +		drm_warn(display->drm, "Unknown revision 0x%02x\n", revision);
> +
> +		/*
> +		 * If we hit a gap in the revision to step map, use the information
> +		 * for the next revision.
> +		 *
> +		 * This may be wrong in all sorts of ways, especially if the
> +		 * steppings in the array are not monotonically increasing, but
> +		 * it's better than defaulting to 0.
> +		 */
> +		while (revision < size && map[revision] == STEP_NONE)
> +			revision++;
> +
> +		if (revision < size) {
> +			drm_dbg_kms(display->drm, "Using display stepping for revision 0x%02x\n",
> +				    revision);
> +			step = map[revision];
> +		} else {
> +			drm_dbg_kms(display->drm, "Using future display stepping\n");
> +			step = STEP_FUTURE;
> +		}
> +	}
> +
> +	drm_WARN_ON(display->drm, step == STEP_NONE);
> +
> +	return step;
> +}
> +
>  void intel_display_device_probe(struct drm_i915_private *i915)
>  {
> +	struct intel_display *display = &i915->display;
>  	struct pci_dev *pdev = to_pci_dev(i915->drm.dev);
>  	const struct intel_display_device_info *info;
>  	struct intel_display_ip_ver ip_ver = {};
>  	const struct platform_desc *desc;
>  	const struct subplatform_desc *subdesc;
> +	enum intel_step step;
>  
>  	/* Add drm device backpointer as early as possible. */
>  	i915->display.drm = &i915->drm;
> @@ -1307,13 +1498,25 @@ void intel_display_device_probe(struct drm_i915_private *i915)
>  		DISPLAY_RUNTIME_INFO(i915)->subplatform = subdesc->subplatform;
>  	}
>  
> -	if (ip_ver.ver || ip_ver.rel || ip_ver.step)
> +	if (ip_ver.ver || ip_ver.rel || ip_ver.step) {
>  		DISPLAY_RUNTIME_INFO(i915)->ip = ip_ver;
> +		step = STEP_A0 + ip_ver.step;
> +		if (step > STEP_FUTURE) {
> +			drm_dbg_kms(display->drm, "Using future display stepping\n");
> +			step = STEP_FUTURE;
> +		}
> +	} else {
> +		step = get_pre_gmdid_step(display, &desc->step_info,
> +					  subdesc ? &subdesc->step_info : NULL);
> +	}
> +
> +	DISPLAY_RUNTIME_INFO(i915)->step = step;
>  
> -	drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u\n",
> +	drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u stepping %s\n",
>  		 desc->name, subdesc ? "/" : "", subdesc ? subdesc->name : "",
>  		 pdev->device, DISPLAY_RUNTIME_INFO(i915)->ip.ver,
> -		 DISPLAY_RUNTIME_INFO(i915)->ip.rel);
> +		 DISPLAY_RUNTIME_INFO(i915)->ip.rel,
> +		 step != STEP_NONE ? intel_step_name(step) : "N/A");
>  
>  	return;
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
> index ccf1710cb9df..4615c3ba60aa 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
> @@ -201,8 +201,9 @@ struct intel_display_runtime_info {
>  	struct intel_display_ip_ver {
>  		u16 ver;
>  		u16 rel;
> -		u16 step;
> +		u16 step; /* hardware */
>  	} ip;
> +	int step; /* symbolic */
>  
>  	u32 rawclk_freq;
>  
> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
> index ee3f45b668b9..2cf13a572ab0 100644
> --- a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
> @@ -8,6 +8,7 @@
>  
>  #include "xe_step.h"
>  
> +#define intel_step xe_step
>  #define intel_step_name xe_step_name
>  
>  #endif /* __INTEL_STEP_H__ */
> -- 
> 2.39.2
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [PATCH v2] drm/i915/display: identify display steppings in display probe
  2024-08-21  9:50   ` [PATCH v2] " Jani Nikula
  2024-08-21 13:48     ` Matt Roper
@ 2024-08-21 13:52     ` Gustavo Sousa
  2024-08-21 14:30       ` Jani Nikula
  1 sibling, 1 reply; 38+ messages in thread
From: Gustavo Sousa @ 2024-08-21 13:52 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper

Quoting Jani Nikula (2024-08-21 06:50:36-03:00)
>Both i915 and xe have code to identify display steppings. Start
>deduplicating this by, uh, adding a third copy in display code. This is
>not yet used for anything other than debug logging. We'll switch over
>later.
>
>For platforms before GMD ID, attach the mapping from PCI revision to
>stepping in the platform and subplatform descriptors. This is a
>considerably cleaner approach than having it completely separate.
>
>Also add a separate field for stepping in display runtime info,
>preserving the value from GMD ID.
>
>v2: Handle NULL subdesc (Matt)
>
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>---
> .../drm/i915/display/intel_display_device.c   | 225 +++++++++++++++++-
> .../drm/i915/display/intel_display_device.h   |   3 +-
> .../drm/xe/compat-i915-headers/intel_step.h   |   1 +
> 3 files changed, 217 insertions(+), 12 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
>index b28d55fa0c3a..dfa923672492 100644
>--- a/drivers/gpu/drm/i915/display/intel_display_device.c
>+++ b/drivers/gpu/drm/i915/display/intel_display_device.c
>@@ -16,14 +16,25 @@
> #include "intel_display_power.h"
> #include "intel_display_reg_defs.h"
> #include "intel_fbc.h"
>+#include "intel_step.h"
> 
> __diag_push();
> __diag_ignore_all("-Woverride-init", "Allow field initialization overrides for display info");
> 
>+struct stepping_desc {
>+        const enum intel_step *map; /* revid to step map */
>+        size_t size; /* map size */
>+};
>+
>+#define STEP_INFO(_map)                                \
>+        .step_info.map = _map,                        \
>+        .step_info.size = ARRAY_SIZE(_map)
>+
> struct subplatform_desc {
>         enum intel_display_subplatform subplatform;
>         const char *name;
>         const u16 *pciidlist;
>+        struct stepping_desc step_info;
> };
> 
> struct platform_desc {
>@@ -31,6 +42,7 @@ struct platform_desc {
>         const char *name;
>         const struct subplatform_desc *subplatforms;
>         const struct intel_display_device_info *info; /* NULL for GMD ID */
>+        struct stepping_desc step_info;
> };
> 
> #define PLATFORM(_platform)                         \
>@@ -610,6 +622,13 @@ static const u16 skl_ulx_ids[] = {
>         0
> };
> 
>+static const enum intel_step skl_steppings[] = {
>+        [0x6] = STEP_G0,
>+        [0x7] = STEP_H0,
>+        [0x9] = STEP_J0,
>+        [0xA] = STEP_I1,
>+};
>+
> static const struct platform_desc skl_desc = {
>         PLATFORM(SKYLAKE),
>         .subplatforms = (const struct subplatform_desc[]) {
>@@ -618,6 +637,7 @@ static const struct platform_desc skl_desc = {
>                 {},
>         },
>         .info = &skl_display,
>+        STEP_INFO(skl_steppings),
> };
> 
> static const u16 kbl_ult_ids[] = {
>@@ -634,6 +654,16 @@ static const u16 kbl_ulx_ids[] = {
>         0
> };
> 
>+static const enum intel_step kbl_steppings[] = {
>+        [1] = STEP_B0,
>+        [2] = STEP_B0,
>+        [3] = STEP_B0,
>+        [4] = STEP_C0,
>+        [5] = STEP_B1,
>+        [6] = STEP_B1,
>+        [7] = STEP_C0,
>+};
>+
> static const struct platform_desc kbl_desc = {
>         PLATFORM(KABYLAKE),
>         .subplatforms = (const struct subplatform_desc[]) {
>@@ -642,6 +672,7 @@ static const struct platform_desc kbl_desc = {
>                 {},
>         },
>         .info = &skl_display,
>+        STEP_INFO(kbl_steppings),
> };
> 
> static const u16 cfl_ult_ids[] = {
>@@ -706,6 +737,13 @@ static const struct platform_desc cml_desc = {
>                 BIT(TRANSCODER_DSI_A) | BIT(TRANSCODER_DSI_C), \
>         .__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C)
> 
>+static const enum intel_step bxt_steppings[] = {
>+        [0xA] = STEP_C0,
>+        [0xB] = STEP_C0,
>+        [0xC] = STEP_D0,
>+        [0xD] = STEP_E0,
>+};
>+
> static const struct platform_desc bxt_desc = {
>         PLATFORM(BROXTON),
>         .info = &(const struct intel_display_device_info) {
>@@ -714,6 +752,11 @@ static const struct platform_desc bxt_desc = {
> 
>                 .__runtime_defaults.ip.ver = 9,
>         },
>+        STEP_INFO(bxt_steppings),
>+};
>+
>+static const enum intel_step glk_steppings[] = {
>+        [3] = STEP_B0,
> };
> 
> static const struct platform_desc glk_desc = {
>@@ -725,6 +768,7 @@ static const struct platform_desc glk_desc = {
> 
>                 .__runtime_defaults.ip.ver = 10,
>         },
>+        STEP_INFO(glk_steppings),
> };
> 
> #define ICL_DISPLAY \
>@@ -773,6 +817,10 @@ static const u16 icl_port_f_ids[] = {
>         0
> };
> 
>+static const enum intel_step icl_steppings[] = {
>+        [7] = STEP_D0,
>+};
>+
> static const struct platform_desc icl_desc = {
>         PLATFORM(ICELAKE),
>         .subplatforms = (const struct subplatform_desc[]) {
>@@ -784,6 +832,7 @@ static const struct platform_desc icl_desc = {
> 
>                 .__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D) | BIT(PORT_E),
>         },
>+        STEP_INFO(icl_steppings),
> };
> 
> static const struct intel_display_device_info jsl_ehl_display = {
>@@ -792,14 +841,21 @@ static const struct intel_display_device_info jsl_ehl_display = {
>         .__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) | BIT(PORT_C) | BIT(PORT_D),
> };
> 
>+static const enum intel_step jsl_ehl_steppings[] = {
>+        [0] = STEP_A0,
>+        [1] = STEP_B0,
>+};
>+
> static const struct platform_desc jsl_desc = {
>         PLATFORM(JASPERLAKE),
>         .info = &jsl_ehl_display,
>+        STEP_INFO(jsl_ehl_steppings),
> };
> 
> static const struct platform_desc ehl_desc = {
>         PLATFORM(ELKHARTLAKE),
>         .info = &jsl_ehl_display,
>+        STEP_INFO(jsl_ehl_steppings),
> };
> 
> #define XE_D_DISPLAY \
>@@ -850,10 +906,23 @@ static const u16 tgl_uy_ids[] = {
>         0
> };
> 
>+static const enum intel_step tgl_steppings[] = {
>+        [0] = STEP_B0,
>+        [1] = STEP_D0,
>+};
>+
>+static const enum intel_step tgl_uy_steppings[] = {
>+        [0] = STEP_A0,
>+        [1] = STEP_C0,
>+        [2] = STEP_C0,
>+        [3] = STEP_D0,
>+};
>+
> static const struct platform_desc tgl_desc = {
>         PLATFORM(TIGERLAKE),
>         .subplatforms = (const struct subplatform_desc[]) {
>-                { INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids },
>+                { INTEL_DISPLAY_TIGERLAKE_UY, "UY", tgl_uy_ids,
>+                  STEP_INFO(tgl_uy_steppings) },
>                 {},
>         },
>         .info = &(const struct intel_display_device_info) {
>@@ -866,6 +935,12 @@ static const struct platform_desc tgl_desc = {
>                 .__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>                 BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4) | BIT(PORT_TC5) | BIT(PORT_TC6),
>         },
>+        STEP_INFO(tgl_steppings),
>+};
>+
>+static const enum intel_step dg1_steppings[] = {
>+        [0] = STEP_A0,
>+        [1] = STEP_B0,
> };
> 
> static const struct platform_desc dg1_desc = {
>@@ -876,6 +951,13 @@ static const struct platform_desc dg1_desc = {
>                 .__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>                 BIT(PORT_TC1) | BIT(PORT_TC2),
>         },
>+        STEP_INFO(dg1_steppings),
>+};
>+
>+static const enum intel_step rkl_steppings[] = {
>+        [0] = STEP_A0,
>+        [1] = STEP_B0,
>+        [4] = STEP_C0,
> };
> 
> static const struct platform_desc rkl_desc = {
>@@ -892,6 +974,7 @@ static const struct platform_desc rkl_desc = {
>                 .__runtime_defaults.port_mask = BIT(PORT_A) | BIT(PORT_B) |
>                 BIT(PORT_TC1) | BIT(PORT_TC2),
>         },
>+        STEP_INFO(rkl_steppings),
> };
> 
> static const u16 adls_rpls_ids[] = {
>@@ -899,10 +982,24 @@ static const u16 adls_rpls_ids[] = {
>         0
> };
> 
>+static const enum intel_step adl_s_steppings[] = {
>+        [0x0] = STEP_A0,
>+        [0x1] = STEP_A2,
>+        [0x4] = STEP_B0,
>+        [0x8] = STEP_B0,
>+        [0xC] = STEP_C0,
>+};
>+
>+static const enum intel_step adl_s_rpl_s_steppings[] = {
>+        [0x4] = STEP_D0,
>+        [0xC] = STEP_C0,
>+};
>+
> static const struct platform_desc adl_s_desc = {
>         PLATFORM(ALDERLAKE_S),
>         .subplatforms = (const struct subplatform_desc[]) {
>-                { INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids },
>+                { INTEL_DISPLAY_ALDERLAKE_S_RAPTORLAKE_S, "RPL-S", adls_rpls_ids,
>+                  STEP_INFO(adl_s_rpl_s_steppings) },
>                 {},
>         },
>         .info = &(const struct intel_display_device_info) {
>@@ -913,6 +1010,7 @@ static const struct platform_desc adl_s_desc = {
>                 .__runtime_defaults.port_mask = BIT(PORT_A) |
>                 BIT(PORT_TC1) | BIT(PORT_TC2) | BIT(PORT_TC3) | BIT(PORT_TC4),
>         },
>+        STEP_INFO(adl_s_steppings),
> };
> 
> #define XE_LPD_FEATURES \
>@@ -986,15 +1084,34 @@ static const u16 adlp_rplp_ids[] = {
>         0
> };
> 
>+static const enum intel_step adl_p_steppings[] = {
>+        [0x0] = STEP_A0,
>+        [0x4] = STEP_B0,
>+        [0x8] = STEP_C0,
>+        [0xC] = STEP_D0,
>+};
>+
>+static const enum intel_step adl_p_adl_n_steppings[] = {
>+        [0x0] = STEP_D0,
>+};
>+
>+static const enum intel_step adl_p_rpl_pu_steppings[] = {
>+        [0x4] = STEP_E0,
>+};
>+
> static const struct platform_desc adl_p_desc = {
>         PLATFORM(ALDERLAKE_P),
>         .subplatforms = (const struct subplatform_desc[]) {
>-                { INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids },
>-                { INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids },
>-                { INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids },
>+                { INTEL_DISPLAY_ALDERLAKE_P_ALDERLAKE_N, "ADL-N", adlp_adln_ids,
>+                  STEP_INFO(adl_p_adl_n_steppings) },
>+                { INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_P, "RPL-P", adlp_rplp_ids,
>+                  STEP_INFO(adl_p_rpl_pu_steppings) },
>+                { INTEL_DISPLAY_ALDERLAKE_P_RAPTORLAKE_U, "RPL-U", adlp_rplu_ids,
>+                  STEP_INFO(adl_p_rpl_pu_steppings) },
>                 {},
>         },
>         .info = &xe_lpd_display,
>+        STEP_INFO(adl_p_steppings),
> };
> 
> static const struct intel_display_device_info xe_hpd_display = {
>@@ -1023,12 +1140,33 @@ static const u16 dg2_g12_ids[] = {
>         0
> };
> 
>+static const enum intel_step dg2_g10_steppings[] = {
>+        [0x0] = STEP_A0,
>+        [0x1] = STEP_A0,
>+        [0x4] = STEP_B0,
>+        [0x8] = STEP_C0,
>+};
>+
>+static const enum intel_step dg2_g11_steppings[] = {
>+        [0x0] = STEP_B0,
>+        [0x4] = STEP_C0,
>+        [0x5] = STEP_C0,
>+};
>+
>+static const enum intel_step dg2_g12_steppings[] = {
>+        [0x0] = STEP_C0,
>+        [0x1] = STEP_C0,
>+};
>+
> static const struct platform_desc dg2_desc = {
>         PLATFORM(DG2),
>         .subplatforms = (const struct subplatform_desc[]) {
>-                { INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids },
>-                { INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids },
>-                { INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids },
>+                { INTEL_DISPLAY_DG2_G10, "G10", dg2_g10_ids,
>+                  STEP_INFO(dg2_g10_steppings) },
>+                { INTEL_DISPLAY_DG2_G11, "G11", dg2_g11_ids,
>+                  STEP_INFO(dg2_g11_steppings) },
>+                { INTEL_DISPLAY_DG2_G12, "G12", dg2_g12_ids,
>+                  STEP_INFO(dg2_g12_steppings) },
>                 {},
>         },
>         .info = &xe_hpd_display,
>@@ -1261,13 +1399,66 @@ find_subplatform_desc(struct pci_dev *pdev, const struct platform_desc *desc)
>         return NULL;
> }
> 
>+static enum intel_step get_pre_gmdid_step(struct intel_display *display,
>+                                          const struct stepping_desc *main,
>+                                          const struct stepping_desc *sub)
>+{
>+        struct pci_dev *pdev = to_pci_dev(display->drm->dev);
>+        const enum intel_step *map = main->map;
>+        int size = main->size;
>+        int revision = pdev->revision;
>+        enum intel_step step;
>+
>+        /* subplatform stepping info trumps main platform info */
>+        if (sub && sub->map && sub->size) {
>+                map = sub->map;
>+                size = sub->size;
>+        }
>+
>+        /* not all platforms define steppings, and it's fine */
>+        if (!map || !size)
>+                return STEP_NONE;
>+
>+        if (revision < size && map[revision] != STEP_NONE) {
>+                step = map[revision];
>+        } else {
>+                drm_warn(display->drm, "Unknown revision 0x%02x\n", revision);
>+
>+                /*
>+                 * If we hit a gap in the revision to step map, use the information
>+                 * for the next revision.
>+                 *
>+                 * This may be wrong in all sorts of ways, especially if the
>+                 * steppings in the array are not monotonically increasing, but
>+                 * it's better than defaulting to 0.
>+                 */
>+                while (revision < size && map[revision] == STEP_NONE)
>+                        revision++;
>+
>+                if (revision < size) {
>+                        drm_dbg_kms(display->drm, "Using display stepping for revision 0x%02x\n",
>+                                    revision);
>+                        step = map[revision];
>+                } else {
>+                        drm_dbg_kms(display->drm, "Using future display stepping\n");
>+                        step = STEP_FUTURE;
>+                }
>+        }
>+
>+        drm_WARN_ON(display->drm, step == STEP_NONE);

I believe we can be sure that step != STEP_NONE at this point. Are we
keeping this only to guard against bugs from future changes?

--
Gustavo Sousa

>+
>+        return step;
>+}
>+
> void intel_display_device_probe(struct drm_i915_private *i915)
> {
>+        struct intel_display *display = &i915->display;
>         struct pci_dev *pdev = to_pci_dev(i915->drm.dev);
>         const struct intel_display_device_info *info;
>         struct intel_display_ip_ver ip_ver = {};
>         const struct platform_desc *desc;
>         const struct subplatform_desc *subdesc;
>+        enum intel_step step;
> 
>         /* Add drm device backpointer as early as possible. */
>         i915->display.drm = &i915->drm;
>@@ -1307,13 +1498,25 @@ void intel_display_device_probe(struct drm_i915_private *i915)
>                 DISPLAY_RUNTIME_INFO(i915)->subplatform = subdesc->subplatform;
>         }
> 
>-        if (ip_ver.ver || ip_ver.rel || ip_ver.step)
>+        if (ip_ver.ver || ip_ver.rel || ip_ver.step) {
>                 DISPLAY_RUNTIME_INFO(i915)->ip = ip_ver;
>+                step = STEP_A0 + ip_ver.step;
>+                if (step > STEP_FUTURE) {
>+                        drm_dbg_kms(display->drm, "Using future display stepping\n");
>+                        step = STEP_FUTURE;
>+                }
>+        } else {
>+                step = get_pre_gmdid_step(display, &desc->step_info,
>+                                          subdesc ? &subdesc->step_info : NULL);
>+        }
>+
>+        DISPLAY_RUNTIME_INFO(i915)->step = step;
> 
>-        drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u\n",
>+        drm_info(&i915->drm, "Found %s%s%s (device ID %04x) display version %u.%02u stepping %s\n",
>                  desc->name, subdesc ? "/" : "", subdesc ? subdesc->name : "",
>                  pdev->device, DISPLAY_RUNTIME_INFO(i915)->ip.ver,
>-                 DISPLAY_RUNTIME_INFO(i915)->ip.rel);
>+                 DISPLAY_RUNTIME_INFO(i915)->ip.rel,
>+                 step != STEP_NONE ? intel_step_name(step) : "N/A");
> 
>         return;
> 
>diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
>index ccf1710cb9df..4615c3ba60aa 100644
>--- a/drivers/gpu/drm/i915/display/intel_display_device.h
>+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
>@@ -201,8 +201,9 @@ struct intel_display_runtime_info {
>         struct intel_display_ip_ver {
>                 u16 ver;
>                 u16 rel;
>-                u16 step;
>+                u16 step; /* hardware */
>         } ip;
>+        int step; /* symbolic */
> 
>         u32 rawclk_freq;
> 
>diff --git a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
>index ee3f45b668b9..2cf13a572ab0 100644
>--- a/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
>+++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
>@@ -8,6 +8,7 @@
> 
> #include "xe_step.h"
> 
>+#define intel_step xe_step
> #define intel_step_name xe_step_name
> 
> #endif /* __INTEL_STEP_H__ */
>-- 
>2.39.2
>

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

* Re: [PATCH v2] drm/i915/display: identify display steppings in display probe
  2024-08-21 13:52     ` Gustavo Sousa
@ 2024-08-21 14:30       ` Jani Nikula
  0 siblings, 0 replies; 38+ messages in thread
From: Jani Nikula @ 2024-08-21 14:30 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe
  Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper

On Wed, 21 Aug 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> Quoting Jani Nikula (2024-08-21 06:50:36-03:00)
>>+        if (revision < size && map[revision] != STEP_NONE) {
>>+                step = map[revision];
>>+        } else {
>>+                drm_warn(display->drm, "Unknown revision 0x%02x\n", revision);
>>+
>>+                /*
>>+                 * If we hit a gap in the revision to step map, use the information
>>+                 * for the next revision.
>>+                 *
>>+                 * This may be wrong in all sorts of ways, especially if the
>>+                 * steppings in the array are not monotonically increasing, but
>>+                 * it's better than defaulting to 0.
>>+                 */
>>+                while (revision < size && map[revision] == STEP_NONE)
>>+                        revision++;
>>+
>>+                if (revision < size) {
>>+                        drm_dbg_kms(display->drm, "Using display stepping for revision 0x%02x\n",
>>+                                    revision);
>>+                        step = map[revision];
>>+                } else {
>>+                        drm_dbg_kms(display->drm, "Using future display stepping\n");
>>+                        step = STEP_FUTURE;
>>+                }
>>+        }
>>+
>>+        drm_WARN_ON(display->drm, step == STEP_NONE);
>
> I believe we can be sure that step != STEP_NONE at this point. Are we
> keeping this only to guard against bugs from future changes?

Belt and suspenders, just making sure I didn't screw up anything. :)

BR,
Jani.

-- 
Jani Nikula, Intel

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

* Re: [PATCH 00/10] drm/i915/display: identify display steppings in display code
  2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
                   ` (16 preceding siblings ...)
  2024-08-21 12:22 ` ✗ Fi.CI.IGT: failure " Patchwork
@ 2024-08-22 10:52 ` Jani Nikula
  2024-08-22 12:32   ` Lucas De Marchi
  17 siblings, 1 reply; 38+ messages in thread
From: Jani Nikula @ 2024-08-22 10:52 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: lucas.demarchi, rodrigo.vivi, matthew.d.roper

On Tue, 20 Aug 2024, Jani Nikula <jani.nikula@intel.com> wrote:
> Use a Single Point of Truth for display stepping detection instead of
> duplicating in i915 and xe.

Lucas, Rodrigo, ack for merging this via drm-intel-next?

BR,
Jani.



>
> BR,
> Jani.
>
>
> Jani Nikula (10):
>   drm/xe/display: fix compat IS_DISPLAY_STEP() range end
>   drm/xe/display: remove intel_display_step_name() to simplify
>   drm/xe/display: remove the unused compat HAS_GMD_ID()
>   drm/xe/step: define more steppings E-J
>   drm/i915/display: rename IS_DISPLAY_IP_RANGE() to
>     IS_DISPLAY_VER_FULL()
>   drm/i915/display: rename IS_DISPLAY_IP_STEP() to IS_DISPLAY_VER_STEP()
>   drm/i915/display: identify display steppings in display probe
>   drm/i915/display: switch to display detected steppings
>   drm/i915: remove display stepping handling
>   drm/xe: remove display stepping handling
>
>  .../drm/i915/display/intel_display_device.c   | 226 +++++++++++++++++-
>  .../drm/i915/display/intel_display_device.h   |  19 +-
>  .../drm/i915/display/intel_display_power.c    |   2 +-
>  drivers/gpu/drm/i915/display/intel_dmc.c      |   2 +-
>  drivers/gpu/drm/i915/display/intel_fbc.c      |   2 +-
>  drivers/gpu/drm/i915/display/intel_hdcp.c     |   6 +-
>  drivers/gpu/drm/i915/display/intel_pmdemand.c |   2 +-
>  drivers/gpu/drm/i915/display/intel_psr.c      |   8 +-
>  drivers/gpu/drm/i915/i915_drv.h               |   5 -
>  drivers/gpu/drm/i915/intel_device_info.c      |   1 -
>  drivers/gpu/drm/i915/intel_step.c             |  84 +++----
>  drivers/gpu/drm/i915/intel_step.h             |   2 -
>  .../gpu/drm/xe/compat-i915-headers/i915_drv.h |   5 -
>  .../drm/xe/compat-i915-headers/intel_step.h   |  10 +-
>  drivers/gpu/drm/xe/xe_debugfs.c               |   3 +-
>  drivers/gpu/drm/xe/xe_pci.c                   |   3 +-
>  drivers/gpu/drm/xe/xe_step.c                  |  57 ++---
>  drivers/gpu/drm/xe/xe_step_types.h            |  30 ++-
>  18 files changed, 332 insertions(+), 135 deletions(-)

-- 
Jani Nikula, Intel

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

* Re: [PATCH 00/10] drm/i915/display: identify display steppings in display code
  2024-08-22 10:52 ` [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
@ 2024-08-22 12:32   ` Lucas De Marchi
  2024-08-22 13:29     ` Jani Nikula
  0 siblings, 1 reply; 38+ messages in thread
From: Lucas De Marchi @ 2024-08-22 12:32 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe, rodrigo.vivi, matthew.d.roper

On Thu, Aug 22, 2024 at 01:52:18PM GMT, Jani Nikula wrote:
>On Tue, 20 Aug 2024, Jani Nikula <jani.nikula@intel.com> wrote:
>> Use a Single Point of Truth for display stepping detection instead of
>> duplicating in i915 and xe.
>
>Lucas, Rodrigo, ack for merging this via drm-intel-next?


Acked-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

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

* Re: [PATCH 00/10] drm/i915/display: identify display steppings in display code
  2024-08-22 12:32   ` Lucas De Marchi
@ 2024-08-22 13:29     ` Jani Nikula
  0 siblings, 0 replies; 38+ messages in thread
From: Jani Nikula @ 2024-08-22 13:29 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: intel-gfx, intel-xe, rodrigo.vivi, matthew.d.roper

On Thu, 22 Aug 2024, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
> On Thu, Aug 22, 2024 at 01:52:18PM GMT, Jani Nikula wrote:
>>On Tue, 20 Aug 2024, Jani Nikula <jani.nikula@intel.com> wrote:
>>> Use a Single Point of Truth for display stepping detection instead of
>>> duplicating in i915 and xe.
>>
>>Lucas, Rodrigo, ack for merging this via drm-intel-next?
>
>
> Acked-by: Lucas De Marchi <lucas.demarchi@intel.com>

Thanks for the reviews and acks, pushed to din.

I did some (but not exhaustive) cross-checking between drm-tip and
patchwork CI results, and didn't spot any differences in dmesg on the
steppings.

I also posted a slightly modified series to trybot, with a patch [1] to
warn on any differences between steppings before and after the changes,
all good AFAICT.

BR,
Jani.


[1] https://patchwork.freedesktop.org/patch/msgid/20240821100058.2055981-10-jani.nikula@intel.com


-- 
Jani Nikula, Intel

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

end of thread, other threads:[~2024-08-22 13:29 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-20 19:00 [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
2024-08-20 19:00 ` [PATCH 01/10] drm/xe/display: fix compat IS_DISPLAY_STEP() range end Jani Nikula
2024-08-20 19:31   ` Lucas De Marchi
2024-08-20 22:29     ` Matt Roper
2024-08-20 19:00 ` [PATCH 02/10] drm/xe/display: remove intel_display_step_name() to simplify Jani Nikula
2024-08-20 22:32   ` Matt Roper
2024-08-20 19:00 ` [PATCH 03/10] drm/xe/display: remove the unused compat HAS_GMD_ID() Jani Nikula
2024-08-20 22:40   ` Matt Roper
2024-08-20 19:00 ` [PATCH 04/10] drm/xe/step: define more steppings E-J Jani Nikula
2024-08-20 22:48   ` Matt Roper
2024-08-20 19:00 ` [PATCH 05/10] drm/i915/display: rename IS_DISPLAY_IP_RANGE() to IS_DISPLAY_VER_FULL() Jani Nikula
2024-08-20 22:54   ` Matt Roper
2024-08-20 19:00 ` [PATCH 06/10] drm/i915/display: rename IS_DISPLAY_IP_STEP() to IS_DISPLAY_VER_STEP() Jani Nikula
2024-08-20 22:56   ` Matt Roper
2024-08-20 19:00 ` [PATCH 07/10] drm/i915/display: identify display steppings in display probe Jani Nikula
2024-08-20 23:52   ` Matt Roper
2024-08-21  8:59     ` Jani Nikula
2024-08-21  9:50   ` [PATCH v2] " Jani Nikula
2024-08-21 13:48     ` Matt Roper
2024-08-21 13:52     ` Gustavo Sousa
2024-08-21 14:30       ` Jani Nikula
2024-08-20 19:00 ` [PATCH 08/10] drm/i915/display: switch to display detected steppings Jani Nikula
2024-08-21  0:01   ` Matt Roper
2024-08-20 19:00 ` [PATCH 09/10] drm/i915: remove display stepping handling Jani Nikula
2024-08-21  0:04   ` Matt Roper
2024-08-21  0:08     ` Matt Roper
2024-08-20 19:00 ` [PATCH 10/10] drm/xe: " Jani Nikula
2024-08-21  0:04   ` Matt Roper
2024-08-20 19:30 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: identify display steppings in display code Patchwork
2024-08-20 19:30 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-08-20 19:40 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-08-21 10:38 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: identify display steppings in display code (rev2) Patchwork
2024-08-21 10:38 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-08-21 10:49 ` ✓ Fi.CI.BAT: success " Patchwork
2024-08-21 12:22 ` ✗ Fi.CI.IGT: failure " Patchwork
2024-08-22 10:52 ` [PATCH 00/10] drm/i915/display: identify display steppings in display code Jani Nikula
2024-08-22 12:32   ` Lucas De Marchi
2024-08-22 13:29     ` Jani Nikula

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