All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement
@ 2022-06-02 14:18 Animesh Manna
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 1/5] drm/i915/bios: calculate drrs mode using panel index for dual LFP Animesh Manna
                   ` (10 more replies)
  0 siblings, 11 replies; 29+ messages in thread
From: Animesh Manna @ 2022-06-02 14:18 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

This patch series read the separate entry for each
LFP from VBT and populate the structure, which will be used
for enablement of the respective panel.

Port sync implementation is not part of this patch series.
Will be taken up later as per requrement.

This patch series do the initial enablement of dual EDP panel as
per the data provided through VBT.

Animesh Manna (3):
  drm/i915/bios: calculate drrs mode using panel index for dual LFP
  drm/i915/display: Use panel index to parse panel timing for dual EDP
  drm/i915/display: Use panel index to parse lfp backlight

Arun R Murthy (1):
  drm/i915/display: prepend connector name to the backlight

Nischal Varide (1):
  drm/i915/display/tgl+: Use PPS index from vbt

 drivers/gpu/drm/i915/display/icl_dsi.c        |  2 +-
 .../gpu/drm/i915/display/intel_backlight.c    |  2 +
 drivers/gpu/drm/i915/display/intel_bios.c     | 92 +++++++++++++------
 drivers/gpu/drm/i915/display/intel_bios.h     |  3 +-
 drivers/gpu/drm/i915/display/intel_dp.c       |  3 +-
 drivers/gpu/drm/i915/display/intel_lvds.c     |  3 +-
 drivers/gpu/drm/i915/display/intel_pps.c      |  3 +-
 drivers/gpu/drm/i915/display/intel_sdvo.c     |  2 +-
 drivers/gpu/drm/i915/display/intel_vbt_defs.h |  4 +
 drivers/gpu/drm/i915/display/vlv_dsi.c        |  2 +-
 10 files changed, 79 insertions(+), 37 deletions(-)

-- 
2.29.0


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

* [Intel-gfx] [RFC PATCH 1/5] drm/i915/bios: calculate drrs mode using panel index for dual LFP
  2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
@ 2022-06-02 14:18 ` Animesh Manna
  2022-06-02 15:07   ` Jani Nikula
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 2/5] drm/i915/display: Use panel index to parse panel timing for dual EDP Animesh Manna
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 29+ messages in thread
From: Animesh Manna @ 2022-06-02 14:18 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Dual LFP may have different panel and based on panel index
respective 2 bits store the drrs mode info for each panel. So panel
index is used for deriving drrs mode of the rspective panel.

Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/icl_dsi.c        |  2 +-
 drivers/gpu/drm/i915/display/intel_bios.c     | 45 +++++++++++++++++--
 drivers/gpu/drm/i915/display/intel_bios.h     |  3 +-
 drivers/gpu/drm/i915/display/intel_dp.c       |  3 +-
 drivers/gpu/drm/i915/display/intel_lvds.c     |  3 +-
 drivers/gpu/drm/i915/display/intel_sdvo.c     |  2 +-
 drivers/gpu/drm/i915/display/intel_vbt_defs.h |  4 ++
 drivers/gpu/drm/i915/display/vlv_dsi.c        |  2 +-
 8 files changed, 52 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c b/drivers/gpu/drm/i915/display/icl_dsi.c
index 3b5305c219ba..b3aa430abd03 100644
--- a/drivers/gpu/drm/i915/display/icl_dsi.c
+++ b/drivers/gpu/drm/i915/display/icl_dsi.c
@@ -2050,7 +2050,7 @@ void icl_dsi_init(struct drm_i915_private *dev_priv)
 	/* attach connector to encoder */
 	intel_connector_attach_encoder(intel_connector, encoder);
 
-	intel_bios_init_panel(dev_priv, &intel_connector->panel, NULL);
+	intel_bios_init_panel(dev_priv, intel_connector, NULL);
 
 	mutex_lock(&dev->mode_config.mutex);
 	intel_panel_add_vbt_lfp_fixed_mode(intel_connector);
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 337277ae3dae..78eaf6255599 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -747,7 +747,8 @@ static int get_panel_type(struct drm_i915_private *i915,
 static void
 parse_panel_options(struct drm_i915_private *i915,
 		    struct intel_panel *panel,
-		    const struct edid *edid)
+		    const struct edid *edid,
+		    int panel_index)
 {
 	const struct bdb_lvds_options *lvds_options;
 	int panel_type;
@@ -764,7 +765,7 @@ parse_panel_options(struct drm_i915_private *i915,
 	panel->vbt.panel_type = panel_type;
 
 	drrs_mode = (lvds_options->dps_panel_type_bits
-				>> (panel_type * 2)) & MODE_MASK;
+				>> (panel_index * 2)) & MODE_MASK;
 	/*
 	 * VBT has static DRRS = 0 and seamless DRRS = 2.
 	 * The below piece of code is required to adjust vbt.drrs_type
@@ -3069,13 +3070,49 @@ void intel_bios_init(struct drm_i915_private *i915)
 	kfree(oprom_vbt);
 }
 
+static int
+get_lfp_panel_index(struct drm_i915_private *i915, int lfp_panel_instance)
+{
+	const struct bdb_lvds_options *lvds_options;
+
+	lvds_options = find_section(i915, BDB_LVDS_OPTIONS);
+	if (!lvds_options)
+		return -1;
+
+	switch (lfp_panel_instance) {
+	case 1:
+		return lvds_options->panel_type;
+	case 2:
+		return lvds_options->panel_type2;
+	default:
+		break;
+	}
+
+	return -1;
+}
+
 void intel_bios_init_panel(struct drm_i915_private *i915,
-			   struct intel_panel *panel,
+			   struct intel_connector *intel_connector,
 			   const struct edid *edid)
 {
+	struct intel_panel *panel = &intel_connector->panel;
+	struct intel_encoder *encoder = intel_connector->encoder;
+	const struct intel_bios_encoder_data *devdata = i915->vbt.ports[encoder->port];
+	int lfp_inst = 0, panel_index;
+
 	init_vbt_panel_defaults(panel);
 
-	parse_panel_options(i915, panel, edid);
+	if (devdata->child.handle == HANDLE_LFP_1)
+		lfp_inst = 1;
+	else if (devdata->child.handle == HANDLE_LFP_2)
+		lfp_inst = 2;
+
+	if (lfp_inst == 0)
+		return;
+
+	panel_index = get_lfp_panel_index(i915, lfp_inst);
+
+	parse_panel_options(i915, panel, edid, panel_index);
 	parse_generic_dtd(i915, panel);
 	parse_lfp_data(i915, panel);
 	parse_lfp_backlight(i915, panel);
diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
index b112200ae0a0..e4c268495547 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.h
+++ b/drivers/gpu/drm/i915/display/intel_bios.h
@@ -37,6 +37,7 @@ struct edid;
 struct intel_bios_encoder_data;
 struct intel_crtc_state;
 struct intel_encoder;
+struct intel_connector;
 struct intel_panel;
 enum port;
 
@@ -233,7 +234,7 @@ struct mipi_pps_data {
 
 void intel_bios_init(struct drm_i915_private *dev_priv);
 void intel_bios_init_panel(struct drm_i915_private *dev_priv,
-			   struct intel_panel *panel,
+			   struct intel_connector *intel_connector,
 			   const struct edid *edid);
 void intel_bios_fini_panel(struct intel_panel *panel);
 void intel_bios_driver_remove(struct drm_i915_private *dev_priv);
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 1bc1f6458e81..3e9b4263e1bc 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5213,8 +5213,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
 	}
 	intel_connector->edid = edid;
 
-	intel_bios_init_panel(dev_priv, &intel_connector->panel,
-			      IS_ERR(edid) ? NULL : edid);
+	intel_bios_init_panel(dev_priv, intel_connector, IS_ERR(edid) ? NULL : edid);
 
 	intel_panel_add_edid_fixed_modes(intel_connector,
 					 intel_connector->panel.vbt.drrs_type != DRRS_TYPE_NONE);
diff --git a/drivers/gpu/drm/i915/display/intel_lvds.c b/drivers/gpu/drm/i915/display/intel_lvds.c
index 595f03343939..2c60267f9d37 100644
--- a/drivers/gpu/drm/i915/display/intel_lvds.c
+++ b/drivers/gpu/drm/i915/display/intel_lvds.c
@@ -967,8 +967,7 @@ void intel_lvds_init(struct drm_i915_private *dev_priv)
 	}
 	intel_connector->edid = edid;
 
-	intel_bios_init_panel(dev_priv, &intel_connector->panel,
-			      IS_ERR(edid) ? NULL : edid);
+	intel_bios_init_panel(dev_priv, intel_connector, IS_ERR(edid) ? NULL : edid);
 
 	/* Try EDID first */
 	intel_panel_add_edid_fixed_modes(intel_connector,
diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c
index d9de2c4d67a7..3b7fe117bc5b 100644
--- a/drivers/gpu/drm/i915/display/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
@@ -2901,7 +2901,7 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device)
 	if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector))
 		goto err;
 
-	intel_bios_init_panel(i915, &intel_connector->panel, NULL);
+	intel_bios_init_panel(i915, intel_connector, NULL);
 
 	/*
 	 * Fetch modes from VBT. For SDVO prefer the VBT mode since some
diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
index 4b98bab3b890..fbda64e3a34d 100644
--- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h
+++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
@@ -349,6 +349,10 @@ enum vbt_gmbus_ddi {
 #define BDB_230_VBT_DP_MAX_LINK_RATE_UHBR13P5	6
 #define BDB_230_VBT_DP_MAX_LINK_RATE_UHBR20	7
 
+/* VBT info for DUAL LFP */
+#define HANDLE_LFP_1 0x0008
+#define HANDLE_LFP_2 0x0080
+
 /*
  * The child device config, aka the display device data structure, provides a
  * description of a port and its configuration on the platform.
diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c b/drivers/gpu/drm/i915/display/vlv_dsi.c
index abda0888c8d4..114e4f89f198 100644
--- a/drivers/gpu/drm/i915/display/vlv_dsi.c
+++ b/drivers/gpu/drm/i915/display/vlv_dsi.c
@@ -1926,7 +1926,7 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
 
 	intel_dsi->panel_power_off_time = ktime_get_boottime();
 
-	intel_bios_init_panel(dev_priv, &intel_connector->panel, NULL);
+	intel_bios_init_panel(dev_priv, intel_connector, NULL);
 
 	if (intel_connector->panel.vbt.dsi.config->dual_link)
 		intel_dsi->ports = BIT(PORT_A) | BIT(PORT_C);
-- 
2.29.0


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

* [Intel-gfx] [RFC PATCH 2/5] drm/i915/display: Use panel index to parse panel timing for dual EDP
  2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 1/5] drm/i915/bios: calculate drrs mode using panel index for dual LFP Animesh Manna
@ 2022-06-02 14:18 ` Animesh Manna
  2022-06-02 15:12   ` Jani Nikula
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 3/5] drm/i915/display: Use panel index to parse lfp backlight Animesh Manna
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 29+ messages in thread
From: Animesh Manna @ 2022-06-02 14:18 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

There will be separate entry for eack LFP in VBT. Panel index is
used for deriving panel timing info of the respective panel.

Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 26 ++++++++++++-----------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 78eaf6255599..943c5584f242 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -793,16 +793,16 @@ static void
 parse_lfp_panel_dtd(struct drm_i915_private *i915,
 		    struct intel_panel *panel,
 		    const struct bdb_lvds_lfp_data *lvds_lfp_data,
-		    const struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs)
+		    const struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs,
+		    int panel_index)
 {
 	const struct lvds_dvo_timing *panel_dvo_timing;
 	const struct lvds_fp_timing *fp_timing;
 	struct drm_display_mode *panel_fixed_mode;
-	int panel_type = panel->vbt.panel_type;
 
 	panel_dvo_timing = get_lvds_dvo_timing(lvds_lfp_data,
 					       lvds_lfp_data_ptrs,
-					       panel_type);
+					       panel_index);
 
 	panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode), GFP_KERNEL);
 	if (!panel_fixed_mode)
@@ -818,7 +818,7 @@ parse_lfp_panel_dtd(struct drm_i915_private *i915,
 
 	fp_timing = get_lvds_fp_timing(lvds_lfp_data,
 				       lvds_lfp_data_ptrs,
-				       panel_type);
+				       panel_index);
 
 	/* check the resolution, just to be sure */
 	if (fp_timing->x_res == panel_fixed_mode->hdisplay &&
@@ -832,7 +832,8 @@ parse_lfp_panel_dtd(struct drm_i915_private *i915,
 
 static void
 parse_lfp_data(struct drm_i915_private *i915,
-	       struct intel_panel *panel)
+	       struct intel_panel *panel,
+	       int panel_index)
 {
 	const struct bdb_lvds_lfp_data *data;
 	const struct bdb_lvds_lfp_data_tail *tail;
@@ -848,7 +849,7 @@ parse_lfp_data(struct drm_i915_private *i915,
 		return;
 
 	if (!panel->vbt.lfp_lvds_vbt_mode)
-		parse_lfp_panel_dtd(i915, panel, data, ptrs);
+		parse_lfp_panel_dtd(i915, panel, data, ptrs, panel_index);
 
 	tail = get_lfp_data_tail(data, ptrs);
 	if (!tail)
@@ -865,7 +866,8 @@ parse_lfp_data(struct drm_i915_private *i915,
 
 static void
 parse_generic_dtd(struct drm_i915_private *i915,
-		  struct intel_panel *panel)
+		  struct intel_panel *panel,
+		  int panel_index)
 {
 	const struct bdb_generic_dtd *generic_dtd;
 	const struct generic_dtd_entry *dtd;
@@ -900,14 +902,14 @@ parse_generic_dtd(struct drm_i915_private *i915,
 
 	num_dtd = (get_blocksize(generic_dtd) -
 		   sizeof(struct bdb_generic_dtd)) / generic_dtd->gdtd_size;
-	if (panel->vbt.panel_type >= num_dtd) {
+	if (panel_index >= num_dtd) {
 		drm_err(&i915->drm,
 			"Panel type %d not found in table of %d DTD's\n",
-			panel->vbt.panel_type, num_dtd);
+			panel_index, num_dtd);
 		return;
 	}
 
-	dtd = &generic_dtd->dtd[panel->vbt.panel_type];
+	dtd = &generic_dtd->dtd[panel_index];
 
 	panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode), GFP_KERNEL);
 	if (!panel_fixed_mode)
@@ -3113,8 +3115,8 @@ void intel_bios_init_panel(struct drm_i915_private *i915,
 	panel_index = get_lfp_panel_index(i915, lfp_inst);
 
 	parse_panel_options(i915, panel, edid, panel_index);
-	parse_generic_dtd(i915, panel);
-	parse_lfp_data(i915, panel);
+	parse_generic_dtd(i915, panel, panel_index);
+	parse_lfp_data(i915, panel, panel_index);
 	parse_lfp_backlight(i915, panel);
 	parse_sdvo_panel_data(i915, panel);
 	parse_panel_driver_features(i915, panel);
-- 
2.29.0


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

* [Intel-gfx] [RFC PATCH 3/5] drm/i915/display: Use panel index to parse lfp backlight
  2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 1/5] drm/i915/bios: calculate drrs mode using panel index for dual LFP Animesh Manna
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 2/5] drm/i915/display: Use panel index to parse panel timing for dual EDP Animesh Manna
@ 2022-06-02 14:18 ` Animesh Manna
  2022-06-02 15:13   ` Jani Nikula
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 4/5] drm/i915/display: prepend connector name to the backlight Animesh Manna
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 29+ messages in thread
From: Animesh Manna @ 2022-06-02 14:18 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

There will be separate entry of backlight info for each
LFP in VBT. Panel index is used for deriving backlight info
of the respective panel.

Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 943c5584f242..34160dc6b092 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -957,11 +957,11 @@ parse_generic_dtd(struct drm_i915_private *i915,
 
 static void
 parse_lfp_backlight(struct drm_i915_private *i915,
-		    struct intel_panel *panel)
+		    struct intel_panel *panel,
+		    int panel_index)
 {
 	const struct bdb_lfp_backlight_data *backlight_data;
 	const struct lfp_backlight_data_entry *entry;
-	int panel_type = panel->vbt.panel_type;
 	u16 level;
 
 	backlight_data = find_section(i915, BDB_LVDS_BACKLIGHT);
@@ -975,7 +975,7 @@ parse_lfp_backlight(struct drm_i915_private *i915,
 		return;
 	}
 
-	entry = &backlight_data->data[panel_type];
+	entry = &backlight_data->data[panel_index];
 
 	panel->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
 	if (!panel->vbt.backlight.present) {
@@ -999,7 +999,7 @@ parse_lfp_backlight(struct drm_i915_private *i915,
 		if (get_blocksize(backlight_data) >= exp_size) {
 			const struct lfp_backlight_control_method *method;
 
-			method = &backlight_data->backlight_control[panel_type];
+			method = &backlight_data->backlight_control[panel_index];
 			panel->vbt.backlight.type = method->type;
 			panel->vbt.backlight.controller = method->controller;
 		}
@@ -1012,11 +1012,11 @@ parse_lfp_backlight(struct drm_i915_private *i915,
 		u16 min_level;
 		bool scale;
 
-		level = backlight_data->brightness_level[panel_type].level;
-		min_level = backlight_data->brightness_min_level[panel_type].level;
+		level = backlight_data->brightness_level[panel_index].level;
+		min_level = backlight_data->brightness_min_level[panel_index].level;
 
 		if (i915->vbt.version >= 236)
-			scale = backlight_data->brightness_precision_bits[panel_type] == 16;
+			scale = backlight_data->brightness_precision_bits[panel_index] == 16;
 		else
 			scale = level > 255;
 
@@ -1028,11 +1028,8 @@ parse_lfp_backlight(struct drm_i915_private *i915,
 			level = 255;
 		}
 		panel->vbt.backlight.min_brightness = min_level;
-
-		panel->vbt.backlight.brightness_precision_bits =
-			backlight_data->brightness_precision_bits[panel_type];
 	} else {
-		level = backlight_data->level[panel_type];
+		level = backlight_data->level[panel_index];
 		panel->vbt.backlight.min_brightness = entry->min_brightness;
 	}
 
@@ -3117,7 +3114,7 @@ void intel_bios_init_panel(struct drm_i915_private *i915,
 	parse_panel_options(i915, panel, edid, panel_index);
 	parse_generic_dtd(i915, panel, panel_index);
 	parse_lfp_data(i915, panel, panel_index);
-	parse_lfp_backlight(i915, panel);
+	parse_lfp_backlight(i915, panel, panel_index);
 	parse_sdvo_panel_data(i915, panel);
 	parse_panel_driver_features(i915, panel);
 	parse_power_conservation_features(i915, panel);
-- 
2.29.0


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

* [Intel-gfx] [RFC PATCH 4/5] drm/i915/display: prepend connector name to the backlight
  2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
                   ` (2 preceding siblings ...)
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 3/5] drm/i915/display: Use panel index to parse lfp backlight Animesh Manna
@ 2022-06-02 14:18 ` Animesh Manna
  2022-06-02 15:16   ` Jani Nikula
  2022-07-13  8:17   ` [Intel-gfx] [PATCHv2] drm/i915/display: add support for dual panel backlight Arun R Murthy
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 5/5] drm/i915/display/tgl+: Use PPS index from vbt Animesh Manna
                   ` (6 subsequent siblings)
  10 siblings, 2 replies; 29+ messages in thread
From: Animesh Manna @ 2022-06-02 14:18 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

From: Arun R Murthy <arun.r.murthy@intel.com>

With the enablement of dual eDP, there will have to exist two entries of
backlight sysfs file. In order to avoid sysfs file name duplication, the
file names are prepended with the connector name.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/i915/display/intel_backlight.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c b/drivers/gpu/drm/i915/display/intel_backlight.c
index 68513206a66a..211fa0f07239 100644
--- a/drivers/gpu/drm/i915/display/intel_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_backlight.c
@@ -967,6 +967,8 @@ int intel_backlight_device_register(struct intel_connector *connector)
 		props.power = FB_BLANK_POWERDOWN;
 
 	name = kstrdup("intel_backlight", GFP_KERNEL);
+	name = kasprintf(GFP_KERNEL, "%s.intel_backlight",
+			connector->base.name);
 	if (!name)
 		return -ENOMEM;
 
-- 
2.29.0


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

* [Intel-gfx] [RFC PATCH 5/5] drm/i915/display/tgl+: Use PPS index from vbt
  2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
                   ` (3 preceding siblings ...)
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 4/5] drm/i915/display: prepend connector name to the backlight Animesh Manna
@ 2022-06-02 14:18 ` Animesh Manna
  2022-06-02 15:32   ` Jani Nikula
  2022-06-02 16:08 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Dual LFP/EDP enablement Patchwork
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 29+ messages in thread
From: Animesh Manna @ 2022-06-02 14:18 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Nischal Varide

From: Nischal Varide <nischal.varide@intel.com>

Tigerlake and newer has two instances of PPS, to support up to two
eDP panels.

Signed-off-by: Nischal Varide <nischal.varide@intel.com>
Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_pps.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_pps.c b/drivers/gpu/drm/i915/display/intel_pps.c
index 1b21a341962f..52cb5be4e901 100644
--- a/drivers/gpu/drm/i915/display/intel_pps.c
+++ b/drivers/gpu/drm/i915/display/intel_pps.c
@@ -365,7 +365,8 @@ static void intel_pps_get_registers(struct intel_dp *intel_dp,
 
 	memset(regs, 0, sizeof(*regs));
 
-	if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv))
+	if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv) ||
+	    DISPLAY_VER(dev_priv) >= 12)
 		pps_idx = bxt_power_sequencer_idx(intel_dp);
 	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
 		pps_idx = vlv_power_sequencer_pipe(intel_dp);
-- 
2.29.0


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

* Re: [Intel-gfx] [RFC PATCH 1/5] drm/i915/bios: calculate drrs mode using panel index for dual LFP
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 1/5] drm/i915/bios: calculate drrs mode using panel index for dual LFP Animesh Manna
@ 2022-06-02 15:07   ` Jani Nikula
  2022-06-02 15:11     ` Jani Nikula
  0 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2022-06-02 15:07 UTC (permalink / raw)
  To: Animesh Manna, intel-gfx

On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com> wrote:
> Dual LFP may have different panel and based on panel index
> respective 2 bits store the drrs mode info for each panel. So panel
> index is used for deriving drrs mode of the rspective panel.
>
> Signed-off-by: Animesh Manna <animesh.manna@intel.com>
> ---
>  drivers/gpu/drm/i915/display/icl_dsi.c        |  2 +-
>  drivers/gpu/drm/i915/display/intel_bios.c     | 45 +++++++++++++++++--
>  drivers/gpu/drm/i915/display/intel_bios.h     |  3 +-
>  drivers/gpu/drm/i915/display/intel_dp.c       |  3 +-
>  drivers/gpu/drm/i915/display/intel_lvds.c     |  3 +-
>  drivers/gpu/drm/i915/display/intel_sdvo.c     |  2 +-
>  drivers/gpu/drm/i915/display/intel_vbt_defs.h |  4 ++
>  drivers/gpu/drm/i915/display/vlv_dsi.c        |  2 +-
>  8 files changed, 52 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c b/drivers/gpu/drm/i915/display/icl_dsi.c
> index 3b5305c219ba..b3aa430abd03 100644
> --- a/drivers/gpu/drm/i915/display/icl_dsi.c
> +++ b/drivers/gpu/drm/i915/display/icl_dsi.c
> @@ -2050,7 +2050,7 @@ void icl_dsi_init(struct drm_i915_private *dev_priv)
>  	/* attach connector to encoder */
>  	intel_connector_attach_encoder(intel_connector, encoder);
>  
> -	intel_bios_init_panel(dev_priv, &intel_connector->panel, NULL);
> +	intel_bios_init_panel(dev_priv, intel_connector, NULL);
>  
>  	mutex_lock(&dev->mode_config.mutex);
>  	intel_panel_add_vbt_lfp_fixed_mode(intel_connector);
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index 337277ae3dae..78eaf6255599 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -747,7 +747,8 @@ static int get_panel_type(struct drm_i915_private *i915,
>  static void
>  parse_panel_options(struct drm_i915_private *i915,
>  		    struct intel_panel *panel,
> -		    const struct edid *edid)
> +		    const struct edid *edid,
> +		    int panel_index)
>  {
>  	const struct bdb_lvds_options *lvds_options;
>  	int panel_type;
> @@ -764,7 +765,7 @@ parse_panel_options(struct drm_i915_private *i915,
>  	panel->vbt.panel_type = panel_type;
>  
>  	drrs_mode = (lvds_options->dps_panel_type_bits
> -				>> (panel_type * 2)) & MODE_MASK;
> +				>> (panel_index * 2)) & MODE_MASK;

It's the get_panel_type() call that needs to take the panel number into
account, and return the panel specific panel_type from there. After
that, it's stored in panel->vbt.panel_type and it'll be used
everywere. DRRS is not a special case.

>  	/*
>  	 * VBT has static DRRS = 0 and seamless DRRS = 2.
>  	 * The below piece of code is required to adjust vbt.drrs_type
> @@ -3069,13 +3070,49 @@ void intel_bios_init(struct drm_i915_private *i915)
>  	kfree(oprom_vbt);
>  }
>  
> +static int
> +get_lfp_panel_index(struct drm_i915_private *i915, int lfp_panel_instance)
> +{
> +	const struct bdb_lvds_options *lvds_options;
> +
> +	lvds_options = find_section(i915, BDB_LVDS_OPTIONS);
> +	if (!lvds_options)
> +		return -1;
> +
> +	switch (lfp_panel_instance) {
> +	case 1:
> +		return lvds_options->panel_type;
> +	case 2:
> +		return lvds_options->panel_type2;
> +	default:
> +		break;
> +	}
> +
> +	return -1;
> +}

Nah, it's not this simple. See get_panel_type(). Either of the
panel_type fields could be 0xff to indicate PNPID based lookup.

> +
>  void intel_bios_init_panel(struct drm_i915_private *i915,
> -			   struct intel_panel *panel,
> +			   struct intel_connector *intel_connector,
>  			   const struct edid *edid)
>  {
> +	struct intel_panel *panel = &intel_connector->panel;
> +	struct intel_encoder *encoder = intel_connector->encoder;
> +	const struct intel_bios_encoder_data *devdata = i915->vbt.ports[encoder->port];

This might be NULL, we don't initialize ports for all platforms.


> +	int lfp_inst = 0, panel_index;
> +
>  	init_vbt_panel_defaults(panel);
>  
> -	parse_panel_options(i915, panel, edid);
> +	if (devdata->child.handle == HANDLE_LFP_1)
> +		lfp_inst = 1;
> +	else if (devdata->child.handle == HANDLE_LFP_2)
> +		lfp_inst = 2;
> +
> +	if (lfp_inst == 0)
> +		return;
> +
> +	panel_index = get_lfp_panel_index(i915, lfp_inst);
> +
> +	parse_panel_options(i915, panel, edid, panel_index);
>  	parse_generic_dtd(i915, panel);
>  	parse_lfp_data(i915, panel);
>  	parse_lfp_backlight(i915, panel);
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
> index b112200ae0a0..e4c268495547 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.h
> +++ b/drivers/gpu/drm/i915/display/intel_bios.h
> @@ -37,6 +37,7 @@ struct edid;
>  struct intel_bios_encoder_data;
>  struct intel_crtc_state;
>  struct intel_encoder;
> +struct intel_connector;
>  struct intel_panel;
>  enum port;
>  
> @@ -233,7 +234,7 @@ struct mipi_pps_data {
>  
>  void intel_bios_init(struct drm_i915_private *dev_priv);
>  void intel_bios_init_panel(struct drm_i915_private *dev_priv,
> -			   struct intel_panel *panel,
> +			   struct intel_connector *intel_connector,
>  			   const struct edid *edid);
>  void intel_bios_fini_panel(struct intel_panel *panel);
>  void intel_bios_driver_remove(struct drm_i915_private *dev_priv);
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 1bc1f6458e81..3e9b4263e1bc 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5213,8 +5213,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
>  	}
>  	intel_connector->edid = edid;
>  
> -	intel_bios_init_panel(dev_priv, &intel_connector->panel,
> -			      IS_ERR(edid) ? NULL : edid);
> +	intel_bios_init_panel(dev_priv, intel_connector, IS_ERR(edid) ? NULL : edid);
>  
>  	intel_panel_add_edid_fixed_modes(intel_connector,
>  					 intel_connector->panel.vbt.drrs_type != DRRS_TYPE_NONE);
> diff --git a/drivers/gpu/drm/i915/display/intel_lvds.c b/drivers/gpu/drm/i915/display/intel_lvds.c
> index 595f03343939..2c60267f9d37 100644
> --- a/drivers/gpu/drm/i915/display/intel_lvds.c
> +++ b/drivers/gpu/drm/i915/display/intel_lvds.c
> @@ -967,8 +967,7 @@ void intel_lvds_init(struct drm_i915_private *dev_priv)
>  	}
>  	intel_connector->edid = edid;
>  
> -	intel_bios_init_panel(dev_priv, &intel_connector->panel,
> -			      IS_ERR(edid) ? NULL : edid);
> +	intel_bios_init_panel(dev_priv, intel_connector, IS_ERR(edid) ? NULL : edid);
>  
>  	/* Try EDID first */
>  	intel_panel_add_edid_fixed_modes(intel_connector,
> diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c
> index d9de2c4d67a7..3b7fe117bc5b 100644
> --- a/drivers/gpu/drm/i915/display/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
> @@ -2901,7 +2901,7 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device)
>  	if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector))
>  		goto err;
>  
> -	intel_bios_init_panel(i915, &intel_connector->panel, NULL);
> +	intel_bios_init_panel(i915, intel_connector, NULL);
>  
>  	/*
>  	 * Fetch modes from VBT. For SDVO prefer the VBT mode since some
> diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> index 4b98bab3b890..fbda64e3a34d 100644
> --- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> +++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> @@ -349,6 +349,10 @@ enum vbt_gmbus_ddi {
>  #define BDB_230_VBT_DP_MAX_LINK_RATE_UHBR13P5	6
>  #define BDB_230_VBT_DP_MAX_LINK_RATE_UHBR20	7
>  
> +/* VBT info for DUAL LFP */
> +#define HANDLE_LFP_1 0x0008
> +#define HANDLE_LFP_2 0x0080

Please move these before the DEVICE_TYPE_* macros, and name
DEVICE_HANDLE_*. The comment should refer to device handles, and there's
no need to mention VBT or dual LFP.

BR,
Jani.

> +
>  /*
>   * The child device config, aka the display device data structure, provides a
>   * description of a port and its configuration on the platform.
> diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c b/drivers/gpu/drm/i915/display/vlv_dsi.c
> index abda0888c8d4..114e4f89f198 100644
> --- a/drivers/gpu/drm/i915/display/vlv_dsi.c
> +++ b/drivers/gpu/drm/i915/display/vlv_dsi.c
> @@ -1926,7 +1926,7 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
>  
>  	intel_dsi->panel_power_off_time = ktime_get_boottime();
>  
> -	intel_bios_init_panel(dev_priv, &intel_connector->panel, NULL);
> +	intel_bios_init_panel(dev_priv, intel_connector, NULL);
>  
>  	if (intel_connector->panel.vbt.dsi.config->dual_link)
>  		intel_dsi->ports = BIT(PORT_A) | BIT(PORT_C);

-- 
Jani Nikula, Intel Open Source Graphics Center

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

* Re: [Intel-gfx] [RFC PATCH 1/5] drm/i915/bios: calculate drrs mode using panel index for dual LFP
  2022-06-02 15:07   ` Jani Nikula
@ 2022-06-02 15:11     ` Jani Nikula
  2022-06-03  9:43       ` Manna, Animesh
  0 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2022-06-02 15:11 UTC (permalink / raw)
  To: Animesh Manna, intel-gfx

On Thu, 02 Jun 2022, Jani Nikula <jani.nikula@intel.com> wrote:
> On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com> wrote:
>> Dual LFP may have different panel and based on panel index
>> respective 2 bits store the drrs mode info for each panel. So panel
>> index is used for deriving drrs mode of the rspective panel.
>>
>> Signed-off-by: Animesh Manna <animesh.manna@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/icl_dsi.c        |  2 +-
>>  drivers/gpu/drm/i915/display/intel_bios.c     | 45 +++++++++++++++++--
>>  drivers/gpu/drm/i915/display/intel_bios.h     |  3 +-
>>  drivers/gpu/drm/i915/display/intel_dp.c       |  3 +-
>>  drivers/gpu/drm/i915/display/intel_lvds.c     |  3 +-
>>  drivers/gpu/drm/i915/display/intel_sdvo.c     |  2 +-
>>  drivers/gpu/drm/i915/display/intel_vbt_defs.h |  4 ++
>>  drivers/gpu/drm/i915/display/vlv_dsi.c        |  2 +-
>>  8 files changed, 52 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c b/drivers/gpu/drm/i915/display/icl_dsi.c
>> index 3b5305c219ba..b3aa430abd03 100644
>> --- a/drivers/gpu/drm/i915/display/icl_dsi.c
>> +++ b/drivers/gpu/drm/i915/display/icl_dsi.c
>> @@ -2050,7 +2050,7 @@ void icl_dsi_init(struct drm_i915_private *dev_priv)
>>  	/* attach connector to encoder */
>>  	intel_connector_attach_encoder(intel_connector, encoder);
>>  
>> -	intel_bios_init_panel(dev_priv, &intel_connector->panel, NULL);
>> +	intel_bios_init_panel(dev_priv, intel_connector, NULL);
>>  
>>  	mutex_lock(&dev->mode_config.mutex);
>>  	intel_panel_add_vbt_lfp_fixed_mode(intel_connector);
>> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>> index 337277ae3dae..78eaf6255599 100644
>> --- a/drivers/gpu/drm/i915/display/intel_bios.c
>> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
>> @@ -747,7 +747,8 @@ static int get_panel_type(struct drm_i915_private *i915,
>>  static void
>>  parse_panel_options(struct drm_i915_private *i915,
>>  		    struct intel_panel *panel,
>> -		    const struct edid *edid)
>> +		    const struct edid *edid,
>> +		    int panel_index)
>>  {
>>  	const struct bdb_lvds_options *lvds_options;
>>  	int panel_type;
>> @@ -764,7 +765,7 @@ parse_panel_options(struct drm_i915_private *i915,
>>  	panel->vbt.panel_type = panel_type;
>>  
>>  	drrs_mode = (lvds_options->dps_panel_type_bits
>> -				>> (panel_type * 2)) & MODE_MASK;
>> +				>> (panel_index * 2)) & MODE_MASK;
>
> It's the get_panel_type() call that needs to take the panel number into
> account, and return the panel specific panel_type from there. After
> that, it's stored in panel->vbt.panel_type and it'll be used
> everywere. DRRS is not a special case.
>
>>  	/*
>>  	 * VBT has static DRRS = 0 and seamless DRRS = 2.
>>  	 * The below piece of code is required to adjust vbt.drrs_type
>> @@ -3069,13 +3070,49 @@ void intel_bios_init(struct drm_i915_private *i915)
>>  	kfree(oprom_vbt);
>>  }
>>  
>> +static int
>> +get_lfp_panel_index(struct drm_i915_private *i915, int lfp_panel_instance)
>> +{
>> +	const struct bdb_lvds_options *lvds_options;
>> +
>> +	lvds_options = find_section(i915, BDB_LVDS_OPTIONS);
>> +	if (!lvds_options)
>> +		return -1;
>> +
>> +	switch (lfp_panel_instance) {
>> +	case 1:
>> +		return lvds_options->panel_type;
>> +	case 2:
>> +		return lvds_options->panel_type2;
>> +	default:
>> +		break;
>> +	}
>> +
>> +	return -1;
>> +}
>
> Nah, it's not this simple. See get_panel_type(). Either of the
> panel_type fields could be 0xff to indicate PNPID based lookup.
>
>> +
>>  void intel_bios_init_panel(struct drm_i915_private *i915,
>> -			   struct intel_panel *panel,
>> +			   struct intel_connector *intel_connector,
>>  			   const struct edid *edid)
>>  {
>> +	struct intel_panel *panel = &intel_connector->panel;
>> +	struct intel_encoder *encoder = intel_connector->encoder;
>> +	const struct intel_bios_encoder_data *devdata = i915->vbt.ports[encoder->port];
>
> This might be NULL, we don't initialize ports for all platforms.
>
>
>> +	int lfp_inst = 0, panel_index;
>> +
>>  	init_vbt_panel_defaults(panel);
>>  
>> -	parse_panel_options(i915, panel, edid);
>> +	if (devdata->child.handle == HANDLE_LFP_1)
>> +		lfp_inst = 1;
>> +	else if (devdata->child.handle == HANDLE_LFP_2)
>> +		lfp_inst = 2;
>> +
>> +	if (lfp_inst == 0)
>> +		return;
>> +
>> +	panel_index = get_lfp_panel_index(i915, lfp_inst);
>> +
>> +	parse_panel_options(i915, panel, edid, panel_index);

Also, none of this handling should happen here. Just pass devdata on to
parse_panel_options(), and pass it on further to get_panel_type(), which
should be the single point of truth for figuring out the panel type.

>>  	parse_generic_dtd(i915, panel);
>>  	parse_lfp_data(i915, panel);
>>  	parse_lfp_backlight(i915, panel);
>> diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
>> index b112200ae0a0..e4c268495547 100644
>> --- a/drivers/gpu/drm/i915/display/intel_bios.h
>> +++ b/drivers/gpu/drm/i915/display/intel_bios.h
>> @@ -37,6 +37,7 @@ struct edid;
>>  struct intel_bios_encoder_data;
>>  struct intel_crtc_state;
>>  struct intel_encoder;
>> +struct intel_connector;
>>  struct intel_panel;
>>  enum port;
>>  
>> @@ -233,7 +234,7 @@ struct mipi_pps_data {
>>  
>>  void intel_bios_init(struct drm_i915_private *dev_priv);
>>  void intel_bios_init_panel(struct drm_i915_private *dev_priv,
>> -			   struct intel_panel *panel,
>> +			   struct intel_connector *intel_connector,
>>  			   const struct edid *edid);
>>  void intel_bios_fini_panel(struct intel_panel *panel);
>>  void intel_bios_driver_remove(struct drm_i915_private *dev_priv);
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
>> index 1bc1f6458e81..3e9b4263e1bc 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -5213,8 +5213,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
>>  	}
>>  	intel_connector->edid = edid;
>>  
>> -	intel_bios_init_panel(dev_priv, &intel_connector->panel,
>> -			      IS_ERR(edid) ? NULL : edid);
>> +	intel_bios_init_panel(dev_priv, intel_connector, IS_ERR(edid) ? NULL : edid);
>>  
>>  	intel_panel_add_edid_fixed_modes(intel_connector,
>>  					 intel_connector->panel.vbt.drrs_type != DRRS_TYPE_NONE);
>> diff --git a/drivers/gpu/drm/i915/display/intel_lvds.c b/drivers/gpu/drm/i915/display/intel_lvds.c
>> index 595f03343939..2c60267f9d37 100644
>> --- a/drivers/gpu/drm/i915/display/intel_lvds.c
>> +++ b/drivers/gpu/drm/i915/display/intel_lvds.c
>> @@ -967,8 +967,7 @@ void intel_lvds_init(struct drm_i915_private *dev_priv)
>>  	}
>>  	intel_connector->edid = edid;
>>  
>> -	intel_bios_init_panel(dev_priv, &intel_connector->panel,
>> -			      IS_ERR(edid) ? NULL : edid);
>> +	intel_bios_init_panel(dev_priv, intel_connector, IS_ERR(edid) ? NULL : edid);
>>  
>>  	/* Try EDID first */
>>  	intel_panel_add_edid_fixed_modes(intel_connector,
>> diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c
>> index d9de2c4d67a7..3b7fe117bc5b 100644
>> --- a/drivers/gpu/drm/i915/display/intel_sdvo.c
>> +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
>> @@ -2901,7 +2901,7 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device)
>>  	if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector))
>>  		goto err;
>>  
>> -	intel_bios_init_panel(i915, &intel_connector->panel, NULL);
>> +	intel_bios_init_panel(i915, intel_connector, NULL);
>>  
>>  	/*
>>  	 * Fetch modes from VBT. For SDVO prefer the VBT mode since some
>> diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
>> index 4b98bab3b890..fbda64e3a34d 100644
>> --- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h
>> +++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
>> @@ -349,6 +349,10 @@ enum vbt_gmbus_ddi {
>>  #define BDB_230_VBT_DP_MAX_LINK_RATE_UHBR13P5	6
>>  #define BDB_230_VBT_DP_MAX_LINK_RATE_UHBR20	7
>>  
>> +/* VBT info for DUAL LFP */
>> +#define HANDLE_LFP_1 0x0008
>> +#define HANDLE_LFP_2 0x0080
>
> Please move these before the DEVICE_TYPE_* macros, and name
> DEVICE_HANDLE_*. The comment should refer to device handles, and there's
> no need to mention VBT or dual LFP.
>
> BR,
> Jani.
>
>> +
>>  /*
>>   * The child device config, aka the display device data structure, provides a
>>   * description of a port and its configuration on the platform.
>> diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c b/drivers/gpu/drm/i915/display/vlv_dsi.c
>> index abda0888c8d4..114e4f89f198 100644
>> --- a/drivers/gpu/drm/i915/display/vlv_dsi.c
>> +++ b/drivers/gpu/drm/i915/display/vlv_dsi.c
>> @@ -1926,7 +1926,7 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
>>  
>>  	intel_dsi->panel_power_off_time = ktime_get_boottime();
>>  
>> -	intel_bios_init_panel(dev_priv, &intel_connector->panel, NULL);
>> +	intel_bios_init_panel(dev_priv, intel_connector, NULL);
>>  
>>  	if (intel_connector->panel.vbt.dsi.config->dual_link)
>>  		intel_dsi->ports = BIT(PORT_A) | BIT(PORT_C);

-- 
Jani Nikula, Intel Open Source Graphics Center

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

* Re: [Intel-gfx] [RFC PATCH 2/5] drm/i915/display: Use panel index to parse panel timing for dual EDP
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 2/5] drm/i915/display: Use panel index to parse panel timing for dual EDP Animesh Manna
@ 2022-06-02 15:12   ` Jani Nikula
  0 siblings, 0 replies; 29+ messages in thread
From: Jani Nikula @ 2022-06-02 15:12 UTC (permalink / raw)
  To: Animesh Manna, intel-gfx

On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com> wrote:
> There will be separate entry for eack LFP in VBT. Panel index is
> used for deriving panel timing info of the respective panel.

This is completely unnecessary once you handle panel_type properly as
explained in reply to the previous patch.

BR,
Jani.


>
> Signed-off-by: Animesh Manna <animesh.manna@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_bios.c | 26 ++++++++++++-----------
>  1 file changed, 14 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index 78eaf6255599..943c5584f242 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -793,16 +793,16 @@ static void
>  parse_lfp_panel_dtd(struct drm_i915_private *i915,
>  		    struct intel_panel *panel,
>  		    const struct bdb_lvds_lfp_data *lvds_lfp_data,
> -		    const struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs)
> +		    const struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs,
> +		    int panel_index)
>  {
>  	const struct lvds_dvo_timing *panel_dvo_timing;
>  	const struct lvds_fp_timing *fp_timing;
>  	struct drm_display_mode *panel_fixed_mode;
> -	int panel_type = panel->vbt.panel_type;
>  
>  	panel_dvo_timing = get_lvds_dvo_timing(lvds_lfp_data,
>  					       lvds_lfp_data_ptrs,
> -					       panel_type);
> +					       panel_index);
>  
>  	panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode), GFP_KERNEL);
>  	if (!panel_fixed_mode)
> @@ -818,7 +818,7 @@ parse_lfp_panel_dtd(struct drm_i915_private *i915,
>  
>  	fp_timing = get_lvds_fp_timing(lvds_lfp_data,
>  				       lvds_lfp_data_ptrs,
> -				       panel_type);
> +				       panel_index);
>  
>  	/* check the resolution, just to be sure */
>  	if (fp_timing->x_res == panel_fixed_mode->hdisplay &&
> @@ -832,7 +832,8 @@ parse_lfp_panel_dtd(struct drm_i915_private *i915,
>  
>  static void
>  parse_lfp_data(struct drm_i915_private *i915,
> -	       struct intel_panel *panel)
> +	       struct intel_panel *panel,
> +	       int panel_index)
>  {
>  	const struct bdb_lvds_lfp_data *data;
>  	const struct bdb_lvds_lfp_data_tail *tail;
> @@ -848,7 +849,7 @@ parse_lfp_data(struct drm_i915_private *i915,
>  		return;
>  
>  	if (!panel->vbt.lfp_lvds_vbt_mode)
> -		parse_lfp_panel_dtd(i915, panel, data, ptrs);
> +		parse_lfp_panel_dtd(i915, panel, data, ptrs, panel_index);
>  
>  	tail = get_lfp_data_tail(data, ptrs);
>  	if (!tail)
> @@ -865,7 +866,8 @@ parse_lfp_data(struct drm_i915_private *i915,
>  
>  static void
>  parse_generic_dtd(struct drm_i915_private *i915,
> -		  struct intel_panel *panel)
> +		  struct intel_panel *panel,
> +		  int panel_index)
>  {
>  	const struct bdb_generic_dtd *generic_dtd;
>  	const struct generic_dtd_entry *dtd;
> @@ -900,14 +902,14 @@ parse_generic_dtd(struct drm_i915_private *i915,
>  
>  	num_dtd = (get_blocksize(generic_dtd) -
>  		   sizeof(struct bdb_generic_dtd)) / generic_dtd->gdtd_size;
> -	if (panel->vbt.panel_type >= num_dtd) {
> +	if (panel_index >= num_dtd) {
>  		drm_err(&i915->drm,
>  			"Panel type %d not found in table of %d DTD's\n",
> -			panel->vbt.panel_type, num_dtd);
> +			panel_index, num_dtd);
>  		return;
>  	}
>  
> -	dtd = &generic_dtd->dtd[panel->vbt.panel_type];
> +	dtd = &generic_dtd->dtd[panel_index];
>  
>  	panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode), GFP_KERNEL);
>  	if (!panel_fixed_mode)
> @@ -3113,8 +3115,8 @@ void intel_bios_init_panel(struct drm_i915_private *i915,
>  	panel_index = get_lfp_panel_index(i915, lfp_inst);
>  
>  	parse_panel_options(i915, panel, edid, panel_index);
> -	parse_generic_dtd(i915, panel);
> -	parse_lfp_data(i915, panel);
> +	parse_generic_dtd(i915, panel, panel_index);
> +	parse_lfp_data(i915, panel, panel_index);
>  	parse_lfp_backlight(i915, panel);
>  	parse_sdvo_panel_data(i915, panel);
>  	parse_panel_driver_features(i915, panel);

-- 
Jani Nikula, Intel Open Source Graphics Center

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

* Re: [Intel-gfx] [RFC PATCH 3/5] drm/i915/display: Use panel index to parse lfp backlight
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 3/5] drm/i915/display: Use panel index to parse lfp backlight Animesh Manna
@ 2022-06-02 15:13   ` Jani Nikula
  0 siblings, 0 replies; 29+ messages in thread
From: Jani Nikula @ 2022-06-02 15:13 UTC (permalink / raw)
  To: Animesh Manna, intel-gfx

On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com> wrote:
> There will be separate entry of backlight info for each
> LFP in VBT. Panel index is used for deriving backlight info
> of the respective panel.

Same here, unnecessary. panel_type *is* panel index.

BR,
Jani.

>
> Signed-off-by: Animesh Manna <animesh.manna@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_bios.c | 21 +++++++++------------
>  1 file changed, 9 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index 943c5584f242..34160dc6b092 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -957,11 +957,11 @@ parse_generic_dtd(struct drm_i915_private *i915,
>  
>  static void
>  parse_lfp_backlight(struct drm_i915_private *i915,
> -		    struct intel_panel *panel)
> +		    struct intel_panel *panel,
> +		    int panel_index)
>  {
>  	const struct bdb_lfp_backlight_data *backlight_data;
>  	const struct lfp_backlight_data_entry *entry;
> -	int panel_type = panel->vbt.panel_type;
>  	u16 level;
>  
>  	backlight_data = find_section(i915, BDB_LVDS_BACKLIGHT);
> @@ -975,7 +975,7 @@ parse_lfp_backlight(struct drm_i915_private *i915,
>  		return;
>  	}
>  
> -	entry = &backlight_data->data[panel_type];
> +	entry = &backlight_data->data[panel_index];
>  
>  	panel->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
>  	if (!panel->vbt.backlight.present) {
> @@ -999,7 +999,7 @@ parse_lfp_backlight(struct drm_i915_private *i915,
>  		if (get_blocksize(backlight_data) >= exp_size) {
>  			const struct lfp_backlight_control_method *method;
>  
> -			method = &backlight_data->backlight_control[panel_type];
> +			method = &backlight_data->backlight_control[panel_index];
>  			panel->vbt.backlight.type = method->type;
>  			panel->vbt.backlight.controller = method->controller;
>  		}
> @@ -1012,11 +1012,11 @@ parse_lfp_backlight(struct drm_i915_private *i915,
>  		u16 min_level;
>  		bool scale;
>  
> -		level = backlight_data->brightness_level[panel_type].level;
> -		min_level = backlight_data->brightness_min_level[panel_type].level;
> +		level = backlight_data->brightness_level[panel_index].level;
> +		min_level = backlight_data->brightness_min_level[panel_index].level;
>  
>  		if (i915->vbt.version >= 236)
> -			scale = backlight_data->brightness_precision_bits[panel_type] == 16;
> +			scale = backlight_data->brightness_precision_bits[panel_index] == 16;
>  		else
>  			scale = level > 255;
>  
> @@ -1028,11 +1028,8 @@ parse_lfp_backlight(struct drm_i915_private *i915,
>  			level = 255;
>  		}
>  		panel->vbt.backlight.min_brightness = min_level;
> -
> -		panel->vbt.backlight.brightness_precision_bits =
> -			backlight_data->brightness_precision_bits[panel_type];
>  	} else {
> -		level = backlight_data->level[panel_type];
> +		level = backlight_data->level[panel_index];
>  		panel->vbt.backlight.min_brightness = entry->min_brightness;
>  	}
>  
> @@ -3117,7 +3114,7 @@ void intel_bios_init_panel(struct drm_i915_private *i915,
>  	parse_panel_options(i915, panel, edid, panel_index);
>  	parse_generic_dtd(i915, panel, panel_index);
>  	parse_lfp_data(i915, panel, panel_index);
> -	parse_lfp_backlight(i915, panel);
> +	parse_lfp_backlight(i915, panel, panel_index);
>  	parse_sdvo_panel_data(i915, panel);
>  	parse_panel_driver_features(i915, panel);
>  	parse_power_conservation_features(i915, panel);

-- 
Jani Nikula, Intel Open Source Graphics Center

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

* Re: [Intel-gfx] [RFC PATCH 4/5] drm/i915/display: prepend connector name to the backlight
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 4/5] drm/i915/display: prepend connector name to the backlight Animesh Manna
@ 2022-06-02 15:16   ` Jani Nikula
  2022-06-03  3:34     ` Murthy, Arun R
  2022-07-13  8:17   ` [Intel-gfx] [PATCHv2] drm/i915/display: add support for dual panel backlight Arun R Murthy
  1 sibling, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2022-06-02 15:16 UTC (permalink / raw)
  To: Animesh Manna, intel-gfx

On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com> wrote:
> From: Arun R Murthy <arun.r.murthy@intel.com>
>
> With the enablement of dual eDP, there will have to exist two entries of
> backlight sysfs file. In order to avoid sysfs file name duplication, the
> file names are prepended with the connector name.

Fixed by 20f85ef89d94 ("drm/i915/backlight: use unique backlight device
names") about a year ago.

BR,
Jani.


>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_backlight.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c b/drivers/gpu/drm/i915/display/intel_backlight.c
> index 68513206a66a..211fa0f07239 100644
> --- a/drivers/gpu/drm/i915/display/intel_backlight.c
> +++ b/drivers/gpu/drm/i915/display/intel_backlight.c
> @@ -967,6 +967,8 @@ int intel_backlight_device_register(struct intel_connector *connector)
>  		props.power = FB_BLANK_POWERDOWN;
>  
>  	name = kstrdup("intel_backlight", GFP_KERNEL);
> +	name = kasprintf(GFP_KERNEL, "%s.intel_backlight",
> +			connector->base.name);
>  	if (!name)
>  		return -ENOMEM;

-- 
Jani Nikula, Intel Open Source Graphics Center

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

* Re: [Intel-gfx] [RFC PATCH 5/5] drm/i915/display/tgl+: Use PPS index from vbt
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 5/5] drm/i915/display/tgl+: Use PPS index from vbt Animesh Manna
@ 2022-06-02 15:32   ` Jani Nikula
  2022-06-03 10:29     ` Manna, Animesh
  0 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2022-06-02 15:32 UTC (permalink / raw)
  To: Animesh Manna, intel-gfx; +Cc: Nischal Varide

On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com> wrote:
> From: Nischal Varide <nischal.varide@intel.com>
>
> Tigerlake and newer has two instances of PPS, to support up to two
> eDP panels.
>
> Signed-off-by: Nischal Varide <nischal.varide@intel.com>
> Signed-off-by: Animesh Manna <animesh.manna@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_pps.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_pps.c b/drivers/gpu/drm/i915/display/intel_pps.c
> index 1b21a341962f..52cb5be4e901 100644
> --- a/drivers/gpu/drm/i915/display/intel_pps.c
> +++ b/drivers/gpu/drm/i915/display/intel_pps.c
> @@ -365,7 +365,8 @@ static void intel_pps_get_registers(struct intel_dp *intel_dp,
>  
>  	memset(regs, 0, sizeof(*regs));
>  
> -	if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv))
> +	if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv) ||
> +	    DISPLAY_VER(dev_priv) >= 12)
>  		pps_idx = bxt_power_sequencer_idx(intel_dp);

There are two things that need to be checked, but I don't have the time
right now:

- We'll probably need this *before* we've parsed the panel specific info
  from VBT. Ville has looked into this somewhat with the PNPID panel
  type stuff.

- bxt_power_sequencer_idx() does pps_init_registers() which has always
  struck me as a really odd place to do it. As if we don't know when the
  first time we do it is, so we do it there just in case.

BR,
Jani.



>  	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>  		pps_idx = vlv_power_sequencer_pipe(intel_dp);

-- 
Jani Nikula, Intel Open Source Graphics Center

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

* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Dual LFP/EDP enablement
  2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
                   ` (4 preceding siblings ...)
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 5/5] drm/i915/display/tgl+: Use PPS index from vbt Animesh Manna
@ 2022-06-02 16:08 ` Patchwork
  2022-06-02 16:08 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 29+ messages in thread
From: Patchwork @ 2022-06-02 16:08 UTC (permalink / raw)
  To: Animesh Manna; +Cc: intel-gfx

== Series Details ==

Series: Dual LFP/EDP enablement
URL   : https://patchwork.freedesktop.org/series/104663/
State : warning

== Summary ==

Error: dim checkpatch failed
45c6598f2be3 drm/i915/bios: calculate drrs mode using panel index for dual LFP
0416548d3850 drm/i915/display: Use panel index to parse panel timing for dual EDP
99a11ed67734 drm/i915/display: Use panel index to parse lfp backlight
733a6bde7af9 drm/i915/display: prepend connector name to the backlight
-:21: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#21: FILE: drivers/gpu/drm/i915/display/intel_backlight.c:971:
+	name = kasprintf(GFP_KERNEL, "%s.intel_backlight",
+			connector->base.name);

total: 0 errors, 0 warnings, 1 checks, 8 lines checked
11643f55c70f drm/i915/display/tgl+: Use PPS index from vbt



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

* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Dual LFP/EDP enablement
  2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
                   ` (5 preceding siblings ...)
  2022-06-02 16:08 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Dual LFP/EDP enablement Patchwork
@ 2022-06-02 16:08 ` Patchwork
  2022-06-02 16:49 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 29+ messages in thread
From: Patchwork @ 2022-06-02 16:08 UTC (permalink / raw)
  To: Animesh Manna; +Cc: intel-gfx

== Series Details ==

Series: Dual LFP/EDP enablement
URL   : https://patchwork.freedesktop.org/series/104663/
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] 29+ messages in thread

* [Intel-gfx] ✓ Fi.CI.BAT: success for Dual LFP/EDP enablement
  2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
                   ` (6 preceding siblings ...)
  2022-06-02 16:08 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
@ 2022-06-02 16:49 ` Patchwork
  2022-06-02 19:55 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 29+ messages in thread
From: Patchwork @ 2022-06-02 16:49 UTC (permalink / raw)
  To: Animesh Manna; +Cc: intel-gfx

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

== Series Details ==

Series: Dual LFP/EDP enablement
URL   : https://patchwork.freedesktop.org/series/104663/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_11720 -> Patchwork_104663v1
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (42 -> 42)
------------------------------

  Additional (2): fi-rkl-11600 bat-dg2-9 
  Missing    (2): bat-jsl-1 bat-adlp-4 

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

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

### IGT changes ###

#### Suppressed ####

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

  * igt@i915_pm_backlight@basic-brightness:
    - {fi-ehl-2}:         [PASS][1] -> [SKIP][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-ehl-2/igt@i915_pm_backlight@basic-brightness.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-ehl-2/igt@i915_pm_backlight@basic-brightness.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_huc_copy@huc-copy:
    - fi-rkl-11600:       NOTRUN -> [SKIP][3] ([i915#2190])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic:
    - fi-rkl-11600:       NOTRUN -> [SKIP][4] ([i915#4613]) +3 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@gem_lmem_swapping@basic.html

  * igt@gem_tiled_pread_basic:
    - fi-rkl-11600:       NOTRUN -> [SKIP][5] ([i915#3282])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_backlight@basic-brightness:
    - fi-skl-6600u:       [PASS][6] -> [SKIP][7] ([fdo#109271])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-skl-6600u/igt@i915_pm_backlight@basic-brightness.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-skl-6600u/igt@i915_pm_backlight@basic-brightness.html
    - fi-bsw-kefka:       [PASS][8] -> [SKIP][9] ([fdo#109271])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-bsw-kefka/igt@i915_pm_backlight@basic-brightness.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-bsw-kefka/igt@i915_pm_backlight@basic-brightness.html
    - fi-snb-2520m:       [PASS][10] -> [SKIP][11] ([fdo#109271])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-snb-2520m/igt@i915_pm_backlight@basic-brightness.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-snb-2520m/igt@i915_pm_backlight@basic-brightness.html
    - fi-kbl-soraka:      [PASS][12] -> [SKIP][13] ([fdo#109271])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-kbl-soraka/igt@i915_pm_backlight@basic-brightness.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-kbl-soraka/igt@i915_pm_backlight@basic-brightness.html
    - fi-tgl-u2:          [PASS][14] -> [SKIP][15] ([i915#1155])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-tgl-u2/igt@i915_pm_backlight@basic-brightness.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-tgl-u2/igt@i915_pm_backlight@basic-brightness.html
    - fi-rkl-11600:       NOTRUN -> [SKIP][16] ([i915#3012])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@i915_pm_backlight@basic-brightness.html

  * igt@i915_pm_rpm@basic-rte:
    - fi-cfl-8109u:       [PASS][17] -> [DMESG-WARN][18] ([i915#1888] / [i915#62])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-cfl-8109u/igt@i915_pm_rpm@basic-rte.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-cfl-8109u/igt@i915_pm_rpm@basic-rte.html

  * igt@i915_pm_rpm@module-reload:
    - fi-cfl-8109u:       [PASS][19] -> [DMESG-FAIL][20] ([i915#62])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-cfl-8109u/igt@i915_pm_rpm@module-reload.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-cfl-8109u/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live@gem:
    - fi-pnv-d510:        NOTRUN -> [DMESG-FAIL][21] ([i915#4528])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-pnv-d510/igt@i915_selftest@live@gem.html

  * igt@i915_selftest@live@gtt:
    - fi-bdw-5557u:       [PASS][22] -> [DMESG-FAIL][23] ([i915#3674])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-bdw-5557u/igt@i915_selftest@live@gtt.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-bdw-5557u/igt@i915_selftest@live@gtt.html

  * igt@i915_selftest@live@hangcheck:
    - bat-dg1-5:          [PASS][24] -> [DMESG-FAIL][25] ([i915#4494] / [i915#4957])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/bat-dg1-5/igt@i915_selftest@live@hangcheck.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/bat-dg1-5/igt@i915_selftest@live@hangcheck.html
    - bat-dg1-6:          [PASS][26] -> [DMESG-FAIL][27] ([i915#4494] / [i915#4957])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/bat-dg1-6/igt@i915_selftest@live@hangcheck.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/bat-dg1-6/igt@i915_selftest@live@hangcheck.html

  * igt@i915_selftest@live@late_gt_pm:
    - fi-cfl-8109u:       [PASS][28] -> [DMESG-WARN][29] ([i915#5904]) +12 similar issues
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-cfl-8109u/igt@i915_selftest@live@late_gt_pm.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-cfl-8109u/igt@i915_selftest@live@late_gt_pm.html

  * igt@i915_selftest@live@requests:
    - fi-blb-e6850:       [PASS][30] -> [DMESG-FAIL][31] ([i915#4528])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-blb-e6850/igt@i915_selftest@live@requests.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-blb-e6850/igt@i915_selftest@live@requests.html

  * igt@i915_suspend@basic-s3-without-i915:
    - fi-rkl-11600:       NOTRUN -> [INCOMPLETE][32] ([i915#5982])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_chamelium@hdmi-edid-read:
    - fi-rkl-11600:       NOTRUN -> [SKIP][33] ([fdo#111827]) +7 similar issues
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@kms_chamelium@hdmi-edid-read.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - fi-rkl-11600:       NOTRUN -> [SKIP][34] ([i915#4070] / [i915#4103]) +1 similar issue
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-rkl-11600:       NOTRUN -> [SKIP][35] ([fdo#109285] / [i915#4098])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_frontbuffer_tracking@basic:
    - fi-cfl-8109u:       [PASS][36] -> [DMESG-WARN][37] ([i915#62]) +14 similar issues
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-cfl-8109u/igt@kms_frontbuffer_tracking@basic.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-cfl-8109u/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d:
    - fi-rkl-11600:       NOTRUN -> [SKIP][38] ([i915#4070] / [i915#533])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d.html

  * igt@kms_psr@primary_page_flip:
    - fi-rkl-11600:       NOTRUN -> [SKIP][39] ([i915#1072]) +3 similar issues
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@kms_psr@primary_page_flip.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - fi-rkl-11600:       NOTRUN -> [SKIP][40] ([i915#3555] / [i915#4098])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-read:
    - fi-rkl-11600:       NOTRUN -> [SKIP][41] ([fdo#109295] / [i915#3291] / [i915#3708]) +2 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@prime_vgem@basic-read.html

  * igt@prime_vgem@basic-userptr:
    - fi-rkl-11600:       NOTRUN -> [SKIP][42] ([fdo#109295] / [i915#3301] / [i915#3708])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-rkl-11600/igt@prime_vgem@basic-userptr.html

  * igt@runner@aborted:
    - fi-bxt-dsi:         NOTRUN -> [FAIL][43] ([i915#5917])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-bxt-dsi/igt@runner@aborted.html
    - fi-glk-dsi:         NOTRUN -> [FAIL][44] ([i915#5917])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-glk-dsi/igt@runner@aborted.html
    - fi-blb-e6850:       NOTRUN -> [FAIL][45] ([fdo#109271] / [i915#2403] / [i915#4312])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-blb-e6850/igt@runner@aborted.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@requests:
    - fi-pnv-d510:        [DMESG-FAIL][46] ([i915#4528]) -> [PASS][47]
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/fi-pnv-d510/igt@i915_selftest@live@requests.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/fi-pnv-d510/igt@i915_selftest@live@requests.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1155]: https://gitlab.freedesktop.org/drm/intel/issues/1155
  [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2403]: https://gitlab.freedesktop.org/drm/intel/issues/2403
  [i915#3012]: https://gitlab.freedesktop.org/drm/intel/issues/3012
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3595]: https://gitlab.freedesktop.org/drm/intel/issues/3595
  [i915#3674]: https://gitlab.freedesktop.org/drm/intel/issues/3674
  [i915#3690]: https://gitlab.freedesktop.org/drm/intel/issues/3690
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
  [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
  [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4873]: https://gitlab.freedesktop.org/drm/intel/issues/4873
  [i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
  [i915#5174]: https://gitlab.freedesktop.org/drm/intel/issues/5174
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5763]: https://gitlab.freedesktop.org/drm/intel/issues/5763
  [i915#5885]: https://gitlab.freedesktop.org/drm/intel/issues/5885
  [i915#5904]: https://gitlab.freedesktop.org/drm/intel/issues/5904
  [i915#5917]: https://gitlab.freedesktop.org/drm/intel/issues/5917
  [i915#5982]: https://gitlab.freedesktop.org/drm/intel/issues/5982
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62


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

  * Linux: CI_DRM_11720 -> Patchwork_104663v1

  CI-20190529: 20190529
  CI_DRM_11720: d64548bc3dac140bac6fa25e50875a51c87f6cf1 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_6505: edb1a467fb622b23b927e28ff603fa43851fea97 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_104663v1: d64548bc3dac140bac6fa25e50875a51c87f6cf1 @ git://anongit.freedesktop.org/gfx-ci/linux


### Linux commits

5237ebc9d458 drm/i915/display/tgl+: Use PPS index from vbt
6ef05a605239 drm/i915/display: prepend connector name to the backlight
56e06f886b75 drm/i915/display: Use panel index to parse lfp backlight
ece0073afddf drm/i915/display: Use panel index to parse panel timing for dual EDP
61e6c6d77547 drm/i915/bios: calculate drrs mode using panel index for dual LFP

== Logs ==

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

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

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

* [Intel-gfx] ✗ Fi.CI.IGT: failure for Dual LFP/EDP enablement
  2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
                   ` (7 preceding siblings ...)
  2022-06-02 16:49 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
@ 2022-06-02 19:55 ` Patchwork
  2022-07-13  9:27 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Dual LFP/EDP enablement (rev2) Patchwork
  2022-08-03  8:42 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Dual LFP/EDP enablement (rev3) Patchwork
  10 siblings, 0 replies; 29+ messages in thread
From: Patchwork @ 2022-06-02 19:55 UTC (permalink / raw)
  To: Animesh Manna; +Cc: intel-gfx

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

== Series Details ==

Series: Dual LFP/EDP enablement
URL   : https://patchwork.freedesktop.org/series/104663/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_11720_full -> Patchwork_104663v1_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_104663v1_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_104663v1_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@gem_eio@hibernate:
    - shard-snb:          [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-snb7/igt@gem_eio@hibernate.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-snb6/igt@gem_eio@hibernate.html

  * igt@i915_pm_backlight@fade_with_dpms:
    - shard-iclb:         [PASS][3] -> [SKIP][4] +4 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb6/igt@i915_pm_backlight@fade_with_dpms.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb3/igt@i915_pm_backlight@fade_with_dpms.html

  * igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1:
    - shard-kbl:          [PASS][5] -> [FAIL][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl6/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl6/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1.html

  
#### Suppressed ####

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

  * igt@kms_color_chamelium@pipe-a-degamma:
    - {shard-dg1}:        [SKIP][7] ([fdo#111827]) -> [SKIP][8] +1 similar issue
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-dg1-13/igt@kms_color_chamelium@pipe-a-degamma.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-dg1-15/igt@kms_color_chamelium@pipe-a-degamma.html

  * igt@kms_flip@blocking-wf_vblank@a-edp1:
    - {shard-rkl}:        NOTRUN -> [FAIL][9] +1 similar issue
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_flip@blocking-wf_vblank@a-edp1.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-a-edp-1:
    - {shard-rkl}:        NOTRUN -> [SKIP][10] +1 similar issue
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-a-edp-1.html

  * igt@kms_sequence@get-forked-busy@hdmi-a-1-pipe-b:
    - {shard-dg1}:        [PASS][11] -> [FAIL][12] +3 similar issues
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-dg1-13/igt@kms_sequence@get-forked-busy@hdmi-a-1-pipe-b.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-dg1-15/igt@kms_sequence@get-forked-busy@hdmi-a-1-pipe-b.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_sseu@invalid-sseu:
    - shard-kbl:          NOTRUN -> [SKIP][13] ([fdo#109271]) +1 similar issue
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl3/igt@gem_ctx_sseu@invalid-sseu.html

  * igt@gem_eio@unwedge-stress:
    - shard-iclb:         [PASS][14] -> [TIMEOUT][15] ([i915#3070])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb2/igt@gem_eio@unwedge-stress.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb5/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_balancer@parallel-bb-first:
    - shard-iclb:         [PASS][16] -> [SKIP][17] ([i915#4525]) +1 similar issue
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb1/igt@gem_exec_balancer@parallel-bb-first.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb7/igt@gem_exec_balancer@parallel-bb-first.html

  * igt@gem_exec_fair@basic-none@vecs0:
    - shard-apl:          [PASS][18] -> [FAIL][19] ([i915#2842])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-apl2/igt@gem_exec_fair@basic-none@vecs0.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl2/igt@gem_exec_fair@basic-none@vecs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-tglb:         [PASS][20] -> [FAIL][21] ([i915#2842])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-tglb3/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-tglb6/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace@vcs0:
    - shard-kbl:          [PASS][22] -> [FAIL][23] ([i915#2842])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl1/igt@gem_exec_fair@basic-pace@vcs0.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl7/igt@gem_exec_fair@basic-pace@vcs0.html

  * igt@gem_exec_flush@basic-uc-rw-default:
    - shard-snb:          [PASS][24] -> [SKIP][25] ([fdo#109271]) +1 similar issue
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-snb5/igt@gem_exec_flush@basic-uc-rw-default.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-snb6/igt@gem_exec_flush@basic-uc-rw-default.html

  * igt@gem_exec_suspend@basic-s0@smem:
    - shard-kbl:          [PASS][26] -> [INCOMPLETE][27] ([i915#4831])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl4/igt@gem_exec_suspend@basic-s0@smem.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl6/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@gem_huc_copy@huc-copy:
    - shard-skl:          NOTRUN -> [SKIP][28] ([fdo#109271] / [i915#2190])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl1/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@parallel-random:
    - shard-glk:          NOTRUN -> [SKIP][29] ([fdo#109271] / [i915#4613])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-glk7/igt@gem_lmem_swapping@parallel-random.html

  * igt@gem_lmem_swapping@parallel-random-verify-ccs:
    - shard-skl:          NOTRUN -> [SKIP][30] ([fdo#109271] / [i915#4613]) +3 similar issues
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl9/igt@gem_lmem_swapping@parallel-random-verify-ccs.html

  * igt@gem_pxp@verify-pxp-stale-buf-optout-execution:
    - shard-skl:          NOTRUN -> [SKIP][31] ([fdo#109271]) +237 similar issues
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl7/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-skl:          NOTRUN -> [SKIP][32] ([fdo#109271] / [i915#3323])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl4/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-skl:          NOTRUN -> [DMESG-WARN][33] ([i915#5566] / [i915#716])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl9/igt@gen9_exec_parse@allowed-single.html

  * igt@i915_pm_backlight@bad-brightness:
    - shard-skl:          [PASS][34] -> [SKIP][35] ([fdo#109271]) +3 similar issues
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-skl7/igt@i915_pm_backlight@bad-brightness.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl7/igt@i915_pm_backlight@bad-brightness.html
    - shard-tglb:         [PASS][36] -> [SKIP][37] ([i915#1155]) +4 similar issues
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-tglb5/igt@i915_pm_backlight@bad-brightness.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-tglb5/igt@i915_pm_backlight@bad-brightness.html

  * igt@i915_pm_dc@dc5-dpms:
    - shard-skl:          [PASS][38] -> [INCOMPLETE][39] ([i915#5961])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-skl7/igt@i915_pm_dc@dc5-dpms.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl7/igt@i915_pm_dc@dc5-dpms.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-skl:          [PASS][40] -> [INCOMPLETE][41] ([i915#4817])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-skl2/igt@i915_suspend@basic-s3-without-i915.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl6/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_atomic@atomic_plane_damage:
    - shard-apl:          NOTRUN -> [SKIP][42] ([fdo#109271]) +7 similar issues
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl6/igt@kms_atomic@atomic_plane_damage.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - shard-skl:          NOTRUN -> [FAIL][43] ([i915#3743]) +1 similar issue
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl7/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html

  * igt@kms_ccs@pipe-a-bad-aux-stride-y_tiled_gen12_rc_ccs_cc:
    - shard-skl:          NOTRUN -> [SKIP][44] ([fdo#109271] / [i915#3886]) +9 similar issues
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl7/igt@kms_ccs@pipe-a-bad-aux-stride-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-a-random-ccs-data-y_tiled_gen12_mc_ccs:
    - shard-glk:          NOTRUN -> [SKIP][45] ([fdo#109271] / [i915#3886])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-glk7/igt@kms_ccs@pipe-a-random-ccs-data-y_tiled_gen12_mc_ccs.html

  * igt@kms_chamelium@dp-hpd-enable-disable-mode:
    - shard-glk:          NOTRUN -> [SKIP][46] ([fdo#109271] / [fdo#111827]) +2 similar issues
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-glk7/igt@kms_chamelium@dp-hpd-enable-disable-mode.html

  * igt@kms_chamelium@hdmi-edid-change-during-suspend:
    - shard-skl:          NOTRUN -> [SKIP][47] ([fdo#109271] / [fdo#111827]) +14 similar issues
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl4/igt@kms_chamelium@hdmi-edid-change-during-suspend.html

  * igt@kms_chamelium@vga-hpd-with-enabled-mode:
    - shard-apl:          NOTRUN -> [SKIP][48] ([fdo#109271] / [fdo#111827])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl4/igt@kms_chamelium@vga-hpd-with-enabled-mode.html
    - shard-kbl:          NOTRUN -> [SKIP][49] ([fdo#109271] / [fdo#111827])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl3/igt@kms_chamelium@vga-hpd-with-enabled-mode.html

  * igt@kms_color@pipe-d-invalid-gamma-lut-sizes:
    - shard-glk:          NOTRUN -> [SKIP][50] ([fdo#109271]) +40 similar issues
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-glk7/igt@kms_color@pipe-d-invalid-gamma-lut-sizes.html

  * igt@kms_cursor_legacy@cursor-vs-flip-toggle:
    - shard-iclb:         [PASS][51] -> [FAIL][52] ([i915#5072])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb1/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb7/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-glk:          [PASS][53] -> [FAIL][54] ([i915#2346])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-glk2/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-glk3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
    - shard-skl:          NOTRUN -> [FAIL][55] ([i915#2346])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1:
    - shard-skl:          [PASS][56] -> [FAIL][57] ([i915#79])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-skl4/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl9/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html

  * igt@kms_flip@flip-vs-expired-vblank@c-edp1:
    - shard-skl:          NOTRUN -> [FAIL][58] ([i915#79])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl4/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html

  * igt@kms_flip@flip-vs-suspend@a-dp1:
    - shard-apl:          [PASS][59] -> [DMESG-WARN][60] ([i915#180]) +3 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-apl6/igt@kms_flip@flip-vs-suspend@a-dp1.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl3/igt@kms_flip@flip-vs-suspend@a-dp1.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-kbl:          [PASS][61] -> [DMESG-WARN][62] ([i915#180]) +7 similar issues
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl6/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl7/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-d:
    - shard-skl:          NOTRUN -> [SKIP][63] ([fdo#109271] / [i915#533]) +3 similar issues
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl7/igt@kms_pipe_crc_basic@hang-read-crc-pipe-d.html

  * igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb:
    - shard-skl:          NOTRUN -> [FAIL][64] ([i915#265])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl4/igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb.html

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
    - shard-skl:          [PASS][65] -> [FAIL][66] ([fdo#108145] / [i915#265])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-skl6/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl2/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min.html

  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max:
    - shard-glk:          NOTRUN -> [FAIL][67] ([fdo#108145] / [i915#265]) +1 similar issue
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-glk7/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max.html

  * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min:
    - shard-skl:          NOTRUN -> [FAIL][68] ([fdo#108145] / [i915#265])
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl4/igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1:
    - shard-iclb:         [PASS][69] -> [SKIP][70] ([i915#5235]) +2 similar issues
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb3/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb2/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1.html

  * igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf:
    - shard-skl:          NOTRUN -> [SKIP][71] ([fdo#109271] / [i915#658]) +3 similar issues
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl1/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr@psr2_primary_blt:
    - shard-iclb:         [PASS][72] -> [SKIP][73] ([fdo#109441]) +1 similar issue
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb2/igt@kms_psr@psr2_primary_blt.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb5/igt@kms_psr@psr2_primary_blt.html

  * igt@perf@stress-open-close:
    - shard-glk:          [PASS][74] -> [INCOMPLETE][75] ([i915#5213])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-glk7/igt@perf@stress-open-close.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-glk6/igt@perf@stress-open-close.html

  * igt@sysfs_clients@split-25:
    - shard-skl:          NOTRUN -> [SKIP][76] ([fdo#109271] / [i915#2994])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl9/igt@sysfs_clients@split-25.html

  
#### Possible fixes ####

  * igt@fbdev@nullptr:
    - {shard-rkl}:        [SKIP][77] ([i915#2582]) -> [PASS][78]
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-5/igt@fbdev@nullptr.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@fbdev@nullptr.html

  * igt@feature_discovery@psr2:
    - shard-iclb:         [SKIP][79] ([i915#658]) -> [PASS][80]
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb6/igt@feature_discovery@psr2.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb2/igt@feature_discovery@psr2.html

  * igt@gem_ctx_isolation@preservation-s3@bcs0:
    - shard-apl:          [DMESG-WARN][81] ([i915#180]) -> [PASS][82] +3 similar issues
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-apl4/igt@gem_ctx_isolation@preservation-s3@bcs0.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl6/igt@gem_ctx_isolation@preservation-s3@bcs0.html

  * igt@gem_eio@in-flight-10ms:
    - shard-tglb:         [TIMEOUT][83] ([i915#3063]) -> [PASS][84] +1 similar issue
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-tglb5/igt@gem_eio@in-flight-10ms.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-tglb6/igt@gem_eio@in-flight-10ms.html

  * igt@gem_eio@in-flight-contexts-10ms:
    - {shard-rkl}:        [TIMEOUT][85] ([i915#3063]) -> [PASS][86]
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@gem_eio@in-flight-contexts-10ms.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-5/igt@gem_eio@in-flight-contexts-10ms.html

  * igt@gem_eio@in-flight-suspend:
    - {shard-rkl}:        [FAIL][87] ([fdo#103375]) -> [PASS][88]
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-5/igt@gem_eio@in-flight-suspend.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@gem_eio@in-flight-suspend.html

  * igt@gem_eio@unwedge-stress:
    - shard-tglb:         [FAIL][89] ([i915#5784]) -> [PASS][90]
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-tglb3/igt@gem_eio@unwedge-stress.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-tglb6/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_balancer@parallel-contexts:
    - shard-iclb:         [SKIP][91] ([i915#4525]) -> [PASS][92] +1 similar issue
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb8/igt@gem_exec_balancer@parallel-contexts.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb4/igt@gem_exec_balancer@parallel-contexts.html

  * igt@gem_exec_fair@basic-flow@rcs0:
    - shard-tglb:         [FAIL][93] ([i915#2842]) -> [PASS][94]
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-tglb3/igt@gem_exec_fair@basic-flow@rcs0.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-tglb3/igt@gem_exec_fair@basic-flow@rcs0.html

  * igt@gem_exec_fair@basic-none@vcs0:
    - shard-apl:          [FAIL][95] ([i915#2842]) -> [PASS][96] +1 similar issue
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-apl2/igt@gem_exec_fair@basic-none@vcs0.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl2/igt@gem_exec_fair@basic-none@vcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          [FAIL][97] ([i915#2842]) -> [PASS][98]
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-glk6/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-glk2/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_flush@basic-wb-ro-default:
    - shard-snb:          [SKIP][99] ([fdo#109271]) -> [PASS][100] +2 similar issues
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-snb6/igt@gem_exec_flush@basic-wb-ro-default.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-snb7/igt@gem_exec_flush@basic-wb-ro-default.html

  * igt@gem_huc_copy@huc-copy:
    - shard-tglb:         [SKIP][101] ([i915#2190]) -> [PASS][102]
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-tglb6/igt@gem_huc_copy@huc-copy.html
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-tglb1/igt@gem_huc_copy@huc-copy.html

  * igt@gen9_exec_parse@allowed-all:
    - shard-glk:          [DMESG-WARN][103] ([i915#5566] / [i915#716]) -> [PASS][104]
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-glk6/igt@gen9_exec_parse@allowed-all.html
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-glk7/igt@gen9_exec_parse@allowed-all.html

  * igt@i915_pm_rpm@dpms-lpsp:
    - {shard-rkl}:        [SKIP][105] ([i915#1397]) -> [PASS][106]
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@i915_pm_rpm@dpms-lpsp.html
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@i915_pm_rpm@dpms-lpsp.html

  * igt@kms_atomic@atomic_plane_damage:
    - {shard-rkl}:        [SKIP][107] ([i915#4098]) -> [PASS][108]
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@kms_atomic@atomic_plane_damage.html
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_atomic@atomic_plane_damage.html

  * igt@kms_color@pipe-a-ctm-max:
    - {shard-rkl}:        [SKIP][109] ([i915#1149] / [i915#1849] / [i915#4070] / [i915#4098]) -> [PASS][110] +2 similar issues
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@kms_color@pipe-a-ctm-max.html
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_color@pipe-a-ctm-max.html

  * igt@kms_cursor_crc@pipe-a-cursor-128x128-random:
    - {shard-rkl}:        [SKIP][111] ([fdo#112022] / [i915#4070]) -> [PASS][112] +6 similar issues
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@kms_cursor_crc@pipe-a-cursor-128x128-random.html
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_cursor_crc@pipe-a-cursor-128x128-random.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-glk:          [FAIL][113] ([i915#72]) -> [PASS][114]
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-glk9/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-glk5/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size:
    - {shard-rkl}:        [SKIP][115] ([fdo#111825] / [i915#4070]) -> [PASS][116] +4 similar issues
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size.html
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic:
    - {shard-tglu}:       [FAIL][117] ([i915#2346]) -> [PASS][118]
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-tglu-4/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-tglu-2/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-blt-untiled:
    - {shard-rkl}:        [SKIP][119] ([fdo#111314] / [i915#4098] / [i915#4369]) -> [PASS][120] +7 similar issues
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-5/igt@kms_draw_crc@draw-method-xrgb2101010-blt-untiled.html
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_draw_crc@draw-method-xrgb2101010-blt-untiled.html

  * igt@kms_flip@flip-vs-suspend-interruptible@c-dp1:
    - shard-kbl:          [DMESG-WARN][121] ([i915#180]) -> [PASS][122] +6 similar issues
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl4/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl3/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html

  * igt@kms_flip@wf_vblank-ts-check@b-edp1:
    - shard-skl:          [FAIL][123] ([i915#2122]) -> [PASS][124]
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-skl10/igt@kms_flip@wf_vblank-ts-check@b-edp1.html
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl6/igt@kms_flip@wf_vblank-ts-check@b-edp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
    - shard-iclb:         [SKIP][125] ([i915#3701]) -> [PASS][126]
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb2/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb5/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html

  * igt@kms_flip_tiling@flip-change-tiling@edp-1-pipe-b-y-to-yf-ccs:
    - shard-skl:          [DMESG-WARN][127] ([i915#1982]) -> [PASS][128]
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-skl6/igt@kms_flip_tiling@flip-change-tiling@edp-1-pipe-b-y-to-yf-ccs.html
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl10/igt@kms_flip_tiling@flip-change-tiling@edp-1-pipe-b-y-to-yf-ccs.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt:
    - shard-glk:          [FAIL][129] ([i915#1888] / [i915#2546]) -> [PASS][130]
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-glk5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-glk4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc:
    - {shard-rkl}:        [SKIP][131] ([i915#1849] / [i915#4098]) -> [PASS][132] +28 similar issues
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc.html
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc.html

  * igt@kms_invalid_mode@int-max-clock:
    - {shard-rkl}:        [SKIP][133] ([i915#4278]) -> [PASS][134] +1 similar issue
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@kms_invalid_mode@int-max-clock.html
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_invalid_mode@int-max-clock.html

  * igt@kms_plane@pixel-format-source-clamping@pipe-b-planes:
    - {shard-rkl}:        [SKIP][135] ([i915#1849] / [i915#3558]) -> [PASS][136] +1 similar issue
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@kms_plane@pixel-format-source-clamping@pipe-b-planes.html
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_plane@pixel-format-source-clamping@pipe-b-planes.html

  * igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb:
    - {shard-rkl}:        [SKIP][137] ([i915#1849] / [i915#4070] / [i915#4098]) -> [PASS][138] +6 similar issues
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb.html
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb.html

  * igt@kms_plane_multiple@atomic-pipe-a-tiling-none:
    - {shard-rkl}:        [SKIP][139] ([i915#1849] / [i915#3558] / [i915#4070]) -> [PASS][140]
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@kms_plane_multiple@atomic-pipe-a-tiling-none.html
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_plane_multiple@atomic-pipe-a-tiling-none.html

  * igt@kms_properties@plane-properties-legacy:
    - {shard-rkl}:        [SKIP][141] ([i915#1849]) -> [PASS][142] +1 similar issue
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@kms_properties@plane-properties-legacy.html
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_properties@plane-properties-legacy.html

  * igt@kms_psr@cursor_mmap_cpu:
    - {shard-rkl}:        [SKIP][143] ([i915#1072]) -> [PASS][144] +2 similar issues
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-5/igt@kms_psr@cursor_mmap_cpu.html
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_psr@cursor_mmap_cpu.html

  * igt@kms_psr@psr2_primary_mmap_gtt:
    - shard-iclb:         [SKIP][145] ([fdo#109441]) -> [PASS][146] +2 similar issues
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb6/igt@kms_psr@psr2_primary_mmap_gtt.html
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb2/igt@kms_psr@psr2_primary_mmap_gtt.html

  * igt@kms_rmfb@rmfb-ioctl:
    - {shard-rkl}:        [SKIP][147] ([i915#1845] / [i915#4098]) -> [PASS][148] +35 similar issues
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@kms_rmfb@rmfb-ioctl.html
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-6/igt@kms_rmfb@rmfb-ioctl.html

  * igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend:
    - shard-skl:          [INCOMPLETE][149] ([i915#4939]) -> [PASS][150]
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-skl10/igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend.html
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl4/igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend.html

  * igt@perf@polling-parameterized:
    - {shard-rkl}:        [FAIL][151] ([i915#5639]) -> [PASS][152]
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-rkl-2/igt@perf@polling-parameterized.html
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-rkl-1/igt@perf@polling-parameterized.html

  
#### Warnings ####

  * igt@gem_exec_fair@basic-none-rrul@rcs0:
    - shard-iclb:         [FAIL][153] ([i915#2852]) -> [FAIL][154] ([i915#2842])
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb4/igt@gem_exec_fair@basic-none-rrul@rcs0.html
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb1/igt@gem_exec_fair@basic-none-rrul@rcs0.html

  * igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-sf:
    - shard-iclb:         [SKIP][155] ([i915#658]) -> [SKIP][156] ([i915#2920])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb3/igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-sf.html
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb2/igt@kms_psr2_sf@overlay-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area:
    - shard-iclb:         [SKIP][157] ([fdo#111068] / [i915#658]) -> [SKIP][158] ([i915#2920]) +1 similar issue
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb6/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb2/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-iclb:         [FAIL][159] ([i915#5939]) -> [SKIP][160] ([fdo#109642] / [fdo#111068] / [i915#658]) +1 similar issue
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-iclb2/igt@kms_psr2_su@page_flip-nv12.html
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-iclb5/igt@kms_psr2_su@page_flip-nv12.html

  * igt@runner@aborted:
    - shard-skl:          ([FAIL][161], [FAIL][162]) ([i915#3002] / [i915#4312] / [i915#5257]) -> ([FAIL][163], [FAIL][164], [FAIL][165], [FAIL][166]) ([i915#2029] / [i915#3002] / [i915#4312] / [i915#5257])
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-skl2/igt@runner@aborted.html
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-skl1/igt@runner@aborted.html
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl9/igt@runner@aborted.html
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl7/igt@runner@aborted.html
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl7/igt@runner@aborted.html
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-skl3/igt@runner@aborted.html
    - shard-apl:          ([FAIL][167], [FAIL][168], [FAIL][169], [FAIL][170], [FAIL][171]) ([i915#180] / [i915#3002] / [i915#4312] / [i915#5257]) -> ([FAIL][172], [FAIL][173], [FAIL][174], [FAIL][175], [FAIL][176], [FAIL][177]) ([fdo#109271] / [i915#180] / [i915#3002] / [i915#4312] / [i915#5257])
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-apl8/igt@runner@aborted.html
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-apl6/igt@runner@aborted.html
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-apl4/igt@runner@aborted.html
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-apl7/igt@runner@aborted.html
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-apl8/igt@runner@aborted.html
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl1/igt@runner@aborted.html
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl4/igt@runner@aborted.html
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl3/igt@runner@aborted.html
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl3/igt@runner@aborted.html
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl4/igt@runner@aborted.html
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-apl3/igt@runner@aborted.html
    - shard-kbl:          ([FAIL][178], [FAIL][179], [FAIL][180], [FAIL][181], [FAIL][182], [FAIL][183], [FAIL][184], [FAIL][185], [FAIL][186], [FAIL][187], [FAIL][188]) ([i915#180] / [i915#3002] / [i915#4312] / [i915#5257]) -> ([FAIL][189], [FAIL][190], [FAIL][191], [FAIL][192], [FAIL][193], [FAIL][194], [FAIL][195], [FAIL][196], [FAIL][197], [FAIL][198], [FAIL][199]) ([fdo#109271] / [i915#180] / [i915#3002] / [i915#4312] / [i915#5257])
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl1/igt@runner@aborted.html
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl4/igt@runner@aborted.html
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl4/igt@runner@aborted.html
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl4/igt@runner@aborted.html
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl6/igt@runner@aborted.html
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl1/igt@runner@aborted.html
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl7/igt@runner@aborted.html
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl4/igt@runner@aborted.html
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl6/igt@runner@aborted.html
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl7/igt@runner@aborted.html
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11720/shard-kbl1/igt@runner@aborted.html
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl6/igt@runner@aborted.html
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl1/igt@runner@aborted.html
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl7/igt@runner@aborted.html
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl4/igt@runner@aborted.html
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl1/igt@runner@aborted.html
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl7/igt@runner@aborted.html
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl6/igt@runner@aborted.html
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl7/igt@runner@aborted.html
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl4/igt@runner@aborted.html
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl1/igt@runner@aborted.html
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104663v1/shard-kbl1/igt@runner@aborted.html

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

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109300]: https://bugs.freedesktop.org/show_bug.cgi?id=109300
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111314]: https://bugs.freedesktop.org/show_bug.cgi?id=111314
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112022]: https://bugs.freedesktop.org/show_bug.cgi?id=112022
  [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1149]: https://gitlab.freedesktop.org/drm/intel/issues/1149
  [i915#1155]: https://gitlab.freedesktop.org/drm/intel/issues/1155
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1769]: https://gitlab.freedesktop.org/drm/intel/issues/1769
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1836]: https://gitlab.freedesktop.org/drm/intel/issues/1836
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
  [i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2029]: https://gitlab.freedesktop.org/drm/intel/issues/2029
  [i915#2122]: https://gitlab.freedesktop.org/drm/intel/issues/2122
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2232]: https://gitlab.freedesktop.org/drm/intel/issues/2232
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2434]: https://gitlab.freedesktop.org/drm/intel/issues/2434
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2530]: https://gitlab.freedesktop.org/drm/intel/issues/2530
  [i915#2546]: https://gitlab.freedesktop.org/drm/intel/issues/2546
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2849]: https://gitlab.freedesktop.org/drm/intel/issues/2849
  [i915#2852]: https://gitlab.freedesktop.org/drm/intel/issues/2852
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#2994]: https://gitlab.freedesktop.org/drm/intel/issues/2994
  [i915#3002]: https://gitlab.freedesktop.org/drm/intel/issues/3002
  [i915#3012]: https://gitlab.freedesktop.org/drm/intel/issues/3012
  [i915#3063]: https://gitlab.freedesktop.org/drm/intel/issues/3063
  [i915#3070]: https://gitlab.freedesktop.org/drm/intel/issues/3070
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3319]: https://gitlab.freedesktop.org/drm/intel/issues/3319
  [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3536]: https://gitlab.freedesktop.org/drm/intel/issues/3536
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3701]: https://gitlab.freedesktop.org/drm/intel/issues/3701
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3743]: https://gitlab.freedesktop.org/drm/intel/issues/3743
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3963]: https://gitlab.freedesktop.org/drm/intel/issues/3963
  [i915#4032]: https://gitlab.freedesktop.org/drm/intel/issues/4032
  [i915#404]: https://gitlab.freedesktop.org/drm/intel/issues/404
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4241]: https://gitlab.freedesktop.org/drm/intel/issues/4241
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4278]: https://gitlab.freedesktop.org/drm/intel/issues/4278
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4369]: https://gitlab.freedesktop.org/drm/intel/issues/4369
  [i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4817]: https://gitlab.freedesktop.org/drm/intel/issues/4817
  [i915#4831]: https://gitlab.freedesktop.org/drm/intel/issues/4831
  [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4939]: https://gitlab.freedesktop.org/drm/intel/issues/4939
  [i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
  [i915#5072]: https://gitlab.freedesktop.org/drm/intel/issues/5072
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5213]: https://gitlab.freedesktop.org/drm/intel/issues/5213
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5257]: https://gitlab.freedesktop.org/drm/intel/issues/5257
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5287]: https://gitlab.freedesktop.org/drm/intel/issues/5287
  [i915#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#5639]: https://gitlab.freedesktop.org/drm/intel/issues/5639
  [i915#5721]: https://gitlab.freedesktop.org/drm/intel/issues/5721
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#5939]: https://gitlab.freedesktop.org/drm/intel/issues/5939
  [i915#5961]: https://gitlab.freedesktop.org/drm/intel/issues/5961
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6139]: https://gitlab.freedesktop.org/drm/intel/issues/6139
  [i915#6140]: https://gitlab.freedesktop.org/drm/intel/issues/6140
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
  [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79


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

  * Linux: CI_DRM_11720 -> Patchwork_104663v1

  CI-20190529: 20190529
  CI_DRM_11720: d64548bc3dac140bac6fa25e50875a51c87f6cf1 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_6505: edb1a467fb622b23b927e28ff603fa43851fea97 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_104663v1: d64548bc3dac140bac6fa25e50875a51c87f6cf1 @ 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_104663v1/index.html

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

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

* Re: [Intel-gfx] [RFC PATCH 4/5] drm/i915/display: prepend connector name to the backlight
  2022-06-02 15:16   ` Jani Nikula
@ 2022-06-03  3:34     ` Murthy, Arun R
  2022-06-03  7:02       ` Jani Nikula
  0 siblings, 1 reply; 29+ messages in thread
From: Murthy, Arun R @ 2022-06-03  3:34 UTC (permalink / raw)
  To: Nikula, Jani, Manna, Animesh, intel-gfx

> On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com> wrote:
> > From: Arun R Murthy <arun.r.murthy@intel.com>
> >
> > With the enablement of dual eDP, there will have to exist two entries
> > of backlight sysfs file. In order to avoid sysfs file name
> > duplication, the file names are prepended with the connector name.
> 
> Fixed by 20f85ef89d94 ("drm/i915/backlight: use unique backlight device
> names") about a year ago.
> 
This patches checks if the return value is -EEXIST and then acts accordingly, but -EEXIST is not returned.
struct kernfs_node *__kernfs_create_file(struct kernfs_node *parent,
                                         const char *name,
                                         umode_t mode, kuid_t uid, kgid_t gid,
                                         loff_t size,
                                         const struct kernfs_ops *ops,
                                         void *priv, const void *ns,
                                         struct lock_class_key *key)
{
        struct kernfs_node *kn;
        unsigned flags;
        int rc;

        flags = KERNFS_FILE;

        kn = kernfs_new_node(parent, name, (mode & S_IALLUGO) | S_IFREG,
                             uid, gid, flags);
        if (!kn)
                return ERR_PTR(-ENOMEM);

So the condition check with not be satisfied and the backlight registration will fail for the 2nd backlight device.

Thanks and Regards,
Arun R Murthy
--------------------

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

* Re: [Intel-gfx] [RFC PATCH 4/5] drm/i915/display: prepend connector name to the backlight
  2022-06-03  3:34     ` Murthy, Arun R
@ 2022-06-03  7:02       ` Jani Nikula
  2022-06-21  6:01         ` Murthy, Arun R
  0 siblings, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2022-06-03  7:02 UTC (permalink / raw)
  To: Murthy, Arun R, Manna, Animesh, intel-gfx

On Fri, 03 Jun 2022, "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
>> On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com> wrote:
>> > From: Arun R Murthy <arun.r.murthy@intel.com>
>> >
>> > With the enablement of dual eDP, there will have to exist two entries
>> > of backlight sysfs file. In order to avoid sysfs file name
>> > duplication, the file names are prepended with the connector name.
>>
>> Fixed by 20f85ef89d94 ("drm/i915/backlight: use unique backlight device
>> names") about a year ago.
>>
> This patches checks if the return value is -EEXIST and then acts accordingly, but -EEXIST is not returned.
> struct kernfs_node *__kernfs_create_file(struct kernfs_node *parent,
>                                          const char *name,
>                                          umode_t mode, kuid_t uid, kgid_t gid,
>                                          loff_t size,
>                                          const struct kernfs_ops *ops,
>                                          void *priv, const void *ns,
>                                          struct lock_class_key *key)
> {
>         struct kernfs_node *kn;
>         unsigned flags;
>         int rc;
>
>         flags = KERNFS_FILE;
>
>         kn = kernfs_new_node(parent, name, (mode & S_IALLUGO) | S_IFREG,
>                              uid, gid, flags);
>         if (!kn)
>                 return ERR_PTR(-ENOMEM);
>
> So the condition check with not be satisfied and the backlight registration will fail for the 2nd backlight device.

But the file isn't added by kernfs_new_node(), it just allocates the
node. See the kernfs_add_one() later in __kernfs_create_file().

BR,
Jani.

>
> Thanks and Regards,
> Arun R Murthy
> --------------------

-- 
Jani Nikula, Intel Open Source Graphics Center

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

* Re: [Intel-gfx] [RFC PATCH 1/5] drm/i915/bios: calculate drrs mode using panel index for dual LFP
  2022-06-02 15:11     ` Jani Nikula
@ 2022-06-03  9:43       ` Manna, Animesh
  0 siblings, 0 replies; 29+ messages in thread
From: Manna, Animesh @ 2022-06-03  9:43 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Thursday, June 2, 2022 8:41 PM
> To: Manna, Animesh <animesh.manna@intel.com>; intel-
> gfx@lists.freedesktop.org
> Cc: ville.syrjala@linux.intel.com; Shankar, Uma <uma.shankar@intel.com>;
> Manna, Animesh <animesh.manna@intel.com>
> Subject: Re: [RFC PATCH 1/5] drm/i915/bios: calculate drrs mode using panel
> index for dual LFP
> 
> On Thu, 02 Jun 2022, Jani Nikula <jani.nikula@intel.com> wrote:
> > On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com> wrote:
> >> Dual LFP may have different panel and based on panel index respective
> >> 2 bits store the drrs mode info for each panel. So panel index is
> >> used for deriving drrs mode of the rspective panel.
> >>
> >> Signed-off-by: Animesh Manna <animesh.manna@intel.com>
> >> ---
> >>  drivers/gpu/drm/i915/display/icl_dsi.c        |  2 +-
> >>  drivers/gpu/drm/i915/display/intel_bios.c     | 45 +++++++++++++++++--
> >>  drivers/gpu/drm/i915/display/intel_bios.h     |  3 +-
> >>  drivers/gpu/drm/i915/display/intel_dp.c       |  3 +-
> >>  drivers/gpu/drm/i915/display/intel_lvds.c     |  3 +-
> >>  drivers/gpu/drm/i915/display/intel_sdvo.c     |  2 +-
> >>  drivers/gpu/drm/i915/display/intel_vbt_defs.h |  4 ++
> >>  drivers/gpu/drm/i915/display/vlv_dsi.c        |  2 +-
> >>  8 files changed, 52 insertions(+), 12 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c
> >> b/drivers/gpu/drm/i915/display/icl_dsi.c
> >> index 3b5305c219ba..b3aa430abd03 100644
> >> --- a/drivers/gpu/drm/i915/display/icl_dsi.c
> >> +++ b/drivers/gpu/drm/i915/display/icl_dsi.c
> >> @@ -2050,7 +2050,7 @@ void icl_dsi_init(struct drm_i915_private
> *dev_priv)
> >>  	/* attach connector to encoder */
> >>  	intel_connector_attach_encoder(intel_connector, encoder);
> >>
> >> -	intel_bios_init_panel(dev_priv, &intel_connector->panel, NULL);
> >> +	intel_bios_init_panel(dev_priv, intel_connector, NULL);
> >>
> >>  	mutex_lock(&dev->mode_config.mutex);
> >>  	intel_panel_add_vbt_lfp_fixed_mode(intel_connector);
> >> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c
> >> b/drivers/gpu/drm/i915/display/intel_bios.c
> >> index 337277ae3dae..78eaf6255599 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> >> @@ -747,7 +747,8 @@ static int get_panel_type(struct drm_i915_private
> >> *i915,  static void  parse_panel_options(struct drm_i915_private
> >> *i915,
> >>  		    struct intel_panel *panel,
> >> -		    const struct edid *edid)
> >> +		    const struct edid *edid,
> >> +		    int panel_index)
> >>  {
> >>  	const struct bdb_lvds_options *lvds_options;
> >>  	int panel_type;
> >> @@ -764,7 +765,7 @@ parse_panel_options(struct drm_i915_private *i915,
> >>  	panel->vbt.panel_type = panel_type;
> >>
> >>  	drrs_mode = (lvds_options->dps_panel_type_bits
> >> -				>> (panel_type * 2)) & MODE_MASK;
> >> +				>> (panel_index * 2)) & MODE_MASK;
> >
> > It's the get_panel_type() call that needs to take the panel number
> > into account, and return the panel specific panel_type from there.
> > After that, it's stored in panel->vbt.panel_type and it'll be used
> > everywere. DRRS is not a special case.
> >
> >>  	/*
> >>  	 * VBT has static DRRS = 0 and seamless DRRS = 2.
> >>  	 * The below piece of code is required to adjust vbt.drrs_type @@
> >> -3069,13 +3070,49 @@ void intel_bios_init(struct drm_i915_private *i915)
> >>  	kfree(oprom_vbt);
> >>  }
> >>
> >> +static int
> >> +get_lfp_panel_index(struct drm_i915_private *i915, int
> >> +lfp_panel_instance) {
> >> +	const struct bdb_lvds_options *lvds_options;
> >> +
> >> +	lvds_options = find_section(i915, BDB_LVDS_OPTIONS);
> >> +	if (!lvds_options)
> >> +		return -1;
> >> +
> >> +	switch (lfp_panel_instance) {
> >> +	case 1:
> >> +		return lvds_options->panel_type;
> >> +	case 2:
> >> +		return lvds_options->panel_type2;
> >> +	default:
> >> +		break;
> >> +	}
> >> +
> >> +	return -1;
> >> +}
> >
> > Nah, it's not this simple. See get_panel_type(). Either of the
> > panel_type fields could be 0xff to indicate PNPID based lookup.
> >
> >> +
> >>  void intel_bios_init_panel(struct drm_i915_private *i915,
> >> -			   struct intel_panel *panel,
> >> +			   struct intel_connector *intel_connector,
> >>  			   const struct edid *edid)
> >>  {
> >> +	struct intel_panel *panel = &intel_connector->panel;
> >> +	struct intel_encoder *encoder = intel_connector->encoder;
> >> +	const struct intel_bios_encoder_data *devdata =
> >> +i915->vbt.ports[encoder->port];
> >
> > This might be NULL, we don't initialize ports for all platforms.
> >
> >
> >> +	int lfp_inst = 0, panel_index;
> >> +
> >>  	init_vbt_panel_defaults(panel);
> >>
> >> -	parse_panel_options(i915, panel, edid);
> >> +	if (devdata->child.handle == HANDLE_LFP_1)
> >> +		lfp_inst = 1;
> >> +	else if (devdata->child.handle == HANDLE_LFP_2)
> >> +		lfp_inst = 2;
> >> +
> >> +	if (lfp_inst == 0)
> >> +		return;
> >> +
> >> +	panel_index = get_lfp_panel_index(i915, lfp_inst);
> >> +
> >> +	parse_panel_options(i915, panel, edid, panel_index);
> 
> Also, none of this handling should happen here. Just pass devdata on to
> parse_panel_options(), and pass it on further to get_panel_type(), which should
> be the single point of truth for figuring out the panel type.

Ok, will do in next version.
Thank Jani for review.

Regards,
Animesh

> 
> >>  	parse_generic_dtd(i915, panel);
> >>  	parse_lfp_data(i915, panel);
> >>  	parse_lfp_backlight(i915, panel);
> >> diff --git a/drivers/gpu/drm/i915/display/intel_bios.h
> >> b/drivers/gpu/drm/i915/display/intel_bios.h
> >> index b112200ae0a0..e4c268495547 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_bios.h
> >> +++ b/drivers/gpu/drm/i915/display/intel_bios.h
> >> @@ -37,6 +37,7 @@ struct edid;
> >>  struct intel_bios_encoder_data;
> >>  struct intel_crtc_state;
> >>  struct intel_encoder;
> >> +struct intel_connector;
> >>  struct intel_panel;
> >>  enum port;
> >>
> >> @@ -233,7 +234,7 @@ struct mipi_pps_data {
> >>
> >>  void intel_bios_init(struct drm_i915_private *dev_priv);  void
> >> intel_bios_init_panel(struct drm_i915_private *dev_priv,
> >> -			   struct intel_panel *panel,
> >> +			   struct intel_connector *intel_connector,
> >>  			   const struct edid *edid);
> >>  void intel_bios_fini_panel(struct intel_panel *panel);  void
> >> intel_bios_driver_remove(struct drm_i915_private *dev_priv); diff
> >> --git a/drivers/gpu/drm/i915/display/intel_dp.c
> >> b/drivers/gpu/drm/i915/display/intel_dp.c
> >> index 1bc1f6458e81..3e9b4263e1bc 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> >> @@ -5213,8 +5213,7 @@ static bool intel_edp_init_connector(struct
> intel_dp *intel_dp,
> >>  	}
> >>  	intel_connector->edid = edid;
> >>
> >> -	intel_bios_init_panel(dev_priv, &intel_connector->panel,
> >> -			      IS_ERR(edid) ? NULL : edid);
> >> +	intel_bios_init_panel(dev_priv, intel_connector, IS_ERR(edid) ?
> >> +NULL : edid);
> >>
> >>  	intel_panel_add_edid_fixed_modes(intel_connector,
> >>  					 intel_connector->panel.vbt.drrs_type
> != DRRS_TYPE_NONE); diff
> >> --git a/drivers/gpu/drm/i915/display/intel_lvds.c
> >> b/drivers/gpu/drm/i915/display/intel_lvds.c
> >> index 595f03343939..2c60267f9d37 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_lvds.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_lvds.c
> >> @@ -967,8 +967,7 @@ void intel_lvds_init(struct drm_i915_private
> *dev_priv)
> >>  	}
> >>  	intel_connector->edid = edid;
> >>
> >> -	intel_bios_init_panel(dev_priv, &intel_connector->panel,
> >> -			      IS_ERR(edid) ? NULL : edid);
> >> +	intel_bios_init_panel(dev_priv, intel_connector, IS_ERR(edid) ?
> >> +NULL : edid);
> >>
> >>  	/* Try EDID first */
> >>  	intel_panel_add_edid_fixed_modes(intel_connector,
> >> diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c
> >> b/drivers/gpu/drm/i915/display/intel_sdvo.c
> >> index d9de2c4d67a7..3b7fe117bc5b 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_sdvo.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c
> >> @@ -2901,7 +2901,7 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo,
> int device)
> >>  	if (!intel_sdvo_create_enhance_property(intel_sdvo,
> intel_sdvo_connector))
> >>  		goto err;
> >>
> >> -	intel_bios_init_panel(i915, &intel_connector->panel, NULL);
> >> +	intel_bios_init_panel(i915, intel_connector, NULL);
> >>
> >>  	/*
> >>  	 * Fetch modes from VBT. For SDVO prefer the VBT mode since some
> >> diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> >> b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> >> index 4b98bab3b890..fbda64e3a34d 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> >> +++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> >> @@ -349,6 +349,10 @@ enum vbt_gmbus_ddi {
> >>  #define BDB_230_VBT_DP_MAX_LINK_RATE_UHBR13P5	6
> >>  #define BDB_230_VBT_DP_MAX_LINK_RATE_UHBR20	7
> >>
> >> +/* VBT info for DUAL LFP */
> >> +#define HANDLE_LFP_1 0x0008
> >> +#define HANDLE_LFP_2 0x0080
> >
> > Please move these before the DEVICE_TYPE_* macros, and name
> > DEVICE_HANDLE_*. The comment should refer to device handles, and
> > there's no need to mention VBT or dual LFP.
> >
> > BR,
> > Jani.
> >
> >> +
> >>  /*
> >>   * The child device config, aka the display device data structure, provides a
> >>   * description of a port and its configuration on the platform.
> >> diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c
> >> b/drivers/gpu/drm/i915/display/vlv_dsi.c
> >> index abda0888c8d4..114e4f89f198 100644
> >> --- a/drivers/gpu/drm/i915/display/vlv_dsi.c
> >> +++ b/drivers/gpu/drm/i915/display/vlv_dsi.c
> >> @@ -1926,7 +1926,7 @@ void vlv_dsi_init(struct drm_i915_private
> >> *dev_priv)
> >>
> >>  	intel_dsi->panel_power_off_time = ktime_get_boottime();
> >>
> >> -	intel_bios_init_panel(dev_priv, &intel_connector->panel, NULL);
> >> +	intel_bios_init_panel(dev_priv, intel_connector, NULL);
> >>
> >>  	if (intel_connector->panel.vbt.dsi.config->dual_link)
> >>  		intel_dsi->ports = BIT(PORT_A) | BIT(PORT_C);
> 
> --
> Jani Nikula, Intel Open Source Graphics Center

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

* Re: [Intel-gfx] [RFC PATCH 5/5] drm/i915/display/tgl+: Use PPS index from vbt
  2022-06-02 15:32   ` Jani Nikula
@ 2022-06-03 10:29     ` Manna, Animesh
  0 siblings, 0 replies; 29+ messages in thread
From: Manna, Animesh @ 2022-06-03 10:29 UTC (permalink / raw)
  To: Nikula, Jani, intel-gfx; +Cc: Varide, Nischal



> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Thursday, June 2, 2022 9:03 PM
> To: Manna, Animesh <animesh.manna@intel.com>; intel-
> gfx@lists.freedesktop.org
> Cc: ville.syrjala@linux.intel.com; Shankar, Uma <uma.shankar@intel.com>;
> Varide, Nischal <nischal.varide@intel.com>; Manna, Animesh
> <animesh.manna@intel.com>
> Subject: Re: [RFC PATCH 5/5] drm/i915/display/tgl+: Use PPS index from vbt
> 
> On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com> wrote:
> > From: Nischal Varide <nischal.varide@intel.com>
> >
> > Tigerlake and newer has two instances of PPS, to support up to two eDP
> > panels.
> >
> > Signed-off-by: Nischal Varide <nischal.varide@intel.com>
> > Signed-off-by: Animesh Manna <animesh.manna@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_pps.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_pps.c
> > b/drivers/gpu/drm/i915/display/intel_pps.c
> > index 1b21a341962f..52cb5be4e901 100644
> > --- a/drivers/gpu/drm/i915/display/intel_pps.c
> > +++ b/drivers/gpu/drm/i915/display/intel_pps.c
> > @@ -365,7 +365,8 @@ static void intel_pps_get_registers(struct
> > intel_dp *intel_dp,
> >
> >  	memset(regs, 0, sizeof(*regs));
> >
> > -	if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv))
> > +	if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv) ||
> > +	    DISPLAY_VER(dev_priv) >= 12)
> >  		pps_idx = bxt_power_sequencer_idx(intel_dp);
> 
> There are two things that need to be checked, but I don't have the time right
> now:
> 
> - We'll probably need this *before* we've parsed the panel specific info
>   from VBT. Ville has looked into this somewhat with the PNPID panel
>   type stuff.

Currently intel_pps_init() get called before intel_bios_init_panel() where panel specific info in parsed from VBT.

> 
> - bxt_power_sequencer_idx() does pps_init_registers() which has always
>   struck me as a really odd place to do it. As if we don't know when the
>   first time we do it is, so we do it there just in case.

Will try to check on this.

Regards,
Animesh 
> 
> BR,
> Jani.
> 
> 
> 
> >  	else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
> >  		pps_idx = vlv_power_sequencer_pipe(intel_dp);
> 
> --
> Jani Nikula, Intel Open Source Graphics Center

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

* Re: [Intel-gfx] [RFC PATCH 4/5] drm/i915/display: prepend connector name to the backlight
  2022-06-03  7:02       ` Jani Nikula
@ 2022-06-21  6:01         ` Murthy, Arun R
  2022-06-21  7:17           ` Jani Nikula
  0 siblings, 1 reply; 29+ messages in thread
From: Murthy, Arun R @ 2022-06-21  6:01 UTC (permalink / raw)
  To: Nikula, Jani, Manna, Animesh, intel-gfx

> On Fri, 03 Jun 2022, "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
> >> On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com>
> wrote:
> >> > From: Arun R Murthy <arun.r.murthy@intel.com>
> >> >
> >> > With the enablement of dual eDP, there will have to exist two
> >> > entries of backlight sysfs file. In order to avoid sysfs file name
> >> > duplication, the file names are prepended with the connector name.
> >>
> >> Fixed by 20f85ef89d94 ("drm/i915/backlight: use unique backlight
> >> device
> >> names") about a year ago.
> >>
> > This patches checks if the return value is -EEXIST and then acts accordingly,
> but -EEXIST is not returned.
> > struct kernfs_node *__kernfs_create_file(struct kernfs_node *parent,
> >                                          const char *name,
> >                                          umode_t mode, kuid_t uid, kgid_t gid,
> >                                          loff_t size,
> >                                          const struct kernfs_ops *ops,
> >                                          void *priv, const void *ns,
> >                                          struct lock_class_key *key) {
> >         struct kernfs_node *kn;
> >         unsigned flags;
> >         int rc;
> >
> >         flags = KERNFS_FILE;
> >
> >         kn = kernfs_new_node(parent, name, (mode & S_IALLUGO) | S_IFREG,
> >                              uid, gid, flags);
> >         if (!kn)
> >                 return ERR_PTR(-ENOMEM);
> >
> > So the condition check with not be satisfied and the backlight registration
> will fail for the 2nd backlight device.
> 
> But the file isn't added by kernfs_new_node(), it just allocates the node. See
> the kernfs_add_one() later in __kernfs_create_file().
> 
Moreover now that we will be supporting dual display, wouldn't it
be better to have the same file naming convention for both the
displays?
Without this patch, the first backlight would create an interface
with name intel_backlight and for the second it would create as
"cardXX-XXX-backlight". There wont be any similarities in the
backlight naming convention.
Would it be better to maintain the same naming convention
across the displays?

Thanks and Regards,
Arun R Murthy
--------------------

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

* Re: [Intel-gfx] [RFC PATCH 4/5] drm/i915/display: prepend connector name to the backlight
  2022-06-21  6:01         ` Murthy, Arun R
@ 2022-06-21  7:17           ` Jani Nikula
  0 siblings, 0 replies; 29+ messages in thread
From: Jani Nikula @ 2022-06-21  7:17 UTC (permalink / raw)
  To: Murthy, Arun R, Manna, Animesh, intel-gfx

On Tue, 21 Jun 2022, "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
>> On Fri, 03 Jun 2022, "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
>> >> On Thu, 02 Jun 2022, Animesh Manna <animesh.manna@intel.com>
>> wrote:
>> >> > From: Arun R Murthy <arun.r.murthy@intel.com>
>> >> >
>> >> > With the enablement of dual eDP, there will have to exist two
>> >> > entries of backlight sysfs file. In order to avoid sysfs file name
>> >> > duplication, the file names are prepended with the connector name.
>> >>
>> >> Fixed by 20f85ef89d94 ("drm/i915/backlight: use unique backlight
>> >> device
>> >> names") about a year ago.
>> >>
>> > This patches checks if the return value is -EEXIST and then acts accordingly,
>> but -EEXIST is not returned.
>> > struct kernfs_node *__kernfs_create_file(struct kernfs_node *parent,
>> >                                          const char *name,
>> >                                          umode_t mode, kuid_t uid, kgid_t gid,
>> >                                          loff_t size,
>> >                                          const struct kernfs_ops *ops,
>> >                                          void *priv, const void *ns,
>> >                                          struct lock_class_key *key) {
>> >         struct kernfs_node *kn;
>> >         unsigned flags;
>> >         int rc;
>> >
>> >         flags = KERNFS_FILE;
>> >
>> >         kn = kernfs_new_node(parent, name, (mode & S_IALLUGO) | S_IFREG,
>> >                              uid, gid, flags);
>> >         if (!kn)
>> >                 return ERR_PTR(-ENOMEM);
>> >
>> > So the condition check with not be satisfied and the backlight registration
>> will fail for the 2nd backlight device.
>>
>> But the file isn't added by kernfs_new_node(), it just allocates the node. See
>> the kernfs_add_one() later in __kernfs_create_file().
>>
> Moreover now that we will be supporting dual display, wouldn't it
> be better to have the same file naming convention for both the
> displays?
> Without this patch, the first backlight would create an interface
> with name intel_backlight and for the second it would create as
> "cardXX-XXX-backlight". There wont be any similarities in the
> backlight naming convention.
> Would it be better to maintain the same naming convention
> across the displays?

The old name can't be changed.

BR,
Jani.


-- 
Jani Nikula, Intel Open Source Graphics Center

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

* [Intel-gfx] [PATCHv2] drm/i915/display: add support for dual panel backlight
  2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 4/5] drm/i915/display: prepend connector name to the backlight Animesh Manna
  2022-06-02 15:16   ` Jani Nikula
@ 2022-07-13  8:17   ` Arun R Murthy
  2022-08-02 15:00     ` Jani Nikula
  2022-08-03  8:08     ` [Intel-gfx] [PATCHv3] " Arun R Murthy
  1 sibling, 2 replies; 29+ messages in thread
From: Arun R Murthy @ 2022-07-13  8:17 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

The patch with commit 20f85ef89d94 ("drm/i915/backlight: use unique
backlight device names") already adds support for dual panel backlight
but with error prints. Since the patch tried to create the backlight
device with the same name and upon failure will try with a different
name it leads to failure logs in dmesg inturn getting caught by CI.

This patch alternately will check if the backlight class of same name
exists, will use a different name.

v2: reworked on top of the patch 20f85ef89d94 ("drm/i915/backlight: use
unique backlight device names")

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 .../gpu/drm/i915/display/intel_backlight.c    | 24 ++++++++-----------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c b/drivers/gpu/drm/i915/display/intel_backlight.c
index 110fc98ec280..1e550d048e86 100644
--- a/drivers/gpu/drm/i915/display/intel_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_backlight.c
@@ -971,26 +971,22 @@ int intel_backlight_device_register(struct intel_connector *connector)
 	if (!name)
 		return -ENOMEM;
 
-	bd = backlight_device_register(name, connector->base.kdev, connector,
-				       &intel_backlight_device_ops, &props);
-
-	/*
-	 * Using the same name independent of the drm device or connector
-	 * prevents registration of multiple backlight devices in the
-	 * driver. However, we need to use the default name for backward
-	 * compatibility. Use unique names for subsequent backlight devices as a
-	 * fallback when the default name already exists.
-	 */
-	if (IS_ERR(bd) && PTR_ERR(bd) == -EEXIST) {
+	if (backlight_device_get_by_name(name)) {
+		/*
+		 * Using the same name independent of the drm device or connector
+		 * prevents registration of multiple backlight devices in the
+		 * driver. However, we need to use the default name for backward
+		 * compatibility. Use unique names for subsequent backlight devices as a
+		 * fallback when the default name already exists.
+		 */
 		kfree(name);
 		name = kasprintf(GFP_KERNEL, "card%d-%s-backlight",
 				 i915->drm.primary->index, connector->base.name);
 		if (!name)
 			return -ENOMEM;
-
-		bd = backlight_device_register(name, connector->base.kdev, connector,
-					       &intel_backlight_device_ops, &props);
 	}
+	bd = backlight_device_register(name, connector->base.kdev, connector,
+				       &intel_backlight_device_ops, &props);
 
 	if (IS_ERR(bd)) {
 		drm_err(&i915->drm,
-- 
2.25.1


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

* [Intel-gfx] ✗ Fi.CI.BUILD: failure for Dual LFP/EDP enablement (rev2)
  2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
                   ` (8 preceding siblings ...)
  2022-06-02 19:55 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
@ 2022-07-13  9:27 ` Patchwork
  2022-08-03  8:42 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Dual LFP/EDP enablement (rev3) Patchwork
  10 siblings, 0 replies; 29+ messages in thread
From: Patchwork @ 2022-07-13  9:27 UTC (permalink / raw)
  To: Arun R Murthy; +Cc: intel-gfx

== Series Details ==

Series: Dual LFP/EDP enablement (rev2)
URL   : https://patchwork.freedesktop.org/series/104663/
State : failure

== Summary ==

Error: patch https://patchwork.freedesktop.org/api/1.0/series/104663/revisions/2/mbox/ not applied
Applying: drm/i915/bios: calculate drrs mode using panel index for dual LFP
Using index info to reconstruct a base tree...
M	drivers/gpu/drm/i915/display/icl_dsi.c
M	drivers/gpu/drm/i915/display/intel_bios.c
M	drivers/gpu/drm/i915/display/intel_bios.h
M	drivers/gpu/drm/i915/display/intel_dp.c
M	drivers/gpu/drm/i915/display/intel_lvds.c
M	drivers/gpu/drm/i915/display/intel_sdvo.c
M	drivers/gpu/drm/i915/display/intel_vbt_defs.h
M	drivers/gpu/drm/i915/display/vlv_dsi.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/gpu/drm/i915/display/vlv_dsi.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/vlv_dsi.c
Auto-merging drivers/gpu/drm/i915/display/intel_vbt_defs.h
Auto-merging drivers/gpu/drm/i915/display/intel_sdvo.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/intel_sdvo.c
Auto-merging drivers/gpu/drm/i915/display/intel_lvds.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/intel_lvds.c
Auto-merging drivers/gpu/drm/i915/display/intel_dp.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/intel_dp.c
Auto-merging drivers/gpu/drm/i915/display/intel_bios.h
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/intel_bios.h
Auto-merging drivers/gpu/drm/i915/display/intel_bios.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/intel_bios.c
Auto-merging drivers/gpu/drm/i915/display/icl_dsi.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/icl_dsi.c
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 drm/i915/bios: calculate drrs mode using panel index for dual LFP
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".



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

* Re: [Intel-gfx] [PATCHv2] drm/i915/display: add support for dual panel backlight
  2022-07-13  8:17   ` [Intel-gfx] [PATCHv2] drm/i915/display: add support for dual panel backlight Arun R Murthy
@ 2022-08-02 15:00     ` Jani Nikula
  2022-08-03  8:10       ` Murthy, Arun R
  2022-08-03  8:08     ` [Intel-gfx] [PATCHv3] " Arun R Murthy
  1 sibling, 1 reply; 29+ messages in thread
From: Jani Nikula @ 2022-08-02 15:00 UTC (permalink / raw)
  To: Arun R Murthy, intel-gfx

On Wed, 13 Jul 2022, Arun R Murthy <arun.r.murthy@intel.com> wrote:
> The patch with commit 20f85ef89d94 ("drm/i915/backlight: use unique
> backlight device names") already adds support for dual panel backlight
> but with error prints. Since the patch tried to create the backlight
> device with the same name and upon failure will try with a different
> name it leads to failure logs in dmesg inturn getting caught by CI.
>
> This patch alternately will check if the backlight class of same name
> exists, will use a different name.
>
> v2: reworked on top of the patch 20f85ef89d94 ("drm/i915/backlight: use
> unique backlight device names")
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
>  .../gpu/drm/i915/display/intel_backlight.c    | 24 ++++++++-----------
>  1 file changed, 10 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c b/drivers/gpu/drm/i915/display/intel_backlight.c
> index 110fc98ec280..1e550d048e86 100644
> --- a/drivers/gpu/drm/i915/display/intel_backlight.c
> +++ b/drivers/gpu/drm/i915/display/intel_backlight.c
> @@ -971,26 +971,22 @@ int intel_backlight_device_register(struct intel_connector *connector)
>  	if (!name)
>  		return -ENOMEM;
>  
> -	bd = backlight_device_register(name, connector->base.kdev, connector,
> -				       &intel_backlight_device_ops, &props);
> -
> -	/*
> -	 * Using the same name independent of the drm device or connector
> -	 * prevents registration of multiple backlight devices in the
> -	 * driver. However, we need to use the default name for backward
> -	 * compatibility. Use unique names for subsequent backlight devices as a
> -	 * fallback when the default name already exists.
> -	 */
> -	if (IS_ERR(bd) && PTR_ERR(bd) == -EEXIST) {
> +	if (backlight_device_get_by_name(name)) {

This leaks a reference count to the backlight device. It needs to be
something like:

	bd = backlight_device_get_by_name(name);
	if (bd) {
		put_device(&bd->dev);

		/* ... */
	}

BR,
Jani.

> +		/*
> +		 * Using the same name independent of the drm device or connector
> +		 * prevents registration of multiple backlight devices in the
> +		 * driver. However, we need to use the default name for backward
> +		 * compatibility. Use unique names for subsequent backlight devices as a
> +		 * fallback when the default name already exists.
> +		 */
>  		kfree(name);
>  		name = kasprintf(GFP_KERNEL, "card%d-%s-backlight",
>  				 i915->drm.primary->index, connector->base.name);
>  		if (!name)
>  			return -ENOMEM;
> -
> -		bd = backlight_device_register(name, connector->base.kdev, connector,
> -					       &intel_backlight_device_ops, &props);
>  	}
> +	bd = backlight_device_register(name, connector->base.kdev, connector,
> +				       &intel_backlight_device_ops, &props);
>  
>  	if (IS_ERR(bd)) {
>  		drm_err(&i915->drm,

-- 
Jani Nikula, Intel Open Source Graphics Center

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

* [Intel-gfx] [PATCHv3] drm/i915/display: add support for dual panel backlight
  2022-07-13  8:17   ` [Intel-gfx] [PATCHv2] drm/i915/display: add support for dual panel backlight Arun R Murthy
  2022-08-02 15:00     ` Jani Nikula
@ 2022-08-03  8:08     ` Arun R Murthy
  2022-08-03  8:19       ` Jani Nikula
  1 sibling, 1 reply; 29+ messages in thread
From: Arun R Murthy @ 2022-08-03  8:08 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

The patch with commit 20f85ef89d94 ("drm/i915/backlight: use unique
backlight device names") already adds support for dual panel backlight
but with error prints. Since the patch tried to create the backlight
device with the same name and upon failure will try with a different
name it leads to failure logs in dmesg inturn getting caught by CI.

This patch alternately will check if the backlight class of same name
exists, will use a different name.

v2: reworked on top of the patch 20f85ef89d94 ("drm/i915/backlight: use
unique backlight device names")
v3: fixed the ref count leak(Jani N)

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 .../gpu/drm/i915/display/intel_backlight.c    | 24 ++++++++-----------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c b/drivers/gpu/drm/i915/display/intel_backlight.c
index 110fc98ec280..1e550d048e86 100644
--- a/drivers/gpu/drm/i915/display/intel_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_backlight.c
@@ -971,26 +971,22 @@ int intel_backlight_device_register(struct intel_connector *connector)
 	if (!name)
 		return -ENOMEM;
 
-	bd = backlight_device_register(name, connector->base.kdev, connector,
-				       &intel_backlight_device_ops, &props);
-
-	/*
-	 * Using the same name independent of the drm device or connector
-	 * prevents registration of multiple backlight devices in the
-	 * driver. However, we need to use the default name for backward
-	 * compatibility. Use unique names for subsequent backlight devices as a
-	 * fallback when the default name already exists.
-	 */
-	if (IS_ERR(bd) && PTR_ERR(bd) == -EEXIST) {
+	if (backlight_device_get_by_name(name)) {
+		/*
+		 * Using the same name independent of the drm device or connector
+		 * prevents registration of multiple backlight devices in the
+		 * driver. However, we need to use the default name for backward
+		 * compatibility. Use unique names for subsequent backlight devices as a
+		 * fallback when the default name already exists.
+		 */
 		kfree(name);
 		name = kasprintf(GFP_KERNEL, "card%d-%s-backlight",
 				 i915->drm.primary->index, connector->base.name);
 		if (!name)
 			return -ENOMEM;
-
-		bd = backlight_device_register(name, connector->base.kdev, connector,
-					       &intel_backlight_device_ops, &props);
 	}
+	bd = backlight_device_register(name, connector->base.kdev, connector,
+				       &intel_backlight_device_ops, &props);
 
 	if (IS_ERR(bd)) {
 		drm_err(&i915->drm,
-- 
2.25.1


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

* Re: [Intel-gfx] [PATCHv2] drm/i915/display: add support for dual panel backlight
  2022-08-02 15:00     ` Jani Nikula
@ 2022-08-03  8:10       ` Murthy, Arun R
  0 siblings, 0 replies; 29+ messages in thread
From: Murthy, Arun R @ 2022-08-03  8:10 UTC (permalink / raw)
  To: Nikula, Jani, Murthy, Arun R, intel-gfx

> -----Original Message-----
> From: Nikula, Jani <jani.nikula@intel.com>
> Sent: Tuesday, August 2, 2022 8:31 PM
> To: Murthy, Arun R <arun.r.murthy@intel.com>; intel-
> gfx@lists.freedesktop.org
> Cc: Shankar, Uma <uma.shankar@intel.com>; Murthy, Arun R
> <arun.r.murthy@intel.com>
> Subject: Re: [PATCHv2] drm/i915/display: add support for dual panel
> backlight
> 
> On Wed, 13 Jul 2022, Arun R Murthy <arun.r.murthy@intel.com> wrote:
> > The patch with commit 20f85ef89d94 ("drm/i915/backlight: use unique
> > backlight device names") already adds support for dual panel backlight
> > but with error prints. Since the patch tried to create the backlight
> > device with the same name and upon failure will try with a different
> > name it leads to failure logs in dmesg inturn getting caught by CI.
> >
> > This patch alternately will check if the backlight class of same name
> > exists, will use a different name.
> >
> > v2: reworked on top of the patch 20f85ef89d94 ("drm/i915/backlight:
> > use unique backlight device names")
> >
> > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> > ---
> >  .../gpu/drm/i915/display/intel_backlight.c    | 24 ++++++++-----------
> >  1 file changed, 10 insertions(+), 14 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c
> > b/drivers/gpu/drm/i915/display/intel_backlight.c
> > index 110fc98ec280..1e550d048e86 100644
> > --- a/drivers/gpu/drm/i915/display/intel_backlight.c
> > +++ b/drivers/gpu/drm/i915/display/intel_backlight.c
> > @@ -971,26 +971,22 @@ int intel_backlight_device_register(struct
> intel_connector *connector)
> >  	if (!name)
> >  		return -ENOMEM;
> >
> > -	bd = backlight_device_register(name, connector->base.kdev,
> connector,
> > -				       &intel_backlight_device_ops, &props);
> > -
> > -	/*
> > -	 * Using the same name independent of the drm device or connector
> > -	 * prevents registration of multiple backlight devices in the
> > -	 * driver. However, we need to use the default name for backward
> > -	 * compatibility. Use unique names for subsequent backlight devices
> as a
> > -	 * fallback when the default name already exists.
> > -	 */
> > -	if (IS_ERR(bd) && PTR_ERR(bd) == -EEXIST) {
> > +	if (backlight_device_get_by_name(name)) {
> 
> This leaks a reference count to the backlight device. It needs to be something
> like:
> 
> 	bd = backlight_device_get_by_name(name);
> 	if (bd) {
> 		put_device(&bd->dev);
> 
> 		/* ... */
> 	}
Thanks, Corrected and sent a revised version on patch!

Thanks and Regards.
Arun R Murthy
--------------------

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

* Re: [Intel-gfx] [PATCHv3] drm/i915/display: add support for dual panel backlight
  2022-08-03  8:08     ` [Intel-gfx] [PATCHv3] " Arun R Murthy
@ 2022-08-03  8:19       ` Jani Nikula
  0 siblings, 0 replies; 29+ messages in thread
From: Jani Nikula @ 2022-08-03  8:19 UTC (permalink / raw)
  To: Arun R Murthy, intel-gfx

On Wed, 03 Aug 2022, Arun R Murthy <arun.r.murthy@intel.com> wrote:
> The patch with commit 20f85ef89d94 ("drm/i915/backlight: use unique
> backlight device names") already adds support for dual panel backlight
> but with error prints. Since the patch tried to create the backlight
> device with the same name and upon failure will try with a different
> name it leads to failure logs in dmesg inturn getting caught by CI.
>
> This patch alternately will check if the backlight class of same name
> exists, will use a different name.
>
> v2: reworked on top of the patch 20f85ef89d94 ("drm/i915/backlight: use
> unique backlight device names")
> v3: fixed the ref count leak(Jani N)

Forgot to git add the change? ;)

Please also send as a new patch, not in-reply-to, I think CI gets
confused when it's supposed to be a standalone patch but sent in the
middle of a big thread.

BR,
Jani.

>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
>  .../gpu/drm/i915/display/intel_backlight.c    | 24 ++++++++-----------
>  1 file changed, 10 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c b/drivers/gpu/drm/i915/display/intel_backlight.c
> index 110fc98ec280..1e550d048e86 100644
> --- a/drivers/gpu/drm/i915/display/intel_backlight.c
> +++ b/drivers/gpu/drm/i915/display/intel_backlight.c
> @@ -971,26 +971,22 @@ int intel_backlight_device_register(struct intel_connector *connector)
>  	if (!name)
>  		return -ENOMEM;
>  
> -	bd = backlight_device_register(name, connector->base.kdev, connector,
> -				       &intel_backlight_device_ops, &props);
> -
> -	/*
> -	 * Using the same name independent of the drm device or connector
> -	 * prevents registration of multiple backlight devices in the
> -	 * driver. However, we need to use the default name for backward
> -	 * compatibility. Use unique names for subsequent backlight devices as a
> -	 * fallback when the default name already exists.
> -	 */
> -	if (IS_ERR(bd) && PTR_ERR(bd) == -EEXIST) {
> +	if (backlight_device_get_by_name(name)) {
> +		/*
> +		 * Using the same name independent of the drm device or connector
> +		 * prevents registration of multiple backlight devices in the
> +		 * driver. However, we need to use the default name for backward
> +		 * compatibility. Use unique names for subsequent backlight devices as a
> +		 * fallback when the default name already exists.
> +		 */
>  		kfree(name);
>  		name = kasprintf(GFP_KERNEL, "card%d-%s-backlight",
>  				 i915->drm.primary->index, connector->base.name);
>  		if (!name)
>  			return -ENOMEM;
> -
> -		bd = backlight_device_register(name, connector->base.kdev, connector,
> -					       &intel_backlight_device_ops, &props);
>  	}
> +	bd = backlight_device_register(name, connector->base.kdev, connector,
> +				       &intel_backlight_device_ops, &props);
>  
>  	if (IS_ERR(bd)) {
>  		drm_err(&i915->drm,

-- 
Jani Nikula, Intel Open Source Graphics Center

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

* [Intel-gfx] ✗ Fi.CI.BUILD: failure for Dual LFP/EDP enablement (rev3)
  2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
                   ` (9 preceding siblings ...)
  2022-07-13  9:27 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Dual LFP/EDP enablement (rev2) Patchwork
@ 2022-08-03  8:42 ` Patchwork
  10 siblings, 0 replies; 29+ messages in thread
From: Patchwork @ 2022-08-03  8:42 UTC (permalink / raw)
  To: Arun R Murthy; +Cc: intel-gfx

== Series Details ==

Series: Dual LFP/EDP enablement (rev3)
URL   : https://patchwork.freedesktop.org/series/104663/
State : failure

== Summary ==

Error: patch https://patchwork.freedesktop.org/api/1.0/series/104663/revisions/3/mbox/ not applied
Applying: drm/i915/bios: calculate drrs mode using panel index for dual LFP
Using index info to reconstruct a base tree...
M	drivers/gpu/drm/i915/display/icl_dsi.c
M	drivers/gpu/drm/i915/display/intel_bios.c
M	drivers/gpu/drm/i915/display/intel_bios.h
M	drivers/gpu/drm/i915/display/intel_dp.c
M	drivers/gpu/drm/i915/display/intel_lvds.c
M	drivers/gpu/drm/i915/display/intel_sdvo.c
M	drivers/gpu/drm/i915/display/intel_vbt_defs.h
M	drivers/gpu/drm/i915/display/vlv_dsi.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/gpu/drm/i915/display/vlv_dsi.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/vlv_dsi.c
Auto-merging drivers/gpu/drm/i915/display/intel_vbt_defs.h
Auto-merging drivers/gpu/drm/i915/display/intel_sdvo.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/intel_sdvo.c
Auto-merging drivers/gpu/drm/i915/display/intel_lvds.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/intel_lvds.c
Auto-merging drivers/gpu/drm/i915/display/intel_dp.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/intel_dp.c
Auto-merging drivers/gpu/drm/i915/display/intel_bios.h
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/intel_bios.h
Auto-merging drivers/gpu/drm/i915/display/intel_bios.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/intel_bios.c
Auto-merging drivers/gpu/drm/i915/display/icl_dsi.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/display/icl_dsi.c
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 drm/i915/bios: calculate drrs mode using panel index for dual LFP
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".



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

end of thread, other threads:[~2022-08-03  8:43 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-02 14:18 [Intel-gfx] [RFC PATCH 0/5] Dual LFP/EDP enablement Animesh Manna
2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 1/5] drm/i915/bios: calculate drrs mode using panel index for dual LFP Animesh Manna
2022-06-02 15:07   ` Jani Nikula
2022-06-02 15:11     ` Jani Nikula
2022-06-03  9:43       ` Manna, Animesh
2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 2/5] drm/i915/display: Use panel index to parse panel timing for dual EDP Animesh Manna
2022-06-02 15:12   ` Jani Nikula
2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 3/5] drm/i915/display: Use panel index to parse lfp backlight Animesh Manna
2022-06-02 15:13   ` Jani Nikula
2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 4/5] drm/i915/display: prepend connector name to the backlight Animesh Manna
2022-06-02 15:16   ` Jani Nikula
2022-06-03  3:34     ` Murthy, Arun R
2022-06-03  7:02       ` Jani Nikula
2022-06-21  6:01         ` Murthy, Arun R
2022-06-21  7:17           ` Jani Nikula
2022-07-13  8:17   ` [Intel-gfx] [PATCHv2] drm/i915/display: add support for dual panel backlight Arun R Murthy
2022-08-02 15:00     ` Jani Nikula
2022-08-03  8:10       ` Murthy, Arun R
2022-08-03  8:08     ` [Intel-gfx] [PATCHv3] " Arun R Murthy
2022-08-03  8:19       ` Jani Nikula
2022-06-02 14:18 ` [Intel-gfx] [RFC PATCH 5/5] drm/i915/display/tgl+: Use PPS index from vbt Animesh Manna
2022-06-02 15:32   ` Jani Nikula
2022-06-03 10:29     ` Manna, Animesh
2022-06-02 16:08 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Dual LFP/EDP enablement Patchwork
2022-06-02 16:08 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-06-02 16:49 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-06-02 19:55 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2022-07-13  9:27 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Dual LFP/EDP enablement (rev2) Patchwork
2022-08-03  8:42 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Dual LFP/EDP enablement (rev3) Patchwork

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