* [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues
@ 2026-02-25 16:45 Imre Deak
2026-02-25 16:45 ` [PATCH v3 01/20] drm/i915/dp_mst: Reprobe connector if the IRQ ESI read failed Imre Deak
` (22 more replies)
0 siblings, 23 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:45 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho, Jani Nikula
This is v3 of [1], which was incorrectly sent without the actual v2
updates, including now the actual v2 updates.
Cc: Luca Coelho <luciano.coelho@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
[1] https://lore.kernel.org/all/20260225162751.1255913-1-imre.deak@intel.com
Imre Deak (20):
drm/i915/dp_mst: Reprobe connector if the IRQ ESI read failed
drm/i915/dp_mst: Verify the link status always the same way
drm/i915/dp_mst: Reuse intel_dp_check_link_state() in the HPD IRQ
handler
drm/i915/dp: Handle a tunneling IRQ after acking it
drm/i915/dp: Handle the RX_CAP_CHANGED HPD IRQ
drm/i915/dp: Handle the DOWNSTREAM_PORT_STATUS_CHANGED event
drm/i915/dp: Don't clobber the encoder state in the HPD IRQ handler
drm/i915/dp: Remove the device service IRQ handling from connector
detect
drm/i915/dp: Fix the device service IRQ DPCD_REV check
drm/i915/dp: Fix the link service IRQ DPCD_REV check
drm/i915/dp: Reprobe connector if getting/acking device IRQs fails
drm/i915/dp: Reprobe connector if getting/acking link service IRQs
fails
drm/i915/dp: Return early if getting/acking device service IRQs fails
drm/i915/dp: Return early if getting/acking link service IRQs fails
drm/i915/dp: Read/ack sink count and sink IRQs for SST as it's done
for MST
drm/i915/dp: Print debug message for a sink connected off request
drm/i915/dp: Check SST link status while handling link service IRQs
drm/i915/dp_mst: Reuse intel_dp_handle_link_service_irq()
drm/i915/dp: Ack only the handled device service IRQs
drm/i915/dp: Ack only the handled link service IRQs
.../drm/i915/display/intel_display_types.h | 1 +
drivers/gpu/drm/i915/display/intel_dp.c | 253 ++++++++++++------
2 files changed, 171 insertions(+), 83 deletions(-)
--
2.49.1
Imre Deak (20):
drm/i915/dp_mst: Reprobe connector if the IRQ ESI read failed
drm/i915/dp_mst: Verify the link status always the same way
drm/i915/dp_mst: Reuse intel_dp_check_link_state() in the HPD IRQ
handler
drm/i915/dp: Handle a tunneling IRQ after acking it
drm/i915/dp: Handle the RX_CAP_CHANGED HPD IRQ
drm/i915/dp: Handle the DOWNSTREAM_PORT_STATUS_CHANGED event
drm/i915/dp: Don't clobber the encoder state in the HPD IRQ handler
drm/i915/dp: Remove the device service IRQ handling from connector
detect
drm/i915/dp: Fix the device service IRQ DPCD_REV check
drm/i915/dp: Fix the link service IRQ DPCD_REV check
drm/i915/dp: Reprobe connector if getting/acking device IRQs fails
drm/i915/dp: Reprobe connector if getting/acking link service IRQs
fails
drm/i915/dp: Return early if getting/acking device service IRQs fails
drm/i915/dp: Return early if getting/ackink link service IRQs fails
drm/i915/dp: Read/ack sink count and sink IRQs for SST as it's done
for MST
drm/i915/dp: Print debug message for a sink connected off request
drm/i915/dp: Check SST link status while handling link service IRQs
drm/i915/dp_mst: Reuse intel_dp_handle_link_service_irq()
drm/i915/dp: Ack only the handled device service IRQs
drm/i915/dp: Ack only the handled link service IRQs
.../drm/i915/display/intel_display_types.h | 1 +
drivers/gpu/drm/i915/display/intel_dp.c | 264 ++++++++++++------
2 files changed, 182 insertions(+), 83 deletions(-)
--
2.49.1
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH v3 01/20] drm/i915/dp_mst: Reprobe connector if the IRQ ESI read failed
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
@ 2026-02-25 16:45 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 02/20] drm/i915/dp_mst: Verify the link status always the same way Imre Deak
` (21 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:45 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
An AUX access failure during HPD IRQ handling should be handled by
falling back to a full connector detection, do so.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 025e906b63a97..eb4a1c5c55714 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5492,7 +5492,7 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
if (!intel_dp_get_sink_irq_esi(intel_dp, esi)) {
drm_dbg_kms(display->drm,
"failed to get ESI - device may have failed\n");
- link_ok = false;
+ reprobe_needed = true;
break;
}
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 02/20] drm/i915/dp_mst: Verify the link status always the same way
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
2026-02-25 16:45 ` [PATCH v3 01/20] drm/i915/dp_mst: Reprobe connector if the IRQ ESI read failed Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 03/20] drm/i915/dp_mst: Reuse intel_dp_check_link_state() in the HPD IRQ handler Imre Deak
` (20 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Luca Coelho
The MST link status should be always verified from the same DPCD
registers after link training. Atm, both the legacy (0x202 - 0x205) and
the ESI (0x200C - 0x200F) link status registers are used. Use always the
latter ESI version of link status registers.
v2: Propagate error from intel_dp_read_link_status(). (Jani, Luca)
Cc: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index eb4a1c5c55714..e94fcacb95304 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5555,6 +5555,23 @@ intel_dp_handle_hdmi_link_status_change(struct intel_dp *intel_dp)
}
}
+static int
+intel_dp_read_link_status(struct intel_dp *intel_dp, u8 link_status[DP_LINK_STATUS_SIZE])
+{
+ int err;
+
+ memset(link_status, 0, DP_LINK_STATUS_SIZE);
+
+ if (intel_dp_mst_active_streams(intel_dp) > 0)
+ err = drm_dp_dpcd_read_data(&intel_dp->aux, DP_LANE0_1_STATUS_ESI,
+ link_status, DP_LINK_STATUS_SIZE - 2);
+ else
+ err = drm_dp_dpcd_read_phy_link_status(&intel_dp->aux, DP_PHY_DPRX,
+ link_status);
+
+ return err;
+}
+
static bool
intel_dp_needs_link_retrain(struct intel_dp *intel_dp)
{
@@ -5577,8 +5594,7 @@ intel_dp_needs_link_retrain(struct intel_dp *intel_dp)
if (intel_dp->link.force_retrain)
return true;
- if (drm_dp_dpcd_read_phy_link_status(&intel_dp->aux, DP_PHY_DPRX,
- link_status) < 0)
+ if (intel_dp_read_link_status(intel_dp, link_status) < 0)
return false;
/*
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 03/20] drm/i915/dp_mst: Reuse intel_dp_check_link_state() in the HPD IRQ handler
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
2026-02-25 16:45 ` [PATCH v3 01/20] drm/i915/dp_mst: Reprobe connector if the IRQ ESI read failed Imre Deak
2026-02-25 16:46 ` [PATCH v3 02/20] drm/i915/dp_mst: Verify the link status always the same way Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 04/20] drm/i915/dp: Handle a tunneling IRQ after acking it Imre Deak
` (19 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
Use intel_dp_check_link_state() in the MST HPD IRQ handler instead of
open-coding it.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 34 +++----------------------
1 file changed, 4 insertions(+), 30 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index e94fcacb95304..b3849f1d9b7f3 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5444,24 +5444,6 @@ intel_dp_mst_hpd_irq(struct intel_dp *intel_dp, u8 *esi, u8 *ack)
}
}
-static bool intel_dp_mst_link_status(struct intel_dp *intel_dp)
-{
- struct intel_display *display = to_intel_display(intel_dp);
- struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
- u8 link_status[DP_LINK_STATUS_SIZE] = {};
- const size_t esi_link_status_size = DP_LINK_STATUS_SIZE - 2;
-
- if (drm_dp_dpcd_read(&intel_dp->aux, DP_LANE0_1_STATUS_ESI, link_status,
- esi_link_status_size) != esi_link_status_size) {
- drm_err(display->drm,
- "[ENCODER:%d:%s] Failed to read link status\n",
- encoder->base.base.id, encoder->base.name);
- return false;
- }
-
- return intel_dp_link_ok(intel_dp, link_status);
-}
-
/**
* intel_dp_check_mst_status - service any pending MST interrupts, check link status
* @intel_dp: Intel DP struct
@@ -5480,9 +5462,6 @@ static bool
intel_dp_check_mst_status(struct intel_dp *intel_dp)
{
struct intel_display *display = to_intel_display(intel_dp);
- struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
- struct intel_encoder *encoder = &dig_port->base;
- bool link_ok = true;
bool reprobe_needed = false;
for (;;) {
@@ -5499,12 +5478,7 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
drm_dbg_kms(display->drm, "DPRX ESI: %4ph\n", esi);
- if (intel_dp_mst_active_streams(intel_dp) > 0 && link_ok &&
- esi[3] & LINK_STATUS_CHANGED) {
- if (!intel_dp_mst_link_status(intel_dp))
- link_ok = false;
- ack[3] |= LINK_STATUS_CHANGED;
- }
+ ack[3] |= esi[3] & LINK_STATUS_CHANGED;
intel_dp_mst_hpd_irq(intel_dp, esi, ack);
@@ -5523,10 +5497,10 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
if (ack[1] & (DP_DOWN_REP_MSG_RDY | DP_UP_REQ_MSG_RDY))
drm_dp_mst_hpd_irq_send_new_request(&intel_dp->mst.mgr);
- }
- if (!link_ok || intel_dp->link.force_retrain)
- intel_encoder_link_check_queue_work(encoder, 0);
+ if ((ack[3] & LINK_STATUS_CHANGED) || intel_dp->link.force_retrain)
+ intel_dp_check_link_state(intel_dp);
+ }
return !reprobe_needed;
}
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 04/20] drm/i915/dp: Handle a tunneling IRQ after acking it
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (2 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 03/20] drm/i915/dp_mst: Reuse intel_dp_check_link_state() in the HPD IRQ handler Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 05/20] drm/i915/dp: Handle the RX_CAP_CHANGED HPD IRQ Imre Deak
` (18 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
HPD IRQs in general should be handled after acking them. The
1. Read IRQ register (read DP_DEVICE_SERVICE_IRQ_VECTOR,
DP_LINK_SERVICE_IRQ_VECTOR_ESI0)
2. Handle IRQ
3. Ack IRQ (write DP_DEVICE_SERVICE_IRQ_VECTOR,
DP_LINK_SERVICE_IRQ_VECTOR_ESI0)
sequence would miss a new interrupt triggered after 2. and before 3.,
since the flag set in the IRQ register for this interrupt would be
cleared in step 3.
Fix the above by handling the IRQ after acking it.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 27 +++++++++++--------------
1 file changed, 12 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index b3849f1d9b7f3..bc5c318869329 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5478,17 +5478,10 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
drm_dbg_kms(display->drm, "DPRX ESI: %4ph\n", esi);
- ack[3] |= esi[3] & LINK_STATUS_CHANGED;
+ ack[3] |= esi[3] & (LINK_STATUS_CHANGED | DP_TUNNELING_IRQ);
intel_dp_mst_hpd_irq(intel_dp, esi, ack);
- if (esi[3] & DP_TUNNELING_IRQ) {
- if (drm_dp_tunnel_handle_irq(display->dp_tunnel_mgr,
- &intel_dp->aux))
- reprobe_needed = true;
- ack[3] |= DP_TUNNELING_IRQ;
- }
-
if (mem_is_zero(ack, sizeof(ack)))
break;
@@ -5500,6 +5493,10 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
if ((ack[3] & LINK_STATUS_CHANGED) || intel_dp->link.force_retrain)
intel_dp_check_link_state(intel_dp);
+
+ if ((ack[3] & DP_TUNNELING_IRQ) &&
+ drm_dp_tunnel_handle_irq(display->dp_tunnel_mgr, &intel_dp->aux))
+ reprobe_needed = true;
}
return !reprobe_needed;
@@ -5802,18 +5799,18 @@ static bool intel_dp_check_link_service_irq(struct intel_dp *intel_dp)
DP_LINK_SERVICE_IRQ_VECTOR_ESI0, &val) != 1 || !val)
return false;
+ if (drm_dp_dpcd_writeb(&intel_dp->aux,
+ DP_LINK_SERVICE_IRQ_VECTOR_ESI0, val) != 1)
+ return false;
+
+ if (val & HDMI_LINK_STATUS_CHANGED)
+ intel_dp_handle_hdmi_link_status_change(intel_dp);
+
if ((val & DP_TUNNELING_IRQ) &&
drm_dp_tunnel_handle_irq(display->dp_tunnel_mgr,
&intel_dp->aux))
reprobe_needed = true;
- if (drm_dp_dpcd_writeb(&intel_dp->aux,
- DP_LINK_SERVICE_IRQ_VECTOR_ESI0, val) != 1)
- return reprobe_needed;
-
- if (val & HDMI_LINK_STATUS_CHANGED)
- intel_dp_handle_hdmi_link_status_change(intel_dp);
-
return reprobe_needed;
}
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 05/20] drm/i915/dp: Handle the RX_CAP_CHANGED HPD IRQ
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (3 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 04/20] drm/i915/dp: Handle a tunneling IRQ after acking it Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 06/20] drm/i915/dp: Handle the DOWNSTREAM_PORT_STATUS_CHANGED event Imre Deak
` (17 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
Handle the RX_CAP_CHANGED IRQ, which a sink can use to indicate a DPRX
capability change without disconnecting and reconnecting itself (i.e.
through a short vs. long HPD pulse). Handle the IRQ by doing a full
connector detection.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index bc5c318869329..5f5e0145cbb69 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5478,7 +5478,7 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
drm_dbg_kms(display->drm, "DPRX ESI: %4ph\n", esi);
- ack[3] |= esi[3] & (LINK_STATUS_CHANGED | DP_TUNNELING_IRQ);
+ ack[3] |= esi[3] & (RX_CAP_CHANGED | LINK_STATUS_CHANGED | DP_TUNNELING_IRQ);
intel_dp_mst_hpd_irq(intel_dp, esi, ack);
@@ -5491,6 +5491,9 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
if (ack[1] & (DP_DOWN_REP_MSG_RDY | DP_UP_REQ_MSG_RDY))
drm_dp_mst_hpd_irq_send_new_request(&intel_dp->mst.mgr);
+ if (ack[3] & RX_CAP_CHANGED)
+ reprobe_needed = true;
+
if ((ack[3] & LINK_STATUS_CHANGED) || intel_dp->link.force_retrain)
intel_dp_check_link_state(intel_dp);
@@ -5803,6 +5806,9 @@ static bool intel_dp_check_link_service_irq(struct intel_dp *intel_dp)
DP_LINK_SERVICE_IRQ_VECTOR_ESI0, val) != 1)
return false;
+ if (val & RX_CAP_CHANGED)
+ reprobe_needed = true;
+
if (val & HDMI_LINK_STATUS_CHANGED)
intel_dp_handle_hdmi_link_status_change(intel_dp);
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 06/20] drm/i915/dp: Handle the DOWNSTREAM_PORT_STATUS_CHANGED event
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (4 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 05/20] drm/i915/dp: Handle the RX_CAP_CHANGED HPD IRQ Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 07/20] drm/i915/dp: Don't clobber the encoder state in the HPD IRQ handler Imre Deak
` (16 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
Handle the DOWNSTREAM_PORT_STATUS_CHANGED event a branch device can use
to indicate the state change of a DFP connector on the branch device.
The event is signaled in the DP_LANE_ALIGN_STATUS_UPDATED DPCD register
setting a clear-on-read flag and triggering an HPD IRQ. Accordingly keep
a cached version of the flag, updating it whenever
DP_LANE_ALIGN_STATUS_UPDATED is read. Schedule a full connector
detection from the HPD IRQ handler if the cached flag is set and clear
the cached flag at the start of detection.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
.../gpu/drm/i915/display/intel_display_types.h | 1 +
drivers/gpu/drm/i915/display/intel_dp.c | 16 +++++++++++++++-
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index e8e4af03a6a6c..126682ecabec9 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1796,6 +1796,7 @@ struct intel_dp {
int link_rate;
u8 lane_count;
u8 sink_count;
+ bool downstream_port_changed;
bool needs_modeset_retry;
bool use_max_params;
u8 dpcd[DP_RECEIVER_CAP_SIZE];
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 5f5e0145cbb69..f7f02ce5d1a77 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5543,7 +5543,14 @@ intel_dp_read_link_status(struct intel_dp *intel_dp, u8 link_status[DP_LINK_STAT
err = drm_dp_dpcd_read_phy_link_status(&intel_dp->aux, DP_PHY_DPRX,
link_status);
- return err;
+ if (err)
+ return err;
+
+ if (link_status[DP_LANE_ALIGN_STATUS_UPDATED - DP_LANE0_1_STATUS] &
+ DP_DOWNSTREAM_PORT_STATUS_CHANGED)
+ WRITE_ONCE(intel_dp->downstream_port_changed, true);
+
+ return 0;
}
static bool
@@ -5863,6 +5870,11 @@ intel_dp_short_pulse(struct intel_dp *intel_dp)
intel_dp_check_link_state(intel_dp);
+ if (READ_ONCE(intel_dp->downstream_port_changed)) {
+ WRITE_ONCE(intel_dp->downstream_port_changed, false);
+ reprobe_needed = true;
+ }
+
intel_psr_short_pulse(intel_dp);
if (intel_alpm_get_error(intel_dp)) {
@@ -5888,6 +5900,8 @@ intel_dp_detect_dpcd(struct intel_dp *intel_dp)
if (drm_WARN_ON(display->drm, intel_dp_is_edp(intel_dp)))
return connector_status_connected;
+ WRITE_ONCE(intel_dp->downstream_port_changed, false);
+
intel_lspcon_resume(dig_port);
if (!intel_dp_get_dpcd(intel_dp))
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 07/20] drm/i915/dp: Don't clobber the encoder state in the HPD IRQ handler
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (5 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 06/20] drm/i915/dp: Handle the DOWNSTREAM_PORT_STATUS_CHANGED event Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 08/20] drm/i915/dp: Remove the device service IRQ handling from connector detect Imre Deak
` (15 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
The intel_dp_get_dpcd() function called from an HPD IRQ handler reads
out the DPRX capabilities from the sink and updates these in the
intel_dp encoder state. Since the IRQ handler can run in parallel with
the encoder/connector detection (intel_dp_detect()) which also calls
intel_dp_get_dpcd(), the encoder state can get corrupted, since the two
updates happen in a racy way.
Fix the above by checking only for any change in the sink count value in
the HPD IRQ handler, without updating the encoder state.
Note that any state change in the sink requiring an update of the
encoder state is handled via the sink's SINK_COUNT change,
RX_CAPS_CHANGED, DOWNSTREAM_PORT_STATUS_CHANGED signaling, which all
should result in a full connector detection.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index f7f02ce5d1a77..acef106b041ea 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5843,9 +5843,7 @@ static bool intel_dp_check_link_service_irq(struct intel_dp *intel_dp)
static bool
intel_dp_short_pulse(struct intel_dp *intel_dp)
{
- u8 old_sink_count = intel_dp->sink_count;
bool reprobe_needed = false;
- bool ret;
intel_dp_test_reset(intel_dp);
@@ -5855,12 +5853,10 @@ intel_dp_short_pulse(struct intel_dp *intel_dp)
* the value that was stored earlier or dpcd read failed
* we need to do full detection
*/
- ret = intel_dp_get_dpcd(intel_dp);
-
- if ((old_sink_count != intel_dp->sink_count) || !ret) {
+ if (intel_dp_has_sink_count(intel_dp) &&
+ drm_dp_read_sink_count(&intel_dp->aux) != intel_dp->sink_count)
/* No need to proceed if we are going to do full detect */
return false;
- }
intel_dp_check_device_service_irq(intel_dp);
reprobe_needed = intel_dp_check_link_service_irq(intel_dp);
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 08/20] drm/i915/dp: Remove the device service IRQ handling from connector detect
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (6 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 07/20] drm/i915/dp: Don't clobber the encoder state in the HPD IRQ handler Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 09/20] drm/i915/dp: Fix the device service IRQ DPCD_REV check Imre Deak
` (14 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
The device service IRQ handling was added to the connector detect
function by
commit 09b1eb130e43 ("drm/i915: Move Displayport test request and sink
IRQ logic to intel_dp_detect()")
since some Automated Test Request IRQs couldn't be handled in the short
HPD IRQ handler context. This has been fixed meanwhile by deferring the
handling of all test request events from the IRQ handler to the hotplug
handler (intel_dp_short_pulse() -> intel_dp_test_short_pulse() ->
reprobe) and by handling all hotplug events (both for short and long HPD
pulses) in the test application.
Handling device IRQs during connector detection is not standard
compliant (the IRQs should be handled when an HPD IRQ is raised) and it
happens in a racy way with the same device IRQ handling happening from
the HPD IRQ handler (since the detect and HPD IRQ handler can run in
parallel).
Based on the above, remove the redundant call from the detect function.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index acef106b041ea..1fab6ad42d02b 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6324,8 +6324,6 @@ intel_dp_detect(struct drm_connector *_connector,
if (intel_dp_is_edp(intel_dp) || connector->detect_edid)
status = connector_status_connected;
- intel_dp_check_device_service_irq(intel_dp);
-
out_unset_edid:
if (status != connector_status_connected && !intel_dp->is_mst)
intel_dp_unset_edid(intel_dp);
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 09/20] drm/i915/dp: Fix the device service IRQ DPCD_REV check
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (7 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 08/20] drm/i915/dp: Remove the device service IRQ handling from connector detect Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 10/20] drm/i915/dp: Fix the link " Imre Deak
` (13 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
The DP_DEVICE_SERVICE_IRQ_VECTOR DPCD register is supported since DPCD
REV 1.0, so read it out always. Flags added only by later DPCD revisions
are defined as reserved/must-be-zero by earlier DP Standard versions.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 1fab6ad42d02b..88be5a03af912 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5777,9 +5777,6 @@ static void intel_dp_check_device_service_irq(struct intel_dp *intel_dp)
struct intel_display *display = to_intel_display(intel_dp);
u8 val;
- if (intel_dp->dpcd[DP_DPCD_REV] < 0x11)
- return;
-
if (drm_dp_dpcd_readb(&intel_dp->aux,
DP_DEVICE_SERVICE_IRQ_VECTOR, &val) != 1 || !val)
return;
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 10/20] drm/i915/dp: Fix the link service IRQ DPCD_REV check
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (8 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 09/20] drm/i915/dp: Fix the device service IRQ DPCD_REV check Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 11/20] drm/i915/dp: Reprobe connector if getting/acking device IRQs fails Imre Deak
` (12 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
The DP_LINK_SERVICE_IRQ_VECTOR_ESI0 DPCD register is supported only
since DPCD REV 1.2, so fix the revision check accordingly.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 88be5a03af912..9feda949570ec 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5799,7 +5799,7 @@ static bool intel_dp_check_link_service_irq(struct intel_dp *intel_dp)
bool reprobe_needed = false;
u8 val;
- if (intel_dp->dpcd[DP_DPCD_REV] < 0x11)
+ if (intel_dp->dpcd[DP_DPCD_REV] < DP_DPCD_REV_12)
return false;
if (drm_dp_dpcd_readb(&intel_dp->aux,
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 11/20] drm/i915/dp: Reprobe connector if getting/acking device IRQs fails
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (9 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 10/20] drm/i915/dp: Fix the link " Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 12/20] drm/i915/dp: Reprobe connector if getting/acking link service " Imre Deak
` (11 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Luca Coelho
An AUX access failure during HPD IRQ handling should be handled by
falling back to a full connector detection, ensure that if the failure
happens while reading/acking a device service IRQ.
v2: Document intel_dp_check_device_service_irq()'s return value.
(Jani, Luca)
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Luca Coelho <luciano.coelho@intel.com>
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 25 +++++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 9feda949570ec..4a44059362139 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5772,16 +5772,24 @@ void intel_dp_check_link_state(struct intel_dp *intel_dp)
intel_encoder_link_check_queue_work(encoder, 0);
}
-static void intel_dp_check_device_service_irq(struct intel_dp *intel_dp)
+/*
+ * Return %true if a full connector reprobe is required due to a failure while
+ * reading or acking the device service IRQs.
+ */
+static bool intel_dp_check_device_service_irq(struct intel_dp *intel_dp)
{
struct intel_display *display = to_intel_display(intel_dp);
u8 val;
if (drm_dp_dpcd_readb(&intel_dp->aux,
- DP_DEVICE_SERVICE_IRQ_VECTOR, &val) != 1 || !val)
- return;
+ DP_DEVICE_SERVICE_IRQ_VECTOR, &val) != 1)
+ return true;
- drm_dp_dpcd_writeb(&intel_dp->aux, DP_DEVICE_SERVICE_IRQ_VECTOR, val);
+ if (!val)
+ return false;
+
+ if (drm_dp_dpcd_writeb(&intel_dp->aux, DP_DEVICE_SERVICE_IRQ_VECTOR, val) != 1)
+ return true;
if (val & DP_AUTOMATED_TEST_REQUEST)
intel_dp_test_request(intel_dp);
@@ -5791,6 +5799,8 @@ static void intel_dp_check_device_service_irq(struct intel_dp *intel_dp)
if (val & DP_SINK_SPECIFIC_IRQ)
drm_dbg_kms(display->drm, "Sink specific irq unhandled\n");
+
+ return false;
}
static bool intel_dp_check_link_service_irq(struct intel_dp *intel_dp)
@@ -5855,8 +5865,11 @@ intel_dp_short_pulse(struct intel_dp *intel_dp)
/* No need to proceed if we are going to do full detect */
return false;
- intel_dp_check_device_service_irq(intel_dp);
- reprobe_needed = intel_dp_check_link_service_irq(intel_dp);
+ if (intel_dp_check_device_service_irq(intel_dp))
+ reprobe_needed = true;
+
+ if (intel_dp_check_link_service_irq(intel_dp))
+ reprobe_needed = true;
/* Handle CEC interrupts, if any */
drm_dp_cec_irq(&intel_dp->aux);
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 12/20] drm/i915/dp: Reprobe connector if getting/acking link service IRQs fails
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (10 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 11/20] drm/i915/dp: Reprobe connector if getting/acking device IRQs fails Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 13/20] drm/i915/dp: Return early if getting/acking device " Imre Deak
` (10 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Luca Coelho
An AUX access failure during HPD IRQ handling should be handled by
falling back to a full connector detection, ensure that if the failure
happens while reading/acking a link service IRQ.
While at it add code comment documenting the return value of
intel_dp_check_link_service_irq().
v2: Docuement intel_dp_check_link_service_irq()'s return value. (Jani)
Cc: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 4a44059362139..f7e91fc16b5dd 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5803,6 +5803,11 @@ static bool intel_dp_check_device_service_irq(struct intel_dp *intel_dp)
return false;
}
+/*
+ * Return %true if a full connector reprobe is required due to a failure while
+ * reading or acking the link service IRQs or if the reprobing is required
+ * after handling a link service IRQ event.
+ */
static bool intel_dp_check_link_service_irq(struct intel_dp *intel_dp)
{
struct intel_display *display = to_intel_display(intel_dp);
@@ -5813,12 +5818,15 @@ static bool intel_dp_check_link_service_irq(struct intel_dp *intel_dp)
return false;
if (drm_dp_dpcd_readb(&intel_dp->aux,
- DP_LINK_SERVICE_IRQ_VECTOR_ESI0, &val) != 1 || !val)
+ DP_LINK_SERVICE_IRQ_VECTOR_ESI0, &val) != 1)
+ return true;
+
+ if (!val)
return false;
if (drm_dp_dpcd_writeb(&intel_dp->aux,
DP_LINK_SERVICE_IRQ_VECTOR_ESI0, val) != 1)
- return false;
+ return true;
if (val & RX_CAP_CHANGED)
reprobe_needed = true;
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 13/20] drm/i915/dp: Return early if getting/acking device service IRQs fails
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (11 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 12/20] drm/i915/dp: Reprobe connector if getting/acking link service " Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 14/20] drm/i915/dp: Return early if getting/ackink link " Imre Deak
` (9 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
If getting/acking the device service IRQs fail, the short HPD handler
should bail out, falling back to a full connector detection as in case
of any AUX access failures during the HPD handling. Do this by
separating the getting/acking and handling steps of the IRQs.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 37 ++++++++++++++++---------
1 file changed, 24 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index f7e91fc16b5dd..3db2fdc78c92b 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5776,31 +5776,39 @@ void intel_dp_check_link_state(struct intel_dp *intel_dp)
* Return %true if a full connector reprobe is required due to a failure while
* reading or acking the device service IRQs.
*/
-static bool intel_dp_check_device_service_irq(struct intel_dp *intel_dp)
+static bool intel_dp_get_and_ack_device_service_irq(struct intel_dp *intel_dp, u8 *irq_mask)
{
- struct intel_display *display = to_intel_display(intel_dp);
u8 val;
+ *irq_mask = 0;
+
if (drm_dp_dpcd_readb(&intel_dp->aux,
DP_DEVICE_SERVICE_IRQ_VECTOR, &val) != 1)
- return true;
-
- if (!val)
return false;
- if (drm_dp_dpcd_writeb(&intel_dp->aux, DP_DEVICE_SERVICE_IRQ_VECTOR, val) != 1)
+ if (!val)
return true;
- if (val & DP_AUTOMATED_TEST_REQUEST)
+ if (drm_dp_dpcd_writeb(&intel_dp->aux, DP_DEVICE_SERVICE_IRQ_VECTOR, val) != 1)
+ return false;
+
+ *irq_mask = val;
+
+ return true;
+}
+
+static void intel_dp_handle_device_service_irq(struct intel_dp *intel_dp, u8 irq_mask)
+{
+ struct intel_display *display = to_intel_display(intel_dp);
+
+ if (irq_mask & DP_AUTOMATED_TEST_REQUEST)
intel_dp_test_request(intel_dp);
- if (val & DP_CP_IRQ)
+ if (irq_mask & DP_CP_IRQ)
intel_hdcp_handle_cp_irq(intel_dp->attached_connector);
- if (val & DP_SINK_SPECIFIC_IRQ)
+ if (irq_mask & DP_SINK_SPECIFIC_IRQ)
drm_dbg_kms(display->drm, "Sink specific irq unhandled\n");
-
- return false;
}
/*
@@ -5859,6 +5867,7 @@ static bool
intel_dp_short_pulse(struct intel_dp *intel_dp)
{
bool reprobe_needed = false;
+ u8 irq_mask;
intel_dp_test_reset(intel_dp);
@@ -5873,8 +5882,10 @@ intel_dp_short_pulse(struct intel_dp *intel_dp)
/* No need to proceed if we are going to do full detect */
return false;
- if (intel_dp_check_device_service_irq(intel_dp))
- reprobe_needed = true;
+ if (!intel_dp_get_and_ack_device_service_irq(intel_dp, &irq_mask))
+ return false;
+
+ intel_dp_handle_device_service_irq(intel_dp, irq_mask);
if (intel_dp_check_link_service_irq(intel_dp))
reprobe_needed = true;
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 14/20] drm/i915/dp: Return early if getting/ackink link service IRQs fails
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (12 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 13/20] drm/i915/dp: Return early if getting/acking device " Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 15/20] drm/i915/dp: Read/ack sink count and sink IRQs for SST as it's done for MST Imre Deak
` (8 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
If getting/acking the link service IRQs fail, the short HPD handler
should bail out, falling back to a full connector detection as in case
of any AUX access failures during the HPD handling. Do this by
separating the getting/acking and handling steps of the IRQs.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 45 ++++++++++++++++---------
1 file changed, 29 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 3db2fdc78c92b..a98170f2732cd 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5811,38 +5811,48 @@ static void intel_dp_handle_device_service_irq(struct intel_dp *intel_dp, u8 irq
drm_dbg_kms(display->drm, "Sink specific irq unhandled\n");
}
-/*
- * Return %true if a full connector reprobe is required due to a failure while
- * reading or acking the link service IRQs or if the reprobing is required
- * after handling a link service IRQ event.
- */
-static bool intel_dp_check_link_service_irq(struct intel_dp *intel_dp)
+/* Return %true if reading and acking the link service IRQs succeeded. */
+static bool intel_dp_get_and_ack_link_service_irq(struct intel_dp *intel_dp, u8 *irq_mask)
{
- struct intel_display *display = to_intel_display(intel_dp);
- bool reprobe_needed = false;
u8 val;
+ *irq_mask = 0;
+
if (intel_dp->dpcd[DP_DPCD_REV] < DP_DPCD_REV_12)
- return false;
+ return true;
if (drm_dp_dpcd_readb(&intel_dp->aux,
DP_LINK_SERVICE_IRQ_VECTOR_ESI0, &val) != 1)
- return true;
+ return false;
if (!val)
- return false;
+ return true;
if (drm_dp_dpcd_writeb(&intel_dp->aux,
DP_LINK_SERVICE_IRQ_VECTOR_ESI0, val) != 1)
- return true;
+ return false;
- if (val & RX_CAP_CHANGED)
+ *irq_mask = val;
+
+ return true;
+}
+
+/*
+ * Return %true if a full connector reprobe is required after handling a link
+ * service IRQ event.
+ */
+static bool intel_dp_handle_link_service_irq(struct intel_dp *intel_dp, u8 irq_mask)
+{
+ struct intel_display *display = to_intel_display(intel_dp);
+ bool reprobe_needed = false;
+
+ if (irq_mask & RX_CAP_CHANGED)
reprobe_needed = true;
- if (val & HDMI_LINK_STATUS_CHANGED)
+ if (irq_mask & HDMI_LINK_STATUS_CHANGED)
intel_dp_handle_hdmi_link_status_change(intel_dp);
- if ((val & DP_TUNNELING_IRQ) &&
+ if ((irq_mask & DP_TUNNELING_IRQ) &&
drm_dp_tunnel_handle_irq(display->dp_tunnel_mgr,
&intel_dp->aux))
reprobe_needed = true;
@@ -5887,7 +5897,10 @@ intel_dp_short_pulse(struct intel_dp *intel_dp)
intel_dp_handle_device_service_irq(intel_dp, irq_mask);
- if (intel_dp_check_link_service_irq(intel_dp))
+ if (!intel_dp_get_and_ack_link_service_irq(intel_dp, &irq_mask))
+ return false;
+
+ if (intel_dp_handle_link_service_irq(intel_dp, irq_mask))
reprobe_needed = true;
/* Handle CEC interrupts, if any */
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 15/20] drm/i915/dp: Read/ack sink count and sink IRQs for SST as it's done for MST
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (13 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 14/20] drm/i915/dp: Return early if getting/ackink link " Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 16/20] drm/i915/dp: Print debug message for a sink connected off request Imre Deak
` (7 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Luca Coelho
Read and ack the sink count, sink device and link service IRQs for SST
the same way this is done for MST, the read/ack happening in separate
steps via an ESI (Event Status Indicator) vector.
The above way is more efficient, since on newer (DPCD_REV >= 1.2) sinks
the DP_SINK_COUNT_ESI..DP_LINK_SERVICE_IRQ_VECTOR_ESI0 registers can be
read out in one AUX transaction - and the 3 last one written in one
transaction. Also this allows sharing more of the SST and MST IRQ
handling code (done as a follow-up).
For now keep the current behavior of always reading the legacy
DP_SINK_COUNT, DP_DEVICE_SERVICE_IRQ_VECTOR registers and not reading
the DP_DEVICE_SERVICE_IRQ_VECTOR_ESI1 register.
v2: Document the ESI vector get/ack helper fnuctions' return value.
(Jani, Luca)
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Luca Coelho <luciano.coelho@intel.com>
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 142 +++++++++++++-----------
1 file changed, 79 insertions(+), 63 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index a98170f2732cd..595a2232ed718 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -4952,6 +4952,76 @@ static bool intel_dp_ack_sink_irq_esi(struct intel_dp *intel_dp, u8 esi[4])
return false;
}
+/* Return %true if reading the ESI vector succeeded, %false otherwise. */
+static bool intel_dp_get_sink_irq_esi_sst(struct intel_dp *intel_dp, u8 esi[4])
+{
+ memset(esi, 0, 4);
+
+ /*
+ * TODO: For DP_DPCD_REV >= 0x12 read
+ * DP_SINK_COUNT_ESI and DP_DEVICE_SERVICE_IRQ_VECTOR_ESI0.
+ */
+ if (drm_dp_dpcd_read_data(&intel_dp->aux, DP_SINK_COUNT, esi, 2) != 0)
+ return false;
+
+ if (intel_dp->dpcd[DP_DPCD_REV] < DP_DPCD_REV_12)
+ return true;
+
+ /* TODO: Read DP_DEVICE_SERVICE_IRQ_VECTOR_ESI1 as well */
+ if (drm_dp_dpcd_read_byte(&intel_dp->aux, DP_LINK_SERVICE_IRQ_VECTOR_ESI0, &esi[3]) != 0)
+ return false;
+
+ return true;
+}
+
+/* Return %true if acking the ESI vector IRQ events succeeded, %false otherwise. */
+static bool intel_dp_ack_sink_irq_esi_sst(struct intel_dp *intel_dp, u8 esi[4])
+{
+ /*
+ * TODO: For DP_DPCD_REV >= 0x12 write
+ * DP_DEVICE_SERVICE_IRQ_VECTOR_ESI0
+ */
+ if (drm_dp_dpcd_write_byte(&intel_dp->aux, DP_DEVICE_SERVICE_IRQ_VECTOR, esi[1]) != 0)
+ return false;
+
+ if (intel_dp->dpcd[DP_DPCD_REV] < DP_DPCD_REV_12)
+ return true;
+
+ /* TODO: Read DP_DEVICE_SERVICE_IRQ_VECTOR_ESI1 as well */
+ if (drm_dp_dpcd_write_byte(&intel_dp->aux, DP_LINK_SERVICE_IRQ_VECTOR_ESI0, esi[3]) != 0)
+ return false;
+
+ return true;
+}
+
+/*
+ * Return %true if reading the ESI vector and acking the ESI IRQ events succeeded,
+ * %false otherwise.
+ */
+static bool intel_dp_get_and_ack_sink_irq_esi_sst(struct intel_dp *intel_dp, u8 esi[4])
+{
+ struct intel_display *display = to_intel_display(intel_dp);
+ struct intel_connector *connector = intel_dp->attached_connector;
+ struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
+
+ if (!intel_dp_get_sink_irq_esi_sst(intel_dp, esi))
+ return false;
+
+ drm_dbg_kms(display->drm,
+ "[CONNECTOR:%d:%s][ENCODER:%d:%s] DPRX ESI: %4ph\n",
+ connector->base.base.id, connector->base.name,
+ encoder->base.base.id, encoder->base.name,
+ esi);
+
+ if (mem_is_zero(&esi[1], 3))
+ return true;
+
+ if (!intel_dp_ack_sink_irq_esi_sst(intel_dp, esi))
+ return false;
+
+ return true;
+}
+
bool
intel_dp_needs_vsc_sdp(const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
@@ -5772,31 +5842,6 @@ void intel_dp_check_link_state(struct intel_dp *intel_dp)
intel_encoder_link_check_queue_work(encoder, 0);
}
-/*
- * Return %true if a full connector reprobe is required due to a failure while
- * reading or acking the device service IRQs.
- */
-static bool intel_dp_get_and_ack_device_service_irq(struct intel_dp *intel_dp, u8 *irq_mask)
-{
- u8 val;
-
- *irq_mask = 0;
-
- if (drm_dp_dpcd_readb(&intel_dp->aux,
- DP_DEVICE_SERVICE_IRQ_VECTOR, &val) != 1)
- return false;
-
- if (!val)
- return true;
-
- if (drm_dp_dpcd_writeb(&intel_dp->aux, DP_DEVICE_SERVICE_IRQ_VECTOR, val) != 1)
- return false;
-
- *irq_mask = val;
-
- return true;
-}
-
static void intel_dp_handle_device_service_irq(struct intel_dp *intel_dp, u8 irq_mask)
{
struct intel_display *display = to_intel_display(intel_dp);
@@ -5811,31 +5856,6 @@ static void intel_dp_handle_device_service_irq(struct intel_dp *intel_dp, u8 irq
drm_dbg_kms(display->drm, "Sink specific irq unhandled\n");
}
-/* Return %true if reading and acking the link service IRQs succeeded. */
-static bool intel_dp_get_and_ack_link_service_irq(struct intel_dp *intel_dp, u8 *irq_mask)
-{
- u8 val;
-
- *irq_mask = 0;
-
- if (intel_dp->dpcd[DP_DPCD_REV] < DP_DPCD_REV_12)
- return true;
-
- if (drm_dp_dpcd_readb(&intel_dp->aux,
- DP_LINK_SERVICE_IRQ_VECTOR_ESI0, &val) != 1)
- return false;
-
- if (!val)
- return true;
-
- if (drm_dp_dpcd_writeb(&intel_dp->aux,
- DP_LINK_SERVICE_IRQ_VECTOR_ESI0, val) != 1)
- return false;
-
- *irq_mask = val;
-
- return true;
-}
/*
* Return %true if a full connector reprobe is required after handling a link
@@ -5877,30 +5897,26 @@ static bool
intel_dp_short_pulse(struct intel_dp *intel_dp)
{
bool reprobe_needed = false;
- u8 irq_mask;
+ u8 esi[4] = {};
intel_dp_test_reset(intel_dp);
+ if (!intel_dp_get_and_ack_sink_irq_esi_sst(intel_dp, esi))
+ return false;
+
/*
- * Now read the DPCD to see if it's actually running
* If the current value of sink count doesn't match with
- * the value that was stored earlier or dpcd read failed
- * we need to do full detection
+ * the value that was stored earlier we need to do full
+ * detection.
*/
if (intel_dp_has_sink_count(intel_dp) &&
- drm_dp_read_sink_count(&intel_dp->aux) != intel_dp->sink_count)
+ DP_GET_SINK_COUNT(esi[0]) != intel_dp->sink_count)
/* No need to proceed if we are going to do full detect */
return false;
- if (!intel_dp_get_and_ack_device_service_irq(intel_dp, &irq_mask))
- return false;
+ intel_dp_handle_device_service_irq(intel_dp, esi[1]);
- intel_dp_handle_device_service_irq(intel_dp, irq_mask);
-
- if (!intel_dp_get_and_ack_link_service_irq(intel_dp, &irq_mask))
- return false;
-
- if (intel_dp_handle_link_service_irq(intel_dp, irq_mask))
+ if (intel_dp_handle_link_service_irq(intel_dp, esi[3]))
reprobe_needed = true;
/* Handle CEC interrupts, if any */
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 16/20] drm/i915/dp: Print debug message for a sink connected off request
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (14 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 15/20] drm/i915/dp: Read/ack sink count and sink IRQs for SST as it's done for MST Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 17/20] drm/i915/dp: Check SST link status while handling link service IRQs Imre Deak
` (6 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
So far the CONNECTED_OFF_ENTRY_REQUESTED request was accepted only
implicitly, by acking all the IRQs raised by the sink. Make this
explicit by printing a debug message.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 595a2232ed718..58c52a9974c46 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5864,6 +5864,8 @@ static void intel_dp_handle_device_service_irq(struct intel_dp *intel_dp, u8 irq
static bool intel_dp_handle_link_service_irq(struct intel_dp *intel_dp, u8 irq_mask)
{
struct intel_display *display = to_intel_display(intel_dp);
+ struct intel_connector *connector = intel_dp->attached_connector;
+ struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
bool reprobe_needed = false;
if (irq_mask & RX_CAP_CHANGED)
@@ -5872,6 +5874,12 @@ static bool intel_dp_handle_link_service_irq(struct intel_dp *intel_dp, u8 irq_m
if (irq_mask & HDMI_LINK_STATUS_CHANGED)
intel_dp_handle_hdmi_link_status_change(intel_dp);
+ if (irq_mask & CONNECTED_OFF_ENTRY_REQUESTED)
+ drm_dbg_kms(display->drm,
+ "[CONNECTOR:%d:%s][ENCODER:%d:%s] Allowing connected off request\n",
+ connector->base.base.id, connector->base.name,
+ encoder->base.base.id, encoder->base.name);
+
if ((irq_mask & DP_TUNNELING_IRQ) &&
drm_dp_tunnel_handle_irq(display->dp_tunnel_mgr,
&intel_dp->aux))
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 17/20] drm/i915/dp: Check SST link status while handling link service IRQs
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (15 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 16/20] drm/i915/dp: Print debug message for a sink connected off request Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 18/20] drm/i915/dp_mst: Reuse intel_dp_handle_link_service_irq() Imre Deak
` (5 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
Move checking the link status for SST to
intel_dp_handle_link_service_irq(). This is the logical place for the
check which should only happen in response to a LINK_STATUS_CHANGE sink
IRQ. This IRQ is only supported by DPCD revision >= 1.2, so for sinks
with an older DPCD revision the link status is checked in response to
any HPD IRQ. For newer DPCD revisions however the link status check can
be made conditional on LINK_STATUS_CHANGE.
For now keep the current behavior of always forcing a link status check
regardless of LINK_STATUS_CHANGE being set or not.
This also prepares for a follow-up change sharing the link service IRQ
handler for SST and MST (on MST the link status check only happening in
response to a LINK_STATUS_CHANGE IRQ).
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 58c52a9974c46..cecfca0b0bb7a 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5871,6 +5871,9 @@ static bool intel_dp_handle_link_service_irq(struct intel_dp *intel_dp, u8 irq_m
if (irq_mask & RX_CAP_CHANGED)
reprobe_needed = true;
+ if (irq_mask & LINK_STATUS_CHANGED)
+ intel_dp_check_link_state(intel_dp);
+
if (irq_mask & HDMI_LINK_STATUS_CHANGED)
intel_dp_handle_hdmi_link_status_change(intel_dp);
@@ -5924,14 +5927,18 @@ intel_dp_short_pulse(struct intel_dp *intel_dp)
intel_dp_handle_device_service_irq(intel_dp, esi[1]);
+ /*
+ * Force checking the link status for DPCD_REV < 1.2
+ * TODO: let the link status check depend on LINK_STATUS_CHANGED
+ * for DPCD_REV >= 1.2
+ */
+ esi[3] |= LINK_STATUS_CHANGED;
if (intel_dp_handle_link_service_irq(intel_dp, esi[3]))
reprobe_needed = true;
/* Handle CEC interrupts, if any */
drm_dp_cec_irq(&intel_dp->aux);
- intel_dp_check_link_state(intel_dp);
-
if (READ_ONCE(intel_dp->downstream_port_changed)) {
WRITE_ONCE(intel_dp->downstream_port_changed, false);
reprobe_needed = true;
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 18/20] drm/i915/dp_mst: Reuse intel_dp_handle_link_service_irq()
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (16 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 17/20] drm/i915/dp: Check SST link status while handling link service IRQs Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 19/20] drm/i915/dp: Ack only the handled device service IRQs Imre Deak
` (4 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
Use intel_dp_handle_link_service_irq() while handling an MST HPD IRQ,
instead of open-coding this.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index cecfca0b0bb7a..05e3071f33e27 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5514,6 +5514,8 @@ intel_dp_mst_hpd_irq(struct intel_dp *intel_dp, u8 *esi, u8 *ack)
}
}
+static bool intel_dp_handle_link_service_irq(struct intel_dp *intel_dp, u8 irq_mask);
+
/**
* intel_dp_check_mst_status - service any pending MST interrupts, check link status
* @intel_dp: Intel DP struct
@@ -5561,14 +5563,7 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
if (ack[1] & (DP_DOWN_REP_MSG_RDY | DP_UP_REQ_MSG_RDY))
drm_dp_mst_hpd_irq_send_new_request(&intel_dp->mst.mgr);
- if (ack[3] & RX_CAP_CHANGED)
- reprobe_needed = true;
-
- if ((ack[3] & LINK_STATUS_CHANGED) || intel_dp->link.force_retrain)
- intel_dp_check_link_state(intel_dp);
-
- if ((ack[3] & DP_TUNNELING_IRQ) &&
- drm_dp_tunnel_handle_irq(display->dp_tunnel_mgr, &intel_dp->aux))
+ if (intel_dp_handle_link_service_irq(intel_dp, ack[3]))
reprobe_needed = true;
}
@@ -5871,7 +5866,7 @@ static bool intel_dp_handle_link_service_irq(struct intel_dp *intel_dp, u8 irq_m
if (irq_mask & RX_CAP_CHANGED)
reprobe_needed = true;
- if (irq_mask & LINK_STATUS_CHANGED)
+ if ((irq_mask & LINK_STATUS_CHANGED) || intel_dp->link.force_retrain)
intel_dp_check_link_state(intel_dp);
if (irq_mask & HDMI_LINK_STATUS_CHANGED)
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 19/20] drm/i915/dp: Ack only the handled device service IRQs
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (17 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 18/20] drm/i915/dp_mst: Reuse intel_dp_handle_link_service_irq() Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 16:46 ` [PATCH v3 20/20] drm/i915/dp: Ack only the handled link " Imre Deak
` (3 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
Only those IRQs should be acked that are handled, however for SST all
IRQs triggered by the sink are acked. This can be a problem for flags
that are reserved/reading zero at a given moment, but become used for
some purpose - with a side-effect if set - in a future DPCD revision.
Fix the above by acking only those device service IRQs that will be
handled. While at it add asserts that only the known/acked device
service IRQs are handled both in the MST and SST case.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 05e3071f33e27..866aeeb8f4614 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -4916,6 +4916,14 @@ intel_dp_mst_disconnect(struct intel_dp *intel_dp)
drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst.mgr, intel_dp->is_mst);
}
+#define INTEL_DP_DEVICE_SERVICE_IRQ_MASK_SST (DP_AUTOMATED_TEST_REQUEST | \
+ DP_CP_IRQ | \
+ DP_SINK_SPECIFIC_IRQ)
+
+#define INTEL_DP_DEVICE_SERVICE_IRQ_MASK_MST (DP_CP_IRQ | \
+ DP_DOWN_REP_MSG_RDY | \
+ DP_UP_REQ_MSG_RDY)
+
static bool
intel_dp_get_sink_irq_esi(struct intel_dp *intel_dp, u8 *esi)
{
@@ -5013,6 +5021,8 @@ static bool intel_dp_get_and_ack_sink_irq_esi_sst(struct intel_dp *intel_dp, u8
encoder->base.base.id, encoder->base.name,
esi);
+ esi[1] &= INTEL_DP_DEVICE_SERVICE_IRQ_MASK_SST;
+
if (mem_is_zero(&esi[1], 3))
return true;
@@ -5557,6 +5567,8 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
if (mem_is_zero(ack, sizeof(ack)))
break;
+ drm_WARN_ON(display->drm, ack[1] & ~INTEL_DP_DEVICE_SERVICE_IRQ_MASK_MST);
+
if (!intel_dp_ack_sink_irq_esi(intel_dp, ack))
drm_dbg_kms(display->drm, "Failed to ack ESI\n");
@@ -5841,6 +5853,8 @@ static void intel_dp_handle_device_service_irq(struct intel_dp *intel_dp, u8 irq
{
struct intel_display *display = to_intel_display(intel_dp);
+ drm_WARN_ON(display->drm, irq_mask & ~INTEL_DP_DEVICE_SERVICE_IRQ_MASK_SST);
+
if (irq_mask & DP_AUTOMATED_TEST_REQUEST)
intel_dp_test_request(intel_dp);
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 20/20] drm/i915/dp: Ack only the handled link service IRQs
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (18 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 19/20] drm/i915/dp: Ack only the handled device service IRQs Imre Deak
@ 2026-02-25 16:46 ` Imre Deak
2026-02-25 17:33 ` ✓ CI.KUnit: success for drm/i915/dp: Fix few SST HPD IRQ handling issues (rev3) Patchwork
` (2 subsequent siblings)
22 siblings, 0 replies; 24+ messages in thread
From: Imre Deak @ 2026-02-25 16:46 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Luca Coelho
Ack only those SST link service IRQs that will be handled, similarly to
device service IRQs. While at it add asserts that only the known/acked
link service IRQs are handled both in the MST and SST case.
Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 866aeeb8f4614..b2fe0841ea420 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -4924,6 +4924,16 @@ intel_dp_mst_disconnect(struct intel_dp *intel_dp)
DP_DOWN_REP_MSG_RDY | \
DP_UP_REQ_MSG_RDY)
+#define INTEL_DP_LINK_SERVICE_IRQ_MASK_SST (RX_CAP_CHANGED | \
+ LINK_STATUS_CHANGED | \
+ HDMI_LINK_STATUS_CHANGED | \
+ CONNECTED_OFF_ENTRY_REQUESTED | \
+ DP_TUNNELING_IRQ)
+
+#define INTEL_DP_LINK_SERVICE_IRQ_MASK_MST (RX_CAP_CHANGED | \
+ LINK_STATUS_CHANGED | \
+ DP_TUNNELING_IRQ)
+
static bool
intel_dp_get_sink_irq_esi(struct intel_dp *intel_dp, u8 *esi)
{
@@ -5022,6 +5032,7 @@ static bool intel_dp_get_and_ack_sink_irq_esi_sst(struct intel_dp *intel_dp, u8
esi);
esi[1] &= INTEL_DP_DEVICE_SERVICE_IRQ_MASK_SST;
+ esi[3] &= INTEL_DP_LINK_SERVICE_IRQ_MASK_SST;
if (mem_is_zero(&esi[1], 3))
return true;
@@ -5560,7 +5571,7 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
drm_dbg_kms(display->drm, "DPRX ESI: %4ph\n", esi);
- ack[3] |= esi[3] & (RX_CAP_CHANGED | LINK_STATUS_CHANGED | DP_TUNNELING_IRQ);
+ ack[3] |= esi[3] & INTEL_DP_LINK_SERVICE_IRQ_MASK_MST;
intel_dp_mst_hpd_irq(intel_dp, esi, ack);
@@ -5568,6 +5579,7 @@ intel_dp_check_mst_status(struct intel_dp *intel_dp)
break;
drm_WARN_ON(display->drm, ack[1] & ~INTEL_DP_DEVICE_SERVICE_IRQ_MASK_MST);
+ drm_WARN_ON(display->drm, ack[3] & ~INTEL_DP_LINK_SERVICE_IRQ_MASK_MST);
if (!intel_dp_ack_sink_irq_esi(intel_dp, ack))
drm_dbg_kms(display->drm, "Failed to ack ESI\n");
@@ -5877,6 +5889,9 @@ static bool intel_dp_handle_link_service_irq(struct intel_dp *intel_dp, u8 irq_m
struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
bool reprobe_needed = false;
+ drm_WARN_ON(display->drm, irq_mask & ~(INTEL_DP_LINK_SERVICE_IRQ_MASK_SST |
+ INTEL_DP_LINK_SERVICE_IRQ_MASK_MST));
+
if (irq_mask & RX_CAP_CHANGED)
reprobe_needed = true;
--
2.49.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* ✓ CI.KUnit: success for drm/i915/dp: Fix few SST HPD IRQ handling issues (rev3)
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (19 preceding siblings ...)
2026-02-25 16:46 ` [PATCH v3 20/20] drm/i915/dp: Ack only the handled link " Imre Deak
@ 2026-02-25 17:33 ` Patchwork
2026-02-25 18:13 ` ✓ Xe.CI.BAT: " Patchwork
2026-02-25 20:48 ` ✗ Xe.CI.FULL: failure " Patchwork
22 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2026-02-25 17:33 UTC (permalink / raw)
To: Imre Deak; +Cc: intel-xe
== Series Details ==
Series: drm/i915/dp: Fix few SST HPD IRQ handling issues (rev3)
URL : https://patchwork.freedesktop.org/series/150799/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[17:32:23] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:32:27] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[17:32:58] Starting KUnit Kernel (1/1)...
[17:32:58] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:32:58] ================== guc_buf (11 subtests) ===================
[17:32:58] [PASSED] test_smallest
[17:32:58] [PASSED] test_largest
[17:32:58] [PASSED] test_granular
[17:32:58] [PASSED] test_unique
[17:32:58] [PASSED] test_overlap
[17:32:58] [PASSED] test_reusable
[17:32:58] [PASSED] test_too_big
[17:32:58] [PASSED] test_flush
[17:32:58] [PASSED] test_lookup
[17:32:58] [PASSED] test_data
[17:32:58] [PASSED] test_class
[17:32:58] ===================== [PASSED] guc_buf =====================
[17:32:58] =================== guc_dbm (7 subtests) ===================
[17:32:58] [PASSED] test_empty
[17:32:58] [PASSED] test_default
[17:32:58] ======================== test_size ========================
[17:32:58] [PASSED] 4
[17:32:58] [PASSED] 8
[17:32:58] [PASSED] 32
[17:32:58] [PASSED] 256
[17:32:58] ==================== [PASSED] test_size ====================
[17:32:58] ======================= test_reuse ========================
[17:32:58] [PASSED] 4
[17:32:58] [PASSED] 8
[17:32:58] [PASSED] 32
[17:32:58] [PASSED] 256
[17:32:58] =================== [PASSED] test_reuse ====================
[17:32:58] =================== test_range_overlap ====================
[17:32:58] [PASSED] 4
[17:32:58] [PASSED] 8
[17:32:58] [PASSED] 32
[17:32:58] [PASSED] 256
[17:32:58] =============== [PASSED] test_range_overlap ================
[17:32:58] =================== test_range_compact ====================
[17:32:58] [PASSED] 4
[17:32:58] [PASSED] 8
[17:32:58] [PASSED] 32
[17:32:58] [PASSED] 256
[17:32:58] =============== [PASSED] test_range_compact ================
[17:32:58] ==================== test_range_spare =====================
[17:32:58] [PASSED] 4
[17:32:58] [PASSED] 8
[17:32:58] [PASSED] 32
[17:32:58] [PASSED] 256
[17:32:58] ================ [PASSED] test_range_spare =================
[17:32:58] ===================== [PASSED] guc_dbm =====================
[17:32:58] =================== guc_idm (6 subtests) ===================
[17:32:58] [PASSED] bad_init
[17:32:58] [PASSED] no_init
[17:32:58] [PASSED] init_fini
[17:32:58] [PASSED] check_used
[17:32:58] [PASSED] check_quota
[17:32:58] [PASSED] check_all
[17:32:58] ===================== [PASSED] guc_idm =====================
[17:32:58] ================== no_relay (3 subtests) ===================
[17:32:58] [PASSED] xe_drops_guc2pf_if_not_ready
[17:32:58] [PASSED] xe_drops_guc2vf_if_not_ready
[17:32:58] [PASSED] xe_rejects_send_if_not_ready
[17:32:58] ==================== [PASSED] no_relay =====================
[17:32:58] ================== pf_relay (14 subtests) ==================
[17:32:58] [PASSED] pf_rejects_guc2pf_too_short
[17:32:58] [PASSED] pf_rejects_guc2pf_too_long
[17:32:58] [PASSED] pf_rejects_guc2pf_no_payload
[17:32:58] [PASSED] pf_fails_no_payload
[17:32:58] [PASSED] pf_fails_bad_origin
[17:32:58] [PASSED] pf_fails_bad_type
[17:32:58] [PASSED] pf_txn_reports_error
[17:32:58] [PASSED] pf_txn_sends_pf2guc
[17:32:58] [PASSED] pf_sends_pf2guc
[17:32:58] [SKIPPED] pf_loopback_nop
[17:32:58] [SKIPPED] pf_loopback_echo
[17:32:58] [SKIPPED] pf_loopback_fail
[17:32:58] [SKIPPED] pf_loopback_busy
[17:32:58] [SKIPPED] pf_loopback_retry
[17:32:58] ==================== [PASSED] pf_relay =====================
[17:32:58] ================== vf_relay (3 subtests) ===================
[17:32:58] [PASSED] vf_rejects_guc2vf_too_short
[17:32:58] [PASSED] vf_rejects_guc2vf_too_long
[17:32:58] [PASSED] vf_rejects_guc2vf_no_payload
[17:32:58] ==================== [PASSED] vf_relay =====================
[17:32:58] ================ pf_gt_config (9 subtests) =================
[17:32:58] [PASSED] fair_contexts_1vf
[17:32:58] [PASSED] fair_doorbells_1vf
[17:32:58] [PASSED] fair_ggtt_1vf
[17:32:58] ====================== fair_vram_1vf ======================
[17:32:58] [PASSED] 3.50 GiB
[17:32:58] [PASSED] 11.5 GiB
[17:32:58] [PASSED] 15.5 GiB
[17:32:58] [PASSED] 31.5 GiB
[17:32:58] [PASSED] 63.5 GiB
[17:32:58] [PASSED] 13.9 GiB
[17:32:58] ================== [PASSED] fair_vram_1vf ==================
[17:32:58] ================ fair_vram_1vf_admin_only =================
[17:32:58] [PASSED] 3.50 GiB
[17:32:58] [PASSED] 11.5 GiB
[17:32:58] [PASSED] 15.5 GiB
[17:32:58] [PASSED] 31.5 GiB
[17:32:58] [PASSED] 63.5 GiB
[17:32:58] [PASSED] 13.9 GiB
[17:32:58] ============ [PASSED] fair_vram_1vf_admin_only =============
[17:32:58] ====================== fair_contexts ======================
[17:32:58] [PASSED] 1 VF
[17:32:58] [PASSED] 2 VFs
[17:32:58] [PASSED] 3 VFs
[17:32:58] [PASSED] 4 VFs
[17:32:58] [PASSED] 5 VFs
[17:32:58] [PASSED] 6 VFs
[17:32:58] [PASSED] 7 VFs
[17:32:58] [PASSED] 8 VFs
[17:32:58] [PASSED] 9 VFs
[17:32:58] [PASSED] 10 VFs
[17:32:58] [PASSED] 11 VFs
[17:32:58] [PASSED] 12 VFs
[17:32:58] [PASSED] 13 VFs
[17:32:58] [PASSED] 14 VFs
[17:32:58] [PASSED] 15 VFs
[17:32:58] [PASSED] 16 VFs
[17:32:58] [PASSED] 17 VFs
[17:32:58] [PASSED] 18 VFs
[17:32:58] [PASSED] 19 VFs
[17:32:58] [PASSED] 20 VFs
[17:32:58] [PASSED] 21 VFs
[17:32:58] [PASSED] 22 VFs
[17:32:58] [PASSED] 23 VFs
[17:32:58] [PASSED] 24 VFs
[17:32:58] [PASSED] 25 VFs
[17:32:58] [PASSED] 26 VFs
[17:32:58] [PASSED] 27 VFs
[17:32:58] [PASSED] 28 VFs
[17:32:58] [PASSED] 29 VFs
[17:32:58] [PASSED] 30 VFs
[17:32:58] [PASSED] 31 VFs
[17:32:58] [PASSED] 32 VFs
[17:32:58] [PASSED] 33 VFs
[17:32:58] [PASSED] 34 VFs
[17:32:58] [PASSED] 35 VFs
[17:32:58] [PASSED] 36 VFs
[17:32:58] [PASSED] 37 VFs
[17:32:58] [PASSED] 38 VFs
[17:32:58] [PASSED] 39 VFs
[17:32:58] [PASSED] 40 VFs
[17:32:58] [PASSED] 41 VFs
[17:32:58] [PASSED] 42 VFs
[17:32:58] [PASSED] 43 VFs
[17:32:58] [PASSED] 44 VFs
[17:32:58] [PASSED] 45 VFs
[17:32:58] [PASSED] 46 VFs
[17:32:58] [PASSED] 47 VFs
[17:32:58] [PASSED] 48 VFs
[17:32:58] [PASSED] 49 VFs
[17:32:58] [PASSED] 50 VFs
[17:32:58] [PASSED] 51 VFs
[17:32:58] [PASSED] 52 VFs
[17:32:58] [PASSED] 53 VFs
[17:32:58] [PASSED] 54 VFs
[17:32:58] [PASSED] 55 VFs
[17:32:58] [PASSED] 56 VFs
[17:32:58] [PASSED] 57 VFs
[17:32:58] [PASSED] 58 VFs
[17:32:58] [PASSED] 59 VFs
[17:32:58] [PASSED] 60 VFs
[17:32:58] [PASSED] 61 VFs
[17:32:58] [PASSED] 62 VFs
[17:32:58] [PASSED] 63 VFs
[17:32:58] ================== [PASSED] fair_contexts ==================
[17:32:58] ===================== fair_doorbells ======================
[17:32:58] [PASSED] 1 VF
[17:32:58] [PASSED] 2 VFs
[17:32:58] [PASSED] 3 VFs
[17:32:58] [PASSED] 4 VFs
[17:32:58] [PASSED] 5 VFs
[17:32:58] [PASSED] 6 VFs
[17:32:58] [PASSED] 7 VFs
[17:32:58] [PASSED] 8 VFs
[17:32:58] [PASSED] 9 VFs
[17:32:58] [PASSED] 10 VFs
[17:32:58] [PASSED] 11 VFs
[17:32:58] [PASSED] 12 VFs
[17:32:58] [PASSED] 13 VFs
[17:32:58] [PASSED] 14 VFs
[17:32:58] [PASSED] 15 VFs
[17:32:58] [PASSED] 16 VFs
[17:32:58] [PASSED] 17 VFs
[17:32:58] [PASSED] 18 VFs
[17:32:58] [PASSED] 19 VFs
[17:32:58] [PASSED] 20 VFs
[17:32:58] [PASSED] 21 VFs
[17:32:58] [PASSED] 22 VFs
[17:32:58] [PASSED] 23 VFs
[17:32:58] [PASSED] 24 VFs
[17:32:58] [PASSED] 25 VFs
[17:32:58] [PASSED] 26 VFs
[17:32:58] [PASSED] 27 VFs
[17:32:58] [PASSED] 28 VFs
[17:32:58] [PASSED] 29 VFs
[17:32:58] [PASSED] 30 VFs
[17:32:58] [PASSED] 31 VFs
[17:32:58] [PASSED] 32 VFs
[17:32:58] [PASSED] 33 VFs
[17:32:58] [PASSED] 34 VFs
[17:32:58] [PASSED] 35 VFs
[17:32:58] [PASSED] 36 VFs
[17:32:58] [PASSED] 37 VFs
[17:32:58] [PASSED] 38 VFs
[17:32:58] [PASSED] 39 VFs
[17:32:58] [PASSED] 40 VFs
[17:32:58] [PASSED] 41 VFs
[17:32:58] [PASSED] 42 VFs
[17:32:58] [PASSED] 43 VFs
[17:32:58] [PASSED] 44 VFs
[17:32:58] [PASSED] 45 VFs
[17:32:58] [PASSED] 46 VFs
[17:32:58] [PASSED] 47 VFs
[17:32:58] [PASSED] 48 VFs
[17:32:58] [PASSED] 49 VFs
[17:32:58] [PASSED] 50 VFs
[17:32:58] [PASSED] 51 VFs
[17:32:58] [PASSED] 52 VFs
[17:32:58] [PASSED] 53 VFs
[17:32:58] [PASSED] 54 VFs
[17:32:58] [PASSED] 55 VFs
[17:32:58] [PASSED] 56 VFs
[17:32:58] [PASSED] 57 VFs
[17:32:58] [PASSED] 58 VFs
[17:32:58] [PASSED] 59 VFs
[17:32:58] [PASSED] 60 VFs
[17:32:58] [PASSED] 61 VFs
[17:32:58] [PASSED] 62 VFs
[17:32:58] [PASSED] 63 VFs
[17:32:58] ================= [PASSED] fair_doorbells ==================
[17:32:58] ======================== fair_ggtt ========================
[17:32:58] [PASSED] 1 VF
[17:32:58] [PASSED] 2 VFs
[17:32:58] [PASSED] 3 VFs
[17:32:58] [PASSED] 4 VFs
[17:32:58] [PASSED] 5 VFs
[17:32:58] [PASSED] 6 VFs
[17:32:58] [PASSED] 7 VFs
[17:32:58] [PASSED] 8 VFs
[17:32:58] [PASSED] 9 VFs
[17:32:58] [PASSED] 10 VFs
[17:32:58] [PASSED] 11 VFs
[17:32:58] [PASSED] 12 VFs
[17:32:58] [PASSED] 13 VFs
[17:32:58] [PASSED] 14 VFs
[17:32:58] [PASSED] 15 VFs
[17:32:58] [PASSED] 16 VFs
[17:32:58] [PASSED] 17 VFs
[17:32:58] [PASSED] 18 VFs
[17:32:58] [PASSED] 19 VFs
[17:32:58] [PASSED] 20 VFs
[17:32:58] [PASSED] 21 VFs
[17:32:58] [PASSED] 22 VFs
[17:32:58] [PASSED] 23 VFs
[17:32:58] [PASSED] 24 VFs
[17:32:58] [PASSED] 25 VFs
[17:32:58] [PASSED] 26 VFs
[17:32:58] [PASSED] 27 VFs
[17:32:58] [PASSED] 28 VFs
[17:32:58] [PASSED] 29 VFs
[17:32:58] [PASSED] 30 VFs
[17:32:58] [PASSED] 31 VFs
[17:32:58] [PASSED] 32 VFs
[17:32:58] [PASSED] 33 VFs
[17:32:58] [PASSED] 34 VFs
[17:32:58] [PASSED] 35 VFs
[17:32:58] [PASSED] 36 VFs
[17:32:58] [PASSED] 37 VFs
[17:32:58] [PASSED] 38 VFs
[17:32:58] [PASSED] 39 VFs
[17:32:58] [PASSED] 40 VFs
[17:32:58] [PASSED] 41 VFs
[17:32:58] [PASSED] 42 VFs
[17:32:58] [PASSED] 43 VFs
[17:32:58] [PASSED] 44 VFs
[17:32:58] [PASSED] 45 VFs
[17:32:58] [PASSED] 46 VFs
[17:32:58] [PASSED] 47 VFs
[17:32:58] [PASSED] 48 VFs
[17:32:58] [PASSED] 49 VFs
[17:32:58] [PASSED] 50 VFs
[17:32:58] [PASSED] 51 VFs
[17:32:58] [PASSED] 52 VFs
[17:32:58] [PASSED] 53 VFs
[17:32:58] [PASSED] 54 VFs
[17:32:58] [PASSED] 55 VFs
[17:32:58] [PASSED] 56 VFs
[17:32:58] [PASSED] 57 VFs
[17:32:58] [PASSED] 58 VFs
[17:32:58] [PASSED] 59 VFs
[17:32:58] [PASSED] 60 VFs
[17:32:58] [PASSED] 61 VFs
[17:32:58] [PASSED] 62 VFs
[17:32:58] [PASSED] 63 VFs
[17:32:58] ==================== [PASSED] fair_ggtt ====================
[17:32:58] ======================== fair_vram ========================
[17:32:58] [PASSED] 1 VF
[17:32:58] [PASSED] 2 VFs
[17:32:58] [PASSED] 3 VFs
[17:32:58] [PASSED] 4 VFs
[17:32:58] [PASSED] 5 VFs
[17:32:58] [PASSED] 6 VFs
[17:32:58] [PASSED] 7 VFs
[17:32:58] [PASSED] 8 VFs
[17:32:58] [PASSED] 9 VFs
[17:32:58] [PASSED] 10 VFs
[17:32:58] [PASSED] 11 VFs
[17:32:58] [PASSED] 12 VFs
[17:32:58] [PASSED] 13 VFs
[17:32:58] [PASSED] 14 VFs
[17:32:58] [PASSED] 15 VFs
[17:32:58] [PASSED] 16 VFs
[17:32:58] [PASSED] 17 VFs
[17:32:58] [PASSED] 18 VFs
[17:32:58] [PASSED] 19 VFs
[17:32:58] [PASSED] 20 VFs
[17:32:58] [PASSED] 21 VFs
[17:32:58] [PASSED] 22 VFs
[17:32:58] [PASSED] 23 VFs
[17:32:58] [PASSED] 24 VFs
[17:32:58] [PASSED] 25 VFs
[17:32:58] [PASSED] 26 VFs
[17:32:58] [PASSED] 27 VFs
[17:32:58] [PASSED] 28 VFs
[17:32:58] [PASSED] 29 VFs
[17:32:58] [PASSED] 30 VFs
[17:32:58] [PASSED] 31 VFs
[17:32:58] [PASSED] 32 VFs
[17:32:58] [PASSED] 33 VFs
[17:32:58] [PASSED] 34 VFs
[17:32:58] [PASSED] 35 VFs
[17:32:58] [PASSED] 36 VFs
[17:32:58] [PASSED] 37 VFs
[17:32:58] [PASSED] 38 VFs
[17:32:58] [PASSED] 39 VFs
[17:32:58] [PASSED] 40 VFs
[17:32:58] [PASSED] 41 VFs
[17:32:58] [PASSED] 42 VFs
[17:32:58] [PASSED] 43 VFs
[17:32:58] [PASSED] 44 VFs
[17:32:58] [PASSED] 45 VFs
[17:32:58] [PASSED] 46 VFs
[17:32:58] [PASSED] 47 VFs
[17:32:58] [PASSED] 48 VFs
[17:32:58] [PASSED] 49 VFs
[17:32:58] [PASSED] 50 VFs
[17:32:58] [PASSED] 51 VFs
[17:32:58] [PASSED] 52 VFs
[17:32:58] [PASSED] 53 VFs
[17:32:58] [PASSED] 54 VFs
[17:32:58] [PASSED] 55 VFs
[17:32:58] [PASSED] 56 VFs
[17:32:58] [PASSED] 57 VFs
[17:32:58] [PASSED] 58 VFs
[17:32:58] [PASSED] 59 VFs
[17:32:58] [PASSED] 60 VFs
[17:32:58] [PASSED] 61 VFs
[17:32:58] [PASSED] 62 VFs
[17:32:58] [PASSED] 63 VFs
[17:32:58] ==================== [PASSED] fair_vram ====================
[17:32:58] ================== [PASSED] pf_gt_config ===================
[17:32:58] ===================== lmtt (1 subtest) =====================
[17:32:58] ======================== test_ops =========================
[17:32:58] [PASSED] 2-level
[17:32:58] [PASSED] multi-level
[17:32:58] ==================== [PASSED] test_ops =====================
[17:32:58] ====================== [PASSED] lmtt =======================
[17:32:58] ================= pf_service (11 subtests) =================
[17:32:58] [PASSED] pf_negotiate_any
[17:32:58] [PASSED] pf_negotiate_base_match
[17:32:58] [PASSED] pf_negotiate_base_newer
[17:32:58] [PASSED] pf_negotiate_base_next
[17:32:58] [SKIPPED] pf_negotiate_base_older
[17:32:58] [PASSED] pf_negotiate_base_prev
[17:32:58] [PASSED] pf_negotiate_latest_match
[17:32:58] [PASSED] pf_negotiate_latest_newer
[17:32:58] [PASSED] pf_negotiate_latest_next
[17:32:58] [SKIPPED] pf_negotiate_latest_older
[17:32:58] [SKIPPED] pf_negotiate_latest_prev
[17:32:58] =================== [PASSED] pf_service ====================
[17:32:58] ================= xe_guc_g2g (2 subtests) ==================
[17:32:58] ============== xe_live_guc_g2g_kunit_default ==============
[17:32:58] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[17:32:58] ============== xe_live_guc_g2g_kunit_allmem ===============
[17:32:58] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[17:32:58] =================== [SKIPPED] xe_guc_g2g ===================
[17:32:58] =================== xe_mocs (2 subtests) ===================
[17:32:58] ================ xe_live_mocs_kernel_kunit ================
[17:32:58] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[17:32:58] ================ xe_live_mocs_reset_kunit =================
[17:32:58] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[17:32:58] ==================== [SKIPPED] xe_mocs =====================
[17:32:58] ================= xe_migrate (2 subtests) ==================
[17:32:58] ================= xe_migrate_sanity_kunit =================
[17:32:58] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[17:32:58] ================== xe_validate_ccs_kunit ==================
[17:32:58] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[17:32:58] =================== [SKIPPED] xe_migrate ===================
[17:32:58] ================== xe_dma_buf (1 subtest) ==================
[17:32:58] ==================== xe_dma_buf_kunit =====================
[17:32:58] ================ [SKIPPED] xe_dma_buf_kunit ================
[17:32:58] =================== [SKIPPED] xe_dma_buf ===================
[17:32:58] ================= xe_bo_shrink (1 subtest) =================
[17:32:58] =================== xe_bo_shrink_kunit ====================
[17:32:58] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[17:32:58] ================== [SKIPPED] xe_bo_shrink ==================
[17:32:58] ==================== xe_bo (2 subtests) ====================
[17:32:58] ================== xe_ccs_migrate_kunit ===================
[17:32:58] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[17:32:58] ==================== xe_bo_evict_kunit ====================
[17:32:58] =============== [SKIPPED] xe_bo_evict_kunit ================
[17:32:58] ===================== [SKIPPED] xe_bo ======================
[17:32:58] ==================== args (13 subtests) ====================
[17:32:58] [PASSED] count_args_test
[17:32:58] [PASSED] call_args_example
[17:32:58] [PASSED] call_args_test
[17:32:58] [PASSED] drop_first_arg_example
[17:32:58] [PASSED] drop_first_arg_test
[17:32:58] [PASSED] first_arg_example
[17:32:58] [PASSED] first_arg_test
[17:32:58] [PASSED] last_arg_example
[17:32:58] [PASSED] last_arg_test
[17:32:58] [PASSED] pick_arg_example
[17:32:58] [PASSED] if_args_example
[17:32:58] [PASSED] if_args_test
[17:32:58] [PASSED] sep_comma_example
[17:32:58] ====================== [PASSED] args =======================
[17:32:58] =================== xe_pci (3 subtests) ====================
[17:32:58] ==================== check_graphics_ip ====================
[17:32:58] [PASSED] 12.00 Xe_LP
[17:32:58] [PASSED] 12.10 Xe_LP+
[17:32:58] [PASSED] 12.55 Xe_HPG
[17:32:58] [PASSED] 12.60 Xe_HPC
[17:32:58] [PASSED] 12.70 Xe_LPG
[17:32:58] [PASSED] 12.71 Xe_LPG
[17:32:58] [PASSED] 12.74 Xe_LPG+
[17:32:58] [PASSED] 20.01 Xe2_HPG
[17:32:58] [PASSED] 20.02 Xe2_HPG
[17:32:58] [PASSED] 20.04 Xe2_LPG
[17:32:58] [PASSED] 30.00 Xe3_LPG
[17:32:58] [PASSED] 30.01 Xe3_LPG
[17:32:58] [PASSED] 30.03 Xe3_LPG
[17:32:58] [PASSED] 30.04 Xe3_LPG
[17:32:58] [PASSED] 30.05 Xe3_LPG
[17:32:58] [PASSED] 35.10 Xe3p_LPG
[17:32:58] [PASSED] 35.11 Xe3p_XPC
[17:32:58] ================ [PASSED] check_graphics_ip ================
[17:32:58] ===================== check_media_ip ======================
[17:32:58] [PASSED] 12.00 Xe_M
[17:32:58] [PASSED] 12.55 Xe_HPM
[17:32:58] [PASSED] 13.00 Xe_LPM+
[17:32:58] [PASSED] 13.01 Xe2_HPM
[17:32:58] [PASSED] 20.00 Xe2_LPM
[17:32:58] [PASSED] 30.00 Xe3_LPM
[17:32:58] [PASSED] 30.02 Xe3_LPM
[17:32:58] [PASSED] 35.00 Xe3p_LPM
[17:32:58] [PASSED] 35.03 Xe3p_HPM
[17:32:58] ================= [PASSED] check_media_ip ==================
[17:32:58] =================== check_platform_desc ===================
[17:32:58] [PASSED] 0x9A60 (TIGERLAKE)
[17:32:58] [PASSED] 0x9A68 (TIGERLAKE)
[17:32:58] [PASSED] 0x9A70 (TIGERLAKE)
[17:32:58] [PASSED] 0x9A40 (TIGERLAKE)
[17:32:58] [PASSED] 0x9A49 (TIGERLAKE)
[17:32:58] [PASSED] 0x9A59 (TIGERLAKE)
[17:32:58] [PASSED] 0x9A78 (TIGERLAKE)
[17:32:58] [PASSED] 0x9AC0 (TIGERLAKE)
[17:32:58] [PASSED] 0x9AC9 (TIGERLAKE)
[17:32:58] [PASSED] 0x9AD9 (TIGERLAKE)
[17:32:58] [PASSED] 0x9AF8 (TIGERLAKE)
[17:32:58] [PASSED] 0x4C80 (ROCKETLAKE)
[17:32:58] [PASSED] 0x4C8A (ROCKETLAKE)
[17:32:58] [PASSED] 0x4C8B (ROCKETLAKE)
[17:32:58] [PASSED] 0x4C8C (ROCKETLAKE)
[17:32:58] [PASSED] 0x4C90 (ROCKETLAKE)
[17:32:58] [PASSED] 0x4C9A (ROCKETLAKE)
[17:32:58] [PASSED] 0x4680 (ALDERLAKE_S)
[17:32:58] [PASSED] 0x4682 (ALDERLAKE_S)
[17:32:58] [PASSED] 0x4688 (ALDERLAKE_S)
[17:32:58] [PASSED] 0x468A (ALDERLAKE_S)
[17:32:58] [PASSED] 0x468B (ALDERLAKE_S)
[17:32:58] [PASSED] 0x4690 (ALDERLAKE_S)
[17:32:58] [PASSED] 0x4692 (ALDERLAKE_S)
[17:32:58] [PASSED] 0x4693 (ALDERLAKE_S)
[17:32:58] [PASSED] 0x46A0 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46A1 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46A2 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46A3 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46A6 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46A8 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46AA (ALDERLAKE_P)
[17:32:58] [PASSED] 0x462A (ALDERLAKE_P)
[17:32:58] [PASSED] 0x4626 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x4628 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46B0 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46B1 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46B2 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46B3 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46C0 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46C1 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46C2 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46C3 (ALDERLAKE_P)
[17:32:58] [PASSED] 0x46D0 (ALDERLAKE_N)
[17:32:58] [PASSED] 0x46D1 (ALDERLAKE_N)
[17:32:58] [PASSED] 0x46D2 (ALDERLAKE_N)
[17:32:58] [PASSED] 0x46D3 (ALDERLAKE_N)
[17:32:58] [PASSED] 0x46D4 (ALDERLAKE_N)
[17:32:58] [PASSED] 0xA721 (ALDERLAKE_P)
[17:32:58] [PASSED] 0xA7A1 (ALDERLAKE_P)
[17:32:58] [PASSED] 0xA7A9 (ALDERLAKE_P)
[17:32:58] [PASSED] 0xA7AC (ALDERLAKE_P)
[17:32:58] [PASSED] 0xA7AD (ALDERLAKE_P)
[17:32:58] [PASSED] 0xA720 (ALDERLAKE_P)
[17:32:58] [PASSED] 0xA7A0 (ALDERLAKE_P)
[17:32:58] [PASSED] 0xA7A8 (ALDERLAKE_P)
[17:32:58] [PASSED] 0xA7AA (ALDERLAKE_P)
[17:32:58] [PASSED] 0xA7AB (ALDERLAKE_P)
[17:32:58] [PASSED] 0xA780 (ALDERLAKE_S)
[17:32:58] [PASSED] 0xA781 (ALDERLAKE_S)
[17:32:58] [PASSED] 0xA782 (ALDERLAKE_S)
[17:32:58] [PASSED] 0xA783 (ALDERLAKE_S)
[17:32:58] [PASSED] 0xA788 (ALDERLAKE_S)
[17:32:58] [PASSED] 0xA789 (ALDERLAKE_S)
[17:32:58] [PASSED] 0xA78A (ALDERLAKE_S)
[17:32:58] [PASSED] 0xA78B (ALDERLAKE_S)
[17:32:58] [PASSED] 0x4905 (DG1)
[17:32:58] [PASSED] 0x4906 (DG1)
[17:32:58] [PASSED] 0x4907 (DG1)
[17:32:58] [PASSED] 0x4908 (DG1)
[17:32:58] [PASSED] 0x4909 (DG1)
[17:32:58] [PASSED] 0x56C0 (DG2)
[17:32:58] [PASSED] 0x56C2 (DG2)
[17:32:58] [PASSED] 0x56C1 (DG2)
[17:32:58] [PASSED] 0x7D51 (METEORLAKE)
[17:32:58] [PASSED] 0x7DD1 (METEORLAKE)
[17:32:58] [PASSED] 0x7D41 (METEORLAKE)
[17:32:58] [PASSED] 0x7D67 (METEORLAKE)
[17:32:58] [PASSED] 0xB640 (METEORLAKE)
[17:32:58] [PASSED] 0x56A0 (DG2)
[17:32:58] [PASSED] 0x56A1 (DG2)
[17:32:58] [PASSED] 0x56A2 (DG2)
[17:32:58] [PASSED] 0x56BE (DG2)
[17:32:58] [PASSED] 0x56BF (DG2)
[17:32:58] [PASSED] 0x5690 (DG2)
[17:32:58] [PASSED] 0x5691 (DG2)
[17:32:58] [PASSED] 0x5692 (DG2)
[17:32:58] [PASSED] 0x56A5 (DG2)
[17:32:58] [PASSED] 0x56A6 (DG2)
[17:32:58] [PASSED] 0x56B0 (DG2)
[17:32:58] [PASSED] 0x56B1 (DG2)
[17:32:58] [PASSED] 0x56BA (DG2)
[17:32:58] [PASSED] 0x56BB (DG2)
[17:32:58] [PASSED] 0x56BC (DG2)
[17:32:58] [PASSED] 0x56BD (DG2)
[17:32:58] [PASSED] 0x5693 (DG2)
[17:32:58] [PASSED] 0x5694 (DG2)
[17:32:58] [PASSED] 0x5695 (DG2)
[17:32:58] [PASSED] 0x56A3 (DG2)
[17:32:58] [PASSED] 0x56A4 (DG2)
[17:32:58] [PASSED] 0x56B2 (DG2)
[17:32:58] [PASSED] 0x56B3 (DG2)
[17:32:58] [PASSED] 0x5696 (DG2)
[17:32:58] [PASSED] 0x5697 (DG2)
[17:32:58] [PASSED] 0xB69 (PVC)
[17:32:58] [PASSED] 0xB6E (PVC)
[17:32:58] [PASSED] 0xBD4 (PVC)
[17:32:58] [PASSED] 0xBD5 (PVC)
[17:32:58] [PASSED] 0xBD6 (PVC)
[17:32:58] [PASSED] 0xBD7 (PVC)
[17:32:58] [PASSED] 0xBD8 (PVC)
[17:32:58] [PASSED] 0xBD9 (PVC)
[17:32:58] [PASSED] 0xBDA (PVC)
[17:32:58] [PASSED] 0xBDB (PVC)
[17:32:58] [PASSED] 0xBE0 (PVC)
[17:32:58] [PASSED] 0xBE1 (PVC)
[17:32:58] [PASSED] 0xBE5 (PVC)
[17:32:58] [PASSED] 0x7D40 (METEORLAKE)
[17:32:58] [PASSED] 0x7D45 (METEORLAKE)
[17:32:58] [PASSED] 0x7D55 (METEORLAKE)
[17:32:58] [PASSED] 0x7D60 (METEORLAKE)
[17:32:58] [PASSED] 0x7DD5 (METEORLAKE)
[17:32:58] [PASSED] 0x6420 (LUNARLAKE)
[17:32:58] [PASSED] 0x64A0 (LUNARLAKE)
[17:32:58] [PASSED] 0x64B0 (LUNARLAKE)
[17:32:58] [PASSED] 0xE202 (BATTLEMAGE)
[17:32:58] [PASSED] 0xE209 (BATTLEMAGE)
[17:32:58] [PASSED] 0xE20B (BATTLEMAGE)
[17:32:58] [PASSED] 0xE20C (BATTLEMAGE)
[17:32:58] [PASSED] 0xE20D (BATTLEMAGE)
[17:32:58] [PASSED] 0xE210 (BATTLEMAGE)
[17:32:58] [PASSED] 0xE211 (BATTLEMAGE)
[17:32:58] [PASSED] 0xE212 (BATTLEMAGE)
[17:32:58] [PASSED] 0xE216 (BATTLEMAGE)
[17:32:58] [PASSED] 0xE220 (BATTLEMAGE)
[17:32:58] [PASSED] 0xE221 (BATTLEMAGE)
[17:32:58] [PASSED] 0xE222 (BATTLEMAGE)
[17:32:58] [PASSED] 0xE223 (BATTLEMAGE)
[17:32:58] [PASSED] 0xB080 (PANTHERLAKE)
[17:32:58] [PASSED] 0xB081 (PANTHERLAKE)
[17:32:58] [PASSED] 0xB082 (PANTHERLAKE)
[17:32:58] [PASSED] 0xB083 (PANTHERLAKE)
[17:32:58] [PASSED] 0xB084 (PANTHERLAKE)
[17:32:58] [PASSED] 0xB085 (PANTHERLAKE)
[17:32:58] [PASSED] 0xB086 (PANTHERLAKE)
[17:32:58] [PASSED] 0xB087 (PANTHERLAKE)
[17:32:58] [PASSED] 0xB08F (PANTHERLAKE)
[17:32:58] [PASSED] 0xB090 (PANTHERLAKE)
[17:32:58] [PASSED] 0xB0A0 (PANTHERLAKE)
[17:32:58] [PASSED] 0xB0B0 (PANTHERLAKE)
[17:32:58] [PASSED] 0xFD80 (PANTHERLAKE)
[17:32:58] [PASSED] 0xFD81 (PANTHERLAKE)
[17:32:58] [PASSED] 0xD740 (NOVALAKE_S)
[17:32:58] [PASSED] 0xD741 (NOVALAKE_S)
[17:32:58] [PASSED] 0xD742 (NOVALAKE_S)
[17:32:58] [PASSED] 0xD743 (NOVALAKE_S)
[17:32:58] [PASSED] 0xD744 (NOVALAKE_S)
[17:32:58] [PASSED] 0xD745 (NOVALAKE_S)
[17:32:58] [PASSED] 0x674C (CRESCENTISLAND)
[17:32:58] [PASSED] 0xD750 (NOVALAKE_P)
[17:32:58] [PASSED] 0xD751 (NOVALAKE_P)
[17:32:58] [PASSED] 0xD752 (NOVALAKE_P)
[17:32:58] [PASSED] 0xD753 (NOVALAKE_P)
[17:32:58] [PASSED] 0xD754 (NOVALAKE_P)
[17:32:58] [PASSED] 0xD755 (NOVALAKE_P)
[17:32:58] [PASSED] 0xD756 (NOVALAKE_P)
[17:32:58] [PASSED] 0xD757 (NOVALAKE_P)
[17:32:58] [PASSED] 0xD75F (NOVALAKE_P)
[17:32:58] =============== [PASSED] check_platform_desc ===============
[17:32:58] ===================== [PASSED] xe_pci ======================
[17:32:58] =================== xe_rtp (2 subtests) ====================
[17:32:58] =============== xe_rtp_process_to_sr_tests ================
[17:32:58] [PASSED] coalesce-same-reg
[17:32:58] [PASSED] no-match-no-add
[17:32:58] [PASSED] match-or
[17:32:58] [PASSED] match-or-xfail
[17:32:58] [PASSED] no-match-no-add-multiple-rules
[17:32:58] [PASSED] two-regs-two-entries
[17:32:58] [PASSED] clr-one-set-other
[17:32:58] [PASSED] set-field
[17:32:58] [PASSED] conflict-duplicate
stty: 'standard input': Inappropriate ioctl for device
[17:32:58] [PASSED] conflict-not-disjoint
[17:32:58] [PASSED] conflict-reg-type
[17:32:58] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[17:32:58] ================== xe_rtp_process_tests ===================
[17:32:58] [PASSED] active1
[17:32:58] [PASSED] active2
[17:32:58] [PASSED] active-inactive
[17:32:58] [PASSED] inactive-active
[17:32:58] [PASSED] inactive-1st_or_active-inactive
[17:32:58] [PASSED] inactive-2nd_or_active-inactive
[17:32:58] [PASSED] inactive-last_or_active-inactive
[17:32:58] [PASSED] inactive-no_or_active-inactive
[17:32:58] ============== [PASSED] xe_rtp_process_tests ===============
[17:32:58] ===================== [PASSED] xe_rtp ======================
[17:32:58] ==================== xe_wa (1 subtest) =====================
[17:32:58] ======================== xe_wa_gt =========================
[17:32:58] [PASSED] TIGERLAKE B0
[17:32:58] [PASSED] DG1 A0
[17:32:58] [PASSED] DG1 B0
[17:32:58] [PASSED] ALDERLAKE_S A0
[17:32:58] [PASSED] ALDERLAKE_S B0
[17:32:58] [PASSED] ALDERLAKE_S C0
[17:32:58] [PASSED] ALDERLAKE_S D0
[17:32:58] [PASSED] ALDERLAKE_P A0
[17:32:58] [PASSED] ALDERLAKE_P B0
[17:32:58] [PASSED] ALDERLAKE_P C0
[17:32:58] [PASSED] ALDERLAKE_S RPLS D0
[17:32:58] [PASSED] ALDERLAKE_P RPLU E0
[17:32:58] [PASSED] DG2 G10 C0
[17:32:58] [PASSED] DG2 G11 B1
[17:32:58] [PASSED] DG2 G12 A1
[17:32:58] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[17:32:58] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[17:32:58] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[17:32:58] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[17:32:58] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[17:32:58] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[17:32:58] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[17:32:58] ==================== [PASSED] xe_wa_gt =====================
[17:32:58] ====================== [PASSED] xe_wa ======================
[17:32:58] ============================================================
[17:32:58] Testing complete. Ran 597 tests: passed: 579, skipped: 18
[17:32:58] Elapsed time: 35.374s total, 4.205s configuring, 30.502s building, 0.624s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[17:32:59] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:33:00] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[17:33:24] Starting KUnit Kernel (1/1)...
[17:33:24] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:33:24] ============ drm_test_pick_cmdline (2 subtests) ============
[17:33:24] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[17:33:24] =============== drm_test_pick_cmdline_named ===============
[17:33:24] [PASSED] NTSC
[17:33:24] [PASSED] NTSC-J
[17:33:24] [PASSED] PAL
[17:33:24] [PASSED] PAL-M
[17:33:24] =========== [PASSED] drm_test_pick_cmdline_named ===========
[17:33:24] ============== [PASSED] drm_test_pick_cmdline ==============
[17:33:24] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[17:33:24] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[17:33:24] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[17:33:24] =========== drm_validate_clone_mode (2 subtests) ===========
[17:33:24] ============== drm_test_check_in_clone_mode ===============
[17:33:24] [PASSED] in_clone_mode
[17:33:24] [PASSED] not_in_clone_mode
[17:33:24] ========== [PASSED] drm_test_check_in_clone_mode ===========
[17:33:24] =============== drm_test_check_valid_clones ===============
[17:33:24] [PASSED] not_in_clone_mode
[17:33:24] [PASSED] valid_clone
[17:33:24] [PASSED] invalid_clone
[17:33:24] =========== [PASSED] drm_test_check_valid_clones ===========
[17:33:24] ============= [PASSED] drm_validate_clone_mode =============
[17:33:24] ============= drm_validate_modeset (1 subtest) =============
[17:33:24] [PASSED] drm_test_check_connector_changed_modeset
[17:33:24] ============== [PASSED] drm_validate_modeset ===============
[17:33:24] ====== drm_test_bridge_get_current_state (2 subtests) ======
[17:33:24] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[17:33:24] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[17:33:24] ======== [PASSED] drm_test_bridge_get_current_state ========
[17:33:24] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[17:33:24] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[17:33:24] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[17:33:24] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[17:33:24] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[17:33:24] ============== drm_bridge_alloc (2 subtests) ===============
[17:33:24] [PASSED] drm_test_drm_bridge_alloc_basic
[17:33:24] [PASSED] drm_test_drm_bridge_alloc_get_put
[17:33:24] ================ [PASSED] drm_bridge_alloc =================
[17:33:24] ============= drm_cmdline_parser (40 subtests) =============
[17:33:24] [PASSED] drm_test_cmdline_force_d_only
[17:33:24] [PASSED] drm_test_cmdline_force_D_only_dvi
[17:33:24] [PASSED] drm_test_cmdline_force_D_only_hdmi
[17:33:24] [PASSED] drm_test_cmdline_force_D_only_not_digital
[17:33:24] [PASSED] drm_test_cmdline_force_e_only
[17:33:24] [PASSED] drm_test_cmdline_res
[17:33:24] [PASSED] drm_test_cmdline_res_vesa
[17:33:24] [PASSED] drm_test_cmdline_res_vesa_rblank
[17:33:24] [PASSED] drm_test_cmdline_res_rblank
[17:33:24] [PASSED] drm_test_cmdline_res_bpp
[17:33:24] [PASSED] drm_test_cmdline_res_refresh
[17:33:24] [PASSED] drm_test_cmdline_res_bpp_refresh
[17:33:24] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[17:33:24] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[17:33:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[17:33:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[17:33:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[17:33:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[17:33:24] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[17:33:24] [PASSED] drm_test_cmdline_res_margins_force_on
[17:33:24] [PASSED] drm_test_cmdline_res_vesa_margins
[17:33:24] [PASSED] drm_test_cmdline_name
[17:33:24] [PASSED] drm_test_cmdline_name_bpp
[17:33:24] [PASSED] drm_test_cmdline_name_option
[17:33:24] [PASSED] drm_test_cmdline_name_bpp_option
[17:33:24] [PASSED] drm_test_cmdline_rotate_0
[17:33:24] [PASSED] drm_test_cmdline_rotate_90
[17:33:24] [PASSED] drm_test_cmdline_rotate_180
[17:33:24] [PASSED] drm_test_cmdline_rotate_270
[17:33:24] [PASSED] drm_test_cmdline_hmirror
[17:33:24] [PASSED] drm_test_cmdline_vmirror
[17:33:24] [PASSED] drm_test_cmdline_margin_options
[17:33:24] [PASSED] drm_test_cmdline_multiple_options
[17:33:24] [PASSED] drm_test_cmdline_bpp_extra_and_option
[17:33:24] [PASSED] drm_test_cmdline_extra_and_option
[17:33:24] [PASSED] drm_test_cmdline_freestanding_options
[17:33:24] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[17:33:24] [PASSED] drm_test_cmdline_panel_orientation
[17:33:24] ================ drm_test_cmdline_invalid =================
[17:33:24] [PASSED] margin_only
[17:33:24] [PASSED] interlace_only
[17:33:24] [PASSED] res_missing_x
[17:33:24] [PASSED] res_missing_y
[17:33:24] [PASSED] res_bad_y
[17:33:24] [PASSED] res_missing_y_bpp
[17:33:24] [PASSED] res_bad_bpp
[17:33:24] [PASSED] res_bad_refresh
[17:33:24] [PASSED] res_bpp_refresh_force_on_off
[17:33:24] [PASSED] res_invalid_mode
[17:33:24] [PASSED] res_bpp_wrong_place_mode
[17:33:24] [PASSED] name_bpp_refresh
[17:33:24] [PASSED] name_refresh
[17:33:24] [PASSED] name_refresh_wrong_mode
[17:33:24] [PASSED] name_refresh_invalid_mode
[17:33:24] [PASSED] rotate_multiple
[17:33:24] [PASSED] rotate_invalid_val
[17:33:24] [PASSED] rotate_truncated
[17:33:24] [PASSED] invalid_option
[17:33:24] [PASSED] invalid_tv_option
[17:33:24] [PASSED] truncated_tv_option
[17:33:24] ============ [PASSED] drm_test_cmdline_invalid =============
[17:33:24] =============== drm_test_cmdline_tv_options ===============
[17:33:24] [PASSED] NTSC
[17:33:24] [PASSED] NTSC_443
[17:33:24] [PASSED] NTSC_J
[17:33:24] [PASSED] PAL
[17:33:24] [PASSED] PAL_M
[17:33:24] [PASSED] PAL_N
[17:33:24] [PASSED] SECAM
[17:33:24] [PASSED] MONO_525
[17:33:24] [PASSED] MONO_625
[17:33:24] =========== [PASSED] drm_test_cmdline_tv_options ===========
[17:33:24] =============== [PASSED] drm_cmdline_parser ================
[17:33:24] ========== drmm_connector_hdmi_init (20 subtests) ==========
[17:33:24] [PASSED] drm_test_connector_hdmi_init_valid
[17:33:24] [PASSED] drm_test_connector_hdmi_init_bpc_8
[17:33:24] [PASSED] drm_test_connector_hdmi_init_bpc_10
[17:33:24] [PASSED] drm_test_connector_hdmi_init_bpc_12
[17:33:24] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[17:33:24] [PASSED] drm_test_connector_hdmi_init_bpc_null
[17:33:24] [PASSED] drm_test_connector_hdmi_init_formats_empty
[17:33:24] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[17:33:24] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[17:33:24] [PASSED] supported_formats=0x9 yuv420_allowed=1
[17:33:24] [PASSED] supported_formats=0x9 yuv420_allowed=0
[17:33:24] [PASSED] supported_formats=0x3 yuv420_allowed=1
[17:33:24] [PASSED] supported_formats=0x3 yuv420_allowed=0
[17:33:24] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[17:33:24] [PASSED] drm_test_connector_hdmi_init_null_ddc
[17:33:24] [PASSED] drm_test_connector_hdmi_init_null_product
[17:33:24] [PASSED] drm_test_connector_hdmi_init_null_vendor
[17:33:24] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[17:33:24] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[17:33:24] [PASSED] drm_test_connector_hdmi_init_product_valid
[17:33:24] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[17:33:24] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[17:33:24] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[17:33:24] ========= drm_test_connector_hdmi_init_type_valid =========
[17:33:24] [PASSED] HDMI-A
[17:33:24] [PASSED] HDMI-B
[17:33:24] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[17:33:24] ======== drm_test_connector_hdmi_init_type_invalid ========
[17:33:24] [PASSED] Unknown
[17:33:24] [PASSED] VGA
[17:33:24] [PASSED] DVI-I
[17:33:24] [PASSED] DVI-D
[17:33:24] [PASSED] DVI-A
[17:33:24] [PASSED] Composite
[17:33:24] [PASSED] SVIDEO
[17:33:24] [PASSED] LVDS
[17:33:24] [PASSED] Component
[17:33:24] [PASSED] DIN
[17:33:24] [PASSED] DP
[17:33:24] [PASSED] TV
[17:33:24] [PASSED] eDP
[17:33:24] [PASSED] Virtual
[17:33:24] [PASSED] DSI
[17:33:24] [PASSED] DPI
[17:33:24] [PASSED] Writeback
[17:33:24] [PASSED] SPI
[17:33:24] [PASSED] USB
[17:33:24] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[17:33:24] ============ [PASSED] drmm_connector_hdmi_init =============
[17:33:24] ============= drmm_connector_init (3 subtests) =============
[17:33:24] [PASSED] drm_test_drmm_connector_init
[17:33:24] [PASSED] drm_test_drmm_connector_init_null_ddc
[17:33:24] ========= drm_test_drmm_connector_init_type_valid =========
[17:33:24] [PASSED] Unknown
[17:33:24] [PASSED] VGA
[17:33:24] [PASSED] DVI-I
[17:33:24] [PASSED] DVI-D
[17:33:24] [PASSED] DVI-A
[17:33:24] [PASSED] Composite
[17:33:24] [PASSED] SVIDEO
[17:33:24] [PASSED] LVDS
[17:33:24] [PASSED] Component
[17:33:24] [PASSED] DIN
[17:33:24] [PASSED] DP
[17:33:24] [PASSED] HDMI-A
[17:33:24] [PASSED] HDMI-B
[17:33:24] [PASSED] TV
[17:33:24] [PASSED] eDP
[17:33:24] [PASSED] Virtual
[17:33:24] [PASSED] DSI
[17:33:24] [PASSED] DPI
[17:33:24] [PASSED] Writeback
[17:33:24] [PASSED] SPI
[17:33:24] [PASSED] USB
[17:33:24] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[17:33:24] =============== [PASSED] drmm_connector_init ===============
[17:33:24] ========= drm_connector_dynamic_init (6 subtests) ==========
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_init
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_init_properties
[17:33:24] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[17:33:24] [PASSED] Unknown
[17:33:24] [PASSED] VGA
[17:33:24] [PASSED] DVI-I
[17:33:24] [PASSED] DVI-D
[17:33:24] [PASSED] DVI-A
[17:33:24] [PASSED] Composite
[17:33:24] [PASSED] SVIDEO
[17:33:24] [PASSED] LVDS
[17:33:24] [PASSED] Component
[17:33:24] [PASSED] DIN
[17:33:24] [PASSED] DP
[17:33:24] [PASSED] HDMI-A
[17:33:24] [PASSED] HDMI-B
[17:33:24] [PASSED] TV
[17:33:24] [PASSED] eDP
[17:33:24] [PASSED] Virtual
[17:33:24] [PASSED] DSI
[17:33:24] [PASSED] DPI
[17:33:24] [PASSED] Writeback
[17:33:24] [PASSED] SPI
[17:33:24] [PASSED] USB
[17:33:24] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[17:33:24] ======== drm_test_drm_connector_dynamic_init_name =========
[17:33:24] [PASSED] Unknown
[17:33:24] [PASSED] VGA
[17:33:24] [PASSED] DVI-I
[17:33:24] [PASSED] DVI-D
[17:33:24] [PASSED] DVI-A
[17:33:24] [PASSED] Composite
[17:33:24] [PASSED] SVIDEO
[17:33:24] [PASSED] LVDS
[17:33:24] [PASSED] Component
[17:33:24] [PASSED] DIN
[17:33:24] [PASSED] DP
[17:33:24] [PASSED] HDMI-A
[17:33:24] [PASSED] HDMI-B
[17:33:24] [PASSED] TV
[17:33:24] [PASSED] eDP
[17:33:24] [PASSED] Virtual
[17:33:24] [PASSED] DSI
[17:33:24] [PASSED] DPI
[17:33:24] [PASSED] Writeback
[17:33:24] [PASSED] SPI
[17:33:24] [PASSED] USB
[17:33:24] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[17:33:24] =========== [PASSED] drm_connector_dynamic_init ============
[17:33:24] ==== drm_connector_dynamic_register_early (4 subtests) =====
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[17:33:24] ====== [PASSED] drm_connector_dynamic_register_early =======
[17:33:24] ======= drm_connector_dynamic_register (7 subtests) ========
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[17:33:24] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[17:33:24] ========= [PASSED] drm_connector_dynamic_register ==========
[17:33:24] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[17:33:24] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[17:33:24] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[17:33:24] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[17:33:24] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[17:33:24] ========== drm_test_get_tv_mode_from_name_valid ===========
[17:33:24] [PASSED] NTSC
[17:33:24] [PASSED] NTSC-443
[17:33:24] [PASSED] NTSC-J
[17:33:24] [PASSED] PAL
[17:33:24] [PASSED] PAL-M
[17:33:24] [PASSED] PAL-N
[17:33:24] [PASSED] SECAM
[17:33:24] [PASSED] Mono
[17:33:24] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[17:33:24] [PASSED] drm_test_get_tv_mode_from_name_truncated
[17:33:24] ============ [PASSED] drm_get_tv_mode_from_name ============
[17:33:24] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[17:33:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[17:33:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[17:33:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[17:33:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[17:33:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[17:33:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[17:33:24] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[17:33:24] [PASSED] VIC 96
[17:33:24] [PASSED] VIC 97
[17:33:24] [PASSED] VIC 101
[17:33:24] [PASSED] VIC 102
[17:33:24] [PASSED] VIC 106
[17:33:24] [PASSED] VIC 107
[17:33:24] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[17:33:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[17:33:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[17:33:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[17:33:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[17:33:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[17:33:24] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[17:33:24] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[17:33:24] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[17:33:24] [PASSED] Automatic
[17:33:24] [PASSED] Full
[17:33:24] [PASSED] Limited 16:235
[17:33:24] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[17:33:24] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[17:33:24] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[17:33:24] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[17:33:24] === drm_test_drm_hdmi_connector_get_output_format_name ====
[17:33:24] [PASSED] RGB
[17:33:24] [PASSED] YUV 4:2:0
[17:33:24] [PASSED] YUV 4:2:2
[17:33:24] [PASSED] YUV 4:4:4
[17:33:24] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[17:33:24] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[17:33:24] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[17:33:24] ============= drm_damage_helper (21 subtests) ==============
[17:33:24] [PASSED] drm_test_damage_iter_no_damage
[17:33:24] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[17:33:24] [PASSED] drm_test_damage_iter_no_damage_src_moved
[17:33:24] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[17:33:24] [PASSED] drm_test_damage_iter_no_damage_not_visible
[17:33:24] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[17:33:24] [PASSED] drm_test_damage_iter_no_damage_no_fb
[17:33:24] [PASSED] drm_test_damage_iter_simple_damage
[17:33:24] [PASSED] drm_test_damage_iter_single_damage
[17:33:24] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[17:33:24] [PASSED] drm_test_damage_iter_single_damage_outside_src
[17:33:24] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[17:33:24] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[17:33:24] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[17:33:24] [PASSED] drm_test_damage_iter_single_damage_src_moved
[17:33:24] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[17:33:24] [PASSED] drm_test_damage_iter_damage
[17:33:24] [PASSED] drm_test_damage_iter_damage_one_intersect
[17:33:24] [PASSED] drm_test_damage_iter_damage_one_outside
[17:33:24] [PASSED] drm_test_damage_iter_damage_src_moved
[17:33:24] [PASSED] drm_test_damage_iter_damage_not_visible
[17:33:24] ================ [PASSED] drm_damage_helper ================
[17:33:24] ============== drm_dp_mst_helper (3 subtests) ==============
[17:33:24] ============== drm_test_dp_mst_calc_pbn_mode ==============
[17:33:24] [PASSED] Clock 154000 BPP 30 DSC disabled
[17:33:24] [PASSED] Clock 234000 BPP 30 DSC disabled
[17:33:24] [PASSED] Clock 297000 BPP 24 DSC disabled
[17:33:24] [PASSED] Clock 332880 BPP 24 DSC enabled
[17:33:24] [PASSED] Clock 324540 BPP 24 DSC enabled
[17:33:24] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[17:33:24] ============== drm_test_dp_mst_calc_pbn_div ===============
[17:33:24] [PASSED] Link rate 2000000 lane count 4
[17:33:24] [PASSED] Link rate 2000000 lane count 2
[17:33:24] [PASSED] Link rate 2000000 lane count 1
[17:33:24] [PASSED] Link rate 1350000 lane count 4
[17:33:24] [PASSED] Link rate 1350000 lane count 2
[17:33:24] [PASSED] Link rate 1350000 lane count 1
[17:33:24] [PASSED] Link rate 1000000 lane count 4
[17:33:24] [PASSED] Link rate 1000000 lane count 2
[17:33:24] [PASSED] Link rate 1000000 lane count 1
[17:33:24] [PASSED] Link rate 810000 lane count 4
[17:33:24] [PASSED] Link rate 810000 lane count 2
[17:33:24] [PASSED] Link rate 810000 lane count 1
[17:33:24] [PASSED] Link rate 540000 lane count 4
[17:33:24] [PASSED] Link rate 540000 lane count 2
[17:33:24] [PASSED] Link rate 540000 lane count 1
[17:33:24] [PASSED] Link rate 270000 lane count 4
[17:33:24] [PASSED] Link rate 270000 lane count 2
[17:33:24] [PASSED] Link rate 270000 lane count 1
[17:33:24] [PASSED] Link rate 162000 lane count 4
[17:33:24] [PASSED] Link rate 162000 lane count 2
[17:33:24] [PASSED] Link rate 162000 lane count 1
[17:33:24] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[17:33:24] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[17:33:24] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[17:33:24] [PASSED] DP_POWER_UP_PHY with port number
[17:33:24] [PASSED] DP_POWER_DOWN_PHY with port number
[17:33:24] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[17:33:24] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[17:33:24] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[17:33:24] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[17:33:24] [PASSED] DP_QUERY_PAYLOAD with port number
[17:33:24] [PASSED] DP_QUERY_PAYLOAD with VCPI
[17:33:24] [PASSED] DP_REMOTE_DPCD_READ with port number
[17:33:24] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[17:33:24] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[17:33:24] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[17:33:24] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[17:33:24] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[17:33:24] [PASSED] DP_REMOTE_I2C_READ with port number
[17:33:24] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[17:33:24] [PASSED] DP_REMOTE_I2C_READ with transactions array
[17:33:24] [PASSED] DP_REMOTE_I2C_WRITE with port number
[17:33:24] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[17:33:24] [PASSED] DP_REMOTE_I2C_WRITE with data array
[17:33:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[17:33:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[17:33:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[17:33:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[17:33:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[17:33:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[17:33:24] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[17:33:24] ================ [PASSED] drm_dp_mst_helper ================
[17:33:24] ================== drm_exec (7 subtests) ===================
[17:33:24] [PASSED] sanitycheck
[17:33:24] [PASSED] test_lock
[17:33:24] [PASSED] test_lock_unlock
[17:33:24] [PASSED] test_duplicates
[17:33:24] [PASSED] test_prepare
[17:33:24] [PASSED] test_prepare_array
[17:33:24] [PASSED] test_multiple_loops
[17:33:24] ==================== [PASSED] drm_exec =====================
[17:33:24] =========== drm_format_helper_test (17 subtests) ===========
[17:33:24] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[17:33:24] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[17:33:24] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[17:33:24] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[17:33:24] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[17:33:24] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[17:33:24] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[17:33:24] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[17:33:24] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[17:33:24] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[17:33:24] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[17:33:24] ============== drm_test_fb_xrgb8888_to_mono ===============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[17:33:24] ==================== drm_test_fb_swab =====================
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ================ [PASSED] drm_test_fb_swab =================
[17:33:24] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[17:33:24] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[17:33:24] [PASSED] single_pixel_source_buffer
[17:33:24] [PASSED] single_pixel_clip_rectangle
[17:33:24] [PASSED] well_known_colors
[17:33:24] [PASSED] destination_pitch
[17:33:24] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[17:33:24] ================= drm_test_fb_clip_offset =================
[17:33:24] [PASSED] pass through
[17:33:24] [PASSED] horizontal offset
[17:33:24] [PASSED] vertical offset
[17:33:24] [PASSED] horizontal and vertical offset
[17:33:24] [PASSED] horizontal offset (custom pitch)
[17:33:24] [PASSED] vertical offset (custom pitch)
[17:33:24] [PASSED] horizontal and vertical offset (custom pitch)
[17:33:24] ============= [PASSED] drm_test_fb_clip_offset =============
[17:33:24] =================== drm_test_fb_memcpy ====================
[17:33:24] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[17:33:24] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[17:33:24] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[17:33:24] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[17:33:24] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[17:33:24] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[17:33:24] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[17:33:24] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[17:33:24] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[17:33:24] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[17:33:24] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[17:33:24] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[17:33:24] =============== [PASSED] drm_test_fb_memcpy ================
[17:33:24] ============= [PASSED] drm_format_helper_test ==============
[17:33:24] ================= drm_format (18 subtests) =================
[17:33:24] [PASSED] drm_test_format_block_width_invalid
[17:33:24] [PASSED] drm_test_format_block_width_one_plane
[17:33:24] [PASSED] drm_test_format_block_width_two_plane
[17:33:24] [PASSED] drm_test_format_block_width_three_plane
[17:33:24] [PASSED] drm_test_format_block_width_tiled
[17:33:24] [PASSED] drm_test_format_block_height_invalid
[17:33:24] [PASSED] drm_test_format_block_height_one_plane
[17:33:24] [PASSED] drm_test_format_block_height_two_plane
[17:33:24] [PASSED] drm_test_format_block_height_three_plane
[17:33:24] [PASSED] drm_test_format_block_height_tiled
[17:33:24] [PASSED] drm_test_format_min_pitch_invalid
[17:33:24] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[17:33:24] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[17:33:24] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[17:33:24] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[17:33:24] [PASSED] drm_test_format_min_pitch_two_plane
[17:33:24] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[17:33:24] [PASSED] drm_test_format_min_pitch_tiled
[17:33:24] =================== [PASSED] drm_format ====================
[17:33:24] ============== drm_framebuffer (10 subtests) ===============
[17:33:24] ========== drm_test_framebuffer_check_src_coords ==========
[17:33:24] [PASSED] Success: source fits into fb
[17:33:24] [PASSED] Fail: overflowing fb with x-axis coordinate
[17:33:24] [PASSED] Fail: overflowing fb with y-axis coordinate
[17:33:24] [PASSED] Fail: overflowing fb with source width
[17:33:24] [PASSED] Fail: overflowing fb with source height
[17:33:24] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[17:33:24] [PASSED] drm_test_framebuffer_cleanup
[17:33:24] =============== drm_test_framebuffer_create ===============
[17:33:24] [PASSED] ABGR8888 normal sizes
[17:33:24] [PASSED] ABGR8888 max sizes
[17:33:24] [PASSED] ABGR8888 pitch greater than min required
[17:33:24] [PASSED] ABGR8888 pitch less than min required
[17:33:24] [PASSED] ABGR8888 Invalid width
[17:33:24] [PASSED] ABGR8888 Invalid buffer handle
[17:33:24] [PASSED] No pixel format
[17:33:24] [PASSED] ABGR8888 Width 0
[17:33:24] [PASSED] ABGR8888 Height 0
[17:33:24] [PASSED] ABGR8888 Out of bound height * pitch combination
[17:33:24] [PASSED] ABGR8888 Large buffer offset
[17:33:24] [PASSED] ABGR8888 Buffer offset for inexistent plane
[17:33:24] [PASSED] ABGR8888 Invalid flag
[17:33:24] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[17:33:24] [PASSED] ABGR8888 Valid buffer modifier
[17:33:24] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[17:33:24] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[17:33:24] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[17:33:24] [PASSED] NV12 Normal sizes
[17:33:24] [PASSED] NV12 Max sizes
[17:33:24] [PASSED] NV12 Invalid pitch
[17:33:24] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[17:33:24] [PASSED] NV12 different modifier per-plane
[17:33:24] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[17:33:24] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[17:33:24] [PASSED] NV12 Modifier for inexistent plane
[17:33:24] [PASSED] NV12 Handle for inexistent plane
[17:33:24] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[17:33:24] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[17:33:24] [PASSED] YVU420 Normal sizes
[17:33:24] [PASSED] YVU420 Max sizes
[17:33:24] [PASSED] YVU420 Invalid pitch
[17:33:24] [PASSED] YVU420 Different pitches
[17:33:24] [PASSED] YVU420 Different buffer offsets/pitches
[17:33:24] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[17:33:24] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[17:33:24] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[17:33:24] [PASSED] YVU420 Valid modifier
[17:33:24] [PASSED] YVU420 Different modifiers per plane
[17:33:24] [PASSED] YVU420 Modifier for inexistent plane
[17:33:24] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[17:33:24] [PASSED] X0L2 Normal sizes
[17:33:24] [PASSED] X0L2 Max sizes
[17:33:24] [PASSED] X0L2 Invalid pitch
[17:33:24] [PASSED] X0L2 Pitch greater than minimum required
[17:33:24] [PASSED] X0L2 Handle for inexistent plane
[17:33:24] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[17:33:24] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[17:33:24] [PASSED] X0L2 Valid modifier
[17:33:24] [PASSED] X0L2 Modifier for inexistent plane
[17:33:24] =========== [PASSED] drm_test_framebuffer_create ===========
[17:33:24] [PASSED] drm_test_framebuffer_free
[17:33:24] [PASSED] drm_test_framebuffer_init
[17:33:24] [PASSED] drm_test_framebuffer_init_bad_format
[17:33:24] [PASSED] drm_test_framebuffer_init_dev_mismatch
[17:33:24] [PASSED] drm_test_framebuffer_lookup
[17:33:24] [PASSED] drm_test_framebuffer_lookup_inexistent
[17:33:24] [PASSED] drm_test_framebuffer_modifiers_not_supported
[17:33:24] ================= [PASSED] drm_framebuffer =================
[17:33:24] ================ drm_gem_shmem (8 subtests) ================
[17:33:24] [PASSED] drm_gem_shmem_test_obj_create
[17:33:24] [PASSED] drm_gem_shmem_test_obj_create_private
[17:33:24] [PASSED] drm_gem_shmem_test_pin_pages
[17:33:24] [PASSED] drm_gem_shmem_test_vmap
[17:33:24] [PASSED] drm_gem_shmem_test_get_sg_table
[17:33:24] [PASSED] drm_gem_shmem_test_get_pages_sgt
[17:33:24] [PASSED] drm_gem_shmem_test_madvise
[17:33:24] [PASSED] drm_gem_shmem_test_purge
[17:33:24] ================== [PASSED] drm_gem_shmem ==================
[17:33:24] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[17:33:24] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[17:33:24] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[17:33:24] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[17:33:24] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[17:33:24] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[17:33:24] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[17:33:24] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[17:33:24] [PASSED] Automatic
[17:33:24] [PASSED] Full
[17:33:24] [PASSED] Limited 16:235
[17:33:24] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[17:33:24] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[17:33:24] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[17:33:24] [PASSED] drm_test_check_disable_connector
[17:33:24] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[17:33:24] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[17:33:24] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[17:33:24] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[17:33:24] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[17:33:24] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[17:33:24] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[17:33:24] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[17:33:24] [PASSED] drm_test_check_output_bpc_dvi
[17:33:24] [PASSED] drm_test_check_output_bpc_format_vic_1
[17:33:24] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[17:33:24] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[17:33:24] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[17:33:24] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[17:33:24] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[17:33:24] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[17:33:24] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[17:33:24] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[17:33:24] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[17:33:24] [PASSED] drm_test_check_broadcast_rgb_value
[17:33:24] [PASSED] drm_test_check_bpc_8_value
[17:33:24] [PASSED] drm_test_check_bpc_10_value
[17:33:24] [PASSED] drm_test_check_bpc_12_value
[17:33:24] [PASSED] drm_test_check_format_value
[17:33:24] [PASSED] drm_test_check_tmds_char_value
[17:33:24] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[17:33:24] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[17:33:24] [PASSED] drm_test_check_mode_valid
[17:33:24] [PASSED] drm_test_check_mode_valid_reject
[17:33:24] [PASSED] drm_test_check_mode_valid_reject_rate
[17:33:24] [PASSED] drm_test_check_mode_valid_reject_max_clock
[17:33:24] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[17:33:24] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[17:33:24] [PASSED] drm_test_check_infoframes
[17:33:24] [PASSED] drm_test_check_reject_avi_infoframe
[17:33:24] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[17:33:24] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[17:33:24] [PASSED] drm_test_check_reject_audio_infoframe
[17:33:24] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[17:33:24] ================= drm_managed (2 subtests) =================
[17:33:24] [PASSED] drm_test_managed_release_action
[17:33:24] [PASSED] drm_test_managed_run_action
[17:33:24] =================== [PASSED] drm_managed ===================
[17:33:24] =================== drm_mm (6 subtests) ====================
[17:33:24] [PASSED] drm_test_mm_init
[17:33:24] [PASSED] drm_test_mm_debug
[17:33:24] [PASSED] drm_test_mm_align32
[17:33:24] [PASSED] drm_test_mm_align64
[17:33:24] [PASSED] drm_test_mm_lowest
[17:33:24] [PASSED] drm_test_mm_highest
[17:33:24] ===================== [PASSED] drm_mm ======================
[17:33:24] ============= drm_modes_analog_tv (5 subtests) =============
[17:33:24] [PASSED] drm_test_modes_analog_tv_mono_576i
[17:33:24] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[17:33:24] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[17:33:24] [PASSED] drm_test_modes_analog_tv_pal_576i
[17:33:24] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[17:33:24] =============== [PASSED] drm_modes_analog_tv ===============
[17:33:24] ============== drm_plane_helper (2 subtests) ===============
[17:33:24] =============== drm_test_check_plane_state ================
[17:33:24] [PASSED] clipping_simple
[17:33:24] [PASSED] clipping_rotate_reflect
[17:33:24] [PASSED] positioning_simple
[17:33:24] [PASSED] upscaling
[17:33:24] [PASSED] downscaling
[17:33:24] [PASSED] rounding1
[17:33:24] [PASSED] rounding2
[17:33:24] [PASSED] rounding3
[17:33:24] [PASSED] rounding4
[17:33:24] =========== [PASSED] drm_test_check_plane_state ============
[17:33:24] =========== drm_test_check_invalid_plane_state ============
[17:33:24] [PASSED] positioning_invalid
[17:33:24] [PASSED] upscaling_invalid
[17:33:24] [PASSED] downscaling_invalid
[17:33:24] ======= [PASSED] drm_test_check_invalid_plane_state ========
[17:33:24] ================ [PASSED] drm_plane_helper =================
[17:33:24] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[17:33:24] ====== drm_test_connector_helper_tv_get_modes_check =======
[17:33:24] [PASSED] None
[17:33:24] [PASSED] PAL
[17:33:24] [PASSED] NTSC
[17:33:24] [PASSED] Both, NTSC Default
[17:33:24] [PASSED] Both, PAL Default
[17:33:24] [PASSED] Both, NTSC Default, with PAL on command-line
[17:33:24] [PASSED] Both, PAL Default, with NTSC on command-line
[17:33:24] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[17:33:24] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[17:33:24] ================== drm_rect (9 subtests) ===================
[17:33:24] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[17:33:24] [PASSED] drm_test_rect_clip_scaled_not_clipped
[17:33:24] [PASSED] drm_test_rect_clip_scaled_clipped
[17:33:24] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[17:33:24] ================= drm_test_rect_intersect =================
[17:33:24] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[17:33:24] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[17:33:24] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[17:33:24] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[17:33:24] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[17:33:24] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[17:33:24] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[17:33:24] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[17:33:24] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[17:33:24] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[17:33:24] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[17:33:24] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[17:33:24] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[17:33:24] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[17:33:24] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[17:33:24] ============= [PASSED] drm_test_rect_intersect =============
[17:33:24] ================ drm_test_rect_calc_hscale ================
[17:33:24] [PASSED] normal use
[17:33:24] [PASSED] out of max range
[17:33:24] [PASSED] out of min range
[17:33:24] [PASSED] zero dst
[17:33:24] [PASSED] negative src
[17:33:24] [PASSED] negative dst
[17:33:24] ============ [PASSED] drm_test_rect_calc_hscale ============
[17:33:24] ================ drm_test_rect_calc_vscale ================
[17:33:24] [PASSED] normal use
[17:33:24] [PASSED] out of max range
[17:33:24] [PASSED] out of min range
[17:33:24] [PASSED] zero dst
[17:33:24] [PASSED] negative src
[17:33:24] [PASSED] negative dst
stty: 'standard input': Inappropriate ioctl for device
[17:33:24] ============ [PASSED] drm_test_rect_calc_vscale ============
[17:33:24] ================== drm_test_rect_rotate ===================
[17:33:24] [PASSED] reflect-x
[17:33:24] [PASSED] reflect-y
[17:33:24] [PASSED] rotate-0
[17:33:24] [PASSED] rotate-90
[17:33:24] [PASSED] rotate-180
[17:33:24] [PASSED] rotate-270
[17:33:24] ============== [PASSED] drm_test_rect_rotate ===============
[17:33:24] ================ drm_test_rect_rotate_inv =================
[17:33:24] [PASSED] reflect-x
[17:33:24] [PASSED] reflect-y
[17:33:24] [PASSED] rotate-0
[17:33:24] [PASSED] rotate-90
[17:33:24] [PASSED] rotate-180
[17:33:24] [PASSED] rotate-270
[17:33:24] ============ [PASSED] drm_test_rect_rotate_inv =============
[17:33:24] ==================== [PASSED] drm_rect =====================
[17:33:24] ============ drm_sysfb_modeset_test (1 subtest) ============
[17:33:24] ============ drm_test_sysfb_build_fourcc_list =============
[17:33:24] [PASSED] no native formats
[17:33:24] [PASSED] XRGB8888 as native format
[17:33:24] [PASSED] remove duplicates
[17:33:24] [PASSED] convert alpha formats
[17:33:24] [PASSED] random formats
[17:33:24] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[17:33:24] ============= [PASSED] drm_sysfb_modeset_test ==============
[17:33:24] ================== drm_fixp (2 subtests) ===================
[17:33:24] [PASSED] drm_test_int2fixp
[17:33:24] [PASSED] drm_test_sm2fixp
[17:33:24] ==================== [PASSED] drm_fixp =====================
[17:33:24] ============================================================
[17:33:24] Testing complete. Ran 621 tests: passed: 621
[17:33:24] Elapsed time: 25.467s total, 1.608s configuring, 23.642s building, 0.178s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[17:33:24] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:33:26] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[17:33:35] Starting KUnit Kernel (1/1)...
[17:33:35] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:33:35] ================= ttm_device (5 subtests) ==================
[17:33:35] [PASSED] ttm_device_init_basic
[17:33:35] [PASSED] ttm_device_init_multiple
[17:33:35] [PASSED] ttm_device_fini_basic
[17:33:35] [PASSED] ttm_device_init_no_vma_man
[17:33:35] ================== ttm_device_init_pools ==================
[17:33:35] [PASSED] No DMA allocations, no DMA32 required
[17:33:35] [PASSED] DMA allocations, DMA32 required
[17:33:35] [PASSED] No DMA allocations, DMA32 required
[17:33:35] [PASSED] DMA allocations, no DMA32 required
[17:33:35] ============== [PASSED] ttm_device_init_pools ==============
[17:33:35] =================== [PASSED] ttm_device ====================
[17:33:35] ================== ttm_pool (8 subtests) ===================
[17:33:35] ================== ttm_pool_alloc_basic ===================
[17:33:35] [PASSED] One page
[17:33:35] [PASSED] More than one page
[17:33:35] [PASSED] Above the allocation limit
[17:33:35] [PASSED] One page, with coherent DMA mappings enabled
[17:33:35] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[17:33:35] ============== [PASSED] ttm_pool_alloc_basic ===============
[17:33:35] ============== ttm_pool_alloc_basic_dma_addr ==============
[17:33:35] [PASSED] One page
[17:33:35] [PASSED] More than one page
[17:33:35] [PASSED] Above the allocation limit
[17:33:35] [PASSED] One page, with coherent DMA mappings enabled
[17:33:35] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[17:33:35] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[17:33:35] [PASSED] ttm_pool_alloc_order_caching_match
[17:33:35] [PASSED] ttm_pool_alloc_caching_mismatch
[17:33:35] [PASSED] ttm_pool_alloc_order_mismatch
[17:33:35] [PASSED] ttm_pool_free_dma_alloc
[17:33:35] [PASSED] ttm_pool_free_no_dma_alloc
[17:33:35] [PASSED] ttm_pool_fini_basic
[17:33:35] ==================== [PASSED] ttm_pool =====================
[17:33:35] ================ ttm_resource (8 subtests) =================
[17:33:35] ================= ttm_resource_init_basic =================
[17:33:35] [PASSED] Init resource in TTM_PL_SYSTEM
[17:33:35] [PASSED] Init resource in TTM_PL_VRAM
[17:33:35] [PASSED] Init resource in a private placement
[17:33:35] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[17:33:35] ============= [PASSED] ttm_resource_init_basic =============
[17:33:35] [PASSED] ttm_resource_init_pinned
[17:33:35] [PASSED] ttm_resource_fini_basic
[17:33:35] [PASSED] ttm_resource_manager_init_basic
[17:33:35] [PASSED] ttm_resource_manager_usage_basic
[17:33:35] [PASSED] ttm_resource_manager_set_used_basic
[17:33:35] [PASSED] ttm_sys_man_alloc_basic
[17:33:35] [PASSED] ttm_sys_man_free_basic
[17:33:35] ================== [PASSED] ttm_resource ===================
[17:33:35] =================== ttm_tt (15 subtests) ===================
[17:33:35] ==================== ttm_tt_init_basic ====================
[17:33:35] [PASSED] Page-aligned size
[17:33:35] [PASSED] Extra pages requested
[17:33:35] ================ [PASSED] ttm_tt_init_basic ================
[17:33:35] [PASSED] ttm_tt_init_misaligned
[17:33:35] [PASSED] ttm_tt_fini_basic
[17:33:35] [PASSED] ttm_tt_fini_sg
[17:33:35] [PASSED] ttm_tt_fini_shmem
[17:33:35] [PASSED] ttm_tt_create_basic
[17:33:35] [PASSED] ttm_tt_create_invalid_bo_type
[17:33:35] [PASSED] ttm_tt_create_ttm_exists
[17:33:35] [PASSED] ttm_tt_create_failed
[17:33:35] [PASSED] ttm_tt_destroy_basic
[17:33:35] [PASSED] ttm_tt_populate_null_ttm
[17:33:35] [PASSED] ttm_tt_populate_populated_ttm
[17:33:35] [PASSED] ttm_tt_unpopulate_basic
[17:33:35] [PASSED] ttm_tt_unpopulate_empty_ttm
[17:33:35] [PASSED] ttm_tt_swapin_basic
[17:33:35] ===================== [PASSED] ttm_tt ======================
[17:33:35] =================== ttm_bo (14 subtests) ===================
[17:33:35] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[17:33:35] [PASSED] Cannot be interrupted and sleeps
[17:33:35] [PASSED] Cannot be interrupted, locks straight away
[17:33:35] [PASSED] Can be interrupted, sleeps
[17:33:35] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[17:33:35] [PASSED] ttm_bo_reserve_locked_no_sleep
[17:33:35] [PASSED] ttm_bo_reserve_no_wait_ticket
[17:33:35] [PASSED] ttm_bo_reserve_double_resv
[17:33:35] [PASSED] ttm_bo_reserve_interrupted
[17:33:35] [PASSED] ttm_bo_reserve_deadlock
[17:33:35] [PASSED] ttm_bo_unreserve_basic
[17:33:35] [PASSED] ttm_bo_unreserve_pinned
[17:33:35] [PASSED] ttm_bo_unreserve_bulk
[17:33:35] [PASSED] ttm_bo_fini_basic
[17:33:35] [PASSED] ttm_bo_fini_shared_resv
[17:33:35] [PASSED] ttm_bo_pin_basic
[17:33:35] [PASSED] ttm_bo_pin_unpin_resource
[17:33:35] [PASSED] ttm_bo_multiple_pin_one_unpin
[17:33:35] ===================== [PASSED] ttm_bo ======================
[17:33:35] ============== ttm_bo_validate (21 subtests) ===============
[17:33:35] ============== ttm_bo_init_reserved_sys_man ===============
[17:33:35] [PASSED] Buffer object for userspace
[17:33:35] [PASSED] Kernel buffer object
[17:33:35] [PASSED] Shared buffer object
[17:33:35] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[17:33:35] ============== ttm_bo_init_reserved_mock_man ==============
[17:33:35] [PASSED] Buffer object for userspace
[17:33:35] [PASSED] Kernel buffer object
[17:33:35] [PASSED] Shared buffer object
[17:33:35] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[17:33:35] [PASSED] ttm_bo_init_reserved_resv
[17:33:35] ================== ttm_bo_validate_basic ==================
[17:33:35] [PASSED] Buffer object for userspace
[17:33:35] [PASSED] Kernel buffer object
[17:33:35] [PASSED] Shared buffer object
[17:33:35] ============== [PASSED] ttm_bo_validate_basic ==============
[17:33:35] [PASSED] ttm_bo_validate_invalid_placement
[17:33:35] ============= ttm_bo_validate_same_placement ==============
[17:33:35] [PASSED] System manager
[17:33:35] [PASSED] VRAM manager
[17:33:35] ========= [PASSED] ttm_bo_validate_same_placement ==========
[17:33:35] [PASSED] ttm_bo_validate_failed_alloc
[17:33:35] [PASSED] ttm_bo_validate_pinned
[17:33:35] [PASSED] ttm_bo_validate_busy_placement
[17:33:35] ================ ttm_bo_validate_multihop =================
[17:33:35] [PASSED] Buffer object for userspace
[17:33:35] [PASSED] Kernel buffer object
[17:33:35] [PASSED] Shared buffer object
[17:33:35] ============ [PASSED] ttm_bo_validate_multihop =============
[17:33:35] ========== ttm_bo_validate_no_placement_signaled ==========
[17:33:35] [PASSED] Buffer object in system domain, no page vector
[17:33:35] [PASSED] Buffer object in system domain with an existing page vector
[17:33:35] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[17:33:35] ======== ttm_bo_validate_no_placement_not_signaled ========
[17:33:35] [PASSED] Buffer object for userspace
[17:33:35] [PASSED] Kernel buffer object
[17:33:35] [PASSED] Shared buffer object
[17:33:35] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[17:33:35] [PASSED] ttm_bo_validate_move_fence_signaled
[17:33:35] ========= ttm_bo_validate_move_fence_not_signaled =========
[17:33:35] [PASSED] Waits for GPU
[17:33:35] [PASSED] Tries to lock straight away
[17:33:35] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[17:33:35] [PASSED] ttm_bo_validate_happy_evict
[17:33:35] [PASSED] ttm_bo_validate_all_pinned_evict
[17:33:35] [PASSED] ttm_bo_validate_allowed_only_evict
[17:33:35] [PASSED] ttm_bo_validate_deleted_evict
[17:33:35] [PASSED] ttm_bo_validate_busy_domain_evict
[17:33:35] [PASSED] ttm_bo_validate_evict_gutting
[17:33:35] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[17:33:35] ================= [PASSED] ttm_bo_validate =================
[17:33:35] ============================================================
[17:33:35] Testing complete. Ran 101 tests: passed: 101
[17:33:35] Elapsed time: 11.174s total, 1.683s configuring, 9.275s building, 0.183s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 24+ messages in thread
* ✓ Xe.CI.BAT: success for drm/i915/dp: Fix few SST HPD IRQ handling issues (rev3)
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (20 preceding siblings ...)
2026-02-25 17:33 ` ✓ CI.KUnit: success for drm/i915/dp: Fix few SST HPD IRQ handling issues (rev3) Patchwork
@ 2026-02-25 18:13 ` Patchwork
2026-02-25 20:48 ` ✗ Xe.CI.FULL: failure " Patchwork
22 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2026-02-25 18:13 UTC (permalink / raw)
To: Imre Deak; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 878 bytes --]
== Series Details ==
Series: drm/i915/dp: Fix few SST HPD IRQ handling issues (rev3)
URL : https://patchwork.freedesktop.org/series/150799/
State : success
== Summary ==
CI Bug Log - changes from xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86_BAT -> xe-pw-150799v3_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (14 -> 14)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86 -> xe-pw-150799v3
IGT_8771: 8771
xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86: 3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86
xe-pw-150799v3: 150799v3
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/index.html
[-- Attachment #2: Type: text/html, Size: 1426 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* ✗ Xe.CI.FULL: failure for drm/i915/dp: Fix few SST HPD IRQ handling issues (rev3)
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
` (21 preceding siblings ...)
2026-02-25 18:13 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-02-25 20:48 ` Patchwork
22 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2026-02-25 20:48 UTC (permalink / raw)
To: Imre Deak; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 12362 bytes --]
== Series Details ==
Series: drm/i915/dp: Fix few SST HPD IRQ handling issues (rev3)
URL : https://patchwork.freedesktop.org/series/150799/
State : failure
== Summary ==
CI Bug Log - changes from xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86_FULL -> xe-pw-150799v3_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-150799v3_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-150799v3_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-150799v3_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_flip@2x-flip-vs-panning@ab-dp2-hdmi-a3:
- shard-bmg: [PASS][1] -> [INCOMPLETE][2] +1 other test incomplete
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-2/igt@kms_flip@2x-flip-vs-panning@ab-dp2-hdmi-a3.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-3/igt@kms_flip@2x-flip-vs-panning@ab-dp2-hdmi-a3.html
Known issues
------------
Here are the changes found in xe-pw-150799v3_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#1124])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-5/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_bw@linear-tiling-1-displays-2160x1440p:
- shard-bmg: [PASS][4] -> [SKIP][5] ([Intel XE#367])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-5/igt@kms_bw@linear-tiling-1-displays-2160x1440p.html
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-6/igt@kms_bw@linear-tiling-1-displays-2160x1440p.html
* igt@kms_ccs@crc-primary-basic-y-tiled-gen12-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][6] ([Intel XE#2887]) +1 other test skip
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-5/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-mc-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [PASS][7] -> [INCOMPLETE][8] ([Intel XE#7084]) +1 other test incomplete
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-9/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-a-hdmi-a-3:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2652]) +12 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-a-hdmi-a-3.html
* igt@kms_content_protection@atomic-dpms-hdcp14@pipe-a-dp-1:
- shard-bmg: NOTRUN -> [FAIL][10] ([Intel XE#3304]) +1 other test fail
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-5/igt@kms_content_protection@atomic-dpms-hdcp14@pipe-a-dp-1.html
* igt@kms_content_protection@atomic-hdcp14@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][11] ([Intel XE#1178] / [Intel XE#3304])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-6/igt@kms_content_protection@atomic-hdcp14@pipe-a-dp-2.html
* igt@kms_flip@flip-vs-expired-vblank@a-edp1:
- shard-lnl: [PASS][12] -> [FAIL][13] ([Intel XE#301]) +1 other test fail
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
* igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a3:
- shard-bmg: [PASS][14] -> [INCOMPLETE][15] ([Intel XE#2049] / [Intel XE#2597]) +2 other tests incomplete
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-7/igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a3.html
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-4/igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a3.html
* igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#7061])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#2311])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#2313])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [PASS][19] -> [SKIP][20] ([Intel XE#1503])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-7/igt@kms_hdr@invalid-hdr.html
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-9/igt@kms_hdr@invalid-hdr.html
* igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#1406] / [Intel XE#1489])
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-5/igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area.html
* igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-basic:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#6874])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-5/igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-basic.html
#### Possible fixes ####
* igt@kms_bw@linear-tiling-1-displays-1920x1080p:
- shard-bmg: [SKIP][23] ([Intel XE#367]) -> [PASS][24]
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-3/igt@kms_bw@linear-tiling-1-displays-1920x1080p.html
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-5/igt@kms_bw@linear-tiling-1-displays-1920x1080p.html
* igt@kms_cursor_legacy@cursora-vs-flipb-varying-size:
- shard-bmg: [DMESG-WARN][25] ([Intel XE#5354]) -> [PASS][26]
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-6/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-7/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [FAIL][27] ([Intel XE#7480]) -> [PASS][28]
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-9/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-4/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_plane_cursor@overlay@pipe-b-hdmi-a-3-size-128:
- shard-bmg: [FAIL][29] ([Intel XE#7299]) -> [PASS][30] +1 other test pass
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-2/igt@kms_plane_cursor@overlay@pipe-b-hdmi-a-3-size-128.html
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-5/igt@kms_plane_cursor@overlay@pipe-b-hdmi-a-3-size-128.html
* igt@kms_vrr@cmrr@pipe-a-edp-1:
- shard-lnl: [FAIL][31] ([Intel XE#4459]) -> [PASS][32] +1 other test pass
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-lnl-5/igt@kms_vrr@cmrr@pipe-a-edp-1.html
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-lnl-2/igt@kms_vrr@cmrr@pipe-a-edp-1.html
* igt@xe_evict@evict-mixed-many-threads-small:
- shard-bmg: [INCOMPLETE][33] ([Intel XE#6321]) -> [PASS][34]
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-4/igt@xe_evict@evict-mixed-many-threads-small.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-2/igt@xe_evict@evict-mixed-many-threads-small.html
#### Warnings ####
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][35] ([Intel XE#2426]) -> [SKIP][36] ([Intel XE#2509])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-6/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
- shard-bmg: [ABORT][37] ([Intel XE#5466]) -> [ABORT][38] ([Intel XE#5466] / [Intel XE#6652])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86/shard-bmg-5/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/shard-bmg-6/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
[Intel XE#5354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5354
[Intel XE#5466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5466
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
[Intel XE#7299]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7299
[Intel XE#7480]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7480
Build changes
-------------
* Linux: xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86 -> xe-pw-150799v3
IGT_8771: 8771
xe-4617-3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86: 3b1923ab37ecd72e1405c7b8d3b1d9e1f3e59f86
xe-pw-150799v3: 150799v3
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150799v3/index.html
[-- Attachment #2: Type: text/html, Size: 13658 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2026-02-25 20:48 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-25 16:45 [PATCH v3 00/20] drm/i915/dp: Fix few SST HPD IRQ handling issues Imre Deak
2026-02-25 16:45 ` [PATCH v3 01/20] drm/i915/dp_mst: Reprobe connector if the IRQ ESI read failed Imre Deak
2026-02-25 16:46 ` [PATCH v3 02/20] drm/i915/dp_mst: Verify the link status always the same way Imre Deak
2026-02-25 16:46 ` [PATCH v3 03/20] drm/i915/dp_mst: Reuse intel_dp_check_link_state() in the HPD IRQ handler Imre Deak
2026-02-25 16:46 ` [PATCH v3 04/20] drm/i915/dp: Handle a tunneling IRQ after acking it Imre Deak
2026-02-25 16:46 ` [PATCH v3 05/20] drm/i915/dp: Handle the RX_CAP_CHANGED HPD IRQ Imre Deak
2026-02-25 16:46 ` [PATCH v3 06/20] drm/i915/dp: Handle the DOWNSTREAM_PORT_STATUS_CHANGED event Imre Deak
2026-02-25 16:46 ` [PATCH v3 07/20] drm/i915/dp: Don't clobber the encoder state in the HPD IRQ handler Imre Deak
2026-02-25 16:46 ` [PATCH v3 08/20] drm/i915/dp: Remove the device service IRQ handling from connector detect Imre Deak
2026-02-25 16:46 ` [PATCH v3 09/20] drm/i915/dp: Fix the device service IRQ DPCD_REV check Imre Deak
2026-02-25 16:46 ` [PATCH v3 10/20] drm/i915/dp: Fix the link " Imre Deak
2026-02-25 16:46 ` [PATCH v3 11/20] drm/i915/dp: Reprobe connector if getting/acking device IRQs fails Imre Deak
2026-02-25 16:46 ` [PATCH v3 12/20] drm/i915/dp: Reprobe connector if getting/acking link service " Imre Deak
2026-02-25 16:46 ` [PATCH v3 13/20] drm/i915/dp: Return early if getting/acking device " Imre Deak
2026-02-25 16:46 ` [PATCH v3 14/20] drm/i915/dp: Return early if getting/ackink link " Imre Deak
2026-02-25 16:46 ` [PATCH v3 15/20] drm/i915/dp: Read/ack sink count and sink IRQs for SST as it's done for MST Imre Deak
2026-02-25 16:46 ` [PATCH v3 16/20] drm/i915/dp: Print debug message for a sink connected off request Imre Deak
2026-02-25 16:46 ` [PATCH v3 17/20] drm/i915/dp: Check SST link status while handling link service IRQs Imre Deak
2026-02-25 16:46 ` [PATCH v3 18/20] drm/i915/dp_mst: Reuse intel_dp_handle_link_service_irq() Imre Deak
2026-02-25 16:46 ` [PATCH v3 19/20] drm/i915/dp: Ack only the handled device service IRQs Imre Deak
2026-02-25 16:46 ` [PATCH v3 20/20] drm/i915/dp: Ack only the handled link " Imre Deak
2026-02-25 17:33 ` ✓ CI.KUnit: success for drm/i915/dp: Fix few SST HPD IRQ handling issues (rev3) Patchwork
2026-02-25 18:13 ` ✓ Xe.CI.BAT: " Patchwork
2026-02-25 20:48 ` ✗ Xe.CI.FULL: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox