Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse
@ 2025-02-24 19:31 Imre Deak
  2025-02-24 19:31 ` [PATCH 1/5] drm/i915/hpd: Let an HPD pin be in the disabled state when handling missed IRQs Imre Deak
                   ` (11 more replies)
  0 siblings, 12 replies; 20+ messages in thread
From: Imre Deak @ 2025-02-24 19:31 UTC (permalink / raw)
  To: intel-gfx, intel-xe

This patchset fixes a problem during Display Port link training, where
the link training is interrupted by a short HPD pulse generated by the
sink. Generally the sink signals a bad link state via such short pulses,
but the sink should prevent such signaling during link training.

Some sinks do generate a short pulse as above during link training, or a
pulse generated before the link training started may be handled from a
scheduled work during link training. Such a handling may interfere with
the link training (see patch 3 for the reason), so this patchset
prevents the handling of pulses during link training.

Imre Deak (5):
  drm/i915/hpd: Let an HPD pin be in the disabled state when handling
    missed IRQs
  drm/i915/hpd: Add support for suspending the IRQ handling on an HPD
    pin
  drm/i915/dp: Fix link training interrupted by a short HPD pulse
  drm/i915/dp: Queue a link check after link training is complete
  drm/i915/crt: Use intel_hpd_suspend/resume() instead of
    intel_hpd_disable/enable()

 drivers/gpu/drm/i915/display/intel_crt.c      |   7 +-
 .../gpu/drm/i915/display/intel_display_core.h |   2 +
 .../drm/i915/display/intel_dp_link_training.c |  23 +-
 drivers/gpu/drm/i915/display/intel_hotplug.c  | 264 ++++++++++++++----
 drivers/gpu/drm/i915/display/intel_hotplug.h  |   5 +-
 5 files changed, 237 insertions(+), 64 deletions(-)

-- 
2.44.2


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

* [PATCH 1/5] drm/i915/hpd: Let an HPD pin be in the disabled state when handling missed IRQs
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
@ 2025-02-24 19:31 ` Imre Deak
  2025-02-24 19:31 ` [PATCH 2/5] drm/i915/hpd: Add support for suspending the IRQ handling on an HPD pin Imre Deak
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 20+ messages in thread
From: Imre Deak @ 2025-02-24 19:31 UTC (permalink / raw)
  To: intel-gfx, intel-xe

After suspending and resuming the detection on connectors, HPD IRQs that
arrived while the detection was suspended, are handled by scheduling the
intel_hotplug::hotplug work for them. All HPD pins must be at this point
in either the HPD_ENABLED (set for all pins during driver loading/system
resuming) or HPD_MARK_DISABLED (set by IRQ storm detection) state: the
HPD_DISABLED state for a pin can be set only from the HPD_MARK_DISABLED
state by the hotplug work after a storm detection (enabling polling on
the given pin/connector), however the hotplug work won't be scheduled
while the detection is suspended.

A follow-up change will add support for suspending the HPD IRQ handling
on a given HPD pin (without disabling the IRQ generation on it), after
which it becomes possible to see a pin in the HPD_DISABLED state when
resuming the IRQ handling (since the suspending could've happened for an
already disabled pin). Adjust queue_work_for_missed_irqs() accordingly,
so that this function can be reused for resuming the IRQ handling.

Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hotplug.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c b/drivers/gpu/drm/i915/display/intel_hotplug.c
index 00d7b1ccf1900..ab8e71c4b0f86 100644
--- a/drivers/gpu/drm/i915/display/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/display/intel_hotplug.c
@@ -980,6 +980,7 @@ static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
 		case HPD_MARK_DISABLED:
 			queue_work = true;
 			break;
+		case HPD_DISABLED:
 		case HPD_ENABLED:
 			break;
 		default:
-- 
2.44.2


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

* [PATCH 2/5] drm/i915/hpd: Add support for suspending the IRQ handling on an HPD pin
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
  2025-02-24 19:31 ` [PATCH 1/5] drm/i915/hpd: Let an HPD pin be in the disabled state when handling missed IRQs Imre Deak
@ 2025-02-24 19:31 ` Imre Deak
  2025-02-25 12:15   ` [PATCH v2 " Imre Deak
  2025-02-24 19:31 ` [PATCH 3/5] drm/i915/dp: Fix link training interrupted by a short HPD pulse Imre Deak
                   ` (9 subsequent siblings)
  11 siblings, 1 reply; 20+ messages in thread
From: Imre Deak @ 2025-02-24 19:31 UTC (permalink / raw)
  To: intel-gfx, intel-xe

Add support for suspending the IRQ handling on the HPD pin of a given
encoder, handling IRQs that arrived while in the suspended state after
resuming the IRQ handling. This will be used by a follow-up change,
which suspends/resumes the IRQ handling around DP link training.

This is similar to the intel_hpd_disable/enable() functionality, by also
handling encoders/ports with a pulse handler (i.e. also
suspending/resuming the short/long pulse handling) and handling the IRQs
arrived in the suspended state after the handling is resumed (vs. just
dropping such IRQs).

Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 .../gpu/drm/i915/display/intel_display_core.h |   2 +
 drivers/gpu/drm/i915/display/intel_hotplug.c  | 206 +++++++++++++++---
 drivers/gpu/drm/i915/display/intel_hotplug.h  |   2 +
 3 files changed, 185 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
index 554870d2494b3..9b338d8c9f26e 100644
--- a/drivers/gpu/drm/i915/display/intel_display_core.h
+++ b/drivers/gpu/drm/i915/display/intel_display_core.h
@@ -173,6 +173,8 @@ struct intel_hotplug {
 	u32 short_port_mask;
 	struct work_struct dig_port_work;
 
+	u32 suspended_port_mask;
+
 	struct work_struct poll_init_work;
 	bool poll_enabled;
 
diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c b/drivers/gpu/drm/i915/display/intel_hotplug.c
index ab8e71c4b0f86..81f2be06bc2a1 100644
--- a/drivers/gpu/drm/i915/display/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/display/intel_hotplug.c
@@ -349,19 +349,71 @@ static bool intel_encoder_has_hpd_pulse(struct intel_encoder *encoder)
 		enc_to_dig_port(encoder)->hpd_pulse != NULL;
 }
 
+static u32 port_mask_to_hpds(struct intel_display *display, u32 port_mask)
+{
+	struct intel_encoder *encoder;
+	u32 hpds = 0;
+
+	for_each_intel_encoder(display->drm, encoder) {
+		if (BIT(encoder->port) & port_mask)
+			hpds |= BIT(encoder->hpd_pin);
+	}
+
+	return hpds;
+}
+
+static u32 hpd_mask_to_ports(struct intel_display *display, u32 hpd_mask)
+{
+	struct intel_encoder *encoder;
+	u32 ports = 0;
+
+	for_each_intel_encoder(display->drm, encoder) {
+		if (BIT(encoder->hpd_pin) & hpd_mask)
+			ports |= BIT(encoder->port);
+	}
+
+	return ports;
+}
+
+static u32 get_suspended_hpds(struct intel_display *display)
+{
+	struct drm_i915_private *i915 = to_i915(display->drm);
+
+	lockdep_assert_held(&i915->irq_lock);
+	return port_mask_to_hpds(display, display->hotplug.suspended_port_mask);
+}
+
+/*
+ * Get the mask of all the ports using a suspended HPD pin, accounting for
+ * ports sharing their - suspended - HPD pin with another port.
+ */
+static u32 get_suspended_hpd_ports(struct intel_display *display)
+{
+	struct drm_i915_private *i915 = to_i915(display->drm);
+
+	lockdep_assert_held(&i915->irq_lock);
+	return hpd_mask_to_ports(display, get_suspended_hpds(display));
+}
+
 static void i915_digport_work_func(struct work_struct *work)
 {
-	struct drm_i915_private *dev_priv =
-		container_of(work, struct drm_i915_private, display.hotplug.dig_port_work);
+	struct intel_display *display =
+		container_of(work, struct intel_display, hotplug.dig_port_work);
+	struct drm_i915_private *dev_priv = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
 	u32 long_port_mask, short_port_mask;
 	struct intel_encoder *encoder;
+	u32 suspended_ports;
 	u32 old_bits = 0;
 
 	spin_lock_irq(&dev_priv->irq_lock);
-	long_port_mask = dev_priv->display.hotplug.long_port_mask;
-	dev_priv->display.hotplug.long_port_mask = 0;
-	short_port_mask = dev_priv->display.hotplug.short_port_mask;
-	dev_priv->display.hotplug.short_port_mask = 0;
+
+	suspended_ports = get_suspended_hpd_ports(display);
+	long_port_mask = hotplug->long_port_mask & ~suspended_ports;
+	hotplug->long_port_mask &= ~long_port_mask;
+	short_port_mask = hotplug->short_port_mask & ~suspended_ports;
+	hotplug->short_port_mask = ~short_port_mask;
+
 	spin_unlock_irq(&dev_priv->irq_lock);
 
 	for_each_intel_encoder(&dev_priv->drm, encoder) {
@@ -406,13 +458,17 @@ static void i915_digport_work_func(struct work_struct *work)
  */
 void intel_hpd_trigger_irq(struct intel_digital_port *dig_port)
 {
-	struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
+	struct intel_display *display = to_intel_display(dig_port);
+	struct drm_i915_private *i915 = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
 
 	spin_lock_irq(&i915->irq_lock);
-	i915->display.hotplug.short_port_mask |= BIT(dig_port->base.port);
-	spin_unlock_irq(&i915->irq_lock);
 
-	queue_work(i915->display.hotplug.dp_wq, &i915->display.hotplug.dig_port_work);
+	hotplug->short_port_mask |= BIT(dig_port->base.port);
+	if (!(BIT(dig_port->base.port) & get_suspended_hpd_ports(display)))
+		queue_work(hotplug->dp_wq, &hotplug->dig_port_work);
+
+	spin_unlock_irq(&i915->irq_lock);
 }
 
 /*
@@ -420,9 +476,10 @@ void intel_hpd_trigger_irq(struct intel_digital_port *dig_port)
  */
 static void i915_hotplug_work_func(struct work_struct *work)
 {
-	struct drm_i915_private *dev_priv =
-		container_of(work, struct drm_i915_private,
-			     display.hotplug.hotplug_work.work);
+	struct intel_display *display =
+		container_of(work, struct intel_display, hotplug.hotplug_work.work);
+	struct drm_i915_private *dev_priv = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
 	struct drm_connector_list_iter conn_iter;
 	struct intel_connector *connector;
 	u32 changed = 0, retry = 0;
@@ -430,16 +487,18 @@ static void i915_hotplug_work_func(struct work_struct *work)
 	u32 hpd_retry_bits;
 	struct drm_connector *first_changed_connector = NULL;
 	int changed_connectors = 0;
+	u32 suspended_hpds;
 
 	mutex_lock(&dev_priv->drm.mode_config.mutex);
 	drm_dbg_kms(&dev_priv->drm, "running encoder hotplug functions\n");
 
 	spin_lock_irq(&dev_priv->irq_lock);
 
-	hpd_event_bits = dev_priv->display.hotplug.event_bits;
-	dev_priv->display.hotplug.event_bits = 0;
-	hpd_retry_bits = dev_priv->display.hotplug.retry_bits;
-	dev_priv->display.hotplug.retry_bits = 0;
+	suspended_hpds = get_suspended_hpds(display);
+	hpd_event_bits = hotplug->event_bits & ~suspended_hpds;
+	hotplug->event_bits &= ~hpd_event_bits;
+	hpd_retry_bits = hotplug->retry_bits & ~suspended_hpds;
+	hotplug->retry_bits &= ~hpd_retry_bits;
 
 	/* Enable polling for connectors which had HPD IRQ storms */
 	intel_hpd_irq_storm_switch_to_polling(dev_priv);
@@ -538,11 +597,13 @@ static void i915_hotplug_work_func(struct work_struct *work)
 void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 			   u32 pin_mask, u32 long_mask)
 {
+	struct intel_display *display = to_intel_display(&dev_priv->drm);
 	struct intel_encoder *encoder;
 	bool storm_detected = false;
 	bool queue_dig = false, queue_hp = false;
 	u32 long_hpd_pulse_mask = 0;
 	u32 short_hpd_pulse_mask = 0;
+	u32 suspended_hpds;
 	enum hpd_pin pin;
 
 	if (!pin_mask)
@@ -550,6 +611,8 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 
 	spin_lock(&dev_priv->irq_lock);
 
+	suspended_hpds = get_suspended_hpds(display);
+
 	/*
 	 * Determine whether ->hpd_pulse() exists for each pin, and
 	 * whether we have a short or a long pulse. This is needed
@@ -573,7 +636,9 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 			"digital hpd on [ENCODER:%d:%s] - %s\n",
 			encoder->base.base.id, encoder->base.name,
 			long_hpd ? "long" : "short");
-		queue_dig = true;
+
+		if (!(BIT(pin) & suspended_hpds))
+			queue_dig = true;
 
 		if (long_hpd) {
 			long_hpd_pulse_mask |= BIT(pin);
@@ -617,7 +682,9 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 		} else {
 			dev_priv->display.hotplug.event_bits |= BIT(pin);
 			long_hpd = true;
-			queue_hp = true;
+
+			if (!(BIT(pin) & suspended_hpds))
+				queue_hp = true;
 		}
 
 		if (intel_hpd_irq_storm_detect(dev_priv, pin, long_hpd)) {
@@ -915,11 +982,15 @@ static bool cancel_all_detection_work(struct drm_i915_private *i915)
 
 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv)
 {
+	struct intel_display *display = to_intel_display(&dev_priv->drm);
+
 	if (!HAS_DISPLAY(dev_priv))
 		return;
 
 	spin_lock_irq(&dev_priv->irq_lock);
 
+	drm_WARN_ON(display->drm, display->hotplug.suspended_port_mask);
+
 	dev_priv->display.hotplug.long_port_mask = 0;
 	dev_priv->display.hotplug.short_port_mask = 0;
 	dev_priv->display.hotplug.event_bits = 0;
@@ -966,19 +1037,22 @@ void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin)
 
 static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
 {
-	bool queue_work = false;
+	struct intel_display *display = to_intel_display(&i915->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
+	bool queue_hp_work = false;
+	u32 suspended_hpds;
 	enum hpd_pin pin;
 
 	lockdep_assert_held(&i915->irq_lock);
 
-	if (i915->display.hotplug.event_bits ||
-	    i915->display.hotplug.retry_bits)
-		queue_work = true;
+	suspended_hpds = get_suspended_hpds(display);
+	if ((hotplug->event_bits | hotplug->retry_bits) & ~suspended_hpds)
+		queue_hp_work = true;
 
 	for_each_hpd_pin(pin) {
 		switch (i915->display.hotplug.stats[pin].state) {
 		case HPD_MARK_DISABLED:
-			queue_work = true;
+			queue_hp_work = true;
 			break;
 		case HPD_DISABLED:
 		case HPD_ENABLED:
@@ -988,10 +1062,92 @@ static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
 		}
 	}
 
-	if (queue_work)
+	if ((hotplug->long_port_mask | hotplug->short_port_mask) &
+	    ~hpd_mask_to_ports(display, suspended_hpds))
+		queue_work(hotplug->dp_wq, &hotplug->dig_port_work);
+
+	if (queue_hp_work)
 		queue_delayed_detection_work(i915, &i915->display.hotplug.hotplug_work, 0);
 }
 
+/**
+ * intel_hpd_suspend - Suspend handling of HPD IRQs on an HPD pin
+ * @encoder: Encoder to suspend the HPD handling for
+ *
+ * Suspends the handling of HPD IRQs on the HPD pin of @encoder.
+ *
+ * On return:
+ * - It's guaranteed that the suspended encoders' HPD pulse handler
+ *   (via intel_digital_port::hpd_pulse()) is not running.
+ * - The hotplug event handling (via intel_encoder::hotplug()) of an
+ *   HPD IRQ pending at the time this function is called may be still
+ *   running.
+ * - Detection on the encoder's connector (via
+ *   drm_connector_helper_funcs::detect_ctx(),
+ *   drm_connector_funcs::detect()) remains allowed, for instance as part of
+ *   userspace connector probing, or DRM core's connector polling.
+ *
+ * A nested call of this function on the same encoder is not allowed. The call
+ * must be followed by calling intel_hpd_resume().
+ *
+ * Note that the handling of HPD IRQs for another encoder using the same HPD
+ * pin as that of @encoder will be also suspended.
+ */
+void intel_hpd_suspend(struct intel_encoder *encoder)
+{
+	struct intel_display *display = to_intel_display(encoder);
+	struct drm_i915_private *i915 = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
+
+	if (encoder->hpd_pin == HPD_NONE)
+		return;
+
+	spin_lock_irq(&i915->irq_lock);
+
+	drm_WARN_ON(display->drm, BIT(encoder->port) & hotplug->suspended_port_mask);
+	hotplug->suspended_port_mask |= BIT(encoder->port);
+
+	spin_unlock_irq(&i915->irq_lock);
+
+	flush_work(&hotplug->dig_port_work);
+}
+
+static void resume_hpd(struct intel_encoder *encoder)
+{
+	struct intel_display *display = to_intel_display(encoder);
+	struct drm_i915_private *i915 = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
+
+	lockdep_assert_held(&i915->irq_lock);
+
+	drm_WARN_ON(display->drm, !(BIT(encoder->port) & hotplug->suspended_port_mask));
+	hotplug->suspended_port_mask &= ~BIT(encoder->port);
+
+	queue_work_for_missed_irqs(i915);
+}
+
+/**
+ * intel_hpd_resume - Resume handling of HPD IRQs on an HPD pin
+ * @encoder: Encoder to resume the HPD handling for
+ *
+ * Resume the handling of HPD IRQs on the HPD pin of @encoder, which was
+ * previously suspended by intel_hpd_suspend(). Any HPD IRQ raised on the
+ * HPD pin while it was suspended will be handled for @encoder and for any
+ * other encoder sharing the same HPD pin.
+ */
+void intel_hpd_resume(struct intel_encoder *encoder)
+{
+	struct intel_display *display = to_intel_display(encoder);
+	struct drm_i915_private *i915 = to_i915(display->drm);
+
+	if (encoder->hpd_pin == HPD_NONE)
+		return;
+
+	spin_lock_irq(&i915->irq_lock);
+	resume_hpd(encoder);
+	spin_unlock_irq(&i915->irq_lock);
+}
+
 void intel_hpd_enable_detection_work(struct drm_i915_private *i915)
 {
 	spin_lock_irq(&i915->irq_lock);
diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.h b/drivers/gpu/drm/i915/display/intel_hotplug.h
index d6986902b0545..5180731def7cc 100644
--- a/drivers/gpu/drm/i915/display/intel_hotplug.h
+++ b/drivers/gpu/drm/i915/display/intel_hotplug.h
@@ -28,6 +28,8 @@ void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
 enum hpd_pin intel_hpd_pin_default(enum port port);
 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
+void intel_hpd_suspend(struct intel_encoder *encoder);
+void intel_hpd_resume(struct intel_encoder *encoder);
 void intel_hpd_debugfs_register(struct drm_i915_private *i915);
 
 void intel_hpd_enable_detection_work(struct drm_i915_private *i915);
-- 
2.44.2


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

* [PATCH 3/5] drm/i915/dp: Fix link training interrupted by a short HPD pulse
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
  2025-02-24 19:31 ` [PATCH 1/5] drm/i915/hpd: Let an HPD pin be in the disabled state when handling missed IRQs Imre Deak
  2025-02-24 19:31 ` [PATCH 2/5] drm/i915/hpd: Add support for suspending the IRQ handling on an HPD pin Imre Deak
@ 2025-02-24 19:31 ` Imre Deak
  2025-02-24 19:31 ` [PATCH 4/5] drm/i915/dp: Queue a link check after link training is complete Imre Deak
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 20+ messages in thread
From: Imre Deak @ 2025-02-24 19:31 UTC (permalink / raw)
  To: intel-gfx, intel-xe

During Display Port link training the handling of HPD pulses should be
prevented, as that handling can interfere with the link training:

- Accessing DPCD registers outside the range of link training registers
  are not allowed by the Standard (see DP Standard v2.1, 3.5.2.16.1,
  3.6.6.1). The pulse handler reads the DPRX capability registers, which
  are outside of the allowed range.
- Switching of the LTTPR transparent/non-transparent mode may reset the
  LTTPRs on the link, thus aborting any ongoing link training. The pulse
  handler does set the LTTPR mode, thus it could unexpectedly abort the
  ongoing link training.

Suspend/resume the HPD pulse handling for the duration of the link
training to prevent the above DPCD register accesses / LTTPR mode
change.

Apart from the above scenarios, there are other ways a non-link training
DPCD register could be accessed during link training: via the DRM AUX
device node, or via DPCD register probing (as performed by
drm_dp_dpcd_probe()). These will be addressed by a follow-up change.

Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp_link_training.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
index 11953b03bb6aa..1519c202bf8c1 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -1123,6 +1123,8 @@ intel_dp_128b132b_intra_hop(struct intel_dp *intel_dp,
 void intel_dp_stop_link_train(struct intel_dp *intel_dp,
 			      const struct intel_crtc_state *crtc_state)
 {
+	struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
+
 	intel_dp->link_trained = true;
 
 	intel_dp_disable_dpcd_training_pattern(intel_dp, DP_PHY_DPRX);
@@ -1133,6 +1135,8 @@ void intel_dp_stop_link_train(struct intel_dp *intel_dp,
 	    wait_for(intel_dp_128b132b_intra_hop(intel_dp, crtc_state) == 0, 500)) {
 		lt_dbg(intel_dp, DP_PHY_DPRX, "128b/132b intra-hop not clearing\n");
 	}
+
+	intel_hpd_resume(encoder);
 }
 
 static bool
@@ -1615,7 +1619,11 @@ void intel_dp_start_link_train(struct intel_atomic_state *state,
 	 * non-transparent mode. During an earlier LTTPR detection this
 	 * could've been prevented by an active link.
 	 */
-	int lttpr_count = intel_dp_init_lttpr_and_dprx_caps(intel_dp);
+	int lttpr_count;
+
+	intel_hpd_suspend(encoder);
+
+	lttpr_count = intel_dp_init_lttpr_and_dprx_caps(intel_dp);
 
 	if (lttpr_count < 0)
 		/* Still continue with enabling the port and link training. */
-- 
2.44.2


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

* [PATCH 4/5] drm/i915/dp: Queue a link check after link training is complete
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
                   ` (2 preceding siblings ...)
  2025-02-24 19:31 ` [PATCH 3/5] drm/i915/dp: Fix link training interrupted by a short HPD pulse Imre Deak
@ 2025-02-24 19:31 ` Imre Deak
  2025-02-24 19:31 ` [PATCH 5/5] drm/i915/crt: Use intel_hpd_suspend/resume() instead of intel_hpd_disable/enable() Imre Deak
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 20+ messages in thread
From: Imre Deak @ 2025-02-24 19:31 UTC (permalink / raw)
  To: intel-gfx, intel-xe

After link training - both in case of a passing and failing LT result -
a work is scheduled to check the link state. This check should take
place after the link training is completed by disabling the link
training pattern and setting intel_dp::link_trained=true. Atm, the work
is scheduled before these steps, which may result in checking the link
state too early (and thus not retraining the link as expected).

Fix the above by scheduling the link check work after link training is
complete.

Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 .../gpu/drm/i915/display/intel_dp_link_training.c   | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
index 1519c202bf8c1..75bc7cde8165e 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -1123,6 +1123,7 @@ intel_dp_128b132b_intra_hop(struct intel_dp *intel_dp,
 void intel_dp_stop_link_train(struct intel_dp *intel_dp,
 			      const struct intel_crtc_state *crtc_state)
 {
+	struct intel_display *display = to_intel_display(intel_dp);
 	struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
 
 	intel_dp->link_trained = true;
@@ -1137,6 +1138,13 @@ void intel_dp_stop_link_train(struct intel_dp *intel_dp,
 	}
 
 	intel_hpd_resume(encoder);
+
+	if (!display->hotplug.ignore_long_hpd &&
+	    intel_dp->link.seq_train_failures < 2) {
+		int delay_ms = intel_dp->link.seq_train_failures ? 0 : 2000;
+
+		intel_encoder_link_check_queue_work(encoder, delay_ms);
+	}
 }
 
 static bool
@@ -1641,7 +1649,6 @@ void intel_dp_start_link_train(struct intel_atomic_state *state,
 		lt_dbg(intel_dp, DP_PHY_DPRX, "Forcing link training failure\n");
 	} else if (passed) {
 		intel_dp->link.seq_train_failures = 0;
-		intel_encoder_link_check_queue_work(encoder, 2000);
 		return;
 	}
 
@@ -1664,10 +1671,8 @@ void intel_dp_start_link_train(struct intel_atomic_state *state,
 		return;
 	}
 
-	if (intel_dp->link.seq_train_failures < 2) {
-		intel_encoder_link_check_queue_work(encoder, 0);
+	if (intel_dp->link.seq_train_failures < 2)
 		return;
-	}
 
 	if (intel_dp_schedule_fallback_link_training(state, intel_dp, crtc_state))
 		return;
-- 
2.44.2


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

* [PATCH 5/5] drm/i915/crt: Use intel_hpd_suspend/resume() instead of intel_hpd_disable/enable()
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
                   ` (3 preceding siblings ...)
  2025-02-24 19:31 ` [PATCH 4/5] drm/i915/dp: Queue a link check after link training is complete Imre Deak
@ 2025-02-24 19:31 ` Imre Deak
  2025-02-25 12:15   ` [PATCH v2 " Imre Deak
  2025-02-25  1:32 ` ✗ Fi.CI.SPARSE: warning for drm/dp: Fix link training interrupted by HPD pulse Patchwork
                   ` (6 subsequent siblings)
  11 siblings, 1 reply; 20+ messages in thread
From: Imre Deak @ 2025-02-24 19:31 UTC (permalink / raw)
  To: intel-gfx, intel-xe

intel_hpd_disable/enable() have the same purpose as
intel_hpd_suspend/resume(), except that disable/enable will drop any HPD
IRQs which were triggered while the HPD was disabled, while
suspend/resume will handle such IRQs after the IRQ handling is resumed.
Use intel_hpd_suspend/resume() for crt as well, by adding a helper to
explicitly clear any pending IRQs before resuming.

Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 drivers/gpu/drm/i915/display/intel_crt.c     |  7 +--
 drivers/gpu/drm/i915/display/intel_hotplug.c | 59 ++++++++++----------
 drivers/gpu/drm/i915/display/intel_hotplug.h |  3 +-
 3 files changed, 34 insertions(+), 35 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_crt.c b/drivers/gpu/drm/i915/display/intel_crt.c
index 321580b095e7d..67b6731d7cdd2 100644
--- a/drivers/gpu/drm/i915/display/intel_crt.c
+++ b/drivers/gpu/drm/i915/display/intel_crt.c
@@ -531,8 +531,6 @@ static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
 {
 	struct intel_display *display = to_intel_display(connector->dev);
 	struct intel_crt *crt = intel_attached_crt(to_intel_connector(connector));
-	struct drm_i915_private *dev_priv = to_i915(connector->dev);
-	bool reenable_hpd;
 	u32 adpa;
 	bool ret;
 	u32 save_adpa;
@@ -549,7 +547,7 @@ static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
 	 *
 	 * Just disable HPD interrupts here to prevent this
 	 */
-	reenable_hpd = intel_hpd_disable(dev_priv, crt->base.hpd_pin);
+	intel_hpd_suspend(&crt->base);
 
 	save_adpa = adpa = intel_de_read(display, crt->adpa_reg);
 	drm_dbg_kms(display->drm,
@@ -576,8 +574,7 @@ static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
 	drm_dbg_kms(display->drm,
 		    "valleyview hotplug adpa=0x%x, result %d\n", adpa, ret);
 
-	if (reenable_hpd)
-		intel_hpd_enable(dev_priv, crt->base.hpd_pin);
+	intel_hpd_clear_and_resume(&crt->base);
 
 	return ret;
 }
diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c b/drivers/gpu/drm/i915/display/intel_hotplug.c
index 81f2be06bc2a1..501d9ff588355 100644
--- a/drivers/gpu/drm/i915/display/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/display/intel_hotplug.c
@@ -1008,33 +1008,6 @@ void intel_hpd_cancel_work(struct drm_i915_private *dev_priv)
 		drm_dbg_kms(&dev_priv->drm, "Hotplug detection work still active\n");
 }
 
-bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin)
-{
-	bool ret = false;
-
-	if (pin == HPD_NONE)
-		return false;
-
-	spin_lock_irq(&dev_priv->irq_lock);
-	if (dev_priv->display.hotplug.stats[pin].state == HPD_ENABLED) {
-		dev_priv->display.hotplug.stats[pin].state = HPD_DISABLED;
-		ret = true;
-	}
-	spin_unlock_irq(&dev_priv->irq_lock);
-
-	return ret;
-}
-
-void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin)
-{
-	if (pin == HPD_NONE)
-		return;
-
-	spin_lock_irq(&dev_priv->irq_lock);
-	dev_priv->display.hotplug.stats[pin].state = HPD_ENABLED;
-	spin_unlock_irq(&dev_priv->irq_lock);
-}
-
 static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
 {
 	struct intel_display *display = to_intel_display(&i915->drm);
@@ -1088,7 +1061,8 @@ static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
  *   userspace connector probing, or DRM core's connector polling.
  *
  * A nested call of this function on the same encoder is not allowed. The call
- * must be followed by calling intel_hpd_resume().
+ * must be followed by calling intel_hpd_resume(), or
+ * intel_hpd_clear_and_resume().
  *
  * Note that the handling of HPD IRQs for another encoder using the same HPD
  * pin as that of @encoder will be also suspended.
@@ -1148,6 +1122,35 @@ void intel_hpd_resume(struct intel_encoder *encoder)
 	spin_unlock_irq(&i915->irq_lock);
 }
 
+/**
+ * intel_hpd_clear_and_resume - Resume handling of new HPD IRQs on an HPD pin
+ * @encoder: Encoder to resume the HPD handling for
+ *
+ * Resume the handling of HPD IRQs on the HPD pin of @encoder, which was
+ * previously suspended by intel_hpd_suspend(). Any HPD IRQ raised on the
+ * HPD pin while it was suspended will be cleared, handling only new IRQs.
+ */
+void intel_hpd_clear_and_resume(struct intel_encoder *encoder)
+{
+	struct intel_display *display = to_intel_display(encoder);
+	struct drm_i915_private *i915 = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
+
+	if (encoder->hpd_pin == HPD_NONE)
+		return;
+
+	spin_lock_irq(&i915->irq_lock);
+
+	hotplug->event_bits &= ~BIT(encoder->hpd_pin);
+	hotplug->retry_bits &= ~BIT(encoder->hpd_pin);
+	hotplug->short_port_mask &= ~BIT(encoder->port);
+	hotplug->long_port_mask &= ~BIT(encoder->port);
+
+	resume_hpd(encoder);
+
+	spin_unlock_irq(&i915->irq_lock);
+}
+
 void intel_hpd_enable_detection_work(struct drm_i915_private *i915)
 {
 	spin_lock_irq(&i915->irq_lock);
diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.h b/drivers/gpu/drm/i915/display/intel_hotplug.h
index 5180731def7cc..0a4d1af0e42f1 100644
--- a/drivers/gpu/drm/i915/display/intel_hotplug.h
+++ b/drivers/gpu/drm/i915/display/intel_hotplug.h
@@ -26,10 +26,9 @@ void intel_hpd_init(struct drm_i915_private *dev_priv);
 void intel_hpd_init_early(struct drm_i915_private *i915);
 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
 enum hpd_pin intel_hpd_pin_default(enum port port);
-bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
-void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 void intel_hpd_suspend(struct intel_encoder *encoder);
 void intel_hpd_resume(struct intel_encoder *encoder);
+void intel_hpd_clear_and_resume(struct intel_encoder *encoder);
 void intel_hpd_debugfs_register(struct drm_i915_private *i915);
 
 void intel_hpd_enable_detection_work(struct drm_i915_private *i915);
-- 
2.44.2


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

* ✗ Fi.CI.SPARSE: warning for drm/dp: Fix link training interrupted by HPD pulse
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
                   ` (4 preceding siblings ...)
  2025-02-24 19:31 ` [PATCH 5/5] drm/i915/crt: Use intel_hpd_suspend/resume() instead of intel_hpd_disable/enable() Imre Deak
@ 2025-02-25  1:32 ` Patchwork
  2025-02-25  2:00 ` ✗ i915.CI.BAT: failure " Patchwork
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2025-02-25  1:32 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

== Series Details ==

Series: drm/dp: Fix link training interrupted by HPD pulse
URL   : https://patchwork.freedesktop.org/series/145352/
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] 20+ messages in thread

* ✗ i915.CI.BAT: failure for drm/dp: Fix link training interrupted by HPD pulse
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
                   ` (5 preceding siblings ...)
  2025-02-25  1:32 ` ✗ Fi.CI.SPARSE: warning for drm/dp: Fix link training interrupted by HPD pulse Patchwork
@ 2025-02-25  2:00 ` Patchwork
  2025-02-25 13:23 ` ✗ Fi.CI.SPARSE: warning for drm/dp: Fix link training interrupted by HPD pulse (rev3) Patchwork
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2025-02-25  2:00 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

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

== Series Details ==

Series: drm/dp: Fix link training interrupted by HPD pulse
URL   : https://patchwork.freedesktop.org/series/145352/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_16175 -> Patchwork_145352v1
====================================================

Summary
-------

  **FAILURE**

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

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

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

  Missing    (1): bat-arlh-2 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_pm_rpm@module-reload:
    - bat-adlp-6:         [PASS][1] -> [SKIP][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16175/bat-adlp-6/igt@i915_pm_rpm@module-reload.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v1/bat-adlp-6/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live@client:
    - fi-elk-e7500:       [PASS][3] -> [DMESG-WARN][4] +39 other tests dmesg-warn
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16175/fi-elk-e7500/igt@i915_selftest@live@client.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v1/fi-elk-e7500/igt@i915_selftest@live@client.html

  * igt@i915_selftest@live@gt_engines:
    - fi-ilk-650:         [PASS][5] -> [DMESG-WARN][6] +39 other tests dmesg-warn
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16175/fi-ilk-650/igt@i915_selftest@live@gt_engines.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v1/fi-ilk-650/igt@i915_selftest@live@gt_engines.html

  * igt@i915_selftest@live@objects:
    - fi-blb-e6850:       [PASS][7] -> [DMESG-WARN][8] +39 other tests dmesg-warn
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16175/fi-blb-e6850/igt@i915_selftest@live@objects.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v1/fi-blb-e6850/igt@i915_selftest@live@objects.html

  * igt@i915_selftest@live@ring_submission:
    - fi-ivb-3770:        [PASS][9] -> [DMESG-WARN][10] +39 other tests dmesg-warn
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16175/fi-ivb-3770/igt@i915_selftest@live@ring_submission.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v1/fi-ivb-3770/igt@i915_selftest@live@ring_submission.html

  * igt@kms_pm_rpm@basic-rte:
    - bat-adlp-6:         [PASS][11] -> [FAIL][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16175/bat-adlp-6/igt@kms_pm_rpm@basic-rte.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v1/bat-adlp-6/igt@kms_pm_rpm@basic-rte.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_pm_rpm@module-reload:
    - bat-rpls-4:         [PASS][13] -> [FAIL][14] ([i915#13633])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16175/bat-rpls-4/igt@i915_pm_rpm@module-reload.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v1/bat-rpls-4/igt@i915_pm_rpm@module-reload.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-dg2-11:         [PASS][15] -> [SKIP][16] ([i915#9197]) +3 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16175/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v1/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  * igt@kms_pm_rpm@basic-pci-d3-state:
    - bat-adlp-6:         [PASS][17] -> [SKIP][18] ([i915#12916])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16175/bat-adlp-6/igt@kms_pm_rpm@basic-pci-d3-state.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v1/bat-adlp-6/igt@kms_pm_rpm@basic-pci-d3-state.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@reset:
    - bat-twl-2:          [ABORT][19] ([i915#12919] / [i915#13503]) -> [PASS][20] +1 other test pass
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16175/bat-twl-2/igt@i915_selftest@live@reset.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v1/bat-twl-2/igt@i915_selftest@live@reset.html

  * igt@i915_selftest@live@workarounds:
    - bat-arlh-3:         [DMESG-FAIL][21] ([i915#12061]) -> [PASS][22] +1 other test pass
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16175/bat-arlh-3/igt@i915_selftest@live@workarounds.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v1/bat-arlh-3/igt@i915_selftest@live@workarounds.html

  
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12916]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12916
  [i915#12919]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12919
  [i915#13503]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13503
  [i915#13633]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13633
  [i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197


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

  * Linux: CI_DRM_16175 -> Patchwork_145352v1

  CI-20190529: 20190529
  CI_DRM_16175: 9f112b86fd27ff7de2ce09718596cfefd71ee41f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8246: 2670886863d5821273146d7f94cdd3c8e3a4fe0b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_145352v1: 9f112b86fd27ff7de2ce09718596cfefd71ee41f @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

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

* [PATCH v2 2/5] drm/i915/hpd: Add support for suspending the IRQ handling on an HPD pin
  2025-02-24 19:31 ` [PATCH 2/5] drm/i915/hpd: Add support for suspending the IRQ handling on an HPD pin Imre Deak
@ 2025-02-25 12:15   ` Imre Deak
  2025-02-25 16:25     ` Jani Nikula
  0 siblings, 1 reply; 20+ messages in thread
From: Imre Deak @ 2025-02-25 12:15 UTC (permalink / raw)
  To: intel-gfx, intel-xe

Add support for suspending the IRQ handling on the HPD pin of a given
encoder, handling IRQs that arrived while in the suspended state after
resuming the IRQ handling. This will be used by a follow-up change,
which suspends/resumes the IRQ handling around DP link training.

This is similar to the intel_hpd_disable/enable() functionality, by also
handling encoders/ports with a pulse handler (i.e. also
suspending/resuming the short/long pulse handling) and handling the IRQs
arrived in the suspended state after the handling is resumed (vs. just
dropping such IRQs).

v2:
- Handle encoders without a port assigned to them.
- Fix clearing IRQs from intel_hotplug::short_port_mask.

Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 .../gpu/drm/i915/display/intel_display_core.h |   1 +
 drivers/gpu/drm/i915/display/intel_hotplug.c  | 209 +++++++++++++++---
 drivers/gpu/drm/i915/display/intel_hotplug.h  |   2 +
 3 files changed, 187 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
index 554870d2494b3..152ee4dfcbf38 100644
--- a/drivers/gpu/drm/i915/display/intel_display_core.h
+++ b/drivers/gpu/drm/i915/display/intel_display_core.h
@@ -159,6 +159,7 @@ struct intel_hotplug {
 	struct {
 		unsigned long last_jiffies;
 		int count;
+		int suspend_count;
 		enum {
 			HPD_ENABLED = 0,
 			HPD_DISABLED = 1,
diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c b/drivers/gpu/drm/i915/display/intel_hotplug.c
index ab8e71c4b0f86..85c56b8add8b0 100644
--- a/drivers/gpu/drm/i915/display/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/display/intel_hotplug.c
@@ -349,19 +349,69 @@ static bool intel_encoder_has_hpd_pulse(struct intel_encoder *encoder)
 		enc_to_dig_port(encoder)->hpd_pulse != NULL;
 }
 
+static u32 hpd_mask_to_ports(struct intel_display *display, u32 hpd_mask)
+{
+	struct intel_encoder *encoder;
+	u32 ports = 0;
+
+	for_each_intel_encoder(display->drm, encoder) {
+		if (encoder->port == PORT_NONE)
+			continue;
+
+		if (BIT(encoder->hpd_pin) & hpd_mask)
+			ports |= BIT(encoder->port);
+	}
+
+	return ports;
+}
+
+static u32 get_suspended_hpds(struct intel_display *display)
+{
+	struct drm_i915_private *i915 = to_i915(display->drm);
+	enum hpd_pin pin;
+	u32 hpds = 0;
+
+	lockdep_assert_held(&i915->irq_lock);
+
+	for_each_hpd_pin(pin) {
+		if (display->hotplug.stats[pin].suspend_count)
+			hpds |= BIT(pin);
+	}
+
+	return hpds;
+}
+
+/*
+ * Get the mask of all the ports using a suspended HPD pin, accounting for
+ * ports sharing their - suspended - HPD pin with another port.
+ */
+static u32 get_suspended_hpd_ports(struct intel_display *display)
+{
+	struct drm_i915_private *i915 = to_i915(display->drm);
+
+	lockdep_assert_held(&i915->irq_lock);
+	return hpd_mask_to_ports(display, get_suspended_hpds(display));
+}
+
 static void i915_digport_work_func(struct work_struct *work)
 {
-	struct drm_i915_private *dev_priv =
-		container_of(work, struct drm_i915_private, display.hotplug.dig_port_work);
+	struct intel_display *display =
+		container_of(work, struct intel_display, hotplug.dig_port_work);
+	struct drm_i915_private *dev_priv = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
 	u32 long_port_mask, short_port_mask;
 	struct intel_encoder *encoder;
+	u32 suspended_ports;
 	u32 old_bits = 0;
 
 	spin_lock_irq(&dev_priv->irq_lock);
-	long_port_mask = dev_priv->display.hotplug.long_port_mask;
-	dev_priv->display.hotplug.long_port_mask = 0;
-	short_port_mask = dev_priv->display.hotplug.short_port_mask;
-	dev_priv->display.hotplug.short_port_mask = 0;
+
+	suspended_ports = get_suspended_hpd_ports(display);
+	long_port_mask = hotplug->long_port_mask & ~suspended_ports;
+	hotplug->long_port_mask &= ~long_port_mask;
+	short_port_mask = hotplug->short_port_mask & ~suspended_ports;
+	hotplug->short_port_mask &= ~short_port_mask;
+
 	spin_unlock_irq(&dev_priv->irq_lock);
 
 	for_each_intel_encoder(&dev_priv->drm, encoder) {
@@ -406,13 +456,17 @@ static void i915_digport_work_func(struct work_struct *work)
  */
 void intel_hpd_trigger_irq(struct intel_digital_port *dig_port)
 {
-	struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
+	struct intel_display *display = to_intel_display(dig_port);
+	struct drm_i915_private *i915 = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
 
 	spin_lock_irq(&i915->irq_lock);
-	i915->display.hotplug.short_port_mask |= BIT(dig_port->base.port);
-	spin_unlock_irq(&i915->irq_lock);
 
-	queue_work(i915->display.hotplug.dp_wq, &i915->display.hotplug.dig_port_work);
+	hotplug->short_port_mask |= BIT(dig_port->base.port);
+	if (!(BIT(dig_port->base.port) & get_suspended_hpd_ports(display)))
+		queue_work(hotplug->dp_wq, &hotplug->dig_port_work);
+
+	spin_unlock_irq(&i915->irq_lock);
 }
 
 /*
@@ -420,9 +474,10 @@ void intel_hpd_trigger_irq(struct intel_digital_port *dig_port)
  */
 static void i915_hotplug_work_func(struct work_struct *work)
 {
-	struct drm_i915_private *dev_priv =
-		container_of(work, struct drm_i915_private,
-			     display.hotplug.hotplug_work.work);
+	struct intel_display *display =
+		container_of(work, struct intel_display, hotplug.hotplug_work.work);
+	struct drm_i915_private *dev_priv = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
 	struct drm_connector_list_iter conn_iter;
 	struct intel_connector *connector;
 	u32 changed = 0, retry = 0;
@@ -430,16 +485,18 @@ static void i915_hotplug_work_func(struct work_struct *work)
 	u32 hpd_retry_bits;
 	struct drm_connector *first_changed_connector = NULL;
 	int changed_connectors = 0;
+	u32 suspended_hpds;
 
 	mutex_lock(&dev_priv->drm.mode_config.mutex);
 	drm_dbg_kms(&dev_priv->drm, "running encoder hotplug functions\n");
 
 	spin_lock_irq(&dev_priv->irq_lock);
 
-	hpd_event_bits = dev_priv->display.hotplug.event_bits;
-	dev_priv->display.hotplug.event_bits = 0;
-	hpd_retry_bits = dev_priv->display.hotplug.retry_bits;
-	dev_priv->display.hotplug.retry_bits = 0;
+	suspended_hpds = get_suspended_hpds(display);
+	hpd_event_bits = hotplug->event_bits & ~suspended_hpds;
+	hotplug->event_bits &= ~hpd_event_bits;
+	hpd_retry_bits = hotplug->retry_bits & ~suspended_hpds;
+	hotplug->retry_bits &= ~hpd_retry_bits;
 
 	/* Enable polling for connectors which had HPD IRQ storms */
 	intel_hpd_irq_storm_switch_to_polling(dev_priv);
@@ -538,11 +595,13 @@ static void i915_hotplug_work_func(struct work_struct *work)
 void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 			   u32 pin_mask, u32 long_mask)
 {
+	struct intel_display *display = to_intel_display(&dev_priv->drm);
 	struct intel_encoder *encoder;
 	bool storm_detected = false;
 	bool queue_dig = false, queue_hp = false;
 	u32 long_hpd_pulse_mask = 0;
 	u32 short_hpd_pulse_mask = 0;
+	u32 suspended_hpds;
 	enum hpd_pin pin;
 
 	if (!pin_mask)
@@ -550,6 +609,8 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 
 	spin_lock(&dev_priv->irq_lock);
 
+	suspended_hpds = get_suspended_hpds(display);
+
 	/*
 	 * Determine whether ->hpd_pulse() exists for each pin, and
 	 * whether we have a short or a long pulse. This is needed
@@ -573,7 +634,9 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 			"digital hpd on [ENCODER:%d:%s] - %s\n",
 			encoder->base.base.id, encoder->base.name,
 			long_hpd ? "long" : "short");
-		queue_dig = true;
+
+		if (!(BIT(pin) & suspended_hpds))
+			queue_dig = true;
 
 		if (long_hpd) {
 			long_hpd_pulse_mask |= BIT(pin);
@@ -617,7 +680,9 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 		} else {
 			dev_priv->display.hotplug.event_bits |= BIT(pin);
 			long_hpd = true;
-			queue_hp = true;
+
+			if (!(BIT(pin) & suspended_hpds))
+				queue_hp = true;
 		}
 
 		if (intel_hpd_irq_storm_detect(dev_priv, pin, long_hpd)) {
@@ -915,11 +980,15 @@ static bool cancel_all_detection_work(struct drm_i915_private *i915)
 
 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv)
 {
+	struct intel_display *display = to_intel_display(&dev_priv->drm);
+
 	if (!HAS_DISPLAY(dev_priv))
 		return;
 
 	spin_lock_irq(&dev_priv->irq_lock);
 
+	drm_WARN_ON(display->drm, get_suspended_hpds(display));
+
 	dev_priv->display.hotplug.long_port_mask = 0;
 	dev_priv->display.hotplug.short_port_mask = 0;
 	dev_priv->display.hotplug.event_bits = 0;
@@ -966,19 +1035,22 @@ void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin)
 
 static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
 {
-	bool queue_work = false;
+	struct intel_display *display = to_intel_display(&i915->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
+	bool queue_hp_work = false;
+	u32 suspended_hpds;
 	enum hpd_pin pin;
 
 	lockdep_assert_held(&i915->irq_lock);
 
-	if (i915->display.hotplug.event_bits ||
-	    i915->display.hotplug.retry_bits)
-		queue_work = true;
+	suspended_hpds = get_suspended_hpds(display);
+	if ((hotplug->event_bits | hotplug->retry_bits) & ~suspended_hpds)
+		queue_hp_work = true;
 
 	for_each_hpd_pin(pin) {
 		switch (i915->display.hotplug.stats[pin].state) {
 		case HPD_MARK_DISABLED:
-			queue_work = true;
+			queue_hp_work = true;
 			break;
 		case HPD_DISABLED:
 		case HPD_ENABLED:
@@ -988,10 +1060,97 @@ static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
 		}
 	}
 
-	if (queue_work)
+	if ((hotplug->long_port_mask | hotplug->short_port_mask) &
+	    ~hpd_mask_to_ports(display, suspended_hpds))
+		queue_work(hotplug->dp_wq, &hotplug->dig_port_work);
+
+	if (queue_hp_work)
 		queue_delayed_detection_work(i915, &i915->display.hotplug.hotplug_work, 0);
 }
 
+/**
+ * intel_hpd_suspend - Suspend handling of HPD IRQs on an HPD pin
+ * @encoder: Encoder to suspend the HPD handling for
+ *
+ * Suspends the handling of HPD IRQs on the HPD pin of @encoder.
+ *
+ * On return:
+ * - It's guaranteed that the suspended encoders' HPD pulse handler
+ *   (via intel_digital_port::hpd_pulse()) is not running.
+ * - The hotplug event handling (via intel_encoder::hotplug()) of an
+ *   HPD IRQ pending at the time this function is called may be still
+ *   running.
+ * - Detection on the encoder's connector (via
+ *   drm_connector_helper_funcs::detect_ctx(),
+ *   drm_connector_funcs::detect()) remains allowed, for instance as part of
+ *   userspace connector probing, or DRM core's connector polling.
+ *
+ * The call must be followed by calling intel_hpd_resume().
+ *
+ * Note that the handling of HPD IRQs for another encoder using the same HPD
+ * pin as that of @encoder will be also suspended.
+ */
+void intel_hpd_suspend(struct intel_encoder *encoder)
+{
+	struct intel_display *display = to_intel_display(encoder);
+	struct drm_i915_private *i915 = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
+	bool do_flush = false;
+
+	if (encoder->hpd_pin == HPD_NONE)
+		return;
+
+	spin_lock_irq(&i915->irq_lock);
+
+	hotplug->stats[encoder->hpd_pin].suspend_count++;
+
+	if (hotplug->stats[encoder->hpd_pin].suspend_count == 1 &&
+	    intel_encoder_has_hpd_pulse(encoder))
+		do_flush = true;
+
+	spin_unlock_irq(&i915->irq_lock);
+
+	if (do_flush)
+		flush_work(&hotplug->dig_port_work);
+}
+
+static void resume_hpd(struct intel_encoder *encoder)
+{
+	struct intel_display *display = to_intel_display(encoder);
+	struct drm_i915_private *i915 = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
+
+	lockdep_assert_held(&i915->irq_lock);
+
+	drm_WARN_ON(display->drm, hotplug->stats[encoder->hpd_pin].suspend_count == 0);
+	hotplug->stats[encoder->hpd_pin].suspend_count--;
+
+	if (hotplug->stats[encoder->hpd_pin].suspend_count == 0)
+		queue_work_for_missed_irqs(i915);
+}
+
+/**
+ * intel_hpd_resume - Resume handling of HPD IRQs on an HPD pin
+ * @encoder: Encoder to resume the HPD handling for
+ *
+ * Resume the handling of HPD IRQs on the HPD pin of @encoder, which was
+ * previously suspended by intel_hpd_suspend(). Any HPD IRQ raised on the
+ * HPD pin while it was suspended will be handled for @encoder and for any
+ * other encoder sharing the same HPD pin.
+ */
+void intel_hpd_resume(struct intel_encoder *encoder)
+{
+	struct intel_display *display = to_intel_display(encoder);
+	struct drm_i915_private *i915 = to_i915(display->drm);
+
+	if (encoder->hpd_pin == HPD_NONE)
+		return;
+
+	spin_lock_irq(&i915->irq_lock);
+	resume_hpd(encoder);
+	spin_unlock_irq(&i915->irq_lock);
+}
+
 void intel_hpd_enable_detection_work(struct drm_i915_private *i915)
 {
 	spin_lock_irq(&i915->irq_lock);
diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.h b/drivers/gpu/drm/i915/display/intel_hotplug.h
index d6986902b0545..5180731def7cc 100644
--- a/drivers/gpu/drm/i915/display/intel_hotplug.h
+++ b/drivers/gpu/drm/i915/display/intel_hotplug.h
@@ -28,6 +28,8 @@ void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
 enum hpd_pin intel_hpd_pin_default(enum port port);
 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
+void intel_hpd_suspend(struct intel_encoder *encoder);
+void intel_hpd_resume(struct intel_encoder *encoder);
 void intel_hpd_debugfs_register(struct drm_i915_private *i915);
 
 void intel_hpd_enable_detection_work(struct drm_i915_private *i915);
-- 
2.44.2


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

* [PATCH v2 5/5] drm/i915/crt: Use intel_hpd_suspend/resume() instead of intel_hpd_disable/enable()
  2025-02-24 19:31 ` [PATCH 5/5] drm/i915/crt: Use intel_hpd_suspend/resume() instead of intel_hpd_disable/enable() Imre Deak
@ 2025-02-25 12:15   ` Imre Deak
  0 siblings, 0 replies; 20+ messages in thread
From: Imre Deak @ 2025-02-25 12:15 UTC (permalink / raw)
  To: intel-gfx, intel-xe

intel_hpd_disable/enable() have the same purpose as
intel_hpd_suspend/resume(), except that disable/enable will drop any HPD
IRQs which were triggered while the HPD was disabled, while
suspend/resume will handle such IRQs after the IRQ handling is resumed.
Use intel_hpd_suspend/resume() for crt as well, by adding a helper to
explicitly clear any pending IRQs before resuming.

v2:
- Handle encoders without a port assigned to them.
- Rebase on change in intel_hpd_suspend() documentation.

Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 drivers/gpu/drm/i915/display/intel_crt.c     |  7 +--
 drivers/gpu/drm/i915/display/intel_hotplug.c | 63 +++++++++++---------
 drivers/gpu/drm/i915/display/intel_hotplug.h |  3 +-
 3 files changed, 38 insertions(+), 35 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_crt.c b/drivers/gpu/drm/i915/display/intel_crt.c
index 321580b095e7d..67b6731d7cdd2 100644
--- a/drivers/gpu/drm/i915/display/intel_crt.c
+++ b/drivers/gpu/drm/i915/display/intel_crt.c
@@ -531,8 +531,6 @@ static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
 {
 	struct intel_display *display = to_intel_display(connector->dev);
 	struct intel_crt *crt = intel_attached_crt(to_intel_connector(connector));
-	struct drm_i915_private *dev_priv = to_i915(connector->dev);
-	bool reenable_hpd;
 	u32 adpa;
 	bool ret;
 	u32 save_adpa;
@@ -549,7 +547,7 @@ static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
 	 *
 	 * Just disable HPD interrupts here to prevent this
 	 */
-	reenable_hpd = intel_hpd_disable(dev_priv, crt->base.hpd_pin);
+	intel_hpd_suspend(&crt->base);
 
 	save_adpa = adpa = intel_de_read(display, crt->adpa_reg);
 	drm_dbg_kms(display->drm,
@@ -576,8 +574,7 @@ static bool valleyview_crt_detect_hotplug(struct drm_connector *connector)
 	drm_dbg_kms(display->drm,
 		    "valleyview hotplug adpa=0x%x, result %d\n", adpa, ret);
 
-	if (reenable_hpd)
-		intel_hpd_enable(dev_priv, crt->base.hpd_pin);
+	intel_hpd_clear_and_resume(&crt->base);
 
 	return ret;
 }
diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c b/drivers/gpu/drm/i915/display/intel_hotplug.c
index 85c56b8add8b0..4428a4dec5e20 100644
--- a/drivers/gpu/drm/i915/display/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/display/intel_hotplug.c
@@ -1006,33 +1006,6 @@ void intel_hpd_cancel_work(struct drm_i915_private *dev_priv)
 		drm_dbg_kms(&dev_priv->drm, "Hotplug detection work still active\n");
 }
 
-bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin)
-{
-	bool ret = false;
-
-	if (pin == HPD_NONE)
-		return false;
-
-	spin_lock_irq(&dev_priv->irq_lock);
-	if (dev_priv->display.hotplug.stats[pin].state == HPD_ENABLED) {
-		dev_priv->display.hotplug.stats[pin].state = HPD_DISABLED;
-		ret = true;
-	}
-	spin_unlock_irq(&dev_priv->irq_lock);
-
-	return ret;
-}
-
-void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin)
-{
-	if (pin == HPD_NONE)
-		return;
-
-	spin_lock_irq(&dev_priv->irq_lock);
-	dev_priv->display.hotplug.stats[pin].state = HPD_ENABLED;
-	spin_unlock_irq(&dev_priv->irq_lock);
-}
-
 static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
 {
 	struct intel_display *display = to_intel_display(&i915->drm);
@@ -1085,7 +1058,8 @@ static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
  *   drm_connector_funcs::detect()) remains allowed, for instance as part of
  *   userspace connector probing, or DRM core's connector polling.
  *
- * The call must be followed by calling intel_hpd_resume().
+ * The call must be followed by calling intel_hpd_resume(), or
+ * intel_hpd_clear_and_resume().
  *
  * Note that the handling of HPD IRQs for another encoder using the same HPD
  * pin as that of @encoder will be also suspended.
@@ -1151,6 +1125,39 @@ void intel_hpd_resume(struct intel_encoder *encoder)
 	spin_unlock_irq(&i915->irq_lock);
 }
 
+/**
+ * intel_hpd_clear_and_resume - Resume handling of new HPD IRQs on an HPD pin
+ * @encoder: Encoder to resume the HPD handling for
+ *
+ * Resume the handling of HPD IRQs on the HPD pin of @encoder, which was
+ * previously suspended by intel_hpd_suspend(). Any HPD IRQ raised on the
+ * HPD pin while it was suspended will be cleared, handling only new IRQs.
+ */
+void intel_hpd_clear_and_resume(struct intel_encoder *encoder)
+{
+	struct intel_display *display = to_intel_display(encoder);
+	struct drm_i915_private *i915 = to_i915(display->drm);
+	struct intel_hotplug *hotplug = &display->hotplug;
+
+	if (encoder->hpd_pin == HPD_NONE)
+		return;
+
+	spin_lock_irq(&i915->irq_lock);
+
+	hotplug->event_bits &= ~BIT(encoder->hpd_pin);
+	hotplug->retry_bits &= ~BIT(encoder->hpd_pin);
+
+	if (intel_encoder_has_hpd_pulse(encoder)) {
+		drm_WARN_ON(display->drm, encoder->port == PORT_NONE);
+		hotplug->short_port_mask &= ~BIT(encoder->port);
+		hotplug->long_port_mask &= ~BIT(encoder->port);
+	}
+
+	resume_hpd(encoder);
+
+	spin_unlock_irq(&i915->irq_lock);
+}
+
 void intel_hpd_enable_detection_work(struct drm_i915_private *i915)
 {
 	spin_lock_irq(&i915->irq_lock);
diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.h b/drivers/gpu/drm/i915/display/intel_hotplug.h
index 5180731def7cc..0a4d1af0e42f1 100644
--- a/drivers/gpu/drm/i915/display/intel_hotplug.h
+++ b/drivers/gpu/drm/i915/display/intel_hotplug.h
@@ -26,10 +26,9 @@ void intel_hpd_init(struct drm_i915_private *dev_priv);
 void intel_hpd_init_early(struct drm_i915_private *i915);
 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
 enum hpd_pin intel_hpd_pin_default(enum port port);
-bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
-void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 void intel_hpd_suspend(struct intel_encoder *encoder);
 void intel_hpd_resume(struct intel_encoder *encoder);
+void intel_hpd_clear_and_resume(struct intel_encoder *encoder);
 void intel_hpd_debugfs_register(struct drm_i915_private *i915);
 
 void intel_hpd_enable_detection_work(struct drm_i915_private *i915);
-- 
2.44.2


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

* ✗ Fi.CI.SPARSE: warning for drm/dp: Fix link training interrupted by HPD pulse (rev3)
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
                   ` (6 preceding siblings ...)
  2025-02-25  2:00 ` ✗ i915.CI.BAT: failure " Patchwork
@ 2025-02-25 13:23 ` Patchwork
  2025-02-25 13:41 ` ✗ i915.CI.BAT: failure " Patchwork
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2025-02-25 13:23 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

== Series Details ==

Series: drm/dp: Fix link training interrupted by HPD pulse (rev3)
URL   : https://patchwork.freedesktop.org/series/145352/
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] 20+ messages in thread

* ✗ i915.CI.BAT: failure for drm/dp: Fix link training interrupted by HPD pulse (rev3)
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
                   ` (7 preceding siblings ...)
  2025-02-25 13:23 ` ✗ Fi.CI.SPARSE: warning for drm/dp: Fix link training interrupted by HPD pulse (rev3) Patchwork
@ 2025-02-25 13:41 ` Patchwork
  2025-02-25 14:25   ` Imre Deak
  2025-02-26  3:51 ` ✓ i915.CI.BAT: success " Patchwork
                   ` (2 subsequent siblings)
  11 siblings, 1 reply; 20+ messages in thread
From: Patchwork @ 2025-02-25 13:41 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

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

== Series Details ==

Series: drm/dp: Fix link training interrupted by HPD pulse (rev3)
URL   : https://patchwork.freedesktop.org/series/145352/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_16178 -> Patchwork_145352v3
====================================================

Summary
-------

  **FAILURE**

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

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

Participating hosts (44 -> 43)
------------------------------

  Missing    (1): fi-snb-2520m 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2:
    - fi-cfl-8109u:       [PASS][1] -> [DMESG-WARN][2] +2 other tests dmesg-warn
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/fi-cfl-8109u/igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/fi-cfl-8109u/igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_module_load@load:
    - bat-mtlp-9:         [PASS][3] -> [DMESG-WARN][4] ([i915#13494])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-mtlp-9/igt@i915_module_load@load.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-mtlp-9/igt@i915_module_load@load.html

  * igt@i915_selftest@live:
    - bat-twl-2:          [PASS][5] -> [ABORT][6] ([i915#12435] / [i915#12919] / [i915#13503])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-twl-2/igt@i915_selftest@live.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-twl-2/igt@i915_selftest@live.html

  * igt@i915_selftest@live@memory_region:
    - bat-twl-2:          [PASS][7] -> [ABORT][8] ([i915#12919])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-twl-2/igt@i915_selftest@live@memory_region.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-twl-2/igt@i915_selftest@live@memory_region.html

  * igt@i915_selftest@live@requests:
    - bat-atsm-1:         [PASS][9] -> [INCOMPLETE][10] ([i915#12445])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-atsm-1/igt@i915_selftest@live@requests.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-atsm-1/igt@i915_selftest@live@requests.html

  * igt@i915_selftest@live@workarounds:
    - bat-arls-5:         [PASS][11] -> [DMESG-FAIL][12] ([i915#12061]) +1 other test dmesg-fail
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-arls-5/igt@i915_selftest@live@workarounds.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-arls-5/igt@i915_selftest@live@workarounds.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-dg2-11:         [PASS][13] -> [SKIP][14] ([i915#9197]) +3 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@workarounds:
    - bat-arlh-3:         [DMESG-FAIL][15] ([i915#12061]) -> [PASS][16] +1 other test pass
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-arlh-3/igt@i915_selftest@live@workarounds.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-arlh-3/igt@i915_selftest@live@workarounds.html

  
#### Warnings ####

  * igt@i915_selftest@live:
    - bat-atsm-1:         [ABORT][17] ([i915#13679]) -> [INCOMPLETE][18] ([i915#12445])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-atsm-1/igt@i915_selftest@live.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-atsm-1/igt@i915_selftest@live.html

  
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12435
  [i915#12445]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12445
  [i915#12919]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12919
  [i915#13494]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13494
  [i915#13503]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13503
  [i915#13679]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13679
  [i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197


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

  * Linux: CI_DRM_16178 -> Patchwork_145352v3

  CI-20190529: 20190529
  CI_DRM_16178: d5debc4841e604372c74ebda0bbf54bd527c3475 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8247: 8247
  Patchwork_145352v3: d5debc4841e604372c74ebda0bbf54bd527c3475 @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

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

* Re: ✗ i915.CI.BAT: failure for drm/dp: Fix link training interrupted by HPD pulse (rev3)
  2025-02-25 13:41 ` ✗ i915.CI.BAT: failure " Patchwork
@ 2025-02-25 14:25   ` Imre Deak
  2025-02-26  4:09     ` Ravali, JupallyX
  0 siblings, 1 reply; 20+ messages in thread
From: Imre Deak @ 2025-02-25 14:25 UTC (permalink / raw)
  To: I915-ci-infra; +Cc: intel-gfx

Hi CI team,

On Tue, Feb 25, 2025 at 01:41:55PM +0000, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/dp: Fix link training interrupted by HPD pulse (rev3)
> URL   : https://patchwork.freedesktop.org/series/145352/
> State : failure

the issue reported below is unrelated, see my comment there, could you
re-report this result?

> == Summary ==
> 
> CI Bug Log - changes from CI_DRM_16178 -> Patchwork_145352v3
> ====================================================
> 
> Summary
> -------
> 
>   **FAILURE**
> 
>   Serious unknown changes coming with Patchwork_145352v3 absolutely need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in Patchwork_145352v3, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
>   to document this new failure mode, which will reduce false positives in CI.
> 
>   External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/index.html
> 
> Participating hosts (44 -> 43)
> ------------------------------
> 
>   Missing    (1): fi-snb-2520m 
> 
> Possible new issues
> -------------------
> 
>   Here are the unknown changes that may have been introduced in Patchwork_145352v3:
> 
> ### IGT changes ###
> 
> #### Possible regressions ####
> 
>   * igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2:
>     - fi-cfl-8109u:       [PASS][1] -> [DMESG-WARN][2] +2 other tests dmesg-warn
>    [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/fi-cfl-8109u/igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2.html
>    [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/fi-cfl-8109u/igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2.html

There is no HPD IRQ raised or handled on the above host, so the changes
are not related to it.

The issue is:
<3> [158.833677] i915 0000:00:02.0: [drm] *ERROR* CPU pipe A FIFO underrun

It seems to happen frequently, on the same host, leading to incorrect
BAT failures.

There is
https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12935

but on a different host (MTL).

> Known issues
> ------------
> 
>   Here are the changes found in Patchwork_145352v3 that come from known issues:
> 
> ### IGT changes ###
> 
> #### Issues hit ####
> 
>   * igt@i915_module_load@load:
>     - bat-mtlp-9:         [PASS][3] -> [DMESG-WARN][4] ([i915#13494])
>    [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-mtlp-9/igt@i915_module_load@load.html
>    [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-mtlp-9/igt@i915_module_load@load.html
> 
>   * igt@i915_selftest@live:
>     - bat-twl-2:          [PASS][5] -> [ABORT][6] ([i915#12435] / [i915#12919] / [i915#13503])
>    [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-twl-2/igt@i915_selftest@live.html
>    [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-twl-2/igt@i915_selftest@live.html
> 
>   * igt@i915_selftest@live@memory_region:
>     - bat-twl-2:          [PASS][7] -> [ABORT][8] ([i915#12919])
>    [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-twl-2/igt@i915_selftest@live@memory_region.html
>    [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-twl-2/igt@i915_selftest@live@memory_region.html
> 
>   * igt@i915_selftest@live@requests:
>     - bat-atsm-1:         [PASS][9] -> [INCOMPLETE][10] ([i915#12445])
>    [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-atsm-1/igt@i915_selftest@live@requests.html
>    [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-atsm-1/igt@i915_selftest@live@requests.html
> 
>   * igt@i915_selftest@live@workarounds:
>     - bat-arls-5:         [PASS][11] -> [DMESG-FAIL][12] ([i915#12061]) +1 other test dmesg-fail
>    [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-arls-5/igt@i915_selftest@live@workarounds.html
>    [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-arls-5/igt@i915_selftest@live@workarounds.html
> 
>   * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
>     - bat-dg2-11:         [PASS][13] -> [SKIP][14] ([i915#9197]) +3 other tests skip
>    [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
>    [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
> 
>   
> #### Possible fixes ####
> 
>   * igt@i915_selftest@live@workarounds:
>     - bat-arlh-3:         [DMESG-FAIL][15] ([i915#12061]) -> [PASS][16] +1 other test pass
>    [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-arlh-3/igt@i915_selftest@live@workarounds.html
>    [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-arlh-3/igt@i915_selftest@live@workarounds.html
> 
>   
> #### Warnings ####
> 
>   * igt@i915_selftest@live:
>     - bat-atsm-1:         [ABORT][17] ([i915#13679]) -> [INCOMPLETE][18] ([i915#12445])
>    [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-atsm-1/igt@i915_selftest@live.html
>    [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-atsm-1/igt@i915_selftest@live.html
> 
>   
>   [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
>   [i915#12435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12435
>   [i915#12445]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12445
>   [i915#12919]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12919
>   [i915#13494]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13494
>   [i915#13503]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13503
>   [i915#13679]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13679
>   [i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197
> 
> 
> Build changes
> -------------
> 
>   * Linux: CI_DRM_16178 -> Patchwork_145352v3
> 
>   CI-20190529: 20190529
>   CI_DRM_16178: d5debc4841e604372c74ebda0bbf54bd527c3475 @ git://anongit.freedesktop.org/gfx-ci/linux
>   IGT_8247: 8247
>   Patchwork_145352v3: d5debc4841e604372c74ebda0bbf54bd527c3475 @ git://anongit.freedesktop.org/gfx-ci/linux
> 
> == Logs ==
> 
> For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/index.html

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

* Re: [PATCH v2 2/5] drm/i915/hpd: Add support for suspending the IRQ handling on an HPD pin
  2025-02-25 12:15   ` [PATCH v2 " Imre Deak
@ 2025-02-25 16:25     ` Jani Nikula
  2025-02-25 17:15       ` Imre Deak
  0 siblings, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2025-02-25 16:25 UTC (permalink / raw)
  To: Imre Deak, intel-gfx, intel-xe

On Tue, 25 Feb 2025, Imre Deak <imre.deak@intel.com> wrote:
> Add support for suspending the IRQ handling on the HPD pin of a given
> encoder, handling IRQs that arrived while in the suspended state after
> resuming the IRQ handling. This will be used by a follow-up change,
> which suspends/resumes the IRQ handling around DP link training.
>
> This is similar to the intel_hpd_disable/enable() functionality, by also
> handling encoders/ports with a pulse handler (i.e. also
> suspending/resuming the short/long pulse handling) and handling the IRQs
> arrived in the suspended state after the handling is resumed (vs. just
> dropping such IRQs).
>
> v2:
> - Handle encoders without a port assigned to them.
> - Fix clearing IRQs from intel_hotplug::short_port_mask.
>
> Signed-off-by: Imre Deak <imre.deak@intel.com>

I think the terms suspend/resume are too loaded to be used for something
that isn't about system or runtime suspend/resume. It's guaranteed to
mislead people.

Maybe:

- pause/continue
- deactivate/activate
- block/unblock

?


BR,
Jani.


> ---
>  .../gpu/drm/i915/display/intel_display_core.h |   1 +
>  drivers/gpu/drm/i915/display/intel_hotplug.c  | 209 +++++++++++++++---
>  drivers/gpu/drm/i915/display/intel_hotplug.h  |   2 +
>  3 files changed, 187 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
> index 554870d2494b3..152ee4dfcbf38 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -159,6 +159,7 @@ struct intel_hotplug {
>  	struct {
>  		unsigned long last_jiffies;
>  		int count;
> +		int suspend_count;
>  		enum {
>  			HPD_ENABLED = 0,
>  			HPD_DISABLED = 1,
> diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c b/drivers/gpu/drm/i915/display/intel_hotplug.c
> index ab8e71c4b0f86..85c56b8add8b0 100644
> --- a/drivers/gpu/drm/i915/display/intel_hotplug.c
> +++ b/drivers/gpu/drm/i915/display/intel_hotplug.c
> @@ -349,19 +349,69 @@ static bool intel_encoder_has_hpd_pulse(struct intel_encoder *encoder)
>  		enc_to_dig_port(encoder)->hpd_pulse != NULL;
>  }
>  
> +static u32 hpd_mask_to_ports(struct intel_display *display, u32 hpd_mask)
> +{
> +	struct intel_encoder *encoder;
> +	u32 ports = 0;
> +
> +	for_each_intel_encoder(display->drm, encoder) {
> +		if (encoder->port == PORT_NONE)
> +			continue;
> +
> +		if (BIT(encoder->hpd_pin) & hpd_mask)
> +			ports |= BIT(encoder->port);
> +	}
> +
> +	return ports;
> +}
> +
> +static u32 get_suspended_hpds(struct intel_display *display)
> +{
> +	struct drm_i915_private *i915 = to_i915(display->drm);
> +	enum hpd_pin pin;
> +	u32 hpds = 0;
> +
> +	lockdep_assert_held(&i915->irq_lock);
> +
> +	for_each_hpd_pin(pin) {
> +		if (display->hotplug.stats[pin].suspend_count)
> +			hpds |= BIT(pin);
> +	}
> +
> +	return hpds;
> +}
> +
> +/*
> + * Get the mask of all the ports using a suspended HPD pin, accounting for
> + * ports sharing their - suspended - HPD pin with another port.
> + */
> +static u32 get_suspended_hpd_ports(struct intel_display *display)
> +{
> +	struct drm_i915_private *i915 = to_i915(display->drm);
> +
> +	lockdep_assert_held(&i915->irq_lock);
> +	return hpd_mask_to_ports(display, get_suspended_hpds(display));
> +}
> +
>  static void i915_digport_work_func(struct work_struct *work)
>  {
> -	struct drm_i915_private *dev_priv =
> -		container_of(work, struct drm_i915_private, display.hotplug.dig_port_work);
> +	struct intel_display *display =
> +		container_of(work, struct intel_display, hotplug.dig_port_work);
> +	struct drm_i915_private *dev_priv = to_i915(display->drm);
> +	struct intel_hotplug *hotplug = &display->hotplug;
>  	u32 long_port_mask, short_port_mask;
>  	struct intel_encoder *encoder;
> +	u32 suspended_ports;
>  	u32 old_bits = 0;
>  
>  	spin_lock_irq(&dev_priv->irq_lock);
> -	long_port_mask = dev_priv->display.hotplug.long_port_mask;
> -	dev_priv->display.hotplug.long_port_mask = 0;
> -	short_port_mask = dev_priv->display.hotplug.short_port_mask;
> -	dev_priv->display.hotplug.short_port_mask = 0;
> +
> +	suspended_ports = get_suspended_hpd_ports(display);
> +	long_port_mask = hotplug->long_port_mask & ~suspended_ports;
> +	hotplug->long_port_mask &= ~long_port_mask;
> +	short_port_mask = hotplug->short_port_mask & ~suspended_ports;
> +	hotplug->short_port_mask &= ~short_port_mask;
> +
>  	spin_unlock_irq(&dev_priv->irq_lock);
>  
>  	for_each_intel_encoder(&dev_priv->drm, encoder) {
> @@ -406,13 +456,17 @@ static void i915_digport_work_func(struct work_struct *work)
>   */
>  void intel_hpd_trigger_irq(struct intel_digital_port *dig_port)
>  {
> -	struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
> +	struct intel_display *display = to_intel_display(dig_port);
> +	struct drm_i915_private *i915 = to_i915(display->drm);
> +	struct intel_hotplug *hotplug = &display->hotplug;
>  
>  	spin_lock_irq(&i915->irq_lock);
> -	i915->display.hotplug.short_port_mask |= BIT(dig_port->base.port);
> -	spin_unlock_irq(&i915->irq_lock);
>  
> -	queue_work(i915->display.hotplug.dp_wq, &i915->display.hotplug.dig_port_work);
> +	hotplug->short_port_mask |= BIT(dig_port->base.port);
> +	if (!(BIT(dig_port->base.port) & get_suspended_hpd_ports(display)))
> +		queue_work(hotplug->dp_wq, &hotplug->dig_port_work);
> +
> +	spin_unlock_irq(&i915->irq_lock);
>  }
>  
>  /*
> @@ -420,9 +474,10 @@ void intel_hpd_trigger_irq(struct intel_digital_port *dig_port)
>   */
>  static void i915_hotplug_work_func(struct work_struct *work)
>  {
> -	struct drm_i915_private *dev_priv =
> -		container_of(work, struct drm_i915_private,
> -			     display.hotplug.hotplug_work.work);
> +	struct intel_display *display =
> +		container_of(work, struct intel_display, hotplug.hotplug_work.work);
> +	struct drm_i915_private *dev_priv = to_i915(display->drm);
> +	struct intel_hotplug *hotplug = &display->hotplug;
>  	struct drm_connector_list_iter conn_iter;
>  	struct intel_connector *connector;
>  	u32 changed = 0, retry = 0;
> @@ -430,16 +485,18 @@ static void i915_hotplug_work_func(struct work_struct *work)
>  	u32 hpd_retry_bits;
>  	struct drm_connector *first_changed_connector = NULL;
>  	int changed_connectors = 0;
> +	u32 suspended_hpds;
>  
>  	mutex_lock(&dev_priv->drm.mode_config.mutex);
>  	drm_dbg_kms(&dev_priv->drm, "running encoder hotplug functions\n");
>  
>  	spin_lock_irq(&dev_priv->irq_lock);
>  
> -	hpd_event_bits = dev_priv->display.hotplug.event_bits;
> -	dev_priv->display.hotplug.event_bits = 0;
> -	hpd_retry_bits = dev_priv->display.hotplug.retry_bits;
> -	dev_priv->display.hotplug.retry_bits = 0;
> +	suspended_hpds = get_suspended_hpds(display);
> +	hpd_event_bits = hotplug->event_bits & ~suspended_hpds;
> +	hotplug->event_bits &= ~hpd_event_bits;
> +	hpd_retry_bits = hotplug->retry_bits & ~suspended_hpds;
> +	hotplug->retry_bits &= ~hpd_retry_bits;
>  
>  	/* Enable polling for connectors which had HPD IRQ storms */
>  	intel_hpd_irq_storm_switch_to_polling(dev_priv);
> @@ -538,11 +595,13 @@ static void i915_hotplug_work_func(struct work_struct *work)
>  void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
>  			   u32 pin_mask, u32 long_mask)
>  {
> +	struct intel_display *display = to_intel_display(&dev_priv->drm);
>  	struct intel_encoder *encoder;
>  	bool storm_detected = false;
>  	bool queue_dig = false, queue_hp = false;
>  	u32 long_hpd_pulse_mask = 0;
>  	u32 short_hpd_pulse_mask = 0;
> +	u32 suspended_hpds;
>  	enum hpd_pin pin;
>  
>  	if (!pin_mask)
> @@ -550,6 +609,8 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
>  
>  	spin_lock(&dev_priv->irq_lock);
>  
> +	suspended_hpds = get_suspended_hpds(display);
> +
>  	/*
>  	 * Determine whether ->hpd_pulse() exists for each pin, and
>  	 * whether we have a short or a long pulse. This is needed
> @@ -573,7 +634,9 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
>  			"digital hpd on [ENCODER:%d:%s] - %s\n",
>  			encoder->base.base.id, encoder->base.name,
>  			long_hpd ? "long" : "short");
> -		queue_dig = true;
> +
> +		if (!(BIT(pin) & suspended_hpds))
> +			queue_dig = true;
>  
>  		if (long_hpd) {
>  			long_hpd_pulse_mask |= BIT(pin);
> @@ -617,7 +680,9 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
>  		} else {
>  			dev_priv->display.hotplug.event_bits |= BIT(pin);
>  			long_hpd = true;
> -			queue_hp = true;
> +
> +			if (!(BIT(pin) & suspended_hpds))
> +				queue_hp = true;
>  		}
>  
>  		if (intel_hpd_irq_storm_detect(dev_priv, pin, long_hpd)) {
> @@ -915,11 +980,15 @@ static bool cancel_all_detection_work(struct drm_i915_private *i915)
>  
>  void intel_hpd_cancel_work(struct drm_i915_private *dev_priv)
>  {
> +	struct intel_display *display = to_intel_display(&dev_priv->drm);
> +
>  	if (!HAS_DISPLAY(dev_priv))
>  		return;
>  
>  	spin_lock_irq(&dev_priv->irq_lock);
>  
> +	drm_WARN_ON(display->drm, get_suspended_hpds(display));
> +
>  	dev_priv->display.hotplug.long_port_mask = 0;
>  	dev_priv->display.hotplug.short_port_mask = 0;
>  	dev_priv->display.hotplug.event_bits = 0;
> @@ -966,19 +1035,22 @@ void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin)
>  
>  static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
>  {
> -	bool queue_work = false;
> +	struct intel_display *display = to_intel_display(&i915->drm);
> +	struct intel_hotplug *hotplug = &display->hotplug;
> +	bool queue_hp_work = false;
> +	u32 suspended_hpds;
>  	enum hpd_pin pin;
>  
>  	lockdep_assert_held(&i915->irq_lock);
>  
> -	if (i915->display.hotplug.event_bits ||
> -	    i915->display.hotplug.retry_bits)
> -		queue_work = true;
> +	suspended_hpds = get_suspended_hpds(display);
> +	if ((hotplug->event_bits | hotplug->retry_bits) & ~suspended_hpds)
> +		queue_hp_work = true;
>  
>  	for_each_hpd_pin(pin) {
>  		switch (i915->display.hotplug.stats[pin].state) {
>  		case HPD_MARK_DISABLED:
> -			queue_work = true;
> +			queue_hp_work = true;
>  			break;
>  		case HPD_DISABLED:
>  		case HPD_ENABLED:
> @@ -988,10 +1060,97 @@ static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
>  		}
>  	}
>  
> -	if (queue_work)
> +	if ((hotplug->long_port_mask | hotplug->short_port_mask) &
> +	    ~hpd_mask_to_ports(display, suspended_hpds))
> +		queue_work(hotplug->dp_wq, &hotplug->dig_port_work);
> +
> +	if (queue_hp_work)
>  		queue_delayed_detection_work(i915, &i915->display.hotplug.hotplug_work, 0);
>  }
>  
> +/**
> + * intel_hpd_suspend - Suspend handling of HPD IRQs on an HPD pin
> + * @encoder: Encoder to suspend the HPD handling for
> + *
> + * Suspends the handling of HPD IRQs on the HPD pin of @encoder.
> + *
> + * On return:
> + * - It's guaranteed that the suspended encoders' HPD pulse handler
> + *   (via intel_digital_port::hpd_pulse()) is not running.
> + * - The hotplug event handling (via intel_encoder::hotplug()) of an
> + *   HPD IRQ pending at the time this function is called may be still
> + *   running.
> + * - Detection on the encoder's connector (via
> + *   drm_connector_helper_funcs::detect_ctx(),
> + *   drm_connector_funcs::detect()) remains allowed, for instance as part of
> + *   userspace connector probing, or DRM core's connector polling.
> + *
> + * The call must be followed by calling intel_hpd_resume().
> + *
> + * Note that the handling of HPD IRQs for another encoder using the same HPD
> + * pin as that of @encoder will be also suspended.
> + */
> +void intel_hpd_suspend(struct intel_encoder *encoder)
> +{
> +	struct intel_display *display = to_intel_display(encoder);
> +	struct drm_i915_private *i915 = to_i915(display->drm);
> +	struct intel_hotplug *hotplug = &display->hotplug;
> +	bool do_flush = false;
> +
> +	if (encoder->hpd_pin == HPD_NONE)
> +		return;
> +
> +	spin_lock_irq(&i915->irq_lock);
> +
> +	hotplug->stats[encoder->hpd_pin].suspend_count++;
> +
> +	if (hotplug->stats[encoder->hpd_pin].suspend_count == 1 &&
> +	    intel_encoder_has_hpd_pulse(encoder))
> +		do_flush = true;
> +
> +	spin_unlock_irq(&i915->irq_lock);
> +
> +	if (do_flush)
> +		flush_work(&hotplug->dig_port_work);
> +}
> +
> +static void resume_hpd(struct intel_encoder *encoder)
> +{
> +	struct intel_display *display = to_intel_display(encoder);
> +	struct drm_i915_private *i915 = to_i915(display->drm);
> +	struct intel_hotplug *hotplug = &display->hotplug;
> +
> +	lockdep_assert_held(&i915->irq_lock);
> +
> +	drm_WARN_ON(display->drm, hotplug->stats[encoder->hpd_pin].suspend_count == 0);
> +	hotplug->stats[encoder->hpd_pin].suspend_count--;
> +
> +	if (hotplug->stats[encoder->hpd_pin].suspend_count == 0)
> +		queue_work_for_missed_irqs(i915);
> +}
> +
> +/**
> + * intel_hpd_resume - Resume handling of HPD IRQs on an HPD pin
> + * @encoder: Encoder to resume the HPD handling for
> + *
> + * Resume the handling of HPD IRQs on the HPD pin of @encoder, which was
> + * previously suspended by intel_hpd_suspend(). Any HPD IRQ raised on the
> + * HPD pin while it was suspended will be handled for @encoder and for any
> + * other encoder sharing the same HPD pin.
> + */
> +void intel_hpd_resume(struct intel_encoder *encoder)
> +{
> +	struct intel_display *display = to_intel_display(encoder);
> +	struct drm_i915_private *i915 = to_i915(display->drm);
> +
> +	if (encoder->hpd_pin == HPD_NONE)
> +		return;
> +
> +	spin_lock_irq(&i915->irq_lock);
> +	resume_hpd(encoder);
> +	spin_unlock_irq(&i915->irq_lock);
> +}
> +
>  void intel_hpd_enable_detection_work(struct drm_i915_private *i915)
>  {
>  	spin_lock_irq(&i915->irq_lock);
> diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.h b/drivers/gpu/drm/i915/display/intel_hotplug.h
> index d6986902b0545..5180731def7cc 100644
> --- a/drivers/gpu/drm/i915/display/intel_hotplug.h
> +++ b/drivers/gpu/drm/i915/display/intel_hotplug.h
> @@ -28,6 +28,8 @@ void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
>  enum hpd_pin intel_hpd_pin_default(enum port port);
>  bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
>  void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
> +void intel_hpd_suspend(struct intel_encoder *encoder);
> +void intel_hpd_resume(struct intel_encoder *encoder);
>  void intel_hpd_debugfs_register(struct drm_i915_private *i915);
>  
>  void intel_hpd_enable_detection_work(struct drm_i915_private *i915);

-- 
Jani Nikula, Intel

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

* Re: [PATCH v2 2/5] drm/i915/hpd: Add support for suspending the IRQ handling on an HPD pin
  2025-02-25 16:25     ` Jani Nikula
@ 2025-02-25 17:15       ` Imre Deak
  0 siblings, 0 replies; 20+ messages in thread
From: Imre Deak @ 2025-02-25 17:15 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe

On Tue, Feb 25, 2025 at 06:25:01PM +0200, Jani Nikula wrote:
> On Tue, 25 Feb 2025, Imre Deak <imre.deak@intel.com> wrote:
> > Add support for suspending the IRQ handling on the HPD pin of a given
> > encoder, handling IRQs that arrived while in the suspended state after
> > resuming the IRQ handling. This will be used by a follow-up change,
> > which suspends/resumes the IRQ handling around DP link training.
> >
> > This is similar to the intel_hpd_disable/enable() functionality, by also
> > handling encoders/ports with a pulse handler (i.e. also
> > suspending/resuming the short/long pulse handling) and handling the IRQs
> > arrived in the suspended state after the handling is resumed (vs. just
> > dropping such IRQs).
> >
> > v2:
> > - Handle encoders without a port assigned to them.
> > - Fix clearing IRQs from intel_hotplug::short_port_mask.
> >
> > Signed-off-by: Imre Deak <imre.deak@intel.com>
> 
> I think the terms suspend/resume are too loaded to be used for something
> that isn't about system or runtime suspend/resume. It's guaranteed to
> mislead people.
> 
> Maybe:
> 
> - pause/continue
> - deactivate/activate
> - block/unblock

Right, these functions aren't related to the device suspend/resume
handling, so better to use separate names. Can rename them to
intel_hpd_block/unblock().

> ?
> 
> 
> BR,
> Jani.
> 
> 
> > ---
> >  .../gpu/drm/i915/display/intel_display_core.h |   1 +
> >  drivers/gpu/drm/i915/display/intel_hotplug.c  | 209 +++++++++++++++---
> >  drivers/gpu/drm/i915/display/intel_hotplug.h  |   2 +
> >  3 files changed, 187 insertions(+), 25 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
> > index 554870d2494b3..152ee4dfcbf38 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> > @@ -159,6 +159,7 @@ struct intel_hotplug {
> >  	struct {
> >  		unsigned long last_jiffies;
> >  		int count;
> > +		int suspend_count;
> >  		enum {
> >  			HPD_ENABLED = 0,
> >  			HPD_DISABLED = 1,
> > diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c b/drivers/gpu/drm/i915/display/intel_hotplug.c
> > index ab8e71c4b0f86..85c56b8add8b0 100644
> > --- a/drivers/gpu/drm/i915/display/intel_hotplug.c
> > +++ b/drivers/gpu/drm/i915/display/intel_hotplug.c
> > @@ -349,19 +349,69 @@ static bool intel_encoder_has_hpd_pulse(struct intel_encoder *encoder)
> >  		enc_to_dig_port(encoder)->hpd_pulse != NULL;
> >  }
> >  
> > +static u32 hpd_mask_to_ports(struct intel_display *display, u32 hpd_mask)
> > +{
> > +	struct intel_encoder *encoder;
> > +	u32 ports = 0;
> > +
> > +	for_each_intel_encoder(display->drm, encoder) {
> > +		if (encoder->port == PORT_NONE)
> > +			continue;
> > +
> > +		if (BIT(encoder->hpd_pin) & hpd_mask)
> > +			ports |= BIT(encoder->port);
> > +	}
> > +
> > +	return ports;
> > +}
> > +
> > +static u32 get_suspended_hpds(struct intel_display *display)
> > +{
> > +	struct drm_i915_private *i915 = to_i915(display->drm);
> > +	enum hpd_pin pin;
> > +	u32 hpds = 0;
> > +
> > +	lockdep_assert_held(&i915->irq_lock);
> > +
> > +	for_each_hpd_pin(pin) {
> > +		if (display->hotplug.stats[pin].suspend_count)
> > +			hpds |= BIT(pin);
> > +	}
> > +
> > +	return hpds;
> > +}
> > +
> > +/*
> > + * Get the mask of all the ports using a suspended HPD pin, accounting for
> > + * ports sharing their - suspended - HPD pin with another port.
> > + */
> > +static u32 get_suspended_hpd_ports(struct intel_display *display)
> > +{
> > +	struct drm_i915_private *i915 = to_i915(display->drm);
> > +
> > +	lockdep_assert_held(&i915->irq_lock);
> > +	return hpd_mask_to_ports(display, get_suspended_hpds(display));
> > +}
> > +
> >  static void i915_digport_work_func(struct work_struct *work)
> >  {
> > -	struct drm_i915_private *dev_priv =
> > -		container_of(work, struct drm_i915_private, display.hotplug.dig_port_work);
> > +	struct intel_display *display =
> > +		container_of(work, struct intel_display, hotplug.dig_port_work);
> > +	struct drm_i915_private *dev_priv = to_i915(display->drm);
> > +	struct intel_hotplug *hotplug = &display->hotplug;
> >  	u32 long_port_mask, short_port_mask;
> >  	struct intel_encoder *encoder;
> > +	u32 suspended_ports;
> >  	u32 old_bits = 0;
> >  
> >  	spin_lock_irq(&dev_priv->irq_lock);
> > -	long_port_mask = dev_priv->display.hotplug.long_port_mask;
> > -	dev_priv->display.hotplug.long_port_mask = 0;
> > -	short_port_mask = dev_priv->display.hotplug.short_port_mask;
> > -	dev_priv->display.hotplug.short_port_mask = 0;
> > +
> > +	suspended_ports = get_suspended_hpd_ports(display);
> > +	long_port_mask = hotplug->long_port_mask & ~suspended_ports;
> > +	hotplug->long_port_mask &= ~long_port_mask;
> > +	short_port_mask = hotplug->short_port_mask & ~suspended_ports;
> > +	hotplug->short_port_mask &= ~short_port_mask;
> > +
> >  	spin_unlock_irq(&dev_priv->irq_lock);
> >  
> >  	for_each_intel_encoder(&dev_priv->drm, encoder) {
> > @@ -406,13 +456,17 @@ static void i915_digport_work_func(struct work_struct *work)
> >   */
> >  void intel_hpd_trigger_irq(struct intel_digital_port *dig_port)
> >  {
> > -	struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
> > +	struct intel_display *display = to_intel_display(dig_port);
> > +	struct drm_i915_private *i915 = to_i915(display->drm);
> > +	struct intel_hotplug *hotplug = &display->hotplug;
> >  
> >  	spin_lock_irq(&i915->irq_lock);
> > -	i915->display.hotplug.short_port_mask |= BIT(dig_port->base.port);
> > -	spin_unlock_irq(&i915->irq_lock);
> >  
> > -	queue_work(i915->display.hotplug.dp_wq, &i915->display.hotplug.dig_port_work);
> > +	hotplug->short_port_mask |= BIT(dig_port->base.port);
> > +	if (!(BIT(dig_port->base.port) & get_suspended_hpd_ports(display)))
> > +		queue_work(hotplug->dp_wq, &hotplug->dig_port_work);
> > +
> > +	spin_unlock_irq(&i915->irq_lock);
> >  }
> >  
> >  /*
> > @@ -420,9 +474,10 @@ void intel_hpd_trigger_irq(struct intel_digital_port *dig_port)
> >   */
> >  static void i915_hotplug_work_func(struct work_struct *work)
> >  {
> > -	struct drm_i915_private *dev_priv =
> > -		container_of(work, struct drm_i915_private,
> > -			     display.hotplug.hotplug_work.work);
> > +	struct intel_display *display =
> > +		container_of(work, struct intel_display, hotplug.hotplug_work.work);
> > +	struct drm_i915_private *dev_priv = to_i915(display->drm);
> > +	struct intel_hotplug *hotplug = &display->hotplug;
> >  	struct drm_connector_list_iter conn_iter;
> >  	struct intel_connector *connector;
> >  	u32 changed = 0, retry = 0;
> > @@ -430,16 +485,18 @@ static void i915_hotplug_work_func(struct work_struct *work)
> >  	u32 hpd_retry_bits;
> >  	struct drm_connector *first_changed_connector = NULL;
> >  	int changed_connectors = 0;
> > +	u32 suspended_hpds;
> >  
> >  	mutex_lock(&dev_priv->drm.mode_config.mutex);
> >  	drm_dbg_kms(&dev_priv->drm, "running encoder hotplug functions\n");
> >  
> >  	spin_lock_irq(&dev_priv->irq_lock);
> >  
> > -	hpd_event_bits = dev_priv->display.hotplug.event_bits;
> > -	dev_priv->display.hotplug.event_bits = 0;
> > -	hpd_retry_bits = dev_priv->display.hotplug.retry_bits;
> > -	dev_priv->display.hotplug.retry_bits = 0;
> > +	suspended_hpds = get_suspended_hpds(display);
> > +	hpd_event_bits = hotplug->event_bits & ~suspended_hpds;
> > +	hotplug->event_bits &= ~hpd_event_bits;
> > +	hpd_retry_bits = hotplug->retry_bits & ~suspended_hpds;
> > +	hotplug->retry_bits &= ~hpd_retry_bits;
> >  
> >  	/* Enable polling for connectors which had HPD IRQ storms */
> >  	intel_hpd_irq_storm_switch_to_polling(dev_priv);
> > @@ -538,11 +595,13 @@ static void i915_hotplug_work_func(struct work_struct *work)
> >  void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
> >  			   u32 pin_mask, u32 long_mask)
> >  {
> > +	struct intel_display *display = to_intel_display(&dev_priv->drm);
> >  	struct intel_encoder *encoder;
> >  	bool storm_detected = false;
> >  	bool queue_dig = false, queue_hp = false;
> >  	u32 long_hpd_pulse_mask = 0;
> >  	u32 short_hpd_pulse_mask = 0;
> > +	u32 suspended_hpds;
> >  	enum hpd_pin pin;
> >  
> >  	if (!pin_mask)
> > @@ -550,6 +609,8 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
> >  
> >  	spin_lock(&dev_priv->irq_lock);
> >  
> > +	suspended_hpds = get_suspended_hpds(display);
> > +
> >  	/*
> >  	 * Determine whether ->hpd_pulse() exists for each pin, and
> >  	 * whether we have a short or a long pulse. This is needed
> > @@ -573,7 +634,9 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
> >  			"digital hpd on [ENCODER:%d:%s] - %s\n",
> >  			encoder->base.base.id, encoder->base.name,
> >  			long_hpd ? "long" : "short");
> > -		queue_dig = true;
> > +
> > +		if (!(BIT(pin) & suspended_hpds))
> > +			queue_dig = true;
> >  
> >  		if (long_hpd) {
> >  			long_hpd_pulse_mask |= BIT(pin);
> > @@ -617,7 +680,9 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
> >  		} else {
> >  			dev_priv->display.hotplug.event_bits |= BIT(pin);
> >  			long_hpd = true;
> > -			queue_hp = true;
> > +
> > +			if (!(BIT(pin) & suspended_hpds))
> > +				queue_hp = true;
> >  		}
> >  
> >  		if (intel_hpd_irq_storm_detect(dev_priv, pin, long_hpd)) {
> > @@ -915,11 +980,15 @@ static bool cancel_all_detection_work(struct drm_i915_private *i915)
> >  
> >  void intel_hpd_cancel_work(struct drm_i915_private *dev_priv)
> >  {
> > +	struct intel_display *display = to_intel_display(&dev_priv->drm);
> > +
> >  	if (!HAS_DISPLAY(dev_priv))
> >  		return;
> >  
> >  	spin_lock_irq(&dev_priv->irq_lock);
> >  
> > +	drm_WARN_ON(display->drm, get_suspended_hpds(display));
> > +
> >  	dev_priv->display.hotplug.long_port_mask = 0;
> >  	dev_priv->display.hotplug.short_port_mask = 0;
> >  	dev_priv->display.hotplug.event_bits = 0;
> > @@ -966,19 +1035,22 @@ void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin)
> >  
> >  static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
> >  {
> > -	bool queue_work = false;
> > +	struct intel_display *display = to_intel_display(&i915->drm);
> > +	struct intel_hotplug *hotplug = &display->hotplug;
> > +	bool queue_hp_work = false;
> > +	u32 suspended_hpds;
> >  	enum hpd_pin pin;
> >  
> >  	lockdep_assert_held(&i915->irq_lock);
> >  
> > -	if (i915->display.hotplug.event_bits ||
> > -	    i915->display.hotplug.retry_bits)
> > -		queue_work = true;
> > +	suspended_hpds = get_suspended_hpds(display);
> > +	if ((hotplug->event_bits | hotplug->retry_bits) & ~suspended_hpds)
> > +		queue_hp_work = true;
> >  
> >  	for_each_hpd_pin(pin) {
> >  		switch (i915->display.hotplug.stats[pin].state) {
> >  		case HPD_MARK_DISABLED:
> > -			queue_work = true;
> > +			queue_hp_work = true;
> >  			break;
> >  		case HPD_DISABLED:
> >  		case HPD_ENABLED:
> > @@ -988,10 +1060,97 @@ static void queue_work_for_missed_irqs(struct drm_i915_private *i915)
> >  		}
> >  	}
> >  
> > -	if (queue_work)
> > +	if ((hotplug->long_port_mask | hotplug->short_port_mask) &
> > +	    ~hpd_mask_to_ports(display, suspended_hpds))
> > +		queue_work(hotplug->dp_wq, &hotplug->dig_port_work);
> > +
> > +	if (queue_hp_work)
> >  		queue_delayed_detection_work(i915, &i915->display.hotplug.hotplug_work, 0);
> >  }
> >  
> > +/**
> > + * intel_hpd_suspend - Suspend handling of HPD IRQs on an HPD pin
> > + * @encoder: Encoder to suspend the HPD handling for
> > + *
> > + * Suspends the handling of HPD IRQs on the HPD pin of @encoder.
> > + *
> > + * On return:
> > + * - It's guaranteed that the suspended encoders' HPD pulse handler
> > + *   (via intel_digital_port::hpd_pulse()) is not running.
> > + * - The hotplug event handling (via intel_encoder::hotplug()) of an
> > + *   HPD IRQ pending at the time this function is called may be still
> > + *   running.
> > + * - Detection on the encoder's connector (via
> > + *   drm_connector_helper_funcs::detect_ctx(),
> > + *   drm_connector_funcs::detect()) remains allowed, for instance as part of
> > + *   userspace connector probing, or DRM core's connector polling.
> > + *
> > + * The call must be followed by calling intel_hpd_resume().
> > + *
> > + * Note that the handling of HPD IRQs for another encoder using the same HPD
> > + * pin as that of @encoder will be also suspended.
> > + */
> > +void intel_hpd_suspend(struct intel_encoder *encoder)
> > +{
> > +	struct intel_display *display = to_intel_display(encoder);
> > +	struct drm_i915_private *i915 = to_i915(display->drm);
> > +	struct intel_hotplug *hotplug = &display->hotplug;
> > +	bool do_flush = false;
> > +
> > +	if (encoder->hpd_pin == HPD_NONE)
> > +		return;
> > +
> > +	spin_lock_irq(&i915->irq_lock);
> > +
> > +	hotplug->stats[encoder->hpd_pin].suspend_count++;
> > +
> > +	if (hotplug->stats[encoder->hpd_pin].suspend_count == 1 &&
> > +	    intel_encoder_has_hpd_pulse(encoder))
> > +		do_flush = true;
> > +
> > +	spin_unlock_irq(&i915->irq_lock);
> > +
> > +	if (do_flush)
> > +		flush_work(&hotplug->dig_port_work);
> > +}
> > +
> > +static void resume_hpd(struct intel_encoder *encoder)
> > +{
> > +	struct intel_display *display = to_intel_display(encoder);
> > +	struct drm_i915_private *i915 = to_i915(display->drm);
> > +	struct intel_hotplug *hotplug = &display->hotplug;
> > +
> > +	lockdep_assert_held(&i915->irq_lock);
> > +
> > +	drm_WARN_ON(display->drm, hotplug->stats[encoder->hpd_pin].suspend_count == 0);
> > +	hotplug->stats[encoder->hpd_pin].suspend_count--;
> > +
> > +	if (hotplug->stats[encoder->hpd_pin].suspend_count == 0)
> > +		queue_work_for_missed_irqs(i915);
> > +}
> > +
> > +/**
> > + * intel_hpd_resume - Resume handling of HPD IRQs on an HPD pin
> > + * @encoder: Encoder to resume the HPD handling for
> > + *
> > + * Resume the handling of HPD IRQs on the HPD pin of @encoder, which was
> > + * previously suspended by intel_hpd_suspend(). Any HPD IRQ raised on the
> > + * HPD pin while it was suspended will be handled for @encoder and for any
> > + * other encoder sharing the same HPD pin.
> > + */
> > +void intel_hpd_resume(struct intel_encoder *encoder)
> > +{
> > +	struct intel_display *display = to_intel_display(encoder);
> > +	struct drm_i915_private *i915 = to_i915(display->drm);
> > +
> > +	if (encoder->hpd_pin == HPD_NONE)
> > +		return;
> > +
> > +	spin_lock_irq(&i915->irq_lock);
> > +	resume_hpd(encoder);
> > +	spin_unlock_irq(&i915->irq_lock);
> > +}
> > +
> >  void intel_hpd_enable_detection_work(struct drm_i915_private *i915)
> >  {
> >  	spin_lock_irq(&i915->irq_lock);
> > diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.h b/drivers/gpu/drm/i915/display/intel_hotplug.h
> > index d6986902b0545..5180731def7cc 100644
> > --- a/drivers/gpu/drm/i915/display/intel_hotplug.h
> > +++ b/drivers/gpu/drm/i915/display/intel_hotplug.h
> > @@ -28,6 +28,8 @@ void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
> >  enum hpd_pin intel_hpd_pin_default(enum port port);
> >  bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
> >  void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
> > +void intel_hpd_suspend(struct intel_encoder *encoder);
> > +void intel_hpd_resume(struct intel_encoder *encoder);
> >  void intel_hpd_debugfs_register(struct drm_i915_private *i915);
> >  
> >  void intel_hpd_enable_detection_work(struct drm_i915_private *i915);
> 
> -- 
> Jani Nikula, Intel

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

* ✓ i915.CI.BAT: success for drm/dp: Fix link training interrupted by HPD pulse (rev3)
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
                   ` (8 preceding siblings ...)
  2025-02-25 13:41 ` ✗ i915.CI.BAT: failure " Patchwork
@ 2025-02-26  3:51 ` Patchwork
  2025-02-26  5:33 ` ✗ i915.CI.Full: failure " Patchwork
  2025-02-26 12:55 ` [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Jani Nikula
  11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2025-02-26  3:51 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

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

== Series Details ==

Series: drm/dp: Fix link training interrupted by HPD pulse (rev3)
URL   : https://patchwork.freedesktop.org/series/145352/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_16178 -> Patchwork_145352v3
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (44 -> 43)
------------------------------

  Missing    (1): fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_module_load@load:
    - bat-mtlp-9:         [PASS][1] -> [DMESG-WARN][2] ([i915#13494])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-mtlp-9/igt@i915_module_load@load.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-mtlp-9/igt@i915_module_load@load.html

  * igt@i915_selftest@live:
    - bat-twl-2:          [PASS][3] -> [ABORT][4] ([i915#12435] / [i915#12919] / [i915#13503])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-twl-2/igt@i915_selftest@live.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-twl-2/igt@i915_selftest@live.html

  * igt@i915_selftest@live@memory_region:
    - bat-twl-2:          [PASS][5] -> [ABORT][6] ([i915#12919])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-twl-2/igt@i915_selftest@live@memory_region.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-twl-2/igt@i915_selftest@live@memory_region.html

  * igt@i915_selftest@live@requests:
    - bat-atsm-1:         [PASS][7] -> [INCOMPLETE][8] ([i915#12445])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-atsm-1/igt@i915_selftest@live@requests.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-atsm-1/igt@i915_selftest@live@requests.html

  * igt@i915_selftest@live@workarounds:
    - bat-arls-5:         [PASS][9] -> [DMESG-FAIL][10] ([i915#12061]) +1 other test dmesg-fail
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-arls-5/igt@i915_selftest@live@workarounds.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-arls-5/igt@i915_selftest@live@workarounds.html

  * igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2:
    - fi-cfl-8109u:       [PASS][11] -> [DMESG-WARN][12] ([i915#13768]) +2 other tests dmesg-warn
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/fi-cfl-8109u/igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/fi-cfl-8109u/igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-dg2-11:         [PASS][13] -> [SKIP][14] ([i915#9197]) +3 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@workarounds:
    - bat-arlh-3:         [DMESG-FAIL][15] ([i915#12061]) -> [PASS][16] +1 other test pass
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-arlh-3/igt@i915_selftest@live@workarounds.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-arlh-3/igt@i915_selftest@live@workarounds.html

  
#### Warnings ####

  * igt@i915_selftest@live:
    - bat-atsm-1:         [ABORT][17] ([i915#13679]) -> [INCOMPLETE][18] ([i915#12445])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-atsm-1/igt@i915_selftest@live.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-atsm-1/igt@i915_selftest@live.html

  
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12435
  [i915#12445]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12445
  [i915#12919]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12919
  [i915#13494]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13494
  [i915#13503]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13503
  [i915#13679]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13679
  [i915#13768]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13768
  [i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197


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

  * Linux: CI_DRM_16178 -> Patchwork_145352v3

  CI-20190529: 20190529
  CI_DRM_16178: d5debc4841e604372c74ebda0bbf54bd527c3475 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8247: 8247
  Patchwork_145352v3: d5debc4841e604372c74ebda0bbf54bd527c3475 @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

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

* RE: ✗ i915.CI.BAT: failure for drm/dp: Fix link training interrupted by HPD pulse (rev3)
  2025-02-25 14:25   ` Imre Deak
@ 2025-02-26  4:09     ` Ravali, JupallyX
  0 siblings, 0 replies; 20+ messages in thread
From: Ravali, JupallyX @ 2025-02-26  4:09 UTC (permalink / raw)
  To: i915-ci-infra@lists.freedesktop.org, Deak, Imre
  Cc: intel-gfx@lists.freedesktop.org

Hi,

https://patchwork.freedesktop.org/series/145352/ - Re-reported.
i915.CI.BAT - Re-reported.

Thanks,
Ravali.

-----Original Message-----
From: I915-ci-infra <i915-ci-infra-bounces@lists.freedesktop.org> On Behalf Of Imre Deak
Sent: 25 February 2025 19:55
To: I915-ci-infra@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: ✗ i915.CI.BAT: failure for drm/dp: Fix link training interrupted by HPD pulse (rev3)

Hi CI team,

On Tue, Feb 25, 2025 at 01:41:55PM +0000, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/dp: Fix link training interrupted by HPD pulse (rev3)
> URL   : https://patchwork.freedesktop.org/series/145352/
> State : failure

the issue reported below is unrelated, see my comment there, could you re-report this result?

> == Summary ==
> 
> CI Bug Log - changes from CI_DRM_16178 -> Patchwork_145352v3 
> ====================================================
> 
> Summary
> -------
> 
>   **FAILURE**
> 
>   Serious unknown changes coming with Patchwork_145352v3 absolutely need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in Patchwork_145352v3, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
>   to document this new failure mode, which will reduce false positives in CI.
> 
>   External URL: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/index.html
> 
> Participating hosts (44 -> 43)
> ------------------------------
> 
>   Missing    (1): fi-snb-2520m 
> 
> Possible new issues
> -------------------
> 
>   Here are the unknown changes that may have been introduced in Patchwork_145352v3:
> 
> ### IGT changes ###
> 
> #### Possible regressions ####
> 
>   * igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2:
>     - fi-cfl-8109u:       [PASS][1] -> [DMESG-WARN][2] +2 other tests dmesg-warn
>    [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/fi-cfl-8109u/igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2.html
>    [2]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/fi-cfl-810
> 9u/igt@kms_flip@basic-flip-vs-wf_vblank@b-dp2.html

There is no HPD IRQ raised or handled on the above host, so the changes are not related to it.

The issue is:
<3> [158.833677] i915 0000:00:02.0: [drm] *ERROR* CPU pipe A FIFO underrun

It seems to happen frequently, on the same host, leading to incorrect BAT failures.

There is
https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12935

but on a different host (MTL).

> Known issues
> ------------
> 
>   Here are the changes found in Patchwork_145352v3 that come from known issues:
> 
> ### IGT changes ###
> 
> #### Issues hit ####
> 
>   * igt@i915_module_load@load:
>     - bat-mtlp-9:         [PASS][3] -> [DMESG-WARN][4] ([i915#13494])
>    [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-mtlp-9/igt@i915_module_load@load.html
>    [4]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-mtlp-9
> /igt@i915_module_load@load.html
> 
>   * igt@i915_selftest@live:
>     - bat-twl-2:          [PASS][5] -> [ABORT][6] ([i915#12435] / [i915#12919] / [i915#13503])
>    [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-twl-2/igt@i915_selftest@live.html
>    [6]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-twl-2/
> igt@i915_selftest@live.html
> 
>   * igt@i915_selftest@live@memory_region:
>     - bat-twl-2:          [PASS][7] -> [ABORT][8] ([i915#12919])
>    [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-twl-2/igt@i915_selftest@live@memory_region.html
>    [8]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-twl-2/
> igt@i915_selftest@live@memory_region.html
> 
>   * igt@i915_selftest@live@requests:
>     - bat-atsm-1:         [PASS][9] -> [INCOMPLETE][10] ([i915#12445])
>    [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-atsm-1/igt@i915_selftest@live@requests.html
>    [10]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-atsm-1
> /igt@i915_selftest@live@requests.html
> 
>   * igt@i915_selftest@live@workarounds:
>     - bat-arls-5:         [PASS][11] -> [DMESG-FAIL][12] ([i915#12061]) +1 other test dmesg-fail
>    [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-arls-5/igt@i915_selftest@live@workarounds.html
>    [12]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-arls-5
> /igt@i915_selftest@live@workarounds.html
> 
>   * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
>     - bat-dg2-11:         [PASS][13] -> [SKIP][14] ([i915#9197]) +3 other tests skip
>    [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
>    [14]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-dg2-11
> /igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
> 
>   
> #### Possible fixes ####
> 
>   * igt@i915_selftest@live@workarounds:
>     - bat-arlh-3:         [DMESG-FAIL][15] ([i915#12061]) -> [PASS][16] +1 other test pass
>    [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-arlh-3/igt@i915_selftest@live@workarounds.html
>    [16]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-arlh-3
> /igt@i915_selftest@live@workarounds.html
> 
>   
> #### Warnings ####
> 
>   * igt@i915_selftest@live:
>     - bat-atsm-1:         [ABORT][17] ([i915#13679]) -> [INCOMPLETE][18] ([i915#12445])
>    [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/bat-atsm-1/igt@i915_selftest@live.html
>    [18]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/bat-atsm-1
> /igt@i915_selftest@live.html
> 
>   
>   [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
>   [i915#12435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12435
>   [i915#12445]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12445
>   [i915#12919]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12919
>   [i915#13494]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13494
>   [i915#13503]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13503
>   [i915#13679]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13679
>   [i915#9197]: 
> https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197
> 
> 
> Build changes
> -------------
> 
>   * Linux: CI_DRM_16178 -> Patchwork_145352v3
> 
>   CI-20190529: 20190529
>   CI_DRM_16178: d5debc4841e604372c74ebda0bbf54bd527c3475 @ git://anongit.freedesktop.org/gfx-ci/linux
>   IGT_8247: 8247
>   Patchwork_145352v3: d5debc4841e604372c74ebda0bbf54bd527c3475 @ 
> git://anongit.freedesktop.org/gfx-ci/linux
> 
> == Logs ==
> 
> For more details see: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/index.html

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

* ✗ i915.CI.Full: failure for drm/dp: Fix link training interrupted by HPD pulse (rev3)
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
                   ` (9 preceding siblings ...)
  2025-02-26  3:51 ` ✓ i915.CI.BAT: success " Patchwork
@ 2025-02-26  5:33 ` Patchwork
  2025-02-26 12:55 ` [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Jani Nikula
  11 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2025-02-26  5:33 UTC (permalink / raw)
  To: Imre Deak; +Cc: intel-gfx

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

== Series Details ==

Series: drm/dp: Fix link training interrupted by HPD pulse (rev3)
URL   : https://patchwork.freedesktop.org/series/145352/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_16178_full -> Patchwork_145352v3_full
====================================================

Summary
-------

  **FAILURE**

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

  

Participating hosts (10 -> 10)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_cursor_legacy@forked-move:
    - shard-snb:          NOTRUN -> [INCOMPLETE][1] +1 other test incomplete
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb5/igt@kms_cursor_legacy@forked-move.html

  * igt@kms_flip@2x-plain-flip-fb-recreate:
    - shard-snb:          [PASS][2] -> [FAIL][3] +1 other test fail
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-snb6/igt@kms_flip@2x-plain-flip-fb-recreate.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb5/igt@kms_flip@2x-plain-flip-fb-recreate.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@a-edp1:
    - shard-mtlp:         [PASS][4] -> [FAIL][5]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-mtlp-1/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@a-edp1.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-mtlp-1/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@a-edp1.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank@d-hdmi-a1:
    - shard-tglu:         [PASS][6] -> [FAIL][7]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-tglu-8/igt@kms_flip@flip-vs-absolute-wf_vblank@d-hdmi-a1.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-3/igt@kms_flip@flip-vs-absolute-wf_vblank@d-hdmi-a1.html

  * igt@kms_flip@plain-flip-fb-recreate@a-dp4:
    - shard-dg2:          NOTRUN -> [FAIL][8]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_flip@plain-flip-fb-recreate@a-dp4.html

  
New tests
---------

  New tests have been introduced between CI_DRM_16178_full and Patchwork_145352v3_full:

### New IGT tests (5) ###

  * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [4.05] s

  * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs-cc@pipe-b-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.01] s

  * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs-cc@pipe-c-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.01] s

  * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs-cc@pipe-d-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.01] s

  * igt@kms_hdr@invalid-metadata-sizes@pipe-a-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.00] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_allocator@two-level-inception:
    - shard-rkl:          NOTRUN -> [DMESG-WARN][9] ([i915#12964]) +15 other tests dmesg-warn
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@api_intel_allocator@two-level-inception.html

  * igt@api_intel_bb@object-reloc-purge-cache:
    - shard-dg2:          NOTRUN -> [SKIP][10] ([i915#8411])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@api_intel_bb@object-reloc-purge-cache.html

  * igt@device_reset@unbind-reset-rebind:
    - shard-tglu:         [PASS][11] -> [ABORT][12] ([i915#12817] / [i915#5507])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-tglu-6/igt@device_reset@unbind-reset-rebind.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-4/igt@device_reset@unbind-reset-rebind.html

  * igt@drm_fdinfo@all-busy-idle-check-all:
    - shard-dg2-9:        NOTRUN -> [SKIP][13] ([i915#8414])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@drm_fdinfo@all-busy-idle-check-all.html

  * igt@drm_fdinfo@busy-check-all@vecs1:
    - shard-dg2:          NOTRUN -> [SKIP][14] ([i915#8414]) +7 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@drm_fdinfo@busy-check-all@vecs1.html

  * igt@drm_fdinfo@busy-idle-check-all:
    - shard-rkl:          [PASS][15] -> [DMESG-WARN][16] ([i915#12964]) +10 other tests dmesg-warn
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-8/igt@drm_fdinfo@busy-idle-check-all.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-4/igt@drm_fdinfo@busy-idle-check-all.html

  * igt@gem_bad_reloc@negative-reloc-lut:
    - shard-rkl:          NOTRUN -> [SKIP][17] ([i915#3281]) +10 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@gem_bad_reloc@negative-reloc-lut.html

  * igt@gem_basic@multigpu-create-close:
    - shard-rkl:          NOTRUN -> [SKIP][18] ([i915#7697]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-5/igt@gem_basic@multigpu-create-close.html

  * igt@gem_busy@semaphore:
    - shard-dg2-9:        NOTRUN -> [SKIP][19] ([i915#3936])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_busy@semaphore.html

  * igt@gem_ccs@block-multicopy-compressed:
    - shard-rkl:          NOTRUN -> [SKIP][20] ([i915#9323])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@gem_ccs@block-multicopy-compressed.html

  * igt@gem_ccs@suspend-resume:
    - shard-dg2-9:        NOTRUN -> [INCOMPLETE][21] ([i915#13356]) +1 other test incomplete
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_ccs@suspend-resume.html

  * igt@gem_create@create-ext-cpu-access-sanity-check:
    - shard-tglu:         NOTRUN -> [SKIP][22] ([i915#6335])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@gem_create@create-ext-cpu-access-sanity-check.html

  * igt@gem_ctx_sseu@invalid-sseu:
    - shard-dg2-9:        NOTRUN -> [SKIP][23] ([i915#280])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_ctx_sseu@invalid-sseu.html

  * igt@gem_eio@hibernate:
    - shard-tglu:         NOTRUN -> [ABORT][24] ([i915#7975])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@gem_eio@hibernate.html

  * igt@gem_eio@in-flight-contexts-immediate:
    - shard-mtlp:         [PASS][25] -> [ABORT][26] ([i915#13193])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-mtlp-5/igt@gem_eio@in-flight-contexts-immediate.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-mtlp-7/igt@gem_eio@in-flight-contexts-immediate.html

  * igt@gem_exec_balancer@bonded-pair:
    - shard-dg2:          NOTRUN -> [SKIP][27] ([i915#4771])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@gem_exec_balancer@bonded-pair.html

  * igt@gem_exec_balancer@parallel:
    - shard-tglu:         NOTRUN -> [SKIP][28] ([i915#4525])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@gem_exec_balancer@parallel.html

  * igt@gem_exec_balancer@parallel-contexts:
    - shard-rkl:          NOTRUN -> [SKIP][29] ([i915#4525])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@gem_exec_balancer@parallel-contexts.html

  * igt@gem_exec_endless@dispatch:
    - shard-dg2:          [PASS][30] -> [TIMEOUT][31] ([i915#3778] / [i915#7016])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-4/igt@gem_exec_endless@dispatch.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-4/igt@gem_exec_endless@dispatch.html

  * igt@gem_exec_endless@dispatch@vecs1:
    - shard-dg2:          [PASS][32] -> [TIMEOUT][33] ([i915#7016])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-4/igt@gem_exec_endless@dispatch@vecs1.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-4/igt@gem_exec_endless@dispatch@vecs1.html

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

  * igt@gem_exec_flush@basic-uc-pro-default:
    - shard-dg2:          NOTRUN -> [SKIP][35] ([i915#3539] / [i915#4852])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@gem_exec_flush@basic-uc-pro-default.html

  * igt@gem_exec_flush@basic-uc-prw-default:
    - shard-dg2:          NOTRUN -> [SKIP][36] ([i915#3539])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@gem_exec_flush@basic-uc-prw-default.html

  * igt@gem_exec_flush@basic-wb-ro-default:
    - shard-dg2-9:        NOTRUN -> [SKIP][37] ([i915#3539] / [i915#4852])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_exec_flush@basic-wb-ro-default.html

  * igt@gem_exec_reloc@basic-gtt-read-active:
    - shard-dg2:          NOTRUN -> [SKIP][38] ([i915#3281]) +2 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@gem_exec_reloc@basic-gtt-read-active.html

  * igt@gem_exec_reloc@basic-write-read-noreloc:
    - shard-dg2-9:        NOTRUN -> [SKIP][39] ([i915#3281]) +2 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_exec_reloc@basic-write-read-noreloc.html

  * igt@gem_exec_suspend@basic-s0:
    - shard-dg2:          NOTRUN -> [INCOMPLETE][40] ([i915#11441] / [i915#13304])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@gem_exec_suspend@basic-s0.html

  * igt@gem_exec_suspend@basic-s0@lmem0:
    - shard-dg2:          NOTRUN -> [INCOMPLETE][41] ([i915#11441])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@gem_exec_suspend@basic-s0@lmem0.html

  * igt@gem_exec_suspend@basic-s4-devices:
    - shard-dg2-9:        NOTRUN -> [ABORT][42] ([i915#7975]) +1 other test abort
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_exec_suspend@basic-s4-devices.html

  * igt@gem_fence_thrash@bo-write-verify-x:
    - shard-dg2-9:        NOTRUN -> [SKIP][43] ([i915#4860]) +1 other test skip
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_fence_thrash@bo-write-verify-x.html

  * igt@gem_fenced_exec_thrash@no-spare-fences:
    - shard-dg2:          NOTRUN -> [SKIP][44] ([i915#4860]) +1 other test skip
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@gem_fenced_exec_thrash@no-spare-fences.html

  * igt@gem_lmem_swapping@heavy-random:
    - shard-glk:          NOTRUN -> [SKIP][45] ([i915#4613]) +5 other tests skip
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk8/igt@gem_lmem_swapping@heavy-random.html

  * igt@gem_lmem_swapping@heavy-verify-random-ccs:
    - shard-tglu:         NOTRUN -> [SKIP][46] ([i915#4613])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@gem_lmem_swapping@heavy-verify-random-ccs.html

  * igt@gem_lmem_swapping@parallel-multi:
    - shard-rkl:          NOTRUN -> [SKIP][47] ([i915#4613]) +3 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@gem_lmem_swapping@parallel-multi.html

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

  * igt@gem_mmap@pf-nonblock:
    - shard-dg2:          NOTRUN -> [SKIP][49] ([i915#4083]) +2 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@gem_mmap@pf-nonblock.html

  * igt@gem_mmap_gtt@big-copy-odd:
    - shard-dg2-9:        NOTRUN -> [SKIP][50] ([i915#4077]) +6 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_mmap_gtt@big-copy-odd.html

  * igt@gem_mmap_gtt@isolation:
    - shard-dg2:          NOTRUN -> [SKIP][51] ([i915#4077]) +4 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@gem_mmap_gtt@isolation.html

  * igt@gem_mmap_wc@write-wc-read-gtt:
    - shard-dg2-9:        NOTRUN -> [SKIP][52] ([i915#4083])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_mmap_wc@write-wc-read-gtt.html

  * igt@gem_partial_pwrite_pread@writes-after-reads:
    - shard-rkl:          NOTRUN -> [SKIP][53] ([i915#3282]) +4 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-5/igt@gem_partial_pwrite_pread@writes-after-reads.html

  * igt@gem_pwrite@basic-self:
    - shard-dg2:          NOTRUN -> [SKIP][54] ([i915#3282]) +1 other test skip
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@gem_pwrite@basic-self.html

  * igt@gem_pxp@display-protected-crc:
    - shard-rkl:          [PASS][55] -> [TIMEOUT][56] ([i915#12917] / [i915#12964]) +2 other tests timeout
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-8/igt@gem_pxp@display-protected-crc.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-4/igt@gem_pxp@display-protected-crc.html

  * igt@gem_pxp@protected-encrypted-src-copy-not-readible:
    - shard-rkl:          NOTRUN -> [TIMEOUT][57] ([i915#12917] / [i915#12964]) +3 other tests timeout
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html

  * igt@gem_pxp@regular-baseline-src-copy-readible:
    - shard-rkl:          [PASS][58] -> [TIMEOUT][59] ([i915#12964])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-8/igt@gem_pxp@regular-baseline-src-copy-readible.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-4/igt@gem_pxp@regular-baseline-src-copy-readible.html

  * igt@gem_pxp@verify-pxp-stale-buf-execution:
    - shard-dg2:          NOTRUN -> [SKIP][60] ([i915#4270])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-2/igt@gem_pxp@verify-pxp-stale-buf-execution.html

  * igt@gem_render_copy@y-tiled-to-vebox-yf-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][61] ([i915#5190] / [i915#8428]) +4 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@gem_render_copy@y-tiled-to-vebox-yf-tiled.html

  * igt@gem_render_copy@yf-tiled-to-vebox-yf-tiled:
    - shard-dg2-9:        NOTRUN -> [SKIP][62] ([i915#5190] / [i915#8428]) +1 other test skip
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_render_copy@yf-tiled-to-vebox-yf-tiled.html

  * igt@gem_userptr_blits@coherency-unsync:
    - shard-tglu:         NOTRUN -> [SKIP][63] ([i915#3297])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@gem_userptr_blits@coherency-unsync.html

  * igt@gem_userptr_blits@create-destroy-unsync:
    - shard-rkl:          NOTRUN -> [SKIP][64] ([i915#3297])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@gem_userptr_blits@create-destroy-unsync.html

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-glk:          NOTRUN -> [SKIP][65] ([i915#3323])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk5/igt@gem_userptr_blits@dmabuf-sync.html
    - shard-dg2-9:        NOTRUN -> [SKIP][66] ([i915#3297])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy:
    - shard-dg2:          NOTRUN -> [SKIP][67] ([i915#3297] / [i915#4880]) +1 other test skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@gem_userptr_blits@map-fixed-invalidate-overlap-busy.html

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

  * igt@gem_userptr_blits@sd-probe:
    - shard-dg2-9:        NOTRUN -> [SKIP][69] ([i915#3297] / [i915#4958])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gem_userptr_blits@sd-probe.html

  * igt@gen7_exec_parse@cmd-crossing-page:
    - shard-dg2-9:        NOTRUN -> [SKIP][70]
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@gen7_exec_parse@cmd-crossing-page.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-rkl:          NOTRUN -> [SKIP][71] ([i915#2527]) +3 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@basic-rejected:
    - shard-dg2:          NOTRUN -> [SKIP][72] ([i915#2856])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@gen9_exec_parse@basic-rejected.html

  * igt@gen9_exec_parse@batch-zero-length:
    - shard-tglu:         NOTRUN -> [SKIP][73] ([i915#2527] / [i915#2856]) +1 other test skip
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@gen9_exec_parse@batch-zero-length.html

  * igt@i915_module_load@load:
    - shard-glk:          ([PASS][74], [PASS][75], [PASS][76], [PASS][77], [PASS][78], [PASS][79], [PASS][80], [PASS][81], [PASS][82], [PASS][83], [PASS][84], [PASS][85], [PASS][86], [PASS][87]) -> ([PASS][88], [PASS][89], [PASS][90], [PASS][91], [PASS][92], [PASS][93], [PASS][94], [DMESG-WARN][95], [PASS][96], [PASS][97], [PASS][98], [PASS][99], [PASS][100], [PASS][101], [PASS][102], [PASS][103], [PASS][104], [PASS][105], [PASS][106], [PASS][107], [PASS][108], [PASS][109], [PASS][110], [PASS][111], [PASS][112]) ([i915#118])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk1/igt@i915_module_load@load.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk4/igt@i915_module_load@load.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk2/igt@i915_module_load@load.html
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk3/igt@i915_module_load@load.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk1/igt@i915_module_load@load.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk2/igt@i915_module_load@load.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk6/igt@i915_module_load@load.html
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk9/igt@i915_module_load@load.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk4/igt@i915_module_load@load.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk8/igt@i915_module_load@load.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk4/igt@i915_module_load@load.html
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk3/igt@i915_module_load@load.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk6/igt@i915_module_load@load.html
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk9/igt@i915_module_load@load.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk4/igt@i915_module_load@load.html
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk4/igt@i915_module_load@load.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk4/igt@i915_module_load@load.html
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk1/igt@i915_module_load@load.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk5/igt@i915_module_load@load.html
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk5/igt@i915_module_load@load.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk3/igt@i915_module_load@load.html
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk5/igt@i915_module_load@load.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk5/igt@i915_module_load@load.html
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk6/igt@i915_module_load@load.html
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk3/igt@i915_module_load@load.html
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk6/igt@i915_module_load@load.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk3/igt@i915_module_load@load.html
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk6/igt@i915_module_load@load.html
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk1/igt@i915_module_load@load.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk7/igt@i915_module_load@load.html
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk2/igt@i915_module_load@load.html
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk7/igt@i915_module_load@load.html
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk1/igt@i915_module_load@load.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk9/igt@i915_module_load@load.html
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk8/igt@i915_module_load@load.html
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk2/igt@i915_module_load@load.html
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk8/igt@i915_module_load@load.html
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk9/igt@i915_module_load@load.html
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk9/igt@i915_module_load@load.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-snb:          [PASS][113] -> [ABORT][114] ([i915#9820])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-snb4/igt@i915_module_load@reload-with-fault-injection.html
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb1/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_freq_api@freq-basic-api:
    - shard-tglu:         NOTRUN -> [SKIP][115] ([i915#8399])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@i915_pm_freq_api@freq-basic-api.html

  * igt@i915_pm_rc6_residency@rc6-idle:
    - shard-dg1:          [PASS][116] -> [FAIL][117] ([i915#3591]) +1 other test fail
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-16/igt@i915_pm_rc6_residency@rc6-idle.html
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-12/igt@i915_pm_rc6_residency@rc6-idle.html

  * igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0:
    - shard-tglu-1:       NOTRUN -> [WARN][118] ([i915#2681]) +4 other tests warn
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0.html

  * igt@i915_pm_rps@basic-api:
    - shard-dg2:          NOTRUN -> [SKIP][119] ([i915#11681] / [i915#6621])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@i915_pm_rps@basic-api.html

  * igt@i915_pm_rps@thresholds:
    - shard-dg2-9:        NOTRUN -> [SKIP][120] ([i915#11681])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@i915_pm_rps@thresholds.html

  * igt@i915_pm_rps@thresholds-park:
    - shard-dg2:          NOTRUN -> [SKIP][121] ([i915#11681])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@i915_pm_rps@thresholds-park.html

  * igt@i915_query@hwconfig_table:
    - shard-rkl:          NOTRUN -> [SKIP][122] ([i915#6245])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@i915_query@hwconfig_table.html

  * igt@i915_selftest@mock:
    - shard-tglu:         NOTRUN -> [DMESG-WARN][123] ([i915#9311]) +1 other test dmesg-warn
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@i915_selftest@mock.html
    - shard-glk:          NOTRUN -> [DMESG-WARN][124] ([i915#9311]) +1 other test dmesg-warn
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk6/igt@i915_selftest@mock.html

  * igt@intel_hwmon@hwmon-read:
    - shard-tglu:         NOTRUN -> [SKIP][125] ([i915#7707])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@intel_hwmon@hwmon-read.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][126] ([i915#5190]) +2 other tests skip
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@clobberred-modifier:
    - shard-dg2-9:        NOTRUN -> [SKIP][127] ([i915#4212])
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_addfb_basic@clobberred-modifier.html

  * igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-b-hdmi-a-2-y-rc-ccs-cc:
    - shard-rkl:          NOTRUN -> [SKIP][128] ([i915#8709]) +1 other test skip
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-3/igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-b-hdmi-a-2-y-rc-ccs-cc.html

  * igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-c-hdmi-a-1-y-rc-ccs-cc:
    - shard-tglu:         NOTRUN -> [SKIP][129] ([i915#8709]) +3 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-c-hdmi-a-1-y-rc-ccs-cc.html

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

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-d-hdmi-a-3-4-mc-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][131] ([i915#8709]) +15 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-5/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-d-hdmi-a-3-4-mc-ccs.html

  * igt@kms_atomic@plane-primary-overlay-mutable-zpos:
    - shard-rkl:          NOTRUN -> [SKIP][132] ([i915#9531])
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html

  * igt@kms_atomic_interruptible@legacy-dpms:
    - shard-dg1:          [PASS][133] -> [DMESG-WARN][134] ([i915#4423]) +1 other test dmesg-warn
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-16/igt@kms_atomic_interruptible@legacy-dpms.html
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-12/igt@kms_atomic_interruptible@legacy-dpms.html

  * igt@kms_atomic_transition@modeset-transition-nonblocking-fencing:
    - shard-glk:          NOTRUN -> [FAIL][135] ([i915#12238])
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk8/igt@kms_atomic_transition@modeset-transition-nonblocking-fencing.html

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

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
    - shard-dg2-9:        NOTRUN -> [SKIP][137] ([i915#1769] / [i915#3555])
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

  * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-3:
    - shard-dg2:          [PASS][138] -> [FAIL][139] ([i915#5956]) +1 other test fail
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-7/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-3.html
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-6/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-3.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-90:
    - shard-tglu:         NOTRUN -> [SKIP][140] ([i915#5286]) +1 other test skip
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-addfb:
    - shard-rkl:          NOTRUN -> [SKIP][141] ([i915#5286]) +4 other tests skip
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_big_fb@4-tiled-addfb.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-tglu-1:       NOTRUN -> [SKIP][142] ([i915#5286])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

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

  * igt@kms_big_fb@y-tiled-32bpp-rotate-270:
    - shard-dg2-9:        NOTRUN -> [SKIP][144] ([i915#4538] / [i915#5190]) +1 other test skip
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_big_fb@y-tiled-32bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-180:
    - shard-dg2:          NOTRUN -> [SKIP][145] ([i915#4538] / [i915#5190]) +5 other tests skip
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [SKIP][146] ([i915#6095]) +9 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-2:
    - shard-dg2-9:        NOTRUN -> [SKIP][147] ([i915#10307] / [i915#6095]) +29 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][148] ([i915#12313]) +2 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][149] ([i915#6095]) +159 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-14/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-4.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs:
    - shard-tglu:         NOTRUN -> [SKIP][150] ([i915#6095]) +49 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][151] ([i915#10307] / [i915#6095]) +116 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-5/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-3.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
    - shard-tglu-1:       NOTRUN -> [SKIP][152] ([i915#12805])
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][153] ([i915#6095]) +25 other tests skip
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-6/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-3.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [DMESG-FAIL][154] ([i915#12964]) +1 other test dmesg-fail
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs:
    - shard-glk:          NOTRUN -> [INCOMPLETE][155] ([i915#12796]) +1 other test incomplete
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk8/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs.html

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

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
    - shard-tglu:         NOTRUN -> [SKIP][157] ([i915#12313])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html

  * igt@kms_cdclk@mode-transition:
    - shard-rkl:          NOTRUN -> [SKIP][158] ([i915#3742])
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-5/igt@kms_cdclk@mode-transition.html

  * igt@kms_chamelium_frames@dp-crc-multiple:
    - shard-dg2:          NOTRUN -> [SKIP][159] ([i915#11151] / [i915#7828]) +4 other tests skip
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_chamelium_frames@dp-crc-multiple.html

  * igt@kms_chamelium_frames@hdmi-crc-single:
    - shard-tglu-1:       NOTRUN -> [SKIP][160] ([i915#11151] / [i915#7828])
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_chamelium_frames@hdmi-crc-single.html

  * igt@kms_chamelium_hpd@dp-hpd-after-suspend:
    - shard-tglu:         NOTRUN -> [SKIP][161] ([i915#11151] / [i915#7828]) +6 other tests skip
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html

  * igt@kms_chamelium_hpd@hdmi-hpd-after-suspend:
    - shard-dg2-9:        NOTRUN -> [SKIP][162] ([i915#11151] / [i915#7828]) +2 other tests skip
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_chamelium_hpd@hdmi-hpd-after-suspend.html

  * igt@kms_chamelium_hpd@vga-hpd-fast:
    - shard-rkl:          NOTRUN -> [SKIP][163] ([i915#11151] / [i915#7828]) +7 other tests skip
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_chamelium_hpd@vga-hpd-fast.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-tglu:         NOTRUN -> [SKIP][164] ([i915#3116] / [i915#3299]) +1 other test skip
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@srm:
    - shard-rkl:          NOTRUN -> [SKIP][165] ([i915#7118])
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_content_protection@srm.html

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

  * igt@kms_content_protection@uevent@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [FAIL][167] ([i915#1339] / [i915#7173]) +1 other test fail
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_content_protection@uevent@pipe-a-dp-4.html

  * igt@kms_cursor_crc@cursor-offscreen-512x170:
    - shard-dg2:          NOTRUN -> [SKIP][168] ([i915#13049])
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@kms_cursor_crc@cursor-offscreen-512x170.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-rkl:          NOTRUN -> [SKIP][169] ([i915#13049]) +1 other test skip
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [ABORT][170] ([i915#12817]) +1 other test abort
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-suspend@pipe-d-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [DMESG-WARN][171] ([i915#4423]) +1 other test dmesg-warn
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-12/igt@kms_cursor_crc@cursor-suspend@pipe-d-hdmi-a-3.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
    - shard-rkl:          NOTRUN -> [SKIP][172] +19 other tests skip
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-toggle:
    - shard-dg2:          NOTRUN -> [SKIP][173] ([i915#13046] / [i915#5354]) +5 other tests skip
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic:
    - shard-dg2-9:        NOTRUN -> [SKIP][174] ([i915#13046] / [i915#5354])
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic.html

  * igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
    - shard-rkl:          NOTRUN -> [SKIP][175] ([i915#9067])
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-5/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
    - shard-dg2:          NOTRUN -> [SKIP][176] ([i915#4103] / [i915#4213]) +1 other test skip
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-rkl:          NOTRUN -> [SKIP][177] ([i915#4103])
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dirtyfb@psr-dirtyfb-ioctl:
    - shard-rkl:          NOTRUN -> [SKIP][178] ([i915#9723])
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-dg2-9:        NOTRUN -> [SKIP][179] ([i915#13691])
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_display_modes@mst-extended-mode-negative:
    - shard-dg2-9:        NOTRUN -> [SKIP][180] ([i915#8588])
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_display_modes@mst-extended-mode-negative.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc:
    - shard-dg2:          [PASS][181] -> [SKIP][182] ([i915#3555])
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-10/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-6/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html

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

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-tglu-1:       NOTRUN -> [SKIP][184] ([i915#13749])
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_dp_link_training@non-uhbr-sst.html

  * igt@kms_dp_link_training@uhbr-sst:
    - shard-tglu:         NOTRUN -> [SKIP][185] ([i915#13748])
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_dp_link_training@uhbr-sst.html

  * igt@kms_dsc@dsc-basic:
    - shard-rkl:          NOTRUN -> [SKIP][186] ([i915#3555] / [i915#3840])
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@kms_dsc@dsc-basic.html

  * igt@kms_dsc@dsc-fractional-bpp:
    - shard-dg2:          NOTRUN -> [SKIP][187] ([i915#3840] / [i915#9688])
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_dsc@dsc-fractional-bpp.html

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

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][189] ([i915#9878])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk4/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_fbcon_fbt@psr:
    - shard-rkl:          NOTRUN -> [SKIP][190] ([i915#3955])
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@kms_fbcon_fbt@psr.html

  * igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible:
    - shard-rkl:          NOTRUN -> [SKIP][191] ([i915#9934]) +8 other tests skip
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible.html

  * igt@kms_flip@2x-flip-vs-panning-vs-hang:
    - shard-dg2:          NOTRUN -> [SKIP][192] ([i915#9934]) +1 other test skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@kms_flip@2x-flip-vs-panning-vs-hang.html

  * igt@kms_flip@2x-plain-flip:
    - shard-tglu:         NOTRUN -> [SKIP][193] ([i915#3637]) +4 other tests skip
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@kms_flip@2x-plain-flip.html

  * igt@kms_flip@2x-plain-flip-ts-check-interruptible:
    - shard-tglu-1:       NOTRUN -> [SKIP][194] ([i915#3637]) +1 other test skip
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
    - shard-mtlp:         [PASS][195] -> [FAIL][196] ([i915#13743])
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-mtlp-1/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-mtlp-1/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank@a-hdmi-a1:
    - shard-tglu:         [PASS][197] -> [FAIL][198] ([i915#13690]) +5 other tests fail
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-tglu-8/igt@kms_flip@flip-vs-absolute-wf_vblank@a-hdmi-a1.html
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-3/igt@kms_flip@flip-vs-absolute-wf_vblank@a-hdmi-a1.html

  * igt@kms_flip@plain-flip-fb-recreate:
    - shard-dg2:          NOTRUN -> [FAIL][199] ([i915#13690])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_flip@plain-flip-fb-recreate.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible@a-vga1:
    - shard-snb:          [PASS][200] -> [FAIL][201] ([i915#13743]) +1 other test fail
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-snb6/igt@kms_flip@wf_vblank-ts-check-interruptible@a-vga1.html
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb5/igt@kms_flip@wf_vblank-ts-check-interruptible@a-vga1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
    - shard-tglu:         NOTRUN -> [SKIP][202] ([i915#2672] / [i915#3555]) +4 other tests skip
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][203] ([i915#2672]) +2 other tests skip
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling:
    - shard-dg2-9:        NOTRUN -> [SKIP][204] ([i915#2672] / [i915#3555] / [i915#5190])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling@pipe-a-valid-mode:
    - shard-dg2-9:        NOTRUN -> [SKIP][205] ([i915#2672])
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling:
    - shard-dg2:          NOTRUN -> [SKIP][206] ([i915#2672] / [i915#3555] / [i915#5190])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][207] ([i915#2672])
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
    - shard-tglu:         NOTRUN -> [SKIP][208] ([i915#2587] / [i915#2672] / [i915#3555])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling:
    - shard-rkl:          NOTRUN -> [SKIP][209] ([i915#2672] / [i915#3555]) +2 other tests skip
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling:
    - shard-tglu-1:       NOTRUN -> [SKIP][210] ([i915#2672] / [i915#3555])
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling@pipe-a-valid-mode:
    - shard-tglu-1:       NOTRUN -> [SKIP][211] ([i915#2587] / [i915#2672])
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - shard-snb:          NOTRUN -> [SKIP][212] +21 other tests skip
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-tglu:         NOTRUN -> [SKIP][213] ([i915#2587] / [i915#2672]) +5 other tests skip
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-pwrite:
    - shard-dg2-9:        NOTRUN -> [FAIL][214] ([i915#6880])
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-blt:
    - shard-tglu:         NOTRUN -> [SKIP][215] +50 other tests skip
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][216] ([i915#10056] / [i915#13353])
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk5/igt@kms_frontbuffer_tracking@fbc-suspend.html

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

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu:
    - shard-dg2-9:        NOTRUN -> [SKIP][218] ([i915#3458]) +7 other tests skip
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt:
    - shard-dg2:          NOTRUN -> [SKIP][219] ([i915#5354]) +9 other tests skip
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt:
    - shard-dg2-9:        NOTRUN -> [SKIP][220] ([i915#8708]) +6 other tests skip
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-fullscreen:
    - shard-dg2-9:        NOTRUN -> [SKIP][221] ([i915#5354]) +9 other tests skip
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu:
    - shard-rkl:          NOTRUN -> [SKIP][222] ([i915#1825]) +31 other tests skip
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-shrfb-scaledprimary:
    - shard-dg2:          NOTRUN -> [SKIP][223] ([i915#3458]) +9 other tests skip
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_frontbuffer_tracking@fbcpsr-shrfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
    - shard-dg2:          NOTRUN -> [SKIP][224] ([i915#10055])
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html

  * igt@kms_frontbuffer_tracking@pipe-fbc-rte:
    - shard-tglu:         NOTRUN -> [SKIP][225] ([i915#9766])
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt:
    - shard-tglu-1:       NOTRUN -> [SKIP][226] +17 other tests skip
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite:
    - shard-rkl:          NOTRUN -> [SKIP][227] ([i915#3023]) +24 other tests skip
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][228] ([i915#8708]) +10 other tests skip
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-gtt.html

  * igt@kms_hdr@bpc-switch-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][229] ([i915#3555] / [i915#8228]) +2 other tests skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-5/igt@kms_hdr@bpc-switch-dpms.html

  * igt@kms_hdr@static-swap:
    - shard-dg2:          [PASS][230] -> [SKIP][231] ([i915#3555] / [i915#8228])
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-11/igt@kms_hdr@static-swap.html
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-5/igt@kms_hdr@static-swap.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-dg2-9:        NOTRUN -> [SKIP][232] ([i915#3555] / [i915#8228])
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-tglu:         NOTRUN -> [SKIP][233] ([i915#10656])
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@basic-force-big-joiner:
    - shard-rkl:          NOTRUN -> [SKIP][234] ([i915#12388])
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@kms_joiner@basic-force-big-joiner.html

  * igt@kms_joiner@basic-ultra-joiner:
    - shard-dg2-9:        NOTRUN -> [SKIP][235] ([i915#12339])
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_joiner@basic-ultra-joiner.html

  * igt@kms_joiner@invalid-modeset-big-joiner:
    - shard-rkl:          NOTRUN -> [SKIP][236] ([i915#10656])
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_joiner@invalid-modeset-big-joiner.html

  * igt@kms_joiner@invalid-modeset-force-big-joiner:
    - shard-dg2:          [PASS][237] -> [SKIP][238] ([i915#12388])
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-10/igt@kms_joiner@invalid-modeset-force-big-joiner.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-6/igt@kms_joiner@invalid-modeset-force-big-joiner.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-dg2:          NOTRUN -> [SKIP][239] ([i915#13522])
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_panel_fitting@legacy:
    - shard-rkl:          NOTRUN -> [SKIP][240] ([i915#6301])
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@kms_panel_fitting@legacy.html

  * igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c:
    - shard-dg2:          NOTRUN -> [SKIP][241] +2 other tests skip
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c.html

  * igt@kms_plane@plane-panning-bottom-right-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][242] ([i915#13026]) +1 other test incomplete
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk3/igt@kms_plane@plane-panning-bottom-right-suspend.html

  * igt@kms_plane_alpha_blend@alpha-basic:
    - shard-glk:          NOTRUN -> [FAIL][243] ([i915#12178])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk4/igt@kms_plane_alpha_blend@alpha-basic.html

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

  * igt@kms_plane_alpha_blend@alpha-transparent-fb:
    - shard-glk:          NOTRUN -> [FAIL][245] ([i915#10647] / [i915#12177])
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk5/igt@kms_plane_alpha_blend@alpha-transparent-fb.html

  * igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-a-hdmi-a-1:
    - shard-glk:          NOTRUN -> [FAIL][246] ([i915#10647]) +1 other test fail
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk5/igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-a-hdmi-a-1.html

  * igt@kms_plane_lowres@tiling-y:
    - shard-dg2:          NOTRUN -> [SKIP][247] ([i915#8821])
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_plane_lowres@tiling-y.html

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

  * igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b:
    - shard-tglu:         NOTRUN -> [SKIP][249] ([i915#12247]) +4 other tests skip
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b.html

  * igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c:
    - shard-rkl:          NOTRUN -> [SKIP][250] ([i915#12247]) +11 other tests skip
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25:
    - shard-rkl:          NOTRUN -> [SKIP][251] ([i915#12247] / [i915#6953])
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@kms_plane_scaling@planes-downscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25:
    - shard-dg2:          NOTRUN -> [SKIP][252] ([i915#12247] / [i915#6953] / [i915#9423])
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-c:
    - shard-dg2:          NOTRUN -> [SKIP][253] ([i915#12247]) +3 other tests skip
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-c.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25:
    - shard-tglu-1:       NOTRUN -> [SKIP][254] ([i915#12247] / [i915#3555])
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-a:
    - shard-tglu-1:       NOTRUN -> [SKIP][255] ([i915#12247]) +3 other tests skip
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-a.html

  * igt@kms_pm_backlight@basic-brightness:
    - shard-tglu:         NOTRUN -> [SKIP][256] ([i915#9812])
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_pm_backlight@brightness-with-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][257] ([i915#12343])
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-5/igt@kms_pm_backlight@brightness-with-dpms.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][258] ([i915#5354])
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][259] ([i915#3361])
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_pm_rpm@cursor:
    - shard-rkl:          [PASS][260] -> [SKIP][261] ([i915#12916])
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-8/igt@kms_pm_rpm@cursor.html
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-4/igt@kms_pm_rpm@cursor.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-dg2:          [PASS][262] -> [SKIP][263] ([i915#9519])
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-8/igt@kms_pm_rpm@dpms-lpsp.html
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-2/igt@kms_pm_rpm@dpms-lpsp.html
    - shard-rkl:          [PASS][264] -> [SKIP][265] ([i915#9519])
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-4/igt@kms_pm_rpm@dpms-lpsp.html
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-3/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-dg2-9:        NOTRUN -> [SKIP][266] ([i915#9519])
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-tglu-1:       NOTRUN -> [SKIP][267] ([i915#9519])
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@system-suspend-modeset:
    - shard-glk:          [PASS][268] -> [INCOMPLETE][269] ([i915#10553])
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-glk3/igt@kms_pm_rpm@system-suspend-modeset.html
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk2/igt@kms_pm_rpm@system-suspend-modeset.html

  * igt@kms_prime@basic-modeset-hybrid:
    - shard-rkl:          NOTRUN -> [SKIP][270] ([i915#6524]) +1 other test skip
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@kms_prime@basic-modeset-hybrid.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-sf:
    - shard-glk:          NOTRUN -> [SKIP][271] ([i915#11520]) +11 other tests skip
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk8/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf:
    - shard-tglu:         NOTRUN -> [SKIP][272] ([i915#11520]) +4 other tests skip
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-tglu-1:       NOTRUN -> [SKIP][273] ([i915#11520])
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf.html

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

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-snb:          NOTRUN -> [SKIP][275] ([i915#11520])
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb4/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf:
    - shard-dg2:          NOTRUN -> [SKIP][276] ([i915#11520]) +1 other test skip
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@psr2-plane-move-sf-dmg-area:
    - shard-dg2-9:        NOTRUN -> [SKIP][277] ([i915#11520]) +1 other test skip
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_psr2_sf@psr2-plane-move-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-rkl:          NOTRUN -> [SKIP][278] ([i915#9683])
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-dg2:          NOTRUN -> [SKIP][279] ([i915#9683])
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@fbc-pr-sprite-render:
    - shard-tglu:         NOTRUN -> [SKIP][280] ([i915#9732]) +10 other tests skip
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@kms_psr@fbc-pr-sprite-render.html

  * igt@kms_psr@fbc-psr-sprite-mmap-cpu:
    - shard-dg2-9:        NOTRUN -> [SKIP][281] ([i915#1072] / [i915#9732]) +4 other tests skip
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_psr@fbc-psr-sprite-mmap-cpu.html

  * igt@kms_psr@fbc-psr2-basic:
    - shard-tglu-1:       NOTRUN -> [SKIP][282] ([i915#9732]) +3 other tests skip
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_psr@fbc-psr2-basic.html

  * igt@kms_psr@fbc-psr2-cursor-mmap-gtt:
    - shard-glk:          NOTRUN -> [SKIP][283] +418 other tests skip
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk4/igt@kms_psr@fbc-psr2-cursor-mmap-gtt.html

  * igt@kms_psr@fbc-psr2-sprite-mmap-cpu:
    - shard-dg2:          NOTRUN -> [SKIP][284] ([i915#1072] / [i915#9732]) +9 other tests skip
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_psr@fbc-psr2-sprite-mmap-cpu.html

  * igt@kms_psr@psr2-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][285] ([i915#1072] / [i915#9732]) +20 other tests skip
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@kms_psr@psr2-suspend.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-dg2-9:        NOTRUN -> [SKIP][286] ([i915#9685])
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-tglu:         NOTRUN -> [SKIP][287] ([i915#9685]) +1 other test skip
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-rkl:          NOTRUN -> [SKIP][288] ([i915#5289]) +1 other test skip
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_scaling_modes@scaling-mode-full-aspect:
    - shard-tglu:         NOTRUN -> [SKIP][289] ([i915#3555]) +4 other tests skip
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_scaling_modes@scaling-mode-full-aspect.html

  * igt@kms_scaling_modes@scaling-mode-none:
    - shard-dg2-9:        NOTRUN -> [SKIP][290] ([i915#3555])
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@kms_scaling_modes@scaling-mode-none.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - shard-rkl:          NOTRUN -> [SKIP][291] ([i915#3555]) +2 other tests skip
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@kms_setmode@clone-exclusive-crtc:
    - shard-tglu-1:       NOTRUN -> [SKIP][292] ([i915#3555]) +2 other tests skip
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@kms_setmode@clone-exclusive-crtc.html

  * igt@kms_setmode@invalid-clone-single-crtc-stealing:
    - shard-dg2:          NOTRUN -> [SKIP][293] ([i915#3555]) +1 other test skip
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_setmode@invalid-clone-single-crtc-stealing.html

  * igt@kms_universal_plane@cursor-fb-leak:
    - shard-mtlp:         [PASS][294] -> [FAIL][295] ([i915#9196]) +1 other test fail
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-mtlp-1/igt@kms_universal_plane@cursor-fb-leak.html
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-mtlp-1/igt@kms_universal_plane@cursor-fb-leak.html

  * igt@kms_vrr@flip-basic-fastset:
    - shard-rkl:          NOTRUN -> [SKIP][296] ([i915#9906])
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_vrr@flip-basic-fastset.html

  * igt@kms_vrr@lobf:
    - shard-tglu:         NOTRUN -> [SKIP][297] ([i915#11920])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-10/igt@kms_vrr@lobf.html

  * igt@kms_vrr@seamless-rr-switch-vrr:
    - shard-dg2:          NOTRUN -> [SKIP][298] ([i915#9906])
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_vrr@seamless-rr-switch-vrr.html

  * igt@kms_writeback@writeback-check-output:
    - shard-tglu:         NOTRUN -> [SKIP][299] ([i915#2437])
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-6/igt@kms_writeback@writeback-check-output.html

  * igt@kms_writeback@writeback-check-output-xrgb2101010:
    - shard-glk:          NOTRUN -> [SKIP][300] ([i915#2437])
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk5/igt@kms_writeback@writeback-check-output-xrgb2101010.html

  * igt@perf@blocking@0-rcs0:
    - shard-tglu:         [PASS][301] -> [FAIL][302] ([i915#10538]) +1 other test fail
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-tglu-8/igt@perf@blocking@0-rcs0.html
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-3/igt@perf@blocking@0-rcs0.html

  * igt@perf@mi-rpc:
    - shard-dg2:          NOTRUN -> [SKIP][303] ([i915#2434])
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-1/igt@perf@mi-rpc.html

  * igt@perf_pmu@busy-double-start@vecs1:
    - shard-dg2:          [PASS][304] -> [FAIL][305] ([i915#4349]) +4 other tests fail
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-11/igt@perf_pmu@busy-double-start@vecs1.html
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-5/igt@perf_pmu@busy-double-start@vecs1.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-rkl:          NOTRUN -> [SKIP][306] ([i915#8516])
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-5/igt@perf_pmu@rc6-all-gts.html

  * igt@perf_pmu@rc6-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][307] ([i915#13356]) +1 other test incomplete
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-glk9/igt@perf_pmu@rc6-suspend.html

  * igt@prime_busy@hang:
    - shard-rkl:          NOTRUN -> [DMESG-WARN][308] ([i915#12917] / [i915#12964]) +1 other test dmesg-warn
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@prime_busy@hang.html

  * igt@prime_vgem@basic-fence-flip:
    - shard-dg2-9:        NOTRUN -> [SKIP][309] ([i915#3708])
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-9/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-fence-read:
    - shard-rkl:          NOTRUN -> [SKIP][310] ([i915#3291] / [i915#3708])
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-1/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@fence-flip-hang:
    - shard-rkl:          NOTRUN -> [SKIP][311] ([i915#3708])
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@prime_vgem@fence-flip-hang.html

  * igt@sriov_basic@bind-unbind-vf@vf-1:
    - shard-tglu-1:       NOTRUN -> [FAIL][312] ([i915#12910]) +9 other tests fail
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-1/igt@sriov_basic@bind-unbind-vf@vf-1.html

  * igt@sriov_basic@enable-vfs-autoprobe-on:
    - shard-dg2:          NOTRUN -> [SKIP][313] ([i915#9917]) +1 other test skip
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@sriov_basic@enable-vfs-autoprobe-on.html

  
#### Possible fixes ####

  * igt@gem_create@create-ext-cpu-access-big:
    - shard-dg2:          [ABORT][314] ([i915#13427]) -> [PASS][315]
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-10/igt@gem_create@create-ext-cpu-access-big.html
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-2/igt@gem_create@create-ext-cpu-access-big.html

  * igt@gem_lmem_swapping@smem-oom@lmem0:
    - shard-dg1:          [TIMEOUT][316] ([i915#5493]) -> [PASS][317] +1 other test pass
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-17/igt@gem_lmem_swapping@smem-oom@lmem0.html
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-16/igt@gem_lmem_swapping@smem-oom@lmem0.html

  * igt@gem_pxp@create-regular-buffer:
    - shard-rkl:          [TIMEOUT][318] ([i915#12917] / [i915#12964]) -> [PASS][319]
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-2/igt@gem_pxp@create-regular-buffer.html
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@gem_pxp@create-regular-buffer.html

  * igt@i915_power@sanity:
    - shard-mtlp:         [SKIP][320] ([i915#7984]) -> [PASS][321]
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-mtlp-5/igt@i915_power@sanity.html
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-mtlp-1/igt@i915_power@sanity.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-4:
    - shard-dg1:          [DMESG-WARN][322] ([i915#4423]) -> [PASS][323] +3 other tests pass
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-18/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-4.html
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-17/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-4.html

  * igt@kms_cursor_crc@cursor-onscreen-128x42:
    - shard-rkl:          [FAIL][324] ([i915#13566]) -> [PASS][325] +4 other tests pass
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-128x42.html
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-5/igt@kms_cursor_crc@cursor-onscreen-128x42.html

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-tglu:         [FAIL][326] ([i915#13566]) -> [PASS][327] +5 other tests pass
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-tglu-8/igt@kms_cursor_crc@cursor-sliding-256x85.html
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-3/igt@kms_cursor_crc@cursor-sliding-256x85.html

  * igt@kms_dp_aux_dev:
    - shard-dg2:          [SKIP][328] ([i915#1257]) -> [PASS][329]
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-5/igt@kms_dp_aux_dev.html
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_dp_aux_dev.html

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-dg2:          [SKIP][330] ([i915#13749]) -> [PASS][331]
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-8/igt@kms_dp_link_training@non-uhbr-sst.html
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-11/igt@kms_dp_link_training@non-uhbr-sst.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@b-hdmi-a1:
    - shard-tglu:         [FAIL][332] -> [PASS][333]
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-tglu-7/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@b-hdmi-a1.html
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-4/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@b-hdmi-a1.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-snb:          [INCOMPLETE][334] ([i915#12314] / [i915#12745] / [i915#4839]) -> [PASS][335]
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-snb6/igt@kms_flip@flip-vs-suspend.html
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb5/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_flip@flip-vs-suspend@b-hdmi-a1:
    - shard-snb:          [INCOMPLETE][336] ([i915#12314] / [i915#4839]) -> [PASS][337]
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-snb6/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb5/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html

  * igt@kms_flip@plain-flip-fb-recreate:
    - shard-snb:          [FAIL][338] ([i915#13690]) -> [PASS][339]
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-snb7/igt@kms_flip@plain-flip-fb-recreate.html
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb4/igt@kms_flip@plain-flip-fb-recreate.html

  * igt@kms_flip@plain-flip-fb-recreate@a-vga1:
    - shard-snb:          [FAIL][340] -> [PASS][341]
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-snb7/igt@kms_flip@plain-flip-fb-recreate@a-vga1.html
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb4/igt@kms_flip@plain-flip-fb-recreate@a-vga1.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible:
    - shard-dg2:          [FAIL][342] ([i915#13743]) -> [PASS][343]
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-10/igt@kms_flip@wf_vblank-ts-check-interruptible.html
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-2/igt@kms_flip@wf_vblank-ts-check-interruptible.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible@b-hdmi-a1:
    - shard-tglu:         [FAIL][344] ([i915#13743]) -> [PASS][345] +4 other tests pass
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-tglu-2/igt@kms_flip@wf_vblank-ts-check-interruptible@b-hdmi-a1.html
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-tglu-7/igt@kms_flip@wf_vblank-ts-check-interruptible@b-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt:
    - shard-snb:          [SKIP][346] -> [PASS][347] +3 other tests pass
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-snb6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-dg2:          [SKIP][348] ([i915#3555] / [i915#8228]) -> [PASS][349]
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-7/igt@kms_hdr@invalid-metadata-sizes.html
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-mtlp:         [FAIL][350] ([i915#12913]) -> [PASS][351]
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-mtlp-6/igt@kms_pm_dc@dc6-dpms.html
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-mtlp-7/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-dg2:          [SKIP][352] ([i915#9519]) -> [PASS][353]
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-8/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-11/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
    - shard-rkl:          [SKIP][354] ([i915#9519]) -> [PASS][355]
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-2/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-8/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@perf_pmu@module-unload:
    - shard-snb:          [INCOMPLETE][356] ([i915#13520]) -> [PASS][357]
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-snb1/igt@perf_pmu@module-unload.html
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-snb4/igt@perf_pmu@module-unload.html

  * igt@syncobj_timeline@wait-all-for-submit-snapshot:
    - shard-rkl:          [DMESG-WARN][358] ([i915#12964]) -> [PASS][359] +8 other tests pass
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-1/igt@syncobj_timeline@wait-all-for-submit-snapshot.html
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-3/igt@syncobj_timeline@wait-all-for-submit-snapshot.html

  
#### Warnings ####

  * igt@gem_lmem_swapping@smem-oom@lmem0:
    - shard-dg2:          [DMESG-WARN][360] ([i915#5493]) -> [TIMEOUT][361] ([i915#5493]) +1 other test timeout
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-7/igt@gem_lmem_swapping@smem-oom@lmem0.html
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-10/igt@gem_lmem_swapping@smem-oom@lmem0.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-mtlp:         [ABORT][362] ([i915#10131] / [i915#9820]) -> [ABORT][363] ([i915#10131] / [i915#13592])
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-mtlp-2/igt@i915_module_load@reload-with-fault-injection.html
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-mtlp-8/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_rpm@gem-evict-pwrite:
    - shard-dg1:          [SKIP][364] ([i915#4077] / [i915#4423]) -> [SKIP][365] ([i915#4077])
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-16/igt@i915_pm_rpm@gem-evict-pwrite.html
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-12/igt@i915_pm_rpm@gem-evict-pwrite.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs:
    - shard-rkl:          [INCOMPLETE][366] ([i915#12796]) -> [DMESG-FAIL][367] ([i915#12964])
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-5/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs.html
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs:
    - shard-dg1:          [SKIP][368] ([i915#12313] / [i915#4423]) -> [SKIP][369] ([i915#12313])
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-16/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-12/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html

  * igt@kms_chamelium_audio@dp-audio:
    - shard-dg1:          [SKIP][370] ([i915#11151] / [i915#7828]) -> [SKIP][371] ([i915#11151] / [i915#4423] / [i915#7828])
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-16/igt@kms_chamelium_audio@dp-audio.html
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-12/igt@kms_chamelium_audio@dp-audio.html

  * igt@kms_content_protection@legacy:
    - shard-dg2:          [FAIL][372] ([i915#7173]) -> [SKIP][373] ([i915#7118] / [i915#9424])
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-10/igt@kms_content_protection@legacy.html
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-6/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@mei-interface:
    - shard-dg1:          [SKIP][374] ([i915#9424]) -> [SKIP][375] ([i915#9433])
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-15/igt@kms_content_protection@mei-interface.html
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-13/igt@kms_content_protection@mei-interface.html

  * igt@kms_cursor_crc@cursor-random-128x42:
    - shard-rkl:          [DMESG-FAIL][376] ([i915#12964]) -> [DMESG-WARN][377] ([i915#12964])
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-5/igt@kms_cursor_crc@cursor-random-128x42.html
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-7/igt@kms_cursor_crc@cursor-random-128x42.html

  * igt@kms_flip@2x-nonexisting-fb:
    - shard-dg1:          [SKIP][378] ([i915#4423] / [i915#9934]) -> [SKIP][379] ([i915#9934])
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-18/igt@kms_flip@2x-nonexisting-fb.html
   [379]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-17/igt@kms_flip@2x-nonexisting-fb.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt:
    - shard-dg2:          [SKIP][380] ([i915#10433] / [i915#3458]) -> [SKIP][381] ([i915#3458]) +1 other test skip
   [380]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt.html
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-pwrite:
    - shard-dg1:          [SKIP][382] -> [SKIP][383] ([i915#4423])
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-12/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-pwrite.html
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-17/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt:
    - shard-dg1:          [SKIP][384] ([i915#3458] / [i915#4423]) -> [SKIP][385] ([i915#3458])
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-13/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt.html
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-15/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-shrfb-draw-blt.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-dg2:          [SKIP][386] ([i915#13331]) -> [SKIP][387] ([i915#12713])
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg2-11/igt@kms_hdr@brightness-with-hdr.html
   [387]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg2-5/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-rkl:          [SKIP][388] ([i915#3361]) -> [FAIL][389] ([i915#9295])
   [388]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-6/igt@kms_pm_dc@dc6-dpms.html
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-5/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-rkl:          [SKIP][390] ([i915#9519]) -> [DMESG-WARN][391] ([i915#12964])
   [390]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-rkl-8/igt@kms_pm_rpm@modeset-lpsp.html
   [391]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-rkl-4/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_vrr@seamless-rr-switch-vrr:
    - shard-dg1:          [SKIP][392] ([i915#9906]) -> [SKIP][393] ([i915#4423] / [i915#9906])
   [392]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16178/shard-dg1-15/igt@kms_vrr@seamless-rr-switch-vrr.html
   [393]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_145352v3/shard-dg1-14/igt@kms_vrr@seamless-rr-switch-vrr.html

  
  [i915#10055]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10055
  [i915#10056]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10056
  [i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10538
  [i915#10553]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10553
  [i915#10647]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10647
  [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
  [i915#11441]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11441
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/118
  [i915#11859]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11859
  [i915#11920]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11920
  [i915#12177]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12177
  [i915#12178]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12178
  [i915#12238]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12238
  [i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12314]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12314
  [i915#12339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12339
  [i915#12343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12343
  [i915#12388]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12388
  [i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
  [i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713
  [i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745
  [i915#12796]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12796
  [i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
  [i915#12817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12817
  [i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
  [i915#12913]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12913
  [i915#12916]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12916
  [i915#12917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12917
  [i915#12964]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12964
  [i915#13026]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13026
  [i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
  [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
  [i915#13193]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13193
  [i915#13304]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13304
  [i915#13331]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13331
  [i915#13353]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13353
  [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
  [i915#1339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1339
  [i915#13427]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13427
  [i915#13520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13520
  [i915#13522]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13522
  [i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
  [i915#13592]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13592
  [i915#13690]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13690
  [i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
  [i915#13743]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13743
  [i915#13748]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13748
  [i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
  [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
  [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2681
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/284
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
  [i915#3323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3323
  [i915#3361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3591]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
  [i915#3778]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3778
  [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#3936]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3936
  [i915#3955]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3955
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
  [i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
  [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
  [i915#4958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4958
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
  [i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493
  [i915#5507]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5507
  [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
  [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
  [i915#7016]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7016
  [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
  [i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7862]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7862
  [i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
  [i915#7984]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7984
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8588]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8588
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
  [i915#8821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8821
  [i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
  [i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
  [i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
  [i915#9311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9311
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [i915#9433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9433
  [i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
  [i915#9531]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9531
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766
  [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
  [i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
  [i915#9878]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9878
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934


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

  * Linux: CI_DRM_16178 -> Patchwork_145352v3

  CI-20190529: 20190529
  CI_DRM_16178: d5debc4841e604372c74ebda0bbf54bd527c3475 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8247: 8247
  Patchwork_145352v3: d5debc4841e604372c74ebda0bbf54bd527c3475 @ 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_145352v3/index.html

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

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

* Re: [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse
  2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
                   ` (10 preceding siblings ...)
  2025-02-26  5:33 ` ✗ i915.CI.Full: failure " Patchwork
@ 2025-02-26 12:55 ` Jani Nikula
  2025-02-26 13:17   ` Imre Deak
  11 siblings, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2025-02-26 12:55 UTC (permalink / raw)
  To: Imre Deak, intel-gfx, intel-xe

On Mon, 24 Feb 2025, Imre Deak <imre.deak@intel.com> wrote:
> This patchset fixes a problem during Display Port link training, where
> the link training is interrupted by a short HPD pulse generated by the
> sink. Generally the sink signals a bad link state via such short pulses,
> but the sink should prevent such signaling during link training.
>
> Some sinks do generate a short pulse as above during link training, or a
> pulse generated before the link training started may be handled from a
> scheduled work during link training. Such a handling may interfere with
> the link training (see patch 3 for the reason), so this patchset
> prevents the handling of pulses during link training.

I'm wondering if this series is made unnecessarily complicated by
blocking the hotplug handling at the hpd pin level, while what is
actually needed is blocking at the encoder level. I believe that would
be simpler too.

Thoughts?

BR,
Jani.

>
> Imre Deak (5):
>   drm/i915/hpd: Let an HPD pin be in the disabled state when handling
>     missed IRQs
>   drm/i915/hpd: Add support for suspending the IRQ handling on an HPD
>     pin
>   drm/i915/dp: Fix link training interrupted by a short HPD pulse
>   drm/i915/dp: Queue a link check after link training is complete
>   drm/i915/crt: Use intel_hpd_suspend/resume() instead of
>     intel_hpd_disable/enable()
>
>  drivers/gpu/drm/i915/display/intel_crt.c      |   7 +-
>  .../gpu/drm/i915/display/intel_display_core.h |   2 +
>  .../drm/i915/display/intel_dp_link_training.c |  23 +-
>  drivers/gpu/drm/i915/display/intel_hotplug.c  | 264 ++++++++++++++----
>  drivers/gpu/drm/i915/display/intel_hotplug.h  |   5 +-
>  5 files changed, 237 insertions(+), 64 deletions(-)

-- 
Jani Nikula, Intel

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

* Re: [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse
  2025-02-26 12:55 ` [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Jani Nikula
@ 2025-02-26 13:17   ` Imre Deak
  0 siblings, 0 replies; 20+ messages in thread
From: Imre Deak @ 2025-02-26 13:17 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe

On Wed, Feb 26, 2025 at 02:55:32PM +0200, Jani Nikula wrote:
> On Mon, 24 Feb 2025, Imre Deak <imre.deak@intel.com> wrote:
> > This patchset fixes a problem during Display Port link training, where
> > the link training is interrupted by a short HPD pulse generated by the
> > sink. Generally the sink signals a bad link state via such short pulses,
> > but the sink should prevent such signaling during link training.
> >
> > Some sinks do generate a short pulse as above during link training, or a
> > pulse generated before the link training started may be handled from a
> > scheduled work during link training. Such a handling may interfere with
> > the link training (see patch 3 for the reason), so this patchset
> > prevents the handling of pulses during link training.
> 
> I'm wondering if this series is made unnecessarily complicated by
> blocking the hotplug handling at the hpd pin level, while what is
> actually needed is blocking at the encoder level. I believe that would
> be simpler too.
> 
> Thoughts?

I think handling it at the HPD pin level makes more sense, since
handling of the HPD IRQs should still happen after they are unblocked.
Also in case of encoders sharing an HPD pin the handling of the IRQs
should be blocked for all the encoders using this pin. The same
block/unblock functionality is also needed for the CRT encoder, so it
makes sense to extend that (intel_hpd_disable/enable) to support digital
ports as well.

> BR,
> Jani.
> 
> >
> > Imre Deak (5):
> >   drm/i915/hpd: Let an HPD pin be in the disabled state when handling
> >     missed IRQs
> >   drm/i915/hpd: Add support for suspending the IRQ handling on an HPD
> >     pin
> >   drm/i915/dp: Fix link training interrupted by a short HPD pulse
> >   drm/i915/dp: Queue a link check after link training is complete
> >   drm/i915/crt: Use intel_hpd_suspend/resume() instead of
> >     intel_hpd_disable/enable()
> >
> >  drivers/gpu/drm/i915/display/intel_crt.c      |   7 +-
> >  .../gpu/drm/i915/display/intel_display_core.h |   2 +
> >  .../drm/i915/display/intel_dp_link_training.c |  23 +-
> >  drivers/gpu/drm/i915/display/intel_hotplug.c  | 264 ++++++++++++++----
> >  drivers/gpu/drm/i915/display/intel_hotplug.h  |   5 +-
> >  5 files changed, 237 insertions(+), 64 deletions(-)
> 
> -- 
> Jani Nikula, Intel

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

end of thread, other threads:[~2025-02-26 13:16 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-24 19:31 [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Imre Deak
2025-02-24 19:31 ` [PATCH 1/5] drm/i915/hpd: Let an HPD pin be in the disabled state when handling missed IRQs Imre Deak
2025-02-24 19:31 ` [PATCH 2/5] drm/i915/hpd: Add support for suspending the IRQ handling on an HPD pin Imre Deak
2025-02-25 12:15   ` [PATCH v2 " Imre Deak
2025-02-25 16:25     ` Jani Nikula
2025-02-25 17:15       ` Imre Deak
2025-02-24 19:31 ` [PATCH 3/5] drm/i915/dp: Fix link training interrupted by a short HPD pulse Imre Deak
2025-02-24 19:31 ` [PATCH 4/5] drm/i915/dp: Queue a link check after link training is complete Imre Deak
2025-02-24 19:31 ` [PATCH 5/5] drm/i915/crt: Use intel_hpd_suspend/resume() instead of intel_hpd_disable/enable() Imre Deak
2025-02-25 12:15   ` [PATCH v2 " Imre Deak
2025-02-25  1:32 ` ✗ Fi.CI.SPARSE: warning for drm/dp: Fix link training interrupted by HPD pulse Patchwork
2025-02-25  2:00 ` ✗ i915.CI.BAT: failure " Patchwork
2025-02-25 13:23 ` ✗ Fi.CI.SPARSE: warning for drm/dp: Fix link training interrupted by HPD pulse (rev3) Patchwork
2025-02-25 13:41 ` ✗ i915.CI.BAT: failure " Patchwork
2025-02-25 14:25   ` Imre Deak
2025-02-26  4:09     ` Ravali, JupallyX
2025-02-26  3:51 ` ✓ i915.CI.BAT: success " Patchwork
2025-02-26  5:33 ` ✗ i915.CI.Full: failure " Patchwork
2025-02-26 12:55 ` [PATCH 0/5] drm/dp: Fix link training interrupted by HPD pulse Jani Nikula
2025-02-26 13:17   ` Imre Deak

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