* [PATCH 00/15] Optimize vrr.guardband and fix LRR
@ 2025-09-28 7:05 Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 01/15] drm/i915/vrr: Use crtc_vsync_start/end for computing vrr.vsync_start/end Ankit Nautiyal
` (18 more replies)
0 siblings, 19 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal
Instead of setting vrr.guardband to vblank, use optimal guardband that
works for most of the cases. This will help in avoiding need of change
in guardband and fix the LRR feature that needs seamless switching to
a lower refresh rate.
First few patches fix/refactor and extract common functions required for
dsc/scaler prefill time computation. Later patches use these helpers to
compute an optimized guardband.
Also, for seamless_mn where vtotal is same but mode clock is changed to
seamlessly switch to lower rate, re-compute the vrr timings.
Few things that still need work:
-The timestamps corresponding with next start of vactive still need to be
fixed with the new scheme.
-Re-enabling CMRR
Rev2:
-Address comments from Mitul.
-Extract helpers for dsc/scaler prefill latencies.
-Fix downscaling factor for chroma subsampling.
-Use missing pkg C max latency.
-Fix guardband computation for seamless mn, always use vblank for
higher resolution.
Rev3:
-Drop patches for computing and storing PSR/Panel Replay wake times
latencies and use existing helpers to compute these in intel_alpm.c.
-Drop patch to change the Vmin as it was not required.
Rev4:
-Rebase
-Drop patch for checking bounds for scaler array access.
-Use a new flag for setting vrr timings for seamless drrs.
Rev5:
-Address comments from Mitul, Jani:
-Refactor few helpers for computing latencies.
-Rename the helper to check the guardband to intel_crtc_guardband_atomic_check()
-Refactor the helper intel_panel_highest_mode().
Rev6:
-Rebase
-Address review comments from Mitul.
-Improve documentation for and other minor fixes in Patch#12
Rev7:
-Address comments from Jani.
-Move the latency helpers from intel_display.c to intel_vrr.c and rename
the helpers appropriately.
-Drop redundant check for HAS_VRR with intel_vrr_possible().
Rev8:
-Fix CI issues.
-For fixed RR wait for delayed vblank before dsb interrupt.
Rev9:
-Fix vrr.vsync_start/end timings for 3D modes (patch#1)
-Rewrite the patch to wait for delayed vblank before dsb interrupt
(patch #11)
-Fix the flipline and vmin timings with optimized guardband (patch#12)
Rev10:
-Address comments from Ville: Use min guardband computation for setting
the vblank delay and set the crtc_vblank_start to delayed vblank.
(Patch#13)
-Modify the TRANS_SET_CONTEXT_LATENCY as per new guardband and use
vrr.guardband to readback vblank_start. (Patch#11)
-From previous revision:
->Drop patch#11 "drm/i915/dsb: Align flipdone with delayed vblank using
guardband wait", as this is no longer required.
->Modify Patch#12 "drm/i915/vrr: Use static guardband to support seamless
LRR switching" to only introduce a helper to compute the fix guardband.
Modify the commit message and the subject.
Rev11:
-Drop patches that are no longer required:
-Patch for clamping SCL.
-Patch to use vrr.vsync to compute vtotal
-Use guardband check for all platforms supporting VRR. (Patch#8)
-Add new patch to determine when to use optimized guardband. (Patch#11)
Use optimized guardband whenever the VRR TG is active.
-Separate out patch to recompute the vblank start for optimized
guardband. (Patch#12)
Rev12:
-Address issue with VRR for platforms which do not have VRR TG always
active. For such platforms when switching to VRR, the vblank start is
shifted for optimizing/reducing the guardband. This causes mismatch
between old and new CRTC states and triggering unnecessary full modesets.
-Rename allow_vblank_delay_fastset() to allow_vblank_delay_fastset_lrr() to
clarify its role in handling vblank delay via LRR codepaths. (Patch#14)
-Introduce allow_vblank_delay_fastset() to extend the logic and allow
vblank delay when optimized guardband is used. (Patch#15)
Ankit Nautiyal (15):
drm/i915/vrr: Use crtc_vsync_start/end for computing
vrr.vsync_start/end
drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling
drm/i915/skl_watermark: Pass linetime as argument to latency helpers
drm/i915/skl_scaler: Introduce helper for chroma downscale factor
drm/i915/display: Extract helpers to set dsc/scaler prefill latencies
drm/i915/dp: Add SDP latency computation helper
drm/i915/alpm: Add function to compute max link-wake latency
drm/i915/display: Add guardband check for feature latencies
drm/i915/skl_watermark: Remove redundant latency checks from vblank
validation
drm/i915/vrr: Introduce helper to compute min static guardband
drm/i915/vrr: Use optimized guardband when VRR TG is active
drm/i915/vrr: Prepare for movement of vblank start for optimized
guardband
drm/i915/display: Recompute crtc_vblank_start for optimized guardband
drm/i915/display:
s/allow_vblank_delay_fastset/allow_vblank_delay_fastset_lrr
drm/i915/display: Use optimized guardband to set vblank start
drivers/gpu/drm/i915/display/intel_alpm.c | 15 ++
drivers/gpu/drm/i915/display/intel_alpm.h | 2 +
drivers/gpu/drm/i915/display/intel_display.c | 230 ++++++++++++++++++-
drivers/gpu/drm/i915/display/intel_dp.c | 47 ++++
drivers/gpu/drm/i915/display/intel_dp.h | 2 +
drivers/gpu/drm/i915/display/intel_vdsc.c | 17 ++
drivers/gpu/drm/i915/display/intel_vdsc.h | 4 +
drivers/gpu/drm/i915/display/intel_vrr.c | 146 +++++++++++-
drivers/gpu/drm/i915/display/intel_vrr.h | 3 +
drivers/gpu/drm/i915/display/skl_scaler.c | 21 ++
drivers/gpu/drm/i915/display/skl_scaler.h | 10 +
drivers/gpu/drm/i915/display/skl_watermark.c | 89 +------
drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
13 files changed, 491 insertions(+), 96 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 01/15] drm/i915/vrr: Use crtc_vsync_start/end for computing vrr.vsync_start/end
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 02/15] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling Ankit Nautiyal
` (17 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal, Uma Shankar
Use adjusted_mode->crtc_vsync_start/end instead of
adjusted_mode->vsync_start while computing vrr.vsync_start/end.
For most modes, these are same but for 3D/stereo modes the
crtc_vsync_start is different than vsync_start.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_vrr.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index 190c51be5cbc..4bc14b5e685f 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -394,10 +394,10 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
if (HAS_AS_SDP(display)) {
crtc_state->vrr.vsync_start =
(crtc_state->hw.adjusted_mode.crtc_vtotal -
- crtc_state->hw.adjusted_mode.vsync_start);
+ crtc_state->hw.adjusted_mode.crtc_vsync_start);
crtc_state->vrr.vsync_end =
(crtc_state->hw.adjusted_mode.crtc_vtotal -
- crtc_state->hw.adjusted_mode.vsync_end);
+ crtc_state->hw.adjusted_mode.crtc_vsync_end);
}
}
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 02/15] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 01/15] drm/i915/vrr: Use crtc_vsync_start/end for computing vrr.vsync_start/end Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 03/15] drm/i915/skl_watermark: Pass linetime as argument to latency helpers Ankit Nautiyal
` (16 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal, Mitul Golani
The Bspec:70151, mentions Chroma subsampling is a 2x downscale
operation. This means that the downscale factor is 2 in each direction.
So correct the downscaling factor to 4.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
drivers/gpu/drm/i915/display/skl_watermark.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index 9eb28d935757..4b1ef4fa8ed2 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -2188,7 +2188,7 @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state)
crtc_state->hw.adjusted_mode.clock);
int num_scaler_users = hweight32(scaler_state->scaler_users);
int chroma_downscaling_factor =
- crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 2 : 1;
+ crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
u32 dsc_prefill_latency = 0;
if (!crtc_state->dsc.compression_enable ||
@@ -2231,7 +2231,7 @@ scaler_prefill_latency(const struct intel_crtc_state *crtc_state)
u64 hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
u64 vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
int chroma_downscaling_factor =
- crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 2 : 1;
+ crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
int latency;
latency = DIV_ROUND_UP_ULL((4 * linetime * hscale_k * vscale_k *
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 03/15] drm/i915/skl_watermark: Pass linetime as argument to latency helpers
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 01/15] drm/i915/vrr: Use crtc_vsync_start/end for computing vrr.vsync_start/end Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 02/15] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 04/15] drm/i915/skl_scaler: Introduce helper for chroma downscale factor Ankit Nautiyal
` (15 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal, Mitul Golani
Refactor dsc_prefill_latency and scaler_prefill_latency to take
linetime as an explicit parameter instead of computing it internally.
This avoids redundant calculations and simplifies scanline conversion
logic in skl_is_vblank_too_short().
This change also facilitates future extraction of these helpers for use
cases where latencies are computed for an optimized guardband, based on the
highest resolution mode, rather than the current mode.
v2: Sum all latency numbers and use intel_usecs_to_scanlines() to
convert to scanlines. (Ville).
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
drivers/gpu/drm/i915/display/skl_watermark.c | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index 4b1ef4fa8ed2..be87a861eb70 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -2179,13 +2179,11 @@ cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state)
}
static int
-dsc_prefill_latency(const struct intel_crtc_state *crtc_state)
+dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
const struct intel_crtc_scaler_state *scaler_state =
&crtc_state->scaler_state;
- int linetime = DIV_ROUND_UP(1000 * crtc_state->hw.adjusted_mode.htotal,
- crtc_state->hw.adjusted_mode.clock);
int num_scaler_users = hweight32(scaler_state->scaler_users);
int chroma_downscaling_factor =
crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
@@ -2209,18 +2207,16 @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state)
dsc_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
- return intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode, dsc_prefill_latency);
+ return dsc_prefill_latency;
}
static int
-scaler_prefill_latency(const struct intel_crtc_state *crtc_state)
+scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
{
const struct intel_crtc_scaler_state *scaler_state =
&crtc_state->scaler_state;
int num_scaler_users = hweight32(scaler_state->scaler_users);
int scaler_prefill_latency = 0;
- int linetime = DIV_ROUND_UP(1000 * crtc_state->hw.adjusted_mode.htotal,
- crtc_state->hw.adjusted_mode.clock);
if (!num_scaler_users)
return scaler_prefill_latency;
@@ -2241,7 +2237,7 @@ scaler_prefill_latency(const struct intel_crtc_state *crtc_state)
scaler_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
- return intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode, scaler_prefill_latency);
+ return scaler_prefill_latency;
}
static bool
@@ -2250,11 +2246,14 @@ skl_is_vblank_too_short(const struct intel_crtc_state *crtc_state,
{
const struct drm_display_mode *adjusted_mode =
&crtc_state->hw.adjusted_mode;
+ int linetime = DIV_ROUND_UP(1000 * adjusted_mode->htotal,
+ adjusted_mode->clock);
+
+ latency += scaler_prefill_latency(crtc_state, linetime) +
+ dsc_prefill_latency(crtc_state, linetime);
return crtc_state->framestart_delay +
intel_usecs_to_scanlines(adjusted_mode, latency) +
- scaler_prefill_latency(crtc_state) +
- dsc_prefill_latency(crtc_state) +
wm0_lines >
adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vblank_start;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 04/15] drm/i915/skl_scaler: Introduce helper for chroma downscale factor
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (2 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 03/15] drm/i915/skl_watermark: Pass linetime as argument to latency helpers Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 05/15] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies Ankit Nautiyal
` (14 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal, Mitul Golani
For 444 to 420 output format conversion, scaler uses 2x downscaling in
each direction. Introduce skl_scaler_chroma_downscale_factor() to
encapsulate the chroma subsampling adjustment used in scaler/dsc
pre-fill latency calculations.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
drivers/gpu/drm/i915/display/skl_scaler.c | 5 +++++
drivers/gpu/drm/i915/display/skl_scaler.h | 3 +++
drivers/gpu/drm/i915/display/skl_watermark.c | 7 +++----
3 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
index c6cccf170ff1..af2cbd54c32e 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.c
+++ b/drivers/gpu/drm/i915/display/skl_scaler.c
@@ -968,3 +968,8 @@ void adl_scaler_ecc_unmask(const struct intel_crtc_state *crtc_state)
1);
intel_de_write(display, XELPD_DISPLAY_ERR_FATAL_MASK, 0);
}
+
+int skl_scaler_chroma_downscale_factor(const struct intel_crtc_state *crtc_state)
+{
+ return crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
+}
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.h b/drivers/gpu/drm/i915/display/skl_scaler.h
index 12a19016c5f6..257330d4c329 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.h
+++ b/drivers/gpu/drm/i915/display/skl_scaler.h
@@ -45,4 +45,7 @@ skl_scaler_mode_valid(struct intel_display *display,
void adl_scaler_ecc_mask(const struct intel_crtc_state *crtc_state);
void adl_scaler_ecc_unmask(const struct intel_crtc_state *crtc_state);
+
+int skl_scaler_chroma_downscale_factor(const struct intel_crtc_state *crtc_state);
+
#endif
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index be87a861eb70..2da54569f06a 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -30,6 +30,7 @@
#include "intel_plane.h"
#include "intel_wm.h"
#include "skl_universal_plane_regs.h"
+#include "skl_scaler.h"
#include "skl_watermark.h"
#include "skl_watermark_regs.h"
@@ -2185,8 +2186,7 @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
const struct intel_crtc_scaler_state *scaler_state =
&crtc_state->scaler_state;
int num_scaler_users = hweight32(scaler_state->scaler_users);
- int chroma_downscaling_factor =
- crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
u32 dsc_prefill_latency = 0;
if (!crtc_state->dsc.compression_enable ||
@@ -2226,8 +2226,7 @@ scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
if (num_scaler_users > 1) {
u64 hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
u64 vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
- int chroma_downscaling_factor =
- crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
int latency;
latency = DIV_ROUND_UP_ULL((4 * linetime * hscale_k * vscale_k *
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 05/15] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (3 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 04/15] drm/i915/skl_scaler: Introduce helper for chroma downscale factor Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 06/15] drm/i915/dp: Add SDP latency computation helper Ankit Nautiyal
` (13 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal, Mitul Golani
Currently dsc/scaler prefill latencies are handled during watermark
calculations. With the optimized guardband, we need to compute the
latencies to find the minimum guardband that works for most cases.
Extract the helpers to compute these latencies, so that they can be used
while computing vrr guardband.
While at it, put declarations in reverse xmas tree order for better
redability.
v2: Initialize {h,v}scale_k to 0, and simplify the check in
intel_display_scaler_prefill_latency(). (Mitul)
v3: Move helpers from intel_display.c to intel_vrr.c as they are specific
to account for latencies to program vrr guardband. (Jani)
v4: Move helpers to dsc/scaler files. (Ville)
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
drivers/gpu/drm/i915/display/intel_vdsc.c | 17 +++++++
drivers/gpu/drm/i915/display/intel_vdsc.h | 4 ++
drivers/gpu/drm/i915/display/skl_scaler.c | 16 +++++++
drivers/gpu/drm/i915/display/skl_scaler.h | 7 +++
drivers/gpu/drm/i915/display/skl_watermark.c | 47 +++++++++-----------
5 files changed, 66 insertions(+), 25 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
index 8e799e225af1..e59d62994798 100644
--- a/drivers/gpu/drm/i915/display/intel_vdsc.c
+++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
@@ -1077,3 +1077,20 @@ int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state)
return min_cdclk;
}
+
+int intel_dsc_guardband_latency(int num_scaler_users, u64 *hscale, u64 *vscale,
+ int chroma_downscaling_factor,
+ int cdclk_prefill_adjustment,
+ int linetime)
+{
+ int dsc_prefill_latency;
+
+ dsc_prefill_latency = DIV_ROUND_UP(15 * linetime * chroma_downscaling_factor, 10);
+
+ for (int i = 0; i < num_scaler_users; i++)
+ dsc_prefill_latency = DIV_ROUND_UP_ULL(dsc_prefill_latency * hscale[i] * vscale[i],
+ 1000000);
+ dsc_prefill_latency *= cdclk_prefill_adjustment;
+
+ return dsc_prefill_latency;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.h b/drivers/gpu/drm/i915/display/intel_vdsc.h
index 9e2812f99dd7..60aecadf95bf 100644
--- a/drivers/gpu/drm/i915/display/intel_vdsc.h
+++ b/drivers/gpu/drm/i915/display/intel_vdsc.h
@@ -32,5 +32,9 @@ void intel_dsc_dp_pps_write(struct intel_encoder *encoder,
void intel_vdsc_state_dump(struct drm_printer *p, int indent,
const struct intel_crtc_state *crtc_state);
int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state);
+int intel_dsc_guardband_latency(int num_scaler_users, u64 *hscale, u64 *vscale,
+ int chroma_downscaling_factor,
+ int cdclk_prefill_adjustment,
+ int linetime);
#endif /* __INTEL_VDSC_H__ */
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
index af2cbd54c32e..69130744c09e 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.c
+++ b/drivers/gpu/drm/i915/display/skl_scaler.c
@@ -973,3 +973,19 @@ int skl_scaler_chroma_downscale_factor(const struct intel_crtc_state *crtc_state
{
return crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ? 4 : 1;
}
+
+int skl_scaler_guardband_latency(int num_scaler_users, u64 hscale, u64 vscale,
+ int chroma_downscaling_factor,
+ int cdclk_prefill_adjustment,
+ int linetime)
+{
+ int scaler_prefill_latency;
+
+ scaler_prefill_latency = 4 * linetime +
+ DIV_ROUND_UP_ULL((4 * linetime * hscale * vscale *
+ chroma_downscaling_factor), 1000000);
+
+ scaler_prefill_latency *= cdclk_prefill_adjustment;
+
+ return scaler_prefill_latency;
+}
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.h b/drivers/gpu/drm/i915/display/skl_scaler.h
index 257330d4c329..5aa53d576aba 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.h
+++ b/drivers/gpu/drm/i915/display/skl_scaler.h
@@ -5,6 +5,8 @@
#ifndef INTEL_SCALER_H
#define INTEL_SCALER_H
+#include <linux/types.h>
+
enum drm_mode_status;
struct drm_display_mode;
struct intel_atomic_state;
@@ -48,4 +50,9 @@ void adl_scaler_ecc_unmask(const struct intel_crtc_state *crtc_state);
int skl_scaler_chroma_downscale_factor(const struct intel_crtc_state *crtc_state);
+int skl_scaler_guardband_latency(int num_scaler_users, u64 hscale, u64 vscale,
+ int chroma_downscaling_factor,
+ int cdclk_prefill_adjustment,
+ int linetime);
+
#endif
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index 2da54569f06a..deb43f0c348a 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -28,6 +28,7 @@
#include "intel_flipq.h"
#include "intel_pcode.h"
#include "intel_plane.h"
+#include "intel_vdsc.h"
#include "intel_wm.h"
#include "skl_universal_plane_regs.h"
#include "skl_scaler.h"
@@ -2182,11 +2183,12 @@ cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state)
static int
dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
{
+ const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
- const struct intel_crtc_scaler_state *scaler_state =
- &crtc_state->scaler_state;
int num_scaler_users = hweight32(scaler_state->scaler_users);
- int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
+ u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
+ u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
u32 dsc_prefill_latency = 0;
if (!crtc_state->dsc.compression_enable ||
@@ -2194,18 +2196,16 @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
num_scaler_users > crtc->num_scalers)
return dsc_prefill_latency;
- dsc_prefill_latency = DIV_ROUND_UP(15 * linetime * chroma_downscaling_factor, 10);
-
for (int i = 0; i < num_scaler_users; i++) {
- u64 hscale_k, vscale_k;
-
- hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[i].hscale, 1000) >> 16);
- vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[i].vscale, 1000) >> 16);
- dsc_prefill_latency = DIV_ROUND_UP_ULL(dsc_prefill_latency * hscale_k * vscale_k,
- 1000000);
+ hscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].hscale, 1000) >> 16);
+ vscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].vscale, 1000) >> 16);
}
- dsc_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
+ dsc_prefill_latency =
+ intel_dsc_guardband_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_prefill_adjustment(crtc_state),
+ linetime);
return dsc_prefill_latency;
}
@@ -2213,28 +2213,25 @@ dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
static int
scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
{
- const struct intel_crtc_scaler_state *scaler_state =
- &crtc_state->scaler_state;
+ const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
int num_scaler_users = hweight32(scaler_state->scaler_users);
+ u64 hscale_k = 0, vscale_k = 0;
int scaler_prefill_latency = 0;
if (!num_scaler_users)
return scaler_prefill_latency;
- scaler_prefill_latency = 4 * linetime;
-
if (num_scaler_users > 1) {
- u64 hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
- u64 vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
- int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
- int latency;
-
- latency = DIV_ROUND_UP_ULL((4 * linetime * hscale_k * vscale_k *
- chroma_downscaling_factor), 1000000);
- scaler_prefill_latency += latency;
+ hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
+ vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
}
- scaler_prefill_latency *= cdclk_prefill_adjustment(crtc_state);
+ scaler_prefill_latency =
+ skl_scaler_guardband_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_prefill_adjustment(crtc_state),
+ linetime);
return scaler_prefill_latency;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 06/15] drm/i915/dp: Add SDP latency computation helper
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (4 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 05/15] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 07/15] drm/i915/alpm: Add function to compute max link-wake latency Ankit Nautiyal
` (12 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal, Mitul Golani
Add a helper to compute vblank time needed for transmitting specific
DisplayPort SDPs like PPS, GAMUT_METADATA, and VSC_EXT. Latency is
based on line count per packet type and current line time.
Used to ensure adequate vblank when features like DSC/HDR are enabled.
Bspec: 70151
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 47 +++++++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_dp.h | 2 ++
2 files changed, 49 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 2eab591a8ef5..83c46e4680b3 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6857,3 +6857,50 @@ void intel_dp_mst_resume(struct intel_display *display)
}
}
}
+
+static
+int intel_dp_get_sdp_latency(u32 type, int linetime_us)
+{
+ int lines;
+
+ switch (type) {
+ case DP_SDP_VSC_EXT_VESA:
+ case DP_SDP_VSC_EXT_CEA:
+ lines = 10;
+ break;
+ case HDMI_PACKET_TYPE_GAMUT_METADATA:
+ lines = 8;
+ break;
+ case DP_SDP_PPS:
+ lines = 6;
+ break;
+ default:
+ lines = 0;
+ break;
+ }
+
+ return lines * linetime_us;
+}
+
+int intel_dp_compute_sdp_latency(const struct intel_crtc_state *crtc_state,
+ bool assume_all_enabled)
+{
+ const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
+ int sdp_latency = 0;
+ int linetime_us;
+
+ linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
+ adjusted_mode->crtc_clock);
+ if (assume_all_enabled ||
+ crtc_state->infoframes.enable &
+ intel_hdmi_infoframe_enable(HDMI_PACKET_TYPE_GAMUT_METADATA))
+ sdp_latency = max(sdp_latency,
+ intel_dp_get_sdp_latency(HDMI_PACKET_TYPE_GAMUT_METADATA,
+ linetime_us));
+
+ if (assume_all_enabled || crtc_state->dsc.compression_enable)
+ sdp_latency = max(sdp_latency,
+ intel_dp_get_sdp_latency(DP_SDP_PPS, linetime_us));
+
+ return sdp_latency;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index f90cfd1dbbd0..d222749b191c 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -215,5 +215,7 @@ int intel_dp_compute_min_hblank(struct intel_crtc_state *crtc_state,
int intel_dp_dsc_bpp_step_x16(const struct intel_connector *connector);
void intel_dp_dpcd_set_probe(struct intel_dp *intel_dp, bool force_on_external);
bool intel_dp_in_hdr_mode(const struct drm_connector_state *conn_state);
+int intel_dp_compute_sdp_latency(const struct intel_crtc_state *crtc_state,
+ bool assume_all_enabled);
#endif /* __INTEL_DP_H__ */
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 07/15] drm/i915/alpm: Add function to compute max link-wake latency
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (5 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 06/15] drm/i915/dp: Add SDP latency computation helper Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 08/15] drm/i915/display: Add guardband check for feature latencies Ankit Nautiyal
` (11 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal, Mitul Golani
Introduce a helper to compute the max link wake latency when using
Auxless/Aux wake mechanism for PSR/Panel Replay/LOBF features.
This will be used to compute the minimum guardband so that the link wake
latencies are accounted and these features work smoothly for higher
refresh rate panels.
Bspec: 70151, 71477
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
drivers/gpu/drm/i915/display/intel_alpm.c | 15 +++++++++++++++
drivers/gpu/drm/i915/display/intel_alpm.h | 2 ++
2 files changed, 17 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 749119cc0b28..df380ecf7d0f 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -598,3 +598,18 @@ bool intel_alpm_get_error(struct intel_dp *intel_dp)
return false;
}
+
+int intel_alpm_compute_max_link_wake_latency(const struct intel_crtc_state *crtc_state,
+ bool assume_all_enabled)
+{
+ int psr2_vblank_time = 0;
+ int auxless_wake_time = 0;
+
+ if (assume_all_enabled || crtc_state->has_sel_update)
+ psr2_vblank_time = io_buffer_wake_time(crtc_state);
+
+ if (assume_all_enabled || crtc_state->has_panel_replay)
+ auxless_wake_time = _lnl_compute_aux_less_wake_time(crtc_state);
+
+ return max(psr2_vblank_time, auxless_wake_time);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h b/drivers/gpu/drm/i915/display/intel_alpm.h
index a861c20b5d79..b371827af356 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.h
+++ b/drivers/gpu/drm/i915/display/intel_alpm.h
@@ -38,4 +38,6 @@ bool intel_alpm_is_alpm_aux_less(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state);
void intel_alpm_disable(struct intel_dp *intel_dp);
bool intel_alpm_get_error(struct intel_dp *intel_dp);
+int intel_alpm_compute_max_link_wake_latency(const struct intel_crtc_state *crtc_state,
+ bool assume_all_enabled);
#endif
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 08/15] drm/i915/display: Add guardband check for feature latencies
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (6 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 07/15] drm/i915/alpm: Add function to compute max link-wake latency Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 09/15] drm/i915/skl_watermark: Remove redundant latency checks from vblank validation Ankit Nautiyal
` (10 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal, Mitul Golani
Add a check during atomic crtc check phase to ensure the programmed VRR
guardband is sufficient to cover latencies introduced by enabled features
such as DSC, PSR/PR, scalers, and DP SDPs.
Currently, the guardband is programmed to match the vblank length, so
existing checks in skl_is_vblank_too_short() are valid. However, upcoming
changes will optimize the guardband independently of vblank, making those
checks incorrect.
Introduce an explicit guardband check to prepare for future updates
that will remove checking against the vblank length and later program an
optimized guardband.
Note: Need some work to account for package C state latency and the use
of PKG_C_Latency register. When PKG_C_LATENCY is configured hardware will
automatically wake from package C states before framestart so that
package C state latency can be considered to be 0.
v2: Use new helper for PSR2/Panel Replay latency.
v3:
- Align the name of helper with intel_crtc_atomic_check and rename it to
intel_crtc_guardband_atomic_check(). (Jani)
- Simplify checks in the helper. (Mitul)
- Make a separate helper to compute wm0 prefill time. (Mitul)
v4: Drop redundant HAS_VRR() check. (Jani).
v5:
- Use intel_usecs_to_scanlines() instead of hand rolled stuff. (Ville)
- Allow guardband check on all VRR supporting platforms.
- Add a TODO note for accounting for pkgc latency.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com> (#v3)
---
drivers/gpu/drm/i915/display/intel_display.c | 147 +++++++++++++++++++
drivers/gpu/drm/i915/display/skl_watermark.c | 2 +-
drivers/gpu/drm/i915/display/skl_watermark.h | 1 +
3 files changed, 149 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index b57efd870774..ec415b939770 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -4189,6 +4189,147 @@ static int hsw_compute_linetime_wm(struct intel_atomic_state *state,
return 0;
}
+static int
+cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_display *display = to_intel_display(crtc_state);
+ struct intel_atomic_state *state =
+ to_intel_atomic_state(crtc_state->uapi.state);
+ const struct intel_cdclk_state *cdclk_state;
+
+ cdclk_state = intel_atomic_get_cdclk_state(state);
+ if (IS_ERR(cdclk_state)) {
+ drm_WARN_ON(display->drm, PTR_ERR(cdclk_state));
+ return 1;
+ }
+
+ return min(1, DIV_ROUND_UP(crtc_state->pixel_rate,
+ 2 * intel_cdclk_logical(cdclk_state)));
+}
+
+static int
+dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
+{
+ const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+ int num_scaler_users = hweight32(scaler_state->scaler_users);
+ u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
+ u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
+ u32 dsc_prefill_latency = 0;
+
+ if (!crtc_state->dsc.compression_enable ||
+ !num_scaler_users ||
+ num_scaler_users > crtc->num_scalers)
+ return dsc_prefill_latency;
+
+ for (int i = 0; i < num_scaler_users; i++) {
+ hscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].hscale, 1000) >> 16);
+ vscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].vscale, 1000) >> 16);
+ }
+
+ dsc_prefill_latency =
+ intel_dsc_guardband_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_prefill_adjustment(crtc_state),
+ linetime);
+
+ return dsc_prefill_latency;
+}
+
+static int
+scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
+{
+ const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
+ int num_scaler_users = hweight32(scaler_state->scaler_users);
+ u64 hscale_k = 0, vscale_k = 0;
+ int scaler_prefill_latency = 0;
+
+ if (!num_scaler_users)
+ return scaler_prefill_latency;
+
+ if (num_scaler_users > 1) {
+ hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
+ vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
+ }
+
+ scaler_prefill_latency =
+ skl_scaler_guardband_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_prefill_adjustment(crtc_state),
+ linetime);
+
+ return scaler_prefill_latency;
+}
+
+static int
+wm0_prefill_latency(int linetime_us, int max_wm0_lines)
+{
+ return 20 + linetime_us * max_wm0_lines;
+}
+
+static int intel_crtc_guardband_atomic_check(struct intel_crtc_state *crtc_state)
+{
+ struct intel_display *display = to_intel_display(crtc_state);
+ const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
+ int dsc_prefill_time = 0;
+ int scaler_prefill_time;
+ int wm0_prefill_time;
+ int psr2_pr_latency;
+ int min_guardband;
+ int guardband_us;
+ int sagv_latency;
+ int linetime_us;
+ int sdp_latency;
+ int pm_delay;
+
+ if (!adjusted_mode->crtc_clock)
+ return 0;
+
+ linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
+ adjusted_mode->crtc_clock);
+
+ /*
+ * #TODO
+ * Account for package C state latency and setting of PKG_C_LATENCY
+ * register.
+ * When PKG_C_LATENCY is configured (not all 1s), hardware will
+ * automatically wake from package C states before framestart so
+ * that package C state latency can be considered to be 0.
+ *
+ * Use max of sagv and package C state latency.
+ */
+ sagv_latency = display->sagv.block_time_us;
+
+ wm0_prefill_time = wm0_prefill_latency(linetime_us, skl_max_wm0_lines(crtc_state));
+
+ scaler_prefill_time = scaler_prefill_latency(crtc_state, linetime_us);
+
+ dsc_prefill_time = dsc_prefill_latency(crtc_state, linetime_us);
+
+ pm_delay = crtc_state->framestart_delay +
+ sagv_latency +
+ wm0_prefill_time +
+ scaler_prefill_time +
+ dsc_prefill_time;
+
+ psr2_pr_latency = intel_alpm_compute_max_link_wake_latency(crtc_state, false);
+ sdp_latency = intel_dp_compute_sdp_latency(crtc_state, false);
+
+ guardband_us = max(sdp_latency, psr2_pr_latency);
+ guardband_us = max(guardband_us, pm_delay);
+ min_guardband = intel_usecs_to_scanlines(adjusted_mode, guardband_us);
+
+ if (crtc_state->vrr.guardband < min_guardband) {
+ drm_dbg_kms(display->drm, "vrr.guardband %d < min guardband %d\n",
+ crtc_state->vrr.guardband, min_guardband);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
static int intel_crtc_atomic_check(struct intel_atomic_state *state,
struct intel_crtc *crtc)
{
@@ -4251,6 +4392,12 @@ static int intel_crtc_atomic_check(struct intel_atomic_state *state,
if (ret)
return ret;
+ if (intel_vrr_possible(crtc_state)) {
+ ret = intel_crtc_guardband_atomic_check(crtc_state);
+ if (ret)
+ return ret;
+ }
+
return 0;
}
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index deb43f0c348a..9a368bb9e92a 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -2254,7 +2254,7 @@ skl_is_vblank_too_short(const struct intel_crtc_state *crtc_state,
adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vblank_start;
}
-static int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
+int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
enum plane_id plane_id;
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.h b/drivers/gpu/drm/i915/display/skl_watermark.h
index 62790816f030..8706c2010ebe 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.h
+++ b/drivers/gpu/drm/i915/display/skl_watermark.h
@@ -78,6 +78,7 @@ void intel_dbuf_mbus_post_ddb_update(struct intel_atomic_state *state);
void intel_program_dpkgc_latency(struct intel_atomic_state *state);
bool intel_dbuf_pmdemand_needs_update(struct intel_atomic_state *state);
+int skl_max_wm0_lines(const struct intel_crtc_state *crtc_state);
#endif /* __SKL_WATERMARK_H__ */
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 09/15] drm/i915/skl_watermark: Remove redundant latency checks from vblank validation
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (7 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 08/15] drm/i915/display: Add guardband check for feature latencies Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 10/15] drm/i915/vrr: Introduce helper to compute min static guardband Ankit Nautiyal
` (9 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal, Mitul Golani
Drop DSC and scaler prefill latency checks from skl_is_vblank_too_short().
These are now covered by the guardband validation added during the atomic
CRTC check phase.
This cleanup prepares for future changes where the guardband will be
optimized independently of vblank length, making vblank-based checks
obsolete.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
---
drivers/gpu/drm/i915/display/skl_watermark.c | 80 --------------------
1 file changed, 80 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index 9a368bb9e92a..73e5b2d8ae83 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -28,7 +28,6 @@
#include "intel_flipq.h"
#include "intel_pcode.h"
#include "intel_plane.h"
-#include "intel_vdsc.h"
#include "intel_wm.h"
#include "skl_universal_plane_regs.h"
#include "skl_scaler.h"
@@ -2162,91 +2161,12 @@ static int icl_build_plane_wm(struct intel_crtc_state *crtc_state,
return 0;
}
-static int
-cdclk_prefill_adjustment(const struct intel_crtc_state *crtc_state)
-{
- struct intel_display *display = to_intel_display(crtc_state);
- struct intel_atomic_state *state =
- to_intel_atomic_state(crtc_state->uapi.state);
- const struct intel_cdclk_state *cdclk_state;
-
- cdclk_state = intel_atomic_get_cdclk_state(state);
- if (IS_ERR(cdclk_state)) {
- drm_WARN_ON(display->drm, PTR_ERR(cdclk_state));
- return 1;
- }
-
- return min(1, DIV_ROUND_UP(crtc_state->pixel_rate,
- 2 * intel_cdclk_logical(cdclk_state)));
-}
-
-static int
-dsc_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
-{
- const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
- int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
- struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
- int num_scaler_users = hweight32(scaler_state->scaler_users);
- u64 hscale_k[ARRAY_SIZE(scaler_state->scalers)];
- u64 vscale_k[ARRAY_SIZE(scaler_state->scalers)];
- u32 dsc_prefill_latency = 0;
-
- if (!crtc_state->dsc.compression_enable ||
- !num_scaler_users ||
- num_scaler_users > crtc->num_scalers)
- return dsc_prefill_latency;
-
- for (int i = 0; i < num_scaler_users; i++) {
- hscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].hscale, 1000) >> 16);
- vscale_k[i] = max(1000, mul_u32_u32(scaler_state->scalers[i].vscale, 1000) >> 16);
- }
-
- dsc_prefill_latency =
- intel_dsc_guardband_latency(num_scaler_users, hscale_k, vscale_k,
- chroma_downscaling_factor,
- cdclk_prefill_adjustment(crtc_state),
- linetime);
-
- return dsc_prefill_latency;
-}
-
-static int
-scaler_prefill_latency(const struct intel_crtc_state *crtc_state, int linetime)
-{
- const struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
- int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
- int num_scaler_users = hweight32(scaler_state->scaler_users);
- u64 hscale_k = 0, vscale_k = 0;
- int scaler_prefill_latency = 0;
-
- if (!num_scaler_users)
- return scaler_prefill_latency;
-
- if (num_scaler_users > 1) {
- hscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].hscale, 1000) >> 16);
- vscale_k = max(1000, mul_u32_u32(scaler_state->scalers[0].vscale, 1000) >> 16);
- }
-
- scaler_prefill_latency =
- skl_scaler_guardband_latency(num_scaler_users, hscale_k, vscale_k,
- chroma_downscaling_factor,
- cdclk_prefill_adjustment(crtc_state),
- linetime);
-
- return scaler_prefill_latency;
-}
-
static bool
skl_is_vblank_too_short(const struct intel_crtc_state *crtc_state,
int wm0_lines, int latency)
{
const struct drm_display_mode *adjusted_mode =
&crtc_state->hw.adjusted_mode;
- int linetime = DIV_ROUND_UP(1000 * adjusted_mode->htotal,
- adjusted_mode->clock);
-
- latency += scaler_prefill_latency(crtc_state, linetime) +
- dsc_prefill_latency(crtc_state, linetime);
return crtc_state->framestart_delay +
intel_usecs_to_scanlines(adjusted_mode, latency) +
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 10/15] drm/i915/vrr: Introduce helper to compute min static guardband
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (8 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 09/15] drm/i915/skl_watermark: Remove redundant latency checks from vblank validation Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 11/15] drm/i915/vrr: Use optimized guardband when VRR TG is active Ankit Nautiyal
` (8 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal, Mitul Golani
In the current VRR implementation, vrr.vmin and vrr.guardband are set such
that they do not need to change when switching from fixed refresh rate to
variable refresh rate. Specifically, vrr.guardband is always set to match
the vblank length. This approach works for most cases, but not for LRR,
where the guardband would need to change while the VRR timing generator is
still active.
With the VRR TG always active, live updates to guardband are unsafe and not
recommended. To ensure hardware safety, guardband was moved out of the
!fastset block, meaning any change now requires a full modeset.
This breaks seamless LRR switching, which was previously supported.
Since the problem arises from guardband being matched to the vblank length,
solution is to use a minimal, sufficient static value, instead. So we use a
static guardband defined during mode-set that fits within the smallest
expected vblank and remains unchanged in case of features like LRR where
vtotal changes. To compute this minimum guardband we take into account
latencies/delays due to different features as mentioned in the Bspec.
Introduce a helper to compute the minimal sufficient guardband.
v2: Use helpers for dsc/scaler prefill latencies. (Mitul)
Account for pkgc latency and take max of pkgc and sagv latencies.
v3: Use new helper for PSR2/Panel Replay latency.
v4: Avoid re-setting the Vmin/Flipline for optimized guardband.
v5:
- Refactor the function to make it as a helper which can be used to
update crtc_vblank_start and guardband can then be derived from it.
(Ville)
- Modify the subject and commit message for the same.
v6: Use intel_usecs_to_scanlines() instead of hand rolled stuff. (Ville)
Bspec: 70151
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com> (#v3)
---
drivers/gpu/drm/i915/display/intel_vrr.c | 117 +++++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_vrr.h | 2 +
2 files changed, 119 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index 4bc14b5e685f..a43e5ee2d3ac 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -6,12 +6,18 @@
#include <drm/drm_print.h>
+#include "intel_alpm.h"
+#include "intel_crtc.h"
#include "intel_de.h"
#include "intel_display_regs.h"
#include "intel_display_types.h"
#include "intel_dp.h"
+#include "intel_dp.h"
+#include "intel_vdsc.h"
#include "intel_vrr.h"
#include "intel_vrr_regs.h"
+#include "skl_scaler.h"
+#include "skl_watermark.h"
#define FIXED_POINT_PRECISION 100
#define CMRR_PRECISION_TOLERANCE 10
@@ -839,3 +845,114 @@ int intel_vrr_vmin_safe_window_end(const struct intel_crtc_state *crtc_state)
return intel_vrr_vmin_vblank_start(crtc_state) -
crtc_state->set_context_latency;
}
+
+static
+int scaler_prefill_latency(struct intel_crtc_state *crtc_state, int linetime_us)
+{
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
+ u64 hscale_k, vscale_k;
+ int cdclk_adjustment;
+ int num_scaler_users;
+
+ /*
+ * Assuming:
+ * Both scaler enabled.
+ * scaler 1 downscaling factor as 2 x 2 (Horiz x Vert)
+ * scaler 2 downscaling factor as 2 x 1 (Horiz x Vert)
+ * Cdclk Adjustment : 1
+ */
+ num_scaler_users = 2;
+ hscale_k = 2 * 1000;
+ vscale_k = 2 * 1000;
+ cdclk_adjustment = 1;
+
+ return skl_scaler_guardband_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_adjustment,
+ linetime_us);
+}
+
+static
+int dsc_prefill_latency(struct intel_crtc_state *crtc_state, int linetime_us)
+{
+#define MAX_SCALERS 2
+ int chroma_downscaling_factor = skl_scaler_chroma_downscale_factor(crtc_state);
+ u64 hscale_k[MAX_SCALERS], vscale_k[MAX_SCALERS];
+ int cdclk_adjustment;
+ int num_scaler_users;
+
+ /*
+ * Assuming:
+ * Both scaler enabled.
+ * scaler 1 downscaling factor as 2 x 2 (Horiz x Vert)
+ * scaler 2 downscaling factor as 2 x 1 (Horiz x Vert)
+ * Cdclk Adjustment : 1
+ */
+ num_scaler_users = MAX_SCALERS;
+ hscale_k[0] = 2 * 1000;
+ vscale_k[0] = 2 * 1000;
+ hscale_k[1] = 2 * 1000;
+ vscale_k[1] = 1 * 1000;
+
+ cdclk_adjustment = 1;
+
+ return intel_dsc_guardband_latency(num_scaler_users, hscale_k, vscale_k,
+ chroma_downscaling_factor,
+ cdclk_adjustment,
+ linetime_us);
+}
+
+int intel_vrr_compute_guardband(struct intel_crtc_state *crtc_state,
+ struct intel_connector *connector)
+{
+ const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
+ struct intel_display *display = to_intel_display(crtc_state);
+ int dsc_prefill_time = 0;
+ int psr2_pr_latency = 0;
+ int scaler_prefill_time;
+ int wm0_prefill_time;
+ int pkgc_max_latency;
+ int sagv_latency;
+ int sdp_latency = 0;
+ int guardband_us;
+ int linetime_us;
+ int guardband;
+ int pm_delay;
+
+ linetime_us = DIV_ROUND_UP(adjusted_mode->crtc_htotal * 1000,
+ adjusted_mode->crtc_clock);
+
+ pkgc_max_latency = skl_watermark_max_latency(display, 1);
+ sagv_latency = display->sagv.block_time_us;
+
+ /* Assuming max wm0 lines = 4 */
+ wm0_prefill_time = 4 * linetime_us + 20;
+
+ scaler_prefill_time = scaler_prefill_latency(crtc_state, linetime_us);
+
+ if (crtc_state->dsc.compression_enable)
+ dsc_prefill_time = dsc_prefill_latency(crtc_state, linetime_us);
+
+ pm_delay = crtc_state->framestart_delay +
+ max(sagv_latency, pkgc_max_latency) +
+ wm0_prefill_time +
+ scaler_prefill_time +
+ dsc_prefill_time;
+
+ switch (connector->base.connector_type) {
+ case DRM_MODE_CONNECTOR_eDP:
+ case DRM_MODE_CONNECTOR_DisplayPort:
+ psr2_pr_latency = intel_alpm_compute_max_link_wake_latency(crtc_state, true);
+ sdp_latency = intel_dp_compute_sdp_latency(crtc_state, true);
+ break;
+ default:
+ break;
+ }
+
+ guardband_us = max(sdp_latency, psr2_pr_latency);
+ guardband_us = max(guardband_us, pm_delay);
+
+ guardband = intel_usecs_to_scanlines(adjusted_mode, guardband_us);
+
+ return guardband;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.h b/drivers/gpu/drm/i915/display/intel_vrr.h
index 7317f8730089..d332e5a0a1c1 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.h
+++ b/drivers/gpu/drm/i915/display/intel_vrr.h
@@ -42,5 +42,7 @@ void intel_vrr_set_fixed_rr_timings(const struct intel_crtc_state *crtc_state);
bool intel_vrr_always_use_vrr_tg(struct intel_display *display);
int intel_vrr_safe_window_start(const struct intel_crtc_state *crtc_state);
int intel_vrr_vmin_safe_window_end(const struct intel_crtc_state *crtc_state);
+int intel_vrr_compute_guardband(struct intel_crtc_state *crtc_state,
+ struct intel_connector *connector);
#endif /* __INTEL_VRR_H__ */
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 11/15] drm/i915/vrr: Use optimized guardband when VRR TG is active
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (9 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 10/15] drm/i915/vrr: Introduce helper to compute min static guardband Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 12/15] drm/i915/vrr: Prepare for movement of vblank start for optimized guardband Ankit Nautiyal
` (7 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal
We want to use the optimized/reduced guardband whenever we are using the
VRR timing generator, as the legacy timing generator doesn't need vrr
guardband.
On platforms where the VRR timing generator is always ON, we optimize the
guardband regardless of whether the display is operating in fixed or
variable refresh rate mode.
On platforms where the VRR timing generator is not always ON, we optimize
the guardband only when VRR is enabled.
Add a helper intel_vrr_use_optimized_guardband() to determine if the
optimized/reduced guardband should be used.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_vrr.c | 7 +++++++
drivers/gpu/drm/i915/display/intel_vrr.h | 1 +
2 files changed, 8 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index a43e5ee2d3ac..ff6848de21b5 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -956,3 +956,10 @@ int intel_vrr_compute_guardband(struct intel_crtc_state *crtc_state,
return guardband;
}
+
+bool intel_vrr_use_optimized_guardband(const struct intel_crtc_state *crtc_state)
+{
+ struct intel_display *display = to_intel_display(crtc_state);
+
+ return intel_vrr_always_use_vrr_tg(display) || crtc_state->vrr.enable;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.h b/drivers/gpu/drm/i915/display/intel_vrr.h
index d332e5a0a1c1..0c741c2a5bbd 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.h
+++ b/drivers/gpu/drm/i915/display/intel_vrr.h
@@ -44,5 +44,6 @@ int intel_vrr_safe_window_start(const struct intel_crtc_state *crtc_state);
int intel_vrr_vmin_safe_window_end(const struct intel_crtc_state *crtc_state);
int intel_vrr_compute_guardband(struct intel_crtc_state *crtc_state,
struct intel_connector *connector);
+bool intel_vrr_use_optimized_guardband(const struct intel_crtc_state *crtc_state);
#endif /* __INTEL_VRR_H__ */
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 12/15] drm/i915/vrr: Prepare for movement of vblank start for optimized guardband
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (10 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 11/15] drm/i915/vrr: Use optimized guardband when VRR TG is active Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 13/15] drm/i915/display: Recompute crtc_vblank_start " Ankit Nautiyal
` (6 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal
Currently, the guardband is computed as: vmin - vdisplay, because the
guardband matches the length of the vblank interval. We then make sure
that this value is atmost equal to the max guardband with SCL and other
delays taken into account.
However, with the optimized/reduced guardband logic, the delayed vblank
will be positioned further away from the undelayed vblank. So with the
optimization enabled, the guardband should instead be computed as:
vmin - vblank_start.
Update the guardband calculation in intel_vrr_compute_config_late() to use
vblank_start when optimization is enabled.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_vrr.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index ff6848de21b5..0b4694a1e2b5 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -443,12 +443,17 @@ void intel_vrr_compute_config_late(struct intel_crtc_state *crtc_state)
{
struct intel_display *display = to_intel_display(crtc_state);
const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
+ int guardband;
if (!intel_vrr_possible(crtc_state))
return;
- crtc_state->vrr.guardband = min(crtc_state->vrr.vmin - adjusted_mode->crtc_vdisplay,
- intel_vrr_max_guardband(crtc_state));
+ if (intel_vrr_use_optimized_guardband(crtc_state))
+ guardband = crtc_state->vrr.vmin - adjusted_mode->crtc_vblank_start;
+ else
+ guardband = crtc_state->vrr.vmin - adjusted_mode->crtc_vdisplay;
+
+ crtc_state->vrr.guardband = min(guardband, intel_vrr_max_guardband(crtc_state));
if (DISPLAY_VER(display) < 13)
crtc_state->vrr.pipeline_full =
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 13/15] drm/i915/display: Recompute crtc_vblank_start for optimized guardband
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (11 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 12/15] drm/i915/vrr: Prepare for movement of vblank start for optimized guardband Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 14/15] drm/i915/display: s/allow_vblank_delay_fastset/allow_vblank_delay_fastset_lrr Ankit Nautiyal
` (5 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal
Currently crtc_vblank_start is read out either from VBLANK_START (pre
ADL) or from set context latency and vactive, in
intel_get_transcoder_timings().
As we move the delayed vblank to reduce the guardband, we need to use
the guardband to readout the new vblank start.
Recompute and overwrite the new vblank start when optimized guardband is
used in intel_vrr_get_config().
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_vrr.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index 0b4694a1e2b5..dfd4f7456db0 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -832,6 +832,15 @@ void intel_vrr_get_config(struct intel_crtc_state *crtc_state)
*/
if (crtc_state->vrr.enable)
crtc_state->mode_flags |= I915_MODE_FLAG_VRR;
+
+ /*
+ * If guardband is optimized then vblank start is vtotal - vblank_start
+ */
+ if (intel_vrr_use_optimized_guardband(crtc_state))
+ crtc_state->hw.adjusted_mode.crtc_vblank_start =
+ crtc_state->hw.adjusted_mode.crtc_vtotal -
+ crtc_state->vrr.guardband;
+
}
int intel_vrr_safe_window_start(const struct intel_crtc_state *crtc_state)
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 14/15] drm/i915/display: s/allow_vblank_delay_fastset/allow_vblank_delay_fastset_lrr
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (12 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 13/15] drm/i915/display: Recompute crtc_vblank_start " Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start Ankit Nautiyal
` (4 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal
The function allow_vblank_delay_fastset specifically checks for conditions
under which vblank delay is allowed via LRR codepaths. To make its purpose
clearer and prepare for future extensions, rename it to
allow_vblank_delay_fastset_lrr.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index ec415b939770..4135f9be53fd 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -5097,7 +5097,7 @@ pipe_config_cx0pll_mismatch(struct drm_printer *p, bool fastset,
intel_cx0pll_dump_hw_state(display, b);
}
-static bool allow_vblank_delay_fastset(const struct intel_crtc_state *old_crtc_state)
+static bool allow_vblank_delay_fastset_lrr(const struct intel_crtc_state *old_crtc_state)
{
struct intel_display *display = to_intel_display(old_crtc_state);
@@ -5242,7 +5242,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
PIPE_CONF_CHECK_I(name.crtc_hsync_start); \
PIPE_CONF_CHECK_I(name.crtc_hsync_end); \
PIPE_CONF_CHECK_I(name.crtc_vdisplay); \
- if (!fastset || !allow_vblank_delay_fastset(current_config)) \
+ if (!fastset || !allow_vblank_delay_fastset_lrr(current_config)) \
PIPE_CONF_CHECK_I(name.crtc_vblank_start); \
PIPE_CONF_CHECK_I(name.crtc_vsync_start); \
PIPE_CONF_CHECK_I(name.crtc_vsync_end); \
@@ -5851,7 +5851,7 @@ static void intel_crtc_check_fastset(const struct intel_crtc_state *old_crtc_sta
drm_dbg_kms(display->drm, "[CRTC:%d:%s] fastset requirement not met, forcing full modeset\n",
crtc->base.base.id, crtc->base.name);
} else {
- if (allow_vblank_delay_fastset(old_crtc_state))
+ if (allow_vblank_delay_fastset_lrr(old_crtc_state))
new_crtc_state->update_lrr = true;
new_crtc_state->uapi.mode_changed = false;
}
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (13 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 14/15] drm/i915/display: s/allow_vblank_delay_fastset/allow_vblank_delay_fastset_lrr Ankit Nautiyal
@ 2025-09-28 7:05 ` Ankit Nautiyal
2025-09-29 8:45 ` Ville Syrjälä
2025-09-29 9:00 ` Ville Syrjälä
2025-09-28 7:31 ` ✓ CI.KUnit: success for Optimize vrr.guardband and fix LRR (rev13) Patchwork
` (3 subsequent siblings)
18 siblings, 2 replies; 30+ messages in thread
From: Ankit Nautiyal @ 2025-09-28 7:05 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: ville.syrjala, Ankit Nautiyal
As we move towards using a shorter, optimized guardband, we need to adjust
how the delayed vblank start is computed.
Use the helper intel_vrr_compute_guardband() to calculate the optimized
guardband. Since this is measured from the vblank end, we shift the
vblank-start accordingly.
Calculate the minimum delay required based on the guardband and apply it in
intel_crtc_vblank_delay() to update crtc_vblank_start.
Additionally, introduce a new allow_vblank_delay_fastset() helper that
combines the existing LRR-based logic with an additional check for the
optimized guardband usage.
v2:
- Check if optimized guardband is more than vblank length and add debug
print.
- Extend vblank delay fastset logic to cover optimized guardband.
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 79 +++++++++++++++++++-
1 file changed, 76 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 4135f9be53fd..97a3121a204f 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -2361,6 +2361,67 @@ static int intel_crtc_compute_pipe_mode(struct intel_crtc_state *crtc_state)
return 0;
}
+static
+int intel_crtc_min_guardband_delay(struct intel_atomic_state *state,
+ struct intel_crtc *crtc)
+{
+ struct intel_display *display = to_intel_display(state);
+ struct intel_crtc_state *crtc_state =
+ intel_atomic_get_new_crtc_state(state, crtc);
+ const struct drm_display_mode *adjusted_mode =
+ &crtc_state->hw.adjusted_mode;
+ struct drm_connector_state *conn_state;
+ struct drm_connector *drm_connector;
+ int vblank_length;
+ int i;
+
+ if (!intel_vrr_use_optimized_guardband(crtc_state))
+ return 0;
+
+ vblank_length = crtc_state->vrr.vmin -
+ adjusted_mode->crtc_vdisplay;
+
+ for_each_new_connector_in_state(&state->base,
+ drm_connector,
+ conn_state, i) {
+ int guardband;
+ struct intel_connector *connector;
+
+ if (conn_state->crtc != &crtc->base)
+ continue;
+
+ connector = to_intel_connector(drm_connector);
+ guardband = intel_vrr_compute_guardband(crtc_state,
+ connector);
+ if (guardband > vblank_length) {
+ drm_dbg_kms(display->drm,
+ "[CRTC:%d:%s] Cannot optimize guardband (%d) exceeds max (%d)\n",
+ crtc->base.base.id, crtc->base.name,
+ guardband,
+ vblank_length);
+ return 0;
+ }
+
+ return vblank_length - guardband;
+ }
+
+ return 0;
+}
+
+static void intel_crtc_vblank_delay(struct intel_atomic_state *state,
+ struct intel_crtc *crtc)
+{
+ struct intel_crtc_state *crtc_state =
+ intel_atomic_get_new_crtc_state(state, crtc);
+ struct drm_display_mode *adjusted_mode =
+ &crtc_state->hw.adjusted_mode;
+ int vblank_delay = 0;
+
+ vblank_delay = intel_crtc_min_guardband_delay(state, crtc);
+
+ adjusted_mode->crtc_vblank_start += vblank_delay;
+}
+
static int intel_crtc_set_context_latency(struct intel_crtc_state *crtc_state)
{
struct intel_display *display = to_intel_display(crtc_state);
@@ -2413,6 +2474,7 @@ static int intel_crtc_compute_config(struct intel_atomic_state *state,
ret = intel_crtc_compute_set_context_latency(state, crtc);
if (ret)
return ret;
+ intel_crtc_vblank_delay(state, crtc);
ret = intel_dpll_crtc_compute_clock(state, crtc);
if (ret)
@@ -5101,13 +5163,24 @@ static bool allow_vblank_delay_fastset_lrr(const struct intel_crtc_state *old_cr
{
struct intel_display *display = to_intel_display(old_crtc_state);
+ return HAS_LRR(display) && old_crtc_state->inherited &&
+ !intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_DSI);
+}
+
+static bool allow_vblank_delay_fastset(const struct intel_crtc_state *old_crtc_state,
+ const struct intel_crtc_state *new_crtc_state)
+{
/*
* Allow fastboot to fix up vblank delay (handled via LRR
* codepaths), a bit dodgy as the registers aren't
* double buffered but seems to be working more or less...
+ *
+ * Additionally, with the optimized guardband the vblank start
+ * is moved further away from the undelayed vblank. Allow this
+ * vblank delay when optimized guardband is used.
*/
- return HAS_LRR(display) && old_crtc_state->inherited &&
- !intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_DSI);
+ return allow_vblank_delay_fastset_lrr(old_crtc_state) ||
+ intel_vrr_use_optimized_guardband(new_crtc_state);
}
bool
@@ -5242,7 +5315,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
PIPE_CONF_CHECK_I(name.crtc_hsync_start); \
PIPE_CONF_CHECK_I(name.crtc_hsync_end); \
PIPE_CONF_CHECK_I(name.crtc_vdisplay); \
- if (!fastset || !allow_vblank_delay_fastset_lrr(current_config)) \
+ if (!fastset || !allow_vblank_delay_fastset(current_config, pipe_config)) \
PIPE_CONF_CHECK_I(name.crtc_vblank_start); \
PIPE_CONF_CHECK_I(name.crtc_vsync_start); \
PIPE_CONF_CHECK_I(name.crtc_vsync_end); \
--
2.45.2
^ permalink raw reply related [flat|nested] 30+ messages in thread
* ✓ CI.KUnit: success for Optimize vrr.guardband and fix LRR (rev13)
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (14 preceding siblings ...)
2025-09-28 7:05 ` [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start Ankit Nautiyal
@ 2025-09-28 7:31 ` Patchwork
2025-09-28 7:46 ` ✗ CI.checksparse: warning " Patchwork
` (2 subsequent siblings)
18 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2025-09-28 7:31 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-xe
== Series Details ==
Series: Optimize vrr.guardband and fix LRR (rev13)
URL : https://patchwork.freedesktop.org/series/151244/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[07:30:05] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[07:30:09] 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
[07:30:38] Starting KUnit Kernel (1/1)...
[07:30:38] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[07:30:38] ================== guc_buf (11 subtests) ===================
[07:30:38] [PASSED] test_smallest
[07:30:38] [PASSED] test_largest
[07:30:39] [PASSED] test_granular
[07:30:39] [PASSED] test_unique
[07:30:39] [PASSED] test_overlap
[07:30:39] [PASSED] test_reusable
[07:30:39] [PASSED] test_too_big
[07:30:39] [PASSED] test_flush
[07:30:39] [PASSED] test_lookup
[07:30:39] [PASSED] test_data
[07:30:39] [PASSED] test_class
[07:30:39] ===================== [PASSED] guc_buf =====================
[07:30:39] =================== guc_dbm (7 subtests) ===================
[07:30:39] [PASSED] test_empty
[07:30:39] [PASSED] test_default
[07:30:39] ======================== test_size ========================
[07:30:39] [PASSED] 4
[07:30:39] [PASSED] 8
[07:30:39] [PASSED] 32
[07:30:39] [PASSED] 256
[07:30:39] ==================== [PASSED] test_size ====================
[07:30:39] ======================= test_reuse ========================
[07:30:39] [PASSED] 4
[07:30:39] [PASSED] 8
[07:30:39] [PASSED] 32
[07:30:39] [PASSED] 256
[07:30:39] =================== [PASSED] test_reuse ====================
[07:30:39] =================== test_range_overlap ====================
[07:30:39] [PASSED] 4
[07:30:39] [PASSED] 8
[07:30:39] [PASSED] 32
[07:30:39] [PASSED] 256
[07:30:39] =============== [PASSED] test_range_overlap ================
[07:30:39] =================== test_range_compact ====================
[07:30:39] [PASSED] 4
[07:30:39] [PASSED] 8
[07:30:39] [PASSED] 32
[07:30:39] [PASSED] 256
[07:30:39] =============== [PASSED] test_range_compact ================
[07:30:39] ==================== test_range_spare =====================
[07:30:39] [PASSED] 4
[07:30:39] [PASSED] 8
[07:30:39] [PASSED] 32
[07:30:39] [PASSED] 256
[07:30:39] ================ [PASSED] test_range_spare =================
[07:30:39] ===================== [PASSED] guc_dbm =====================
[07:30:39] =================== guc_idm (6 subtests) ===================
[07:30:39] [PASSED] bad_init
[07:30:39] [PASSED] no_init
[07:30:39] [PASSED] init_fini
[07:30:39] [PASSED] check_used
[07:30:39] [PASSED] check_quota
[07:30:39] [PASSED] check_all
[07:30:39] ===================== [PASSED] guc_idm =====================
[07:30:39] ================== no_relay (3 subtests) ===================
[07:30:39] [PASSED] xe_drops_guc2pf_if_not_ready
[07:30:39] [PASSED] xe_drops_guc2vf_if_not_ready
[07:30:39] [PASSED] xe_rejects_send_if_not_ready
[07:30:39] ==================== [PASSED] no_relay =====================
[07:30:39] ================== pf_relay (14 subtests) ==================
[07:30:39] [PASSED] pf_rejects_guc2pf_too_short
[07:30:39] [PASSED] pf_rejects_guc2pf_too_long
[07:30:39] [PASSED] pf_rejects_guc2pf_no_payload
[07:30:39] [PASSED] pf_fails_no_payload
[07:30:39] [PASSED] pf_fails_bad_origin
[07:30:39] [PASSED] pf_fails_bad_type
[07:30:39] [PASSED] pf_txn_reports_error
[07:30:39] [PASSED] pf_txn_sends_pf2guc
[07:30:39] [PASSED] pf_sends_pf2guc
[07:30:39] [SKIPPED] pf_loopback_nop
[07:30:39] [SKIPPED] pf_loopback_echo
[07:30:39] [SKIPPED] pf_loopback_fail
[07:30:39] [SKIPPED] pf_loopback_busy
[07:30:39] [SKIPPED] pf_loopback_retry
[07:30:39] ==================== [PASSED] pf_relay =====================
[07:30:39] ================== vf_relay (3 subtests) ===================
[07:30:39] [PASSED] vf_rejects_guc2vf_too_short
[07:30:39] [PASSED] vf_rejects_guc2vf_too_long
[07:30:39] [PASSED] vf_rejects_guc2vf_no_payload
[07:30:39] ==================== [PASSED] vf_relay =====================
[07:30:39] ===================== lmtt (1 subtest) =====================
[07:30:39] ======================== test_ops =========================
[07:30:39] [PASSED] 2-level
[07:30:39] [PASSED] multi-level
[07:30:39] ==================== [PASSED] test_ops =====================
[07:30:39] ====================== [PASSED] lmtt =======================
[07:30:39] ================= pf_service (11 subtests) =================
[07:30:39] [PASSED] pf_negotiate_any
[07:30:39] [PASSED] pf_negotiate_base_match
[07:30:39] [PASSED] pf_negotiate_base_newer
[07:30:39] [PASSED] pf_negotiate_base_next
[07:30:39] [SKIPPED] pf_negotiate_base_older
[07:30:39] [PASSED] pf_negotiate_base_prev
[07:30:39] [PASSED] pf_negotiate_latest_match
[07:30:39] [PASSED] pf_negotiate_latest_newer
[07:30:39] [PASSED] pf_negotiate_latest_next
[07:30:39] [SKIPPED] pf_negotiate_latest_older
[07:30:39] [SKIPPED] pf_negotiate_latest_prev
[07:30:39] =================== [PASSED] pf_service ====================
[07:30:39] ================= xe_guc_g2g (2 subtests) ==================
[07:30:39] ============== xe_live_guc_g2g_kunit_default ==============
[07:30:39] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[07:30:39] ============== xe_live_guc_g2g_kunit_allmem ===============
[07:30:39] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[07:30:39] =================== [SKIPPED] xe_guc_g2g ===================
[07:30:39] =================== xe_mocs (2 subtests) ===================
[07:30:39] ================ xe_live_mocs_kernel_kunit ================
[07:30:39] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[07:30:39] ================ xe_live_mocs_reset_kunit =================
[07:30:39] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[07:30:39] ==================== [SKIPPED] xe_mocs =====================
[07:30:39] ================= xe_migrate (2 subtests) ==================
[07:30:39] ================= xe_migrate_sanity_kunit =================
[07:30:39] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[07:30:39] ================== xe_validate_ccs_kunit ==================
[07:30:39] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[07:30:39] =================== [SKIPPED] xe_migrate ===================
[07:30:39] ================== xe_dma_buf (1 subtest) ==================
[07:30:39] ==================== xe_dma_buf_kunit =====================
[07:30:39] ================ [SKIPPED] xe_dma_buf_kunit ================
[07:30:39] =================== [SKIPPED] xe_dma_buf ===================
[07:30:39] ================= xe_bo_shrink (1 subtest) =================
[07:30:39] =================== xe_bo_shrink_kunit ====================
[07:30:39] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[07:30:39] ================== [SKIPPED] xe_bo_shrink ==================
[07:30:39] ==================== xe_bo (2 subtests) ====================
[07:30:39] ================== xe_ccs_migrate_kunit ===================
[07:30:39] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[07:30:39] ==================== xe_bo_evict_kunit ====================
[07:30:39] =============== [SKIPPED] xe_bo_evict_kunit ================
[07:30:39] ===================== [SKIPPED] xe_bo ======================
[07:30:39] ==================== args (11 subtests) ====================
[07:30:39] [PASSED] count_args_test
[07:30:39] [PASSED] call_args_example
[07:30:39] [PASSED] call_args_test
[07:30:39] [PASSED] drop_first_arg_example
[07:30:39] [PASSED] drop_first_arg_test
[07:30:39] [PASSED] first_arg_example
[07:30:39] [PASSED] first_arg_test
[07:30:39] [PASSED] last_arg_example
[07:30:39] [PASSED] last_arg_test
[07:30:39] [PASSED] pick_arg_example
[07:30:39] [PASSED] sep_comma_example
[07:30:39] ====================== [PASSED] args =======================
[07:30:39] =================== xe_pci (3 subtests) ====================
[07:30:39] ==================== check_graphics_ip ====================
[07:30:39] [PASSED] 12.00 Xe_LP
[07:30:39] [PASSED] 12.10 Xe_LP+
[07:30:39] [PASSED] 12.55 Xe_HPG
[07:30:39] [PASSED] 12.60 Xe_HPC
[07:30:39] [PASSED] 12.70 Xe_LPG
[07:30:39] [PASSED] 12.71 Xe_LPG
[07:30:39] [PASSED] 12.74 Xe_LPG+
[07:30:39] [PASSED] 20.01 Xe2_HPG
[07:30:39] [PASSED] 20.02 Xe2_HPG
[07:30:39] [PASSED] 20.04 Xe2_LPG
[07:30:39] [PASSED] 30.00 Xe3_LPG
[07:30:39] [PASSED] 30.01 Xe3_LPG
[07:30:39] [PASSED] 30.03 Xe3_LPG
[07:30:39] ================ [PASSED] check_graphics_ip ================
[07:30:39] ===================== check_media_ip ======================
[07:30:39] [PASSED] 12.00 Xe_M
[07:30:39] [PASSED] 12.55 Xe_HPM
[07:30:39] [PASSED] 13.00 Xe_LPM+
[07:30:39] [PASSED] 13.01 Xe2_HPM
[07:30:39] [PASSED] 20.00 Xe2_LPM
[07:30:39] [PASSED] 30.00 Xe3_LPM
[07:30:39] [PASSED] 30.02 Xe3_LPM
[07:30:39] ================= [PASSED] check_media_ip ==================
[07:30:39] ================= check_platform_gt_count =================
[07:30:39] [PASSED] 0x9A60 (TIGERLAKE)
[07:30:39] [PASSED] 0x9A68 (TIGERLAKE)
[07:30:39] [PASSED] 0x9A70 (TIGERLAKE)
[07:30:39] [PASSED] 0x9A40 (TIGERLAKE)
[07:30:39] [PASSED] 0x9A49 (TIGERLAKE)
[07:30:39] [PASSED] 0x9A59 (TIGERLAKE)
[07:30:39] [PASSED] 0x9A78 (TIGERLAKE)
[07:30:39] [PASSED] 0x9AC0 (TIGERLAKE)
[07:30:39] [PASSED] 0x9AC9 (TIGERLAKE)
[07:30:39] [PASSED] 0x9AD9 (TIGERLAKE)
[07:30:39] [PASSED] 0x9AF8 (TIGERLAKE)
[07:30:39] [PASSED] 0x4C80 (ROCKETLAKE)
[07:30:39] [PASSED] 0x4C8A (ROCKETLAKE)
[07:30:39] [PASSED] 0x4C8B (ROCKETLAKE)
[07:30:39] [PASSED] 0x4C8C (ROCKETLAKE)
[07:30:39] [PASSED] 0x4C90 (ROCKETLAKE)
[07:30:39] [PASSED] 0x4C9A (ROCKETLAKE)
[07:30:39] [PASSED] 0x4680 (ALDERLAKE_S)
[07:30:39] [PASSED] 0x4682 (ALDERLAKE_S)
[07:30:39] [PASSED] 0x4688 (ALDERLAKE_S)
[07:30:39] [PASSED] 0x468A (ALDERLAKE_S)
[07:30:39] [PASSED] 0x468B (ALDERLAKE_S)
[07:30:39] [PASSED] 0x4690 (ALDERLAKE_S)
[07:30:39] [PASSED] 0x4692 (ALDERLAKE_S)
[07:30:39] [PASSED] 0x4693 (ALDERLAKE_S)
[07:30:39] [PASSED] 0x46A0 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46A1 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46A2 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46A3 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46A6 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46A8 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46AA (ALDERLAKE_P)
[07:30:39] [PASSED] 0x462A (ALDERLAKE_P)
[07:30:39] [PASSED] 0x4626 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x4628 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46B0 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46B1 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46B2 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46B3 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46C0 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46C1 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46C2 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46C3 (ALDERLAKE_P)
[07:30:39] [PASSED] 0x46D0 (ALDERLAKE_N)
[07:30:39] [PASSED] 0x46D1 (ALDERLAKE_N)
[07:30:39] [PASSED] 0x46D2 (ALDERLAKE_N)
[07:30:39] [PASSED] 0x46D3 (ALDERLAKE_N)
[07:30:39] [PASSED] 0x46D4 (ALDERLAKE_N)
[07:30:39] [PASSED] 0xA721 (ALDERLAKE_P)
[07:30:39] [PASSED] 0xA7A1 (ALDERLAKE_P)
[07:30:39] [PASSED] 0xA7A9 (ALDERLAKE_P)
[07:30:39] [PASSED] 0xA7AC (ALDERLAKE_P)
[07:30:39] [PASSED] 0xA7AD (ALDERLAKE_P)
[07:30:39] [PASSED] 0xA720 (ALDERLAKE_P)
[07:30:39] [PASSED] 0xA7A0 (ALDERLAKE_P)
[07:30:39] [PASSED] 0xA7A8 (ALDERLAKE_P)
[07:30:39] [PASSED] 0xA7AA (ALDERLAKE_P)
[07:30:39] [PASSED] 0xA7AB (ALDERLAKE_P)
[07:30:39] [PASSED] 0xA780 (ALDERLAKE_S)
[07:30:39] [PASSED] 0xA781 (ALDERLAKE_S)
[07:30:39] [PASSED] 0xA782 (ALDERLAKE_S)
[07:30:39] [PASSED] 0xA783 (ALDERLAKE_S)
[07:30:39] [PASSED] 0xA788 (ALDERLAKE_S)
[07:30:39] [PASSED] 0xA789 (ALDERLAKE_S)
[07:30:39] [PASSED] 0xA78A (ALDERLAKE_S)
[07:30:39] [PASSED] 0xA78B (ALDERLAKE_S)
[07:30:39] [PASSED] 0x4905 (DG1)
[07:30:39] [PASSED] 0x4906 (DG1)
[07:30:39] [PASSED] 0x4907 (DG1)
[07:30:39] [PASSED] 0x4908 (DG1)
[07:30:39] [PASSED] 0x4909 (DG1)
[07:30:39] [PASSED] 0x56C0 (DG2)
[07:30:39] [PASSED] 0x56C2 (DG2)
[07:30:39] [PASSED] 0x56C1 (DG2)
[07:30:39] [PASSED] 0x7D51 (METEORLAKE)
[07:30:39] [PASSED] 0x7DD1 (METEORLAKE)
[07:30:39] [PASSED] 0x7D41 (METEORLAKE)
[07:30:39] [PASSED] 0x7D67 (METEORLAKE)
[07:30:39] [PASSED] 0xB640 (METEORLAKE)
[07:30:39] [PASSED] 0x56A0 (DG2)
[07:30:39] [PASSED] 0x56A1 (DG2)
[07:30:39] [PASSED] 0x56A2 (DG2)
[07:30:39] [PASSED] 0x56BE (DG2)
[07:30:39] [PASSED] 0x56BF (DG2)
[07:30:39] [PASSED] 0x5690 (DG2)
[07:30:39] [PASSED] 0x5691 (DG2)
[07:30:39] [PASSED] 0x5692 (DG2)
[07:30:39] [PASSED] 0x56A5 (DG2)
[07:30:39] [PASSED] 0x56A6 (DG2)
[07:30:39] [PASSED] 0x56B0 (DG2)
[07:30:39] [PASSED] 0x56B1 (DG2)
[07:30:39] [PASSED] 0x56BA (DG2)
[07:30:39] [PASSED] 0x56BB (DG2)
[07:30:39] [PASSED] 0x56BC (DG2)
[07:30:39] [PASSED] 0x56BD (DG2)
[07:30:39] [PASSED] 0x5693 (DG2)
[07:30:39] [PASSED] 0x5694 (DG2)
[07:30:39] [PASSED] 0x5695 (DG2)
[07:30:39] [PASSED] 0x56A3 (DG2)
[07:30:39] [PASSED] 0x56A4 (DG2)
[07:30:39] [PASSED] 0x56B2 (DG2)
[07:30:39] [PASSED] 0x56B3 (DG2)
[07:30:39] [PASSED] 0x5696 (DG2)
[07:30:39] [PASSED] 0x5697 (DG2)
[07:30:39] [PASSED] 0xB69 (PVC)
[07:30:39] [PASSED] 0xB6E (PVC)
[07:30:39] [PASSED] 0xBD4 (PVC)
[07:30:39] [PASSED] 0xBD5 (PVC)
[07:30:39] [PASSED] 0xBD6 (PVC)
[07:30:39] [PASSED] 0xBD7 (PVC)
[07:30:39] [PASSED] 0xBD8 (PVC)
[07:30:39] [PASSED] 0xBD9 (PVC)
[07:30:39] [PASSED] 0xBDA (PVC)
[07:30:39] [PASSED] 0xBDB (PVC)
[07:30:39] [PASSED] 0xBE0 (PVC)
[07:30:39] [PASSED] 0xBE1 (PVC)
[07:30:39] [PASSED] 0xBE5 (PVC)
[07:30:39] [PASSED] 0x7D40 (METEORLAKE)
[07:30:39] [PASSED] 0x7D45 (METEORLAKE)
[07:30:39] [PASSED] 0x7D55 (METEORLAKE)
[07:30:39] [PASSED] 0x7D60 (METEORLAKE)
[07:30:39] [PASSED] 0x7DD5 (METEORLAKE)
[07:30:39] [PASSED] 0x6420 (LUNARLAKE)
[07:30:39] [PASSED] 0x64A0 (LUNARLAKE)
[07:30:39] [PASSED] 0x64B0 (LUNARLAKE)
[07:30:39] [PASSED] 0xE202 (BATTLEMAGE)
[07:30:39] [PASSED] 0xE209 (BATTLEMAGE)
[07:30:39] [PASSED] 0xE20B (BATTLEMAGE)
[07:30:39] [PASSED] 0xE20C (BATTLEMAGE)
[07:30:39] [PASSED] 0xE20D (BATTLEMAGE)
[07:30:39] [PASSED] 0xE210 (BATTLEMAGE)
[07:30:39] [PASSED] 0xE211 (BATTLEMAGE)
[07:30:39] [PASSED] 0xE212 (BATTLEMAGE)
[07:30:39] [PASSED] 0xE216 (BATTLEMAGE)
[07:30:39] [PASSED] 0xE220 (BATTLEMAGE)
[07:30:39] [PASSED] 0xE221 (BATTLEMAGE)
[07:30:39] [PASSED] 0xE222 (BATTLEMAGE)
[07:30:39] [PASSED] 0xE223 (BATTLEMAGE)
[07:30:39] [PASSED] 0xB080 (PANTHERLAKE)
[07:30:39] [PASSED] 0xB081 (PANTHERLAKE)
[07:30:39] [PASSED] 0xB082 (PANTHERLAKE)
[07:30:39] [PASSED] 0xB083 (PANTHERLAKE)
[07:30:39] [PASSED] 0xB084 (PANTHERLAKE)
[07:30:39] [PASSED] 0xB085 (PANTHERLAKE)
[07:30:39] [PASSED] 0xB086 (PANTHERLAKE)
[07:30:39] [PASSED] 0xB087 (PANTHERLAKE)
[07:30:39] [PASSED] 0xB08F (PANTHERLAKE)
[07:30:39] [PASSED] 0xB090 (PANTHERLAKE)
[07:30:39] [PASSED] 0xB0A0 (PANTHERLAKE)
[07:30:39] [PASSED] 0xB0B0 (PANTHERLAKE)
[07:30:39] [PASSED] 0xFD80 (PANTHERLAKE)
[07:30:39] [PASSED] 0xFD81 (PANTHERLAKE)
[07:30:39] ============= [PASSED] check_platform_gt_count =============
[07:30:39] ===================== [PASSED] xe_pci ======================
[07:30:39] =================== xe_rtp (2 subtests) ====================
[07:30:39] =============== xe_rtp_process_to_sr_tests ================
[07:30:39] [PASSED] coalesce-same-reg
[07:30:39] [PASSED] no-match-no-add
[07:30:39] [PASSED] match-or
[07:30:39] [PASSED] match-or-xfail
[07:30:39] [PASSED] no-match-no-add-multiple-rules
[07:30:39] [PASSED] two-regs-two-entries
[07:30:39] [PASSED] clr-one-set-other
[07:30:39] [PASSED] set-field
[07:30:39] [PASSED] conflict-duplicate
[07:30:39] [PASSED] conflict-not-disjoint
[07:30:39] [PASSED] conflict-reg-type
[07:30:39] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[07:30:39] ================== xe_rtp_process_tests ===================
[07:30:39] [PASSED] active1
[07:30:39] [PASSED] active2
[07:30:39] [PASSED] active-inactive
[07:30:39] [PASSED] inactive-active
[07:30:39] [PASSED] inactive-1st_or_active-inactive
[07:30:39] [PASSED] inactive-2nd_or_active-inactive
[07:30:39] [PASSED] inactive-last_or_active-inactive
[07:30:39] [PASSED] inactive-no_or_active-inactive
[07:30:39] ============== [PASSED] xe_rtp_process_tests ===============
[07:30:39] ===================== [PASSED] xe_rtp ======================
[07:30:39] ==================== xe_wa (1 subtest) =====================
[07:30:39] ======================== xe_wa_gt =========================
[07:30:39] [PASSED] TIGERLAKE B0
[07:30:39] [PASSED] DG1 A0
[07:30:39] [PASSED] DG1 B0
[07:30:39] [PASSED] ALDERLAKE_S A0
[07:30:39] [PASSED] ALDERLAKE_S B0
stty: 'standard input': Inappropriate ioctl for device
[07:30:39] [PASSED] ALDERLAKE_S C0
[07:30:39] [PASSED] ALDERLAKE_S D0
[07:30:39] [PASSED] ALDERLAKE_P A0
[07:30:39] [PASSED] ALDERLAKE_P B0
[07:30:39] [PASSED] ALDERLAKE_P C0
[07:30:39] [PASSED] ALDERLAKE_S RPLS D0
[07:30:39] [PASSED] ALDERLAKE_P RPLU E0
[07:30:39] [PASSED] DG2 G10 C0
[07:30:39] [PASSED] DG2 G11 B1
[07:30:39] [PASSED] DG2 G12 A1
[07:30:39] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[07:30:39] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[07:30:39] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[07:30:39] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[07:30:39] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[07:30:39] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[07:30:39] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[07:30:39] ==================== [PASSED] xe_wa_gt =====================
[07:30:39] ====================== [PASSED] xe_wa ======================
[07:30:39] ============================================================
[07:30:39] Testing complete. Ran 306 tests: passed: 288, skipped: 18
[07:30:39] Elapsed time: 33.520s total, 4.278s configuring, 28.875s building, 0.323s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[07:30:39] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[07:30:41] 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
[07:31:04] Starting KUnit Kernel (1/1)...
[07:31:04] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[07:31:04] ============ drm_test_pick_cmdline (2 subtests) ============
[07:31:04] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[07:31:04] =============== drm_test_pick_cmdline_named ===============
[07:31:04] [PASSED] NTSC
[07:31:04] [PASSED] NTSC-J
[07:31:04] [PASSED] PAL
[07:31:04] [PASSED] PAL-M
[07:31:04] =========== [PASSED] drm_test_pick_cmdline_named ===========
[07:31:04] ============== [PASSED] drm_test_pick_cmdline ==============
[07:31:04] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[07:31:04] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[07:31:04] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[07:31:04] =========== drm_validate_clone_mode (2 subtests) ===========
[07:31:04] ============== drm_test_check_in_clone_mode ===============
[07:31:04] [PASSED] in_clone_mode
[07:31:04] [PASSED] not_in_clone_mode
[07:31:04] ========== [PASSED] drm_test_check_in_clone_mode ===========
[07:31:04] =============== drm_test_check_valid_clones ===============
[07:31:04] [PASSED] not_in_clone_mode
[07:31:04] [PASSED] valid_clone
[07:31:04] [PASSED] invalid_clone
[07:31:04] =========== [PASSED] drm_test_check_valid_clones ===========
[07:31:04] ============= [PASSED] drm_validate_clone_mode =============
[07:31:04] ============= drm_validate_modeset (1 subtest) =============
[07:31:04] [PASSED] drm_test_check_connector_changed_modeset
[07:31:04] ============== [PASSED] drm_validate_modeset ===============
[07:31:04] ====== drm_test_bridge_get_current_state (2 subtests) ======
[07:31:04] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[07:31:04] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[07:31:04] ======== [PASSED] drm_test_bridge_get_current_state ========
[07:31:04] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[07:31:04] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[07:31:04] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[07:31:04] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[07:31:04] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[07:31:04] ============== drm_bridge_alloc (2 subtests) ===============
[07:31:04] [PASSED] drm_test_drm_bridge_alloc_basic
[07:31:04] [PASSED] drm_test_drm_bridge_alloc_get_put
[07:31:04] ================ [PASSED] drm_bridge_alloc =================
[07:31:04] ================== drm_buddy (7 subtests) ==================
[07:31:04] [PASSED] drm_test_buddy_alloc_limit
[07:31:04] [PASSED] drm_test_buddy_alloc_optimistic
[07:31:04] [PASSED] drm_test_buddy_alloc_pessimistic
[07:31:04] [PASSED] drm_test_buddy_alloc_pathological
[07:31:04] [PASSED] drm_test_buddy_alloc_contiguous
[07:31:04] [PASSED] drm_test_buddy_alloc_clear
[07:31:04] [PASSED] drm_test_buddy_alloc_range_bias
[07:31:04] ==================== [PASSED] drm_buddy ====================
[07:31:04] ============= drm_cmdline_parser (40 subtests) =============
[07:31:04] [PASSED] drm_test_cmdline_force_d_only
[07:31:04] [PASSED] drm_test_cmdline_force_D_only_dvi
[07:31:04] [PASSED] drm_test_cmdline_force_D_only_hdmi
[07:31:04] [PASSED] drm_test_cmdline_force_D_only_not_digital
[07:31:04] [PASSED] drm_test_cmdline_force_e_only
[07:31:04] [PASSED] drm_test_cmdline_res
[07:31:04] [PASSED] drm_test_cmdline_res_vesa
[07:31:04] [PASSED] drm_test_cmdline_res_vesa_rblank
[07:31:04] [PASSED] drm_test_cmdline_res_rblank
[07:31:04] [PASSED] drm_test_cmdline_res_bpp
[07:31:04] [PASSED] drm_test_cmdline_res_refresh
[07:31:04] [PASSED] drm_test_cmdline_res_bpp_refresh
[07:31:04] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[07:31:04] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[07:31:04] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[07:31:04] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[07:31:04] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[07:31:04] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[07:31:04] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[07:31:04] [PASSED] drm_test_cmdline_res_margins_force_on
[07:31:04] [PASSED] drm_test_cmdline_res_vesa_margins
[07:31:04] [PASSED] drm_test_cmdline_name
[07:31:04] [PASSED] drm_test_cmdline_name_bpp
[07:31:04] [PASSED] drm_test_cmdline_name_option
[07:31:04] [PASSED] drm_test_cmdline_name_bpp_option
[07:31:04] [PASSED] drm_test_cmdline_rotate_0
[07:31:04] [PASSED] drm_test_cmdline_rotate_90
[07:31:04] [PASSED] drm_test_cmdline_rotate_180
[07:31:04] [PASSED] drm_test_cmdline_rotate_270
[07:31:04] [PASSED] drm_test_cmdline_hmirror
[07:31:04] [PASSED] drm_test_cmdline_vmirror
[07:31:04] [PASSED] drm_test_cmdline_margin_options
[07:31:04] [PASSED] drm_test_cmdline_multiple_options
[07:31:04] [PASSED] drm_test_cmdline_bpp_extra_and_option
[07:31:04] [PASSED] drm_test_cmdline_extra_and_option
[07:31:04] [PASSED] drm_test_cmdline_freestanding_options
[07:31:04] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[07:31:04] [PASSED] drm_test_cmdline_panel_orientation
[07:31:04] ================ drm_test_cmdline_invalid =================
[07:31:04] [PASSED] margin_only
[07:31:04] [PASSED] interlace_only
[07:31:04] [PASSED] res_missing_x
[07:31:04] [PASSED] res_missing_y
[07:31:04] [PASSED] res_bad_y
[07:31:04] [PASSED] res_missing_y_bpp
[07:31:04] [PASSED] res_bad_bpp
[07:31:04] [PASSED] res_bad_refresh
[07:31:04] [PASSED] res_bpp_refresh_force_on_off
[07:31:04] [PASSED] res_invalid_mode
[07:31:04] [PASSED] res_bpp_wrong_place_mode
[07:31:04] [PASSED] name_bpp_refresh
[07:31:04] [PASSED] name_refresh
[07:31:04] [PASSED] name_refresh_wrong_mode
[07:31:04] [PASSED] name_refresh_invalid_mode
[07:31:04] [PASSED] rotate_multiple
[07:31:04] [PASSED] rotate_invalid_val
[07:31:04] [PASSED] rotate_truncated
[07:31:04] [PASSED] invalid_option
[07:31:04] [PASSED] invalid_tv_option
[07:31:04] [PASSED] truncated_tv_option
[07:31:04] ============ [PASSED] drm_test_cmdline_invalid =============
[07:31:04] =============== drm_test_cmdline_tv_options ===============
[07:31:04] [PASSED] NTSC
[07:31:04] [PASSED] NTSC_443
[07:31:04] [PASSED] NTSC_J
[07:31:04] [PASSED] PAL
[07:31:04] [PASSED] PAL_M
[07:31:04] [PASSED] PAL_N
[07:31:04] [PASSED] SECAM
[07:31:04] [PASSED] MONO_525
[07:31:04] [PASSED] MONO_625
[07:31:04] =========== [PASSED] drm_test_cmdline_tv_options ===========
[07:31:04] =============== [PASSED] drm_cmdline_parser ================
[07:31:04] ========== drmm_connector_hdmi_init (20 subtests) ==========
[07:31:04] [PASSED] drm_test_connector_hdmi_init_valid
[07:31:04] [PASSED] drm_test_connector_hdmi_init_bpc_8
[07:31:04] [PASSED] drm_test_connector_hdmi_init_bpc_10
[07:31:04] [PASSED] drm_test_connector_hdmi_init_bpc_12
[07:31:04] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[07:31:04] [PASSED] drm_test_connector_hdmi_init_bpc_null
[07:31:04] [PASSED] drm_test_connector_hdmi_init_formats_empty
[07:31:04] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[07:31:04] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[07:31:04] [PASSED] supported_formats=0x9 yuv420_allowed=1
[07:31:04] [PASSED] supported_formats=0x9 yuv420_allowed=0
[07:31:04] [PASSED] supported_formats=0x3 yuv420_allowed=1
[07:31:04] [PASSED] supported_formats=0x3 yuv420_allowed=0
[07:31:04] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[07:31:04] [PASSED] drm_test_connector_hdmi_init_null_ddc
[07:31:04] [PASSED] drm_test_connector_hdmi_init_null_product
[07:31:04] [PASSED] drm_test_connector_hdmi_init_null_vendor
[07:31:04] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[07:31:04] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[07:31:04] [PASSED] drm_test_connector_hdmi_init_product_valid
[07:31:04] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[07:31:04] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[07:31:04] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[07:31:04] ========= drm_test_connector_hdmi_init_type_valid =========
[07:31:04] [PASSED] HDMI-A
[07:31:04] [PASSED] HDMI-B
[07:31:04] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[07:31:04] ======== drm_test_connector_hdmi_init_type_invalid ========
[07:31:04] [PASSED] Unknown
[07:31:04] [PASSED] VGA
[07:31:04] [PASSED] DVI-I
[07:31:04] [PASSED] DVI-D
[07:31:04] [PASSED] DVI-A
[07:31:04] [PASSED] Composite
[07:31:04] [PASSED] SVIDEO
[07:31:04] [PASSED] LVDS
[07:31:04] [PASSED] Component
[07:31:04] [PASSED] DIN
[07:31:04] [PASSED] DP
[07:31:04] [PASSED] TV
[07:31:04] [PASSED] eDP
[07:31:04] [PASSED] Virtual
[07:31:04] [PASSED] DSI
[07:31:04] [PASSED] DPI
[07:31:04] [PASSED] Writeback
[07:31:04] [PASSED] SPI
[07:31:04] [PASSED] USB
[07:31:04] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[07:31:04] ============ [PASSED] drmm_connector_hdmi_init =============
[07:31:04] ============= drmm_connector_init (3 subtests) =============
[07:31:04] [PASSED] drm_test_drmm_connector_init
[07:31:04] [PASSED] drm_test_drmm_connector_init_null_ddc
[07:31:04] ========= drm_test_drmm_connector_init_type_valid =========
[07:31:04] [PASSED] Unknown
[07:31:04] [PASSED] VGA
[07:31:04] [PASSED] DVI-I
[07:31:04] [PASSED] DVI-D
[07:31:04] [PASSED] DVI-A
[07:31:04] [PASSED] Composite
[07:31:04] [PASSED] SVIDEO
[07:31:04] [PASSED] LVDS
[07:31:04] [PASSED] Component
[07:31:04] [PASSED] DIN
[07:31:04] [PASSED] DP
[07:31:04] [PASSED] HDMI-A
[07:31:04] [PASSED] HDMI-B
[07:31:04] [PASSED] TV
[07:31:04] [PASSED] eDP
[07:31:04] [PASSED] Virtual
[07:31:04] [PASSED] DSI
[07:31:04] [PASSED] DPI
[07:31:04] [PASSED] Writeback
[07:31:04] [PASSED] SPI
[07:31:04] [PASSED] USB
[07:31:04] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[07:31:04] =============== [PASSED] drmm_connector_init ===============
[07:31:04] ========= drm_connector_dynamic_init (6 subtests) ==========
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_init
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_init_properties
[07:31:04] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[07:31:04] [PASSED] Unknown
[07:31:04] [PASSED] VGA
[07:31:04] [PASSED] DVI-I
[07:31:04] [PASSED] DVI-D
[07:31:04] [PASSED] DVI-A
[07:31:04] [PASSED] Composite
[07:31:04] [PASSED] SVIDEO
[07:31:04] [PASSED] LVDS
[07:31:04] [PASSED] Component
[07:31:04] [PASSED] DIN
[07:31:04] [PASSED] DP
[07:31:04] [PASSED] HDMI-A
[07:31:04] [PASSED] HDMI-B
[07:31:04] [PASSED] TV
[07:31:04] [PASSED] eDP
[07:31:04] [PASSED] Virtual
[07:31:04] [PASSED] DSI
[07:31:04] [PASSED] DPI
[07:31:04] [PASSED] Writeback
[07:31:04] [PASSED] SPI
[07:31:04] [PASSED] USB
[07:31:04] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[07:31:04] ======== drm_test_drm_connector_dynamic_init_name =========
[07:31:04] [PASSED] Unknown
[07:31:04] [PASSED] VGA
[07:31:04] [PASSED] DVI-I
[07:31:04] [PASSED] DVI-D
[07:31:04] [PASSED] DVI-A
[07:31:04] [PASSED] Composite
[07:31:04] [PASSED] SVIDEO
[07:31:04] [PASSED] LVDS
[07:31:04] [PASSED] Component
[07:31:04] [PASSED] DIN
[07:31:04] [PASSED] DP
[07:31:04] [PASSED] HDMI-A
[07:31:04] [PASSED] HDMI-B
[07:31:04] [PASSED] TV
[07:31:04] [PASSED] eDP
[07:31:04] [PASSED] Virtual
[07:31:04] [PASSED] DSI
[07:31:04] [PASSED] DPI
[07:31:04] [PASSED] Writeback
[07:31:04] [PASSED] SPI
[07:31:04] [PASSED] USB
[07:31:04] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[07:31:04] =========== [PASSED] drm_connector_dynamic_init ============
[07:31:04] ==== drm_connector_dynamic_register_early (4 subtests) =====
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[07:31:04] ====== [PASSED] drm_connector_dynamic_register_early =======
[07:31:04] ======= drm_connector_dynamic_register (7 subtests) ========
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[07:31:04] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[07:31:04] ========= [PASSED] drm_connector_dynamic_register ==========
[07:31:04] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[07:31:04] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[07:31:04] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[07:31:04] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[07:31:04] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[07:31:04] ========== drm_test_get_tv_mode_from_name_valid ===========
[07:31:04] [PASSED] NTSC
[07:31:04] [PASSED] NTSC-443
[07:31:04] [PASSED] NTSC-J
[07:31:04] [PASSED] PAL
[07:31:04] [PASSED] PAL-M
[07:31:04] [PASSED] PAL-N
[07:31:04] [PASSED] SECAM
[07:31:04] [PASSED] Mono
[07:31:04] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[07:31:04] [PASSED] drm_test_get_tv_mode_from_name_truncated
[07:31:04] ============ [PASSED] drm_get_tv_mode_from_name ============
[07:31:04] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[07:31:04] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[07:31:04] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[07:31:04] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[07:31:04] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[07:31:04] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[07:31:04] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[07:31:04] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[07:31:04] [PASSED] VIC 96
[07:31:04] [PASSED] VIC 97
[07:31:04] [PASSED] VIC 101
[07:31:04] [PASSED] VIC 102
[07:31:04] [PASSED] VIC 106
[07:31:04] [PASSED] VIC 107
[07:31:04] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[07:31:04] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[07:31:04] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[07:31:04] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[07:31:04] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[07:31:04] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[07:31:04] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[07:31:04] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[07:31:04] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[07:31:04] [PASSED] Automatic
[07:31:04] [PASSED] Full
[07:31:04] [PASSED] Limited 16:235
[07:31:04] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[07:31:04] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[07:31:04] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[07:31:04] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[07:31:04] === drm_test_drm_hdmi_connector_get_output_format_name ====
[07:31:04] [PASSED] RGB
[07:31:04] [PASSED] YUV 4:2:0
[07:31:04] [PASSED] YUV 4:2:2
[07:31:04] [PASSED] YUV 4:4:4
[07:31:04] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[07:31:04] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[07:31:04] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[07:31:04] ============= drm_damage_helper (21 subtests) ==============
[07:31:04] [PASSED] drm_test_damage_iter_no_damage
[07:31:04] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[07:31:04] [PASSED] drm_test_damage_iter_no_damage_src_moved
[07:31:04] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[07:31:04] [PASSED] drm_test_damage_iter_no_damage_not_visible
[07:31:04] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[07:31:04] [PASSED] drm_test_damage_iter_no_damage_no_fb
[07:31:04] [PASSED] drm_test_damage_iter_simple_damage
[07:31:04] [PASSED] drm_test_damage_iter_single_damage
[07:31:04] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[07:31:04] [PASSED] drm_test_damage_iter_single_damage_outside_src
[07:31:04] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[07:31:04] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[07:31:04] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[07:31:04] [PASSED] drm_test_damage_iter_single_damage_src_moved
[07:31:04] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[07:31:04] [PASSED] drm_test_damage_iter_damage
[07:31:04] [PASSED] drm_test_damage_iter_damage_one_intersect
[07:31:04] [PASSED] drm_test_damage_iter_damage_one_outside
[07:31:04] [PASSED] drm_test_damage_iter_damage_src_moved
[07:31:04] [PASSED] drm_test_damage_iter_damage_not_visible
[07:31:04] ================ [PASSED] drm_damage_helper ================
[07:31:04] ============== drm_dp_mst_helper (3 subtests) ==============
[07:31:04] ============== drm_test_dp_mst_calc_pbn_mode ==============
[07:31:04] [PASSED] Clock 154000 BPP 30 DSC disabled
[07:31:04] [PASSED] Clock 234000 BPP 30 DSC disabled
[07:31:04] [PASSED] Clock 297000 BPP 24 DSC disabled
[07:31:04] [PASSED] Clock 332880 BPP 24 DSC enabled
[07:31:04] [PASSED] Clock 324540 BPP 24 DSC enabled
[07:31:04] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[07:31:04] ============== drm_test_dp_mst_calc_pbn_div ===============
[07:31:04] [PASSED] Link rate 2000000 lane count 4
[07:31:04] [PASSED] Link rate 2000000 lane count 2
[07:31:04] [PASSED] Link rate 2000000 lane count 1
[07:31:04] [PASSED] Link rate 1350000 lane count 4
[07:31:04] [PASSED] Link rate 1350000 lane count 2
[07:31:04] [PASSED] Link rate 1350000 lane count 1
[07:31:04] [PASSED] Link rate 1000000 lane count 4
[07:31:04] [PASSED] Link rate 1000000 lane count 2
[07:31:04] [PASSED] Link rate 1000000 lane count 1
[07:31:04] [PASSED] Link rate 810000 lane count 4
[07:31:04] [PASSED] Link rate 810000 lane count 2
[07:31:04] [PASSED] Link rate 810000 lane count 1
[07:31:04] [PASSED] Link rate 540000 lane count 4
[07:31:04] [PASSED] Link rate 540000 lane count 2
[07:31:04] [PASSED] Link rate 540000 lane count 1
[07:31:04] [PASSED] Link rate 270000 lane count 4
[07:31:04] [PASSED] Link rate 270000 lane count 2
[07:31:04] [PASSED] Link rate 270000 lane count 1
[07:31:04] [PASSED] Link rate 162000 lane count 4
[07:31:04] [PASSED] Link rate 162000 lane count 2
[07:31:04] [PASSED] Link rate 162000 lane count 1
[07:31:04] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[07:31:04] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[07:31:04] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[07:31:04] [PASSED] DP_POWER_UP_PHY with port number
[07:31:04] [PASSED] DP_POWER_DOWN_PHY with port number
[07:31:04] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[07:31:04] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[07:31:04] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[07:31:04] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[07:31:04] [PASSED] DP_QUERY_PAYLOAD with port number
[07:31:04] [PASSED] DP_QUERY_PAYLOAD with VCPI
[07:31:04] [PASSED] DP_REMOTE_DPCD_READ with port number
[07:31:04] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[07:31:04] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[07:31:04] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[07:31:04] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[07:31:04] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[07:31:04] [PASSED] DP_REMOTE_I2C_READ with port number
[07:31:04] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[07:31:04] [PASSED] DP_REMOTE_I2C_READ with transactions array
[07:31:04] [PASSED] DP_REMOTE_I2C_WRITE with port number
[07:31:04] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[07:31:04] [PASSED] DP_REMOTE_I2C_WRITE with data array
[07:31:04] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[07:31:04] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[07:31:04] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[07:31:04] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[07:31:04] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[07:31:04] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[07:31:04] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[07:31:04] ================ [PASSED] drm_dp_mst_helper ================
[07:31:04] ================== drm_exec (7 subtests) ===================
[07:31:04] [PASSED] sanitycheck
[07:31:04] [PASSED] test_lock
[07:31:04] [PASSED] test_lock_unlock
[07:31:04] [PASSED] test_duplicates
[07:31:04] [PASSED] test_prepare
[07:31:04] [PASSED] test_prepare_array
[07:31:04] [PASSED] test_multiple_loops
[07:31:04] ==================== [PASSED] drm_exec =====================
[07:31:04] =========== drm_format_helper_test (17 subtests) ===========
[07:31:04] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[07:31:04] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[07:31:04] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[07:31:04] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[07:31:04] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[07:31:04] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[07:31:04] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[07:31:04] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[07:31:04] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[07:31:04] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[07:31:04] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[07:31:04] ============== drm_test_fb_xrgb8888_to_mono ===============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[07:31:04] ==================== drm_test_fb_swab =====================
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ================ [PASSED] drm_test_fb_swab =================
[07:31:04] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[07:31:04] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[07:31:04] [PASSED] single_pixel_source_buffer
[07:31:04] [PASSED] single_pixel_clip_rectangle
[07:31:04] [PASSED] well_known_colors
[07:31:04] [PASSED] destination_pitch
[07:31:04] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[07:31:04] ================= drm_test_fb_clip_offset =================
[07:31:04] [PASSED] pass through
[07:31:04] [PASSED] horizontal offset
[07:31:04] [PASSED] vertical offset
[07:31:04] [PASSED] horizontal and vertical offset
[07:31:04] [PASSED] horizontal offset (custom pitch)
[07:31:04] [PASSED] vertical offset (custom pitch)
[07:31:04] [PASSED] horizontal and vertical offset (custom pitch)
[07:31:04] ============= [PASSED] drm_test_fb_clip_offset =============
[07:31:04] =================== drm_test_fb_memcpy ====================
[07:31:04] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[07:31:04] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[07:31:04] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[07:31:04] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[07:31:04] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[07:31:04] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[07:31:04] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[07:31:04] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[07:31:04] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[07:31:04] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[07:31:04] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[07:31:04] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[07:31:04] =============== [PASSED] drm_test_fb_memcpy ================
[07:31:04] ============= [PASSED] drm_format_helper_test ==============
[07:31:04] ================= drm_format (18 subtests) =================
[07:31:04] [PASSED] drm_test_format_block_width_invalid
[07:31:04] [PASSED] drm_test_format_block_width_one_plane
[07:31:04] [PASSED] drm_test_format_block_width_two_plane
[07:31:04] [PASSED] drm_test_format_block_width_three_plane
[07:31:04] [PASSED] drm_test_format_block_width_tiled
[07:31:04] [PASSED] drm_test_format_block_height_invalid
[07:31:04] [PASSED] drm_test_format_block_height_one_plane
[07:31:04] [PASSED] drm_test_format_block_height_two_plane
[07:31:04] [PASSED] drm_test_format_block_height_three_plane
[07:31:04] [PASSED] drm_test_format_block_height_tiled
[07:31:04] [PASSED] drm_test_format_min_pitch_invalid
[07:31:04] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[07:31:04] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[07:31:04] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[07:31:04] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[07:31:04] [PASSED] drm_test_format_min_pitch_two_plane
[07:31:04] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[07:31:04] [PASSED] drm_test_format_min_pitch_tiled
[07:31:04] =================== [PASSED] drm_format ====================
[07:31:04] ============== drm_framebuffer (10 subtests) ===============
[07:31:04] ========== drm_test_framebuffer_check_src_coords ==========
[07:31:04] [PASSED] Success: source fits into fb
[07:31:04] [PASSED] Fail: overflowing fb with x-axis coordinate
[07:31:04] [PASSED] Fail: overflowing fb with y-axis coordinate
[07:31:04] [PASSED] Fail: overflowing fb with source width
[07:31:04] [PASSED] Fail: overflowing fb with source height
[07:31:04] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[07:31:04] [PASSED] drm_test_framebuffer_cleanup
[07:31:04] =============== drm_test_framebuffer_create ===============
[07:31:04] [PASSED] ABGR8888 normal sizes
[07:31:04] [PASSED] ABGR8888 max sizes
[07:31:04] [PASSED] ABGR8888 pitch greater than min required
[07:31:04] [PASSED] ABGR8888 pitch less than min required
[07:31:04] [PASSED] ABGR8888 Invalid width
[07:31:04] [PASSED] ABGR8888 Invalid buffer handle
[07:31:04] [PASSED] No pixel format
[07:31:04] [PASSED] ABGR8888 Width 0
[07:31:04] [PASSED] ABGR8888 Height 0
[07:31:04] [PASSED] ABGR8888 Out of bound height * pitch combination
[07:31:04] [PASSED] ABGR8888 Large buffer offset
[07:31:04] [PASSED] ABGR8888 Buffer offset for inexistent plane
[07:31:04] [PASSED] ABGR8888 Invalid flag
[07:31:04] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[07:31:04] [PASSED] ABGR8888 Valid buffer modifier
[07:31:04] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[07:31:04] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[07:31:04] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[07:31:04] [PASSED] NV12 Normal sizes
[07:31:04] [PASSED] NV12 Max sizes
[07:31:04] [PASSED] NV12 Invalid pitch
[07:31:04] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[07:31:04] [PASSED] NV12 different modifier per-plane
[07:31:04] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[07:31:04] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[07:31:04] [PASSED] NV12 Modifier for inexistent plane
[07:31:04] [PASSED] NV12 Handle for inexistent plane
[07:31:04] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[07:31:04] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[07:31:04] [PASSED] YVU420 Normal sizes
[07:31:04] [PASSED] YVU420 Max sizes
[07:31:04] [PASSED] YVU420 Invalid pitch
[07:31:04] [PASSED] YVU420 Different pitches
[07:31:04] [PASSED] YVU420 Different buffer offsets/pitches
[07:31:04] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[07:31:04] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[07:31:04] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[07:31:04] [PASSED] YVU420 Valid modifier
[07:31:04] [PASSED] YVU420 Different modifiers per plane
[07:31:04] [PASSED] YVU420 Modifier for inexistent plane
[07:31:04] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[07:31:04] [PASSED] X0L2 Normal sizes
[07:31:04] [PASSED] X0L2 Max sizes
[07:31:04] [PASSED] X0L2 Invalid pitch
[07:31:04] [PASSED] X0L2 Pitch greater than minimum required
[07:31:04] [PASSED] X0L2 Handle for inexistent plane
[07:31:04] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[07:31:04] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[07:31:04] [PASSED] X0L2 Valid modifier
[07:31:04] [PASSED] X0L2 Modifier for inexistent plane
[07:31:04] =========== [PASSED] drm_test_framebuffer_create ===========
[07:31:04] [PASSED] drm_test_framebuffer_free
[07:31:04] [PASSED] drm_test_framebuffer_init
[07:31:04] [PASSED] drm_test_framebuffer_init_bad_format
[07:31:04] [PASSED] drm_test_framebuffer_init_dev_mismatch
[07:31:04] [PASSED] drm_test_framebuffer_lookup
[07:31:04] [PASSED] drm_test_framebuffer_lookup_inexistent
[07:31:04] [PASSED] drm_test_framebuffer_modifiers_not_supported
[07:31:04] ================= [PASSED] drm_framebuffer =================
[07:31:04] ================ drm_gem_shmem (8 subtests) ================
[07:31:04] [PASSED] drm_gem_shmem_test_obj_create
[07:31:04] [PASSED] drm_gem_shmem_test_obj_create_private
[07:31:04] [PASSED] drm_gem_shmem_test_pin_pages
[07:31:04] [PASSED] drm_gem_shmem_test_vmap
[07:31:04] [PASSED] drm_gem_shmem_test_get_pages_sgt
[07:31:04] [PASSED] drm_gem_shmem_test_get_sg_table
[07:31:04] [PASSED] drm_gem_shmem_test_madvise
[07:31:04] [PASSED] drm_gem_shmem_test_purge
[07:31:04] ================== [PASSED] drm_gem_shmem ==================
[07:31:04] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[07:31:04] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[07:31:04] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[07:31:04] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[07:31:04] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[07:31:04] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[07:31:04] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[07:31:04] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[07:31:04] [PASSED] Automatic
[07:31:04] [PASSED] Full
[07:31:04] [PASSED] Limited 16:235
[07:31:04] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[07:31:04] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[07:31:04] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[07:31:04] [PASSED] drm_test_check_disable_connector
[07:31:04] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[07:31:04] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[07:31:04] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[07:31:04] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[07:31:04] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[07:31:04] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[07:31:04] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[07:31:04] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[07:31:04] [PASSED] drm_test_check_output_bpc_dvi
[07:31:04] [PASSED] drm_test_check_output_bpc_format_vic_1
[07:31:04] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[07:31:04] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[07:31:04] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[07:31:04] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[07:31:04] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[07:31:04] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[07:31:04] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[07:31:04] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[07:31:04] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[07:31:04] [PASSED] drm_test_check_broadcast_rgb_value
[07:31:04] [PASSED] drm_test_check_bpc_8_value
[07:31:04] [PASSED] drm_test_check_bpc_10_value
[07:31:04] [PASSED] drm_test_check_bpc_12_value
[07:31:04] [PASSED] drm_test_check_format_value
[07:31:04] [PASSED] drm_test_check_tmds_char_value
[07:31:04] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[07:31:04] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[07:31:04] [PASSED] drm_test_check_mode_valid
[07:31:04] [PASSED] drm_test_check_mode_valid_reject
[07:31:04] [PASSED] drm_test_check_mode_valid_reject_rate
[07:31:04] [PASSED] drm_test_check_mode_valid_reject_max_clock
[07:31:04] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[07:31:04] ================= drm_managed (2 subtests) =================
[07:31:04] [PASSED] drm_test_managed_release_action
[07:31:04] [PASSED] drm_test_managed_run_action
[07:31:04] =================== [PASSED] drm_managed ===================
[07:31:04] =================== drm_mm (6 subtests) ====================
[07:31:04] [PASSED] drm_test_mm_init
[07:31:04] [PASSED] drm_test_mm_debug
[07:31:04] [PASSED] drm_test_mm_align32
[07:31:04] [PASSED] drm_test_mm_align64
[07:31:04] [PASSED] drm_test_mm_lowest
[07:31:04] [PASSED] drm_test_mm_highest
[07:31:04] ===================== [PASSED] drm_mm ======================
[07:31:04] ============= drm_modes_analog_tv (5 subtests) =============
[07:31:04] [PASSED] drm_test_modes_analog_tv_mono_576i
[07:31:04] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[07:31:04] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[07:31:04] [PASSED] drm_test_modes_analog_tv_pal_576i
[07:31:04] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[07:31:04] =============== [PASSED] drm_modes_analog_tv ===============
[07:31:04] ============== drm_plane_helper (2 subtests) ===============
[07:31:04] =============== drm_test_check_plane_state ================
[07:31:04] [PASSED] clipping_simple
[07:31:04] [PASSED] clipping_rotate_reflect
[07:31:04] [PASSED] positioning_simple
[07:31:04] [PASSED] upscaling
[07:31:04] [PASSED] downscaling
[07:31:04] [PASSED] rounding1
[07:31:04] [PASSED] rounding2
[07:31:04] [PASSED] rounding3
[07:31:04] [PASSED] rounding4
[07:31:04] =========== [PASSED] drm_test_check_plane_state ============
[07:31:04] =========== drm_test_check_invalid_plane_state ============
[07:31:04] [PASSED] positioning_invalid
[07:31:04] [PASSED] upscaling_invalid
[07:31:04] [PASSED] downscaling_invalid
[07:31:04] ======= [PASSED] drm_test_check_invalid_plane_state ========
[07:31:04] ================ [PASSED] drm_plane_helper =================
[07:31:04] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[07:31:04] ====== drm_test_connector_helper_tv_get_modes_check =======
[07:31:04] [PASSED] None
[07:31:04] [PASSED] PAL
[07:31:04] [PASSED] NTSC
[07:31:04] [PASSED] Both, NTSC Default
[07:31:04] [PASSED] Both, PAL Default
[07:31:04] [PASSED] Both, NTSC Default, with PAL on command-line
[07:31:04] [PASSED] Both, PAL Default, with NTSC on command-line
[07:31:04] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[07:31:04] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[07:31:04] ================== drm_rect (9 subtests) ===================
[07:31:04] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[07:31:04] [PASSED] drm_test_rect_clip_scaled_not_clipped
[07:31:04] [PASSED] drm_test_rect_clip_scaled_clipped
[07:31:04] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[07:31:04] ================= drm_test_rect_intersect =================
[07:31:04] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[07:31:04] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[07:31:04] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[07:31:04] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[07:31:04] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[07:31:04] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[07:31:04] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[07:31:04] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[07:31:04] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[07:31:04] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[07:31:04] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[07:31:04] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[07:31:04] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[07:31:04] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[07:31:04] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[07:31:04] ============= [PASSED] drm_test_rect_intersect =============
[07:31:04] ================ drm_test_rect_calc_hscale ================
[07:31:04] [PASSED] normal use
[07:31:04] [PASSED] out of max range
[07:31:04] [PASSED] out of min range
[07:31:04] [PASSED] zero dst
[07:31:04] [PASSED] negative src
[07:31:04] [PASSED] negative dst
[07:31:04] ============ [PASSED] drm_test_rect_calc_hscale ============
[07:31:04] ================ drm_test_rect_calc_vscale ================
[07:31:04] [PASSED] normal use
[07:31:04] [PASSED] out of max range
[07:31:04] [PASSED] out of min range
[07:31:04] [PASSED] zero dst
[07:31:04] [PASSED] negative src
stty: 'standard input': Inappropriate ioctl for device
[07:31:04] [PASSED] negative dst
[07:31:04] ============ [PASSED] drm_test_rect_calc_vscale ============
[07:31:04] ================== drm_test_rect_rotate ===================
[07:31:04] [PASSED] reflect-x
[07:31:04] [PASSED] reflect-y
[07:31:04] [PASSED] rotate-0
[07:31:04] [PASSED] rotate-90
[07:31:04] [PASSED] rotate-180
[07:31:04] [PASSED] rotate-270
[07:31:04] ============== [PASSED] drm_test_rect_rotate ===============
[07:31:04] ================ drm_test_rect_rotate_inv =================
[07:31:04] [PASSED] reflect-x
[07:31:04] [PASSED] reflect-y
[07:31:04] [PASSED] rotate-0
[07:31:04] [PASSED] rotate-90
[07:31:04] [PASSED] rotate-180
[07:31:04] [PASSED] rotate-270
[07:31:04] ============ [PASSED] drm_test_rect_rotate_inv =============
[07:31:04] ==================== [PASSED] drm_rect =====================
[07:31:04] ============ drm_sysfb_modeset_test (1 subtest) ============
[07:31:04] ============ drm_test_sysfb_build_fourcc_list =============
[07:31:04] [PASSED] no native formats
[07:31:04] [PASSED] XRGB8888 as native format
[07:31:04] [PASSED] remove duplicates
[07:31:04] [PASSED] convert alpha formats
[07:31:04] [PASSED] random formats
[07:31:04] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[07:31:04] ============= [PASSED] drm_sysfb_modeset_test ==============
[07:31:04] ============================================================
[07:31:04] Testing complete. Ran 621 tests: passed: 621
[07:31:04] Elapsed time: 25.648s total, 1.737s configuring, 23.743s building, 0.150s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[07:31:05] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[07:31:06] 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
[07:31:15] Starting KUnit Kernel (1/1)...
[07:31:15] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[07:31:16] ================= ttm_device (5 subtests) ==================
[07:31:16] [PASSED] ttm_device_init_basic
[07:31:16] [PASSED] ttm_device_init_multiple
[07:31:16] [PASSED] ttm_device_fini_basic
[07:31:16] [PASSED] ttm_device_init_no_vma_man
[07:31:16] ================== ttm_device_init_pools ==================
[07:31:16] [PASSED] No DMA allocations, no DMA32 required
[07:31:16] [PASSED] DMA allocations, DMA32 required
[07:31:16] [PASSED] No DMA allocations, DMA32 required
[07:31:16] [PASSED] DMA allocations, no DMA32 required
[07:31:16] ============== [PASSED] ttm_device_init_pools ==============
[07:31:16] =================== [PASSED] ttm_device ====================
[07:31:16] ================== ttm_pool (8 subtests) ===================
[07:31:16] ================== ttm_pool_alloc_basic ===================
[07:31:16] [PASSED] One page
[07:31:16] [PASSED] More than one page
[07:31:16] [PASSED] Above the allocation limit
[07:31:16] [PASSED] One page, with coherent DMA mappings enabled
[07:31:16] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[07:31:16] ============== [PASSED] ttm_pool_alloc_basic ===============
[07:31:16] ============== ttm_pool_alloc_basic_dma_addr ==============
[07:31:16] [PASSED] One page
[07:31:16] [PASSED] More than one page
[07:31:16] [PASSED] Above the allocation limit
[07:31:16] [PASSED] One page, with coherent DMA mappings enabled
[07:31:16] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[07:31:16] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[07:31:16] [PASSED] ttm_pool_alloc_order_caching_match
[07:31:16] [PASSED] ttm_pool_alloc_caching_mismatch
[07:31:16] [PASSED] ttm_pool_alloc_order_mismatch
[07:31:16] [PASSED] ttm_pool_free_dma_alloc
[07:31:16] [PASSED] ttm_pool_free_no_dma_alloc
[07:31:16] [PASSED] ttm_pool_fini_basic
[07:31:16] ==================== [PASSED] ttm_pool =====================
[07:31:16] ================ ttm_resource (8 subtests) =================
[07:31:16] ================= ttm_resource_init_basic =================
[07:31:16] [PASSED] Init resource in TTM_PL_SYSTEM
[07:31:16] [PASSED] Init resource in TTM_PL_VRAM
[07:31:16] [PASSED] Init resource in a private placement
[07:31:16] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[07:31:16] ============= [PASSED] ttm_resource_init_basic =============
[07:31:16] [PASSED] ttm_resource_init_pinned
[07:31:16] [PASSED] ttm_resource_fini_basic
[07:31:16] [PASSED] ttm_resource_manager_init_basic
[07:31:16] [PASSED] ttm_resource_manager_usage_basic
[07:31:16] [PASSED] ttm_resource_manager_set_used_basic
[07:31:16] [PASSED] ttm_sys_man_alloc_basic
[07:31:16] [PASSED] ttm_sys_man_free_basic
[07:31:16] ================== [PASSED] ttm_resource ===================
[07:31:16] =================== ttm_tt (15 subtests) ===================
[07:31:16] ==================== ttm_tt_init_basic ====================
[07:31:16] [PASSED] Page-aligned size
[07:31:16] [PASSED] Extra pages requested
[07:31:16] ================ [PASSED] ttm_tt_init_basic ================
[07:31:16] [PASSED] ttm_tt_init_misaligned
[07:31:16] [PASSED] ttm_tt_fini_basic
[07:31:16] [PASSED] ttm_tt_fini_sg
[07:31:16] [PASSED] ttm_tt_fini_shmem
[07:31:16] [PASSED] ttm_tt_create_basic
[07:31:16] [PASSED] ttm_tt_create_invalid_bo_type
[07:31:16] [PASSED] ttm_tt_create_ttm_exists
[07:31:16] [PASSED] ttm_tt_create_failed
[07:31:16] [PASSED] ttm_tt_destroy_basic
[07:31:16] [PASSED] ttm_tt_populate_null_ttm
[07:31:16] [PASSED] ttm_tt_populate_populated_ttm
[07:31:16] [PASSED] ttm_tt_unpopulate_basic
[07:31:16] [PASSED] ttm_tt_unpopulate_empty_ttm
[07:31:16] [PASSED] ttm_tt_swapin_basic
[07:31:16] ===================== [PASSED] ttm_tt ======================
[07:31:16] =================== ttm_bo (14 subtests) ===================
[07:31:16] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[07:31:16] [PASSED] Cannot be interrupted and sleeps
[07:31:16] [PASSED] Cannot be interrupted, locks straight away
[07:31:16] [PASSED] Can be interrupted, sleeps
[07:31:16] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[07:31:16] [PASSED] ttm_bo_reserve_locked_no_sleep
[07:31:16] [PASSED] ttm_bo_reserve_no_wait_ticket
[07:31:16] [PASSED] ttm_bo_reserve_double_resv
[07:31:16] [PASSED] ttm_bo_reserve_interrupted
[07:31:16] [PASSED] ttm_bo_reserve_deadlock
[07:31:16] [PASSED] ttm_bo_unreserve_basic
[07:31:16] [PASSED] ttm_bo_unreserve_pinned
[07:31:16] [PASSED] ttm_bo_unreserve_bulk
[07:31:16] [PASSED] ttm_bo_fini_basic
[07:31:16] [PASSED] ttm_bo_fini_shared_resv
[07:31:16] [PASSED] ttm_bo_pin_basic
[07:31:16] [PASSED] ttm_bo_pin_unpin_resource
[07:31:16] [PASSED] ttm_bo_multiple_pin_one_unpin
[07:31:16] ===================== [PASSED] ttm_bo ======================
[07:31:16] ============== ttm_bo_validate (21 subtests) ===============
[07:31:16] ============== ttm_bo_init_reserved_sys_man ===============
[07:31:16] [PASSED] Buffer object for userspace
[07:31:16] [PASSED] Kernel buffer object
[07:31:16] [PASSED] Shared buffer object
[07:31:16] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[07:31:16] ============== ttm_bo_init_reserved_mock_man ==============
[07:31:16] [PASSED] Buffer object for userspace
[07:31:16] [PASSED] Kernel buffer object
[07:31:16] [PASSED] Shared buffer object
[07:31:16] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[07:31:16] [PASSED] ttm_bo_init_reserved_resv
[07:31:16] ================== ttm_bo_validate_basic ==================
[07:31:16] [PASSED] Buffer object for userspace
[07:31:16] [PASSED] Kernel buffer object
[07:31:16] [PASSED] Shared buffer object
[07:31:16] ============== [PASSED] ttm_bo_validate_basic ==============
[07:31:16] [PASSED] ttm_bo_validate_invalid_placement
[07:31:16] ============= ttm_bo_validate_same_placement ==============
[07:31:16] [PASSED] System manager
[07:31:16] [PASSED] VRAM manager
[07:31:16] ========= [PASSED] ttm_bo_validate_same_placement ==========
[07:31:16] [PASSED] ttm_bo_validate_failed_alloc
[07:31:16] [PASSED] ttm_bo_validate_pinned
[07:31:16] [PASSED] ttm_bo_validate_busy_placement
[07:31:16] ================ ttm_bo_validate_multihop =================
[07:31:16] [PASSED] Buffer object for userspace
[07:31:16] [PASSED] Kernel buffer object
[07:31:16] [PASSED] Shared buffer object
[07:31:16] ============ [PASSED] ttm_bo_validate_multihop =============
[07:31:16] ========== ttm_bo_validate_no_placement_signaled ==========
[07:31:16] [PASSED] Buffer object in system domain, no page vector
[07:31:16] [PASSED] Buffer object in system domain with an existing page vector
[07:31:16] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[07:31:16] ======== ttm_bo_validate_no_placement_not_signaled ========
[07:31:16] [PASSED] Buffer object for userspace
[07:31:16] [PASSED] Kernel buffer object
[07:31:16] [PASSED] Shared buffer object
[07:31:16] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[07:31:16] [PASSED] ttm_bo_validate_move_fence_signaled
[07:31:16] ========= ttm_bo_validate_move_fence_not_signaled =========
[07:31:16] [PASSED] Waits for GPU
[07:31:16] [PASSED] Tries to lock straight away
[07:31:16] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[07:31:16] [PASSED] ttm_bo_validate_happy_evict
[07:31:16] [PASSED] ttm_bo_validate_all_pinned_evict
[07:31:16] [PASSED] ttm_bo_validate_allowed_only_evict
[07:31:16] [PASSED] ttm_bo_validate_deleted_evict
[07:31:16] [PASSED] ttm_bo_validate_busy_domain_evict
[07:31:16] [PASSED] ttm_bo_validate_evict_gutting
[07:31:16] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[07:31:16] ================= [PASSED] ttm_bo_validate =================
[07:31:16] ============================================================
[07:31:16] Testing complete. Ran 101 tests: passed: 101
[07:31:16] Elapsed time: 11.144s total, 1.743s configuring, 9.185s building, 0.180s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 30+ messages in thread
* ✗ CI.checksparse: warning for Optimize vrr.guardband and fix LRR (rev13)
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (15 preceding siblings ...)
2025-09-28 7:31 ` ✓ CI.KUnit: success for Optimize vrr.guardband and fix LRR (rev13) Patchwork
@ 2025-09-28 7:46 ` Patchwork
2025-09-28 8:08 ` ✓ Xe.CI.BAT: success " Patchwork
2025-09-28 9:31 ` ✗ Xe.CI.Full: failure " Patchwork
18 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2025-09-28 7:46 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-xe
== Series Details ==
Series: Optimize vrr.guardband and fix LRR (rev13)
URL : https://patchwork.freedesktop.org/series/151244/
State : warning
== Summary ==
+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 3008c5c8e2fade05918e6d8c456572c91f30d412
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/display/intel_alpm.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_ddi.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2026:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2039:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2039:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_hotplug.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_pps.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file:
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 30+ messages in thread
* ✓ Xe.CI.BAT: success for Optimize vrr.guardband and fix LRR (rev13)
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (16 preceding siblings ...)
2025-09-28 7:46 ` ✗ CI.checksparse: warning " Patchwork
@ 2025-09-28 8:08 ` Patchwork
2025-09-28 9:31 ` ✗ Xe.CI.Full: failure " Patchwork
18 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2025-09-28 8:08 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1447 bytes --]
== Series Details ==
Series: Optimize vrr.guardband and fix LRR (rev13)
URL : https://patchwork.freedesktop.org/series/151244/
State : success
== Summary ==
CI Bug Log - changes from xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412_BAT -> xe-pw-151244v13_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (11 -> 11)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-151244v13_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@xe_pat@pat-index-xe2@render:
- bat-bmg-1: [PASS][1] -> [FAIL][2] ([Intel XE#5507]) +1 other test fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/bat-bmg-1/igt@xe_pat@pat-index-xe2@render.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/bat-bmg-1/igt@xe_pat@pat-index-xe2@render.html
[Intel XE#5507]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5507
Build changes
-------------
* Linux: xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412 -> xe-pw-151244v13
IGT_8555: 8555
xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412: 3008c5c8e2fade05918e6d8c456572c91f30d412
xe-pw-151244v13: 151244v13
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/index.html
[-- Attachment #2: Type: text/html, Size: 2013 bytes --]
^ permalink raw reply [flat|nested] 30+ messages in thread
* ✗ Xe.CI.Full: failure for Optimize vrr.guardband and fix LRR (rev13)
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
` (17 preceding siblings ...)
2025-09-28 8:08 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2025-09-28 9:31 ` Patchwork
18 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2025-09-28 9:31 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 89198 bytes --]
== Series Details ==
Series: Optimize vrr.guardband and fix LRR (rev13)
URL : https://patchwork.freedesktop.org/series/151244/
State : failure
== Summary ==
CI Bug Log - changes from xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412_FULL -> xe-pw-151244v13_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-151244v13_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-151244v13_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 (4 -> 4)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-151244v13_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_cursor_legacy@single-move:
- shard-dg2-set2: [PASS][1] -> [DMESG-WARN][2] +1 other test dmesg-warn
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-dg2-435/igt@kms_cursor_legacy@single-move.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-433/igt@kms_cursor_legacy@single-move.html
* igt@kms_vrr@flip-basic-fastset@pipe-a-edp-1:
- shard-lnl: [PASS][3] -> [FAIL][4] +1 other test fail
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-lnl-7/igt@kms_vrr@flip-basic-fastset@pipe-a-edp-1.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-lnl-7/igt@kms_vrr@flip-basic-fastset@pipe-a-edp-1.html
* igt@xe_exec_reset@cm-close-fd:
- shard-adlp: NOTRUN -> [DMESG-WARN][5]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@xe_exec_reset@cm-close-fd.html
#### Warnings ####
* igt@xe_exec_threads@threads-mixed-userptr-rebind:
- shard-bmg: [DMESG-FAIL][6] ([Intel XE#3876]) -> [FAIL][7]
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-7/igt@xe_exec_threads@threads-mixed-userptr-rebind.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-7/igt@xe_exec_threads@threads-mixed-userptr-rebind.html
New tests
---------
New tests have been introduced between xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412_FULL and xe-pw-151244v13_FULL:
### New IGT tests (292) ###
* igt@kms_content_protection@content-type-change:
- Statuses : 3 skip(s)
- Exec time: [0.29, 2.35] s
* igt@kms_content_protection@mei-interface:
- Statuses : 3 skip(s)
- Exec time: [0.00, 1.12] s
* igt@kms_flip_event_leak@basic@pipe-a-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.28, 0.44] s
* igt@kms_flip_event_leak@basic@pipe-a-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.48] s
* igt@kms_flip_event_leak@basic@pipe-b-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.25, 0.26] s
* igt@kms_flip_event_leak@basic@pipe-b-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.22] s
* igt@kms_flip_event_leak@basic@pipe-c-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.25, 0.29] s
* igt@kms_flip_event_leak@basic@pipe-c-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.22] s
* igt@kms_flip_event_leak@basic@pipe-d-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.23] s
* igt@kms_lease@atomic-implicit-crtc:
- Statuses : 4 pass(s)
- Exec time: [0.01, 0.04] s
* igt@kms_lease@atomic-implicit-crtc@pipe-a-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.0, 0.01] s
* igt@kms_lease@atomic-implicit-crtc@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@atomic-implicit-crtc@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@atomic-implicit-crtc@pipe-a-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@atomic-implicit-crtc@pipe-a-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@kms_lease@atomic-implicit-crtc@pipe-b-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.0, 0.01] s
* igt@kms_lease@atomic-implicit-crtc@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@atomic-implicit-crtc@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@atomic-implicit-crtc@pipe-b-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@kms_lease@atomic-implicit-crtc@pipe-b-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@atomic-implicit-crtc@pipe-c-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.00, 0.01] s
* igt@kms_lease@atomic-implicit-crtc@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@atomic-implicit-crtc@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@atomic-implicit-crtc@pipe-c-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@atomic-implicit-crtc@pipe-c-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@atomic-implicit-crtc@pipe-d-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@atomic-implicit-crtc@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@atomic-implicit-crtc@pipe-d-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@cursor-implicit-plane:
- Statuses : 4 pass(s)
- Exec time: [0.66, 2.90] s
* igt@kms_lease@cursor-implicit-plane@pipe-a-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.44] s
* igt@kms_lease@cursor-implicit-plane@pipe-a-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.27] s
* igt@kms_lease@cursor-implicit-plane@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.52] s
* igt@kms_lease@cursor-implicit-plane@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.23] s
* igt@kms_lease@cursor-implicit-plane@pipe-b-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.27] s
* igt@kms_lease@cursor-implicit-plane@pipe-b-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.23] s
* igt@kms_lease@cursor-implicit-plane@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [1.20] s
* igt@kms_lease@cursor-implicit-plane@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.14] s
* igt@kms_lease@cursor-implicit-plane@pipe-c-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.27] s
* igt@kms_lease@cursor-implicit-plane@pipe-c-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.25] s
* igt@kms_lease@cursor-implicit-plane@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [1.17] s
* igt@kms_lease@cursor-implicit-plane@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.14] s
* igt@kms_lease@cursor-implicit-plane@pipe-d-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.26] s
* igt@kms_lease@cursor-implicit-plane@pipe-d-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.25] s
* igt@kms_lease@cursor-implicit-plane@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.15] s
* igt@kms_lease@empty-lease:
- Statuses : 4 pass(s)
- Exec time: [0.00, 0.01] s
* igt@kms_lease@empty-lease@pipe-a-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-a-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-a-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-b-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-b-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-b-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-c-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-c-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-c-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-d-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-d-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@empty-lease@pipe-d-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again:
- Statuses : 4 pass(s)
- Exec time: [0.01] s
* igt@kms_lease@lease-again@pipe-a-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lease-again@pipe-a-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lease-again@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lease-again@pipe-a-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-b-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-b-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-b-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-c-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lease-again@pipe-c-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-c-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-d-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-d-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-again@pipe-d-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get:
- Statuses : 4 pass(s)
- Exec time: [0.00, 0.01] s
* igt@kms_lease@lease-get@pipe-a-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-a-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lease-get@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-a-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-b-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-b-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-b-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-c-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-c-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-c-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-d-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-d-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-get@pipe-d-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector:
- Statuses : 4 pass(s)
- Exec time: [0.00, 0.01] s
* igt@kms_lease@lease-invalid-connector@pipe-a-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-a-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-a-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-b-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-b-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-b-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-c-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-c-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-c-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-d-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-d-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-connector@pipe-d-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-crtc:
- Statuses : 3 pass(s)
- Exec time: [0.00, 0.01] s
* igt@kms_lease@lease-invalid-crtc@pipe-a-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-crtc@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-crtc@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-crtc@pipe-b-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-crtc@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-crtc@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-crtc@pipe-c-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-crtc@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-crtc@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-crtc@pipe-d-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-crtc@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane:
- Statuses : 4 pass(s)
- Exec time: [0.00, 0.01] s
* igt@kms_lease@lease-invalid-plane@pipe-a-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-a-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-a-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-b-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-b-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-b-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-c-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-c-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-c-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-d-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-d-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-invalid-plane@pipe-d-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lease-revoke:
- Statuses : 4 pass(s)
- Exec time: [0.03, 0.40] s
* igt@kms_lease@lease-revoke@pipe-a-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.06, 0.07] s
* igt@kms_lease@lease-revoke@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@kms_lease@lease-revoke@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-revoke@pipe-a-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-revoke@pipe-b-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.06] s
* igt@kms_lease@lease-revoke@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@kms_lease@lease-revoke@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-revoke@pipe-b-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-revoke@pipe-c-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.06] s
* igt@kms_lease@lease-revoke@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@kms_lease@lease-revoke@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-revoke@pipe-c-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-revoke@pipe-d-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.06] s
* igt@kms_lease@lease-revoke@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-revoke@pipe-d-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-unleased-connector:
- Statuses : 4 pass(s)
- Exec time: [0.02, 0.23] s
* igt@kms_lease@lease-unleased-connector@pipe-a-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.04] s
* igt@kms_lease@lease-unleased-connector@pipe-a-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.04] s
* igt@kms_lease@lease-unleased-connector@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@kms_lease@lease-unleased-connector@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.06] s
* igt@kms_lease@lease-unleased-connector@pipe-a-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lease-unleased-connector@pipe-b-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.04] s
* igt@kms_lease@lease-unleased-connector@pipe-b-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.04] s
* igt@kms_lease@lease-unleased-connector@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@kms_lease@lease-unleased-connector@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.06] s
* igt@kms_lease@lease-unleased-connector@pipe-b-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lease-unleased-connector@pipe-c-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.04] s
* igt@kms_lease@lease-unleased-connector@pipe-c-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.04] s
* igt@kms_lease@lease-unleased-connector@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@kms_lease@lease-unleased-connector@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.06] s
* igt@kms_lease@lease-unleased-connector@pipe-c-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lease-unleased-connector@pipe-d-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.04] s
* igt@kms_lease@lease-unleased-connector@pipe-d-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.04] s
* igt@kms_lease@lease-unleased-connector@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.06] s
* igt@kms_lease@lease-unleased-connector@pipe-d-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lease-unleased-crtc:
- Statuses : 4 pass(s)
- Exec time: [0.16, 1.10] s
* igt@kms_lease@lease-unleased-crtc@pipe-a-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.06, 0.12] s
* igt@kms_lease@lease-unleased-crtc@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.31] s
* igt@kms_lease@lease-unleased-crtc@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.06] s
* igt@kms_lease@lease-unleased-crtc@pipe-a-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.11] s
* igt@kms_lease@lease-unleased-crtc@pipe-a-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-unleased-crtc@pipe-b-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.06, 0.10] s
* igt@kms_lease@lease-unleased-crtc@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.77] s
* igt@kms_lease@lease-unleased-crtc@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-unleased-crtc@pipe-b-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.07] s
* igt@kms_lease@lease-unleased-crtc@pipe-b-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-unleased-crtc@pipe-c-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.06] s
* igt@kms_lease@lease-unleased-crtc@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.01] s
* igt@kms_lease@lease-unleased-crtc@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-unleased-crtc@pipe-c-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-unleased-crtc@pipe-c-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-unleased-crtc@pipe-d-dp-2:
- Statuses : 2 pass(s)
- Exec time: [0.05, 0.06] s
* igt@kms_lease@lease-unleased-crtc@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lease-unleased-crtc@pipe-d-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.03] s
* igt@kms_lease@lessee-list:
- Statuses : 4 pass(s)
- Exec time: [0.01] s
* igt@kms_lease@lessee-list@pipe-a-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lessee-list@pipe-a-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lessee-list@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lessee-list@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.00] s
* igt@kms_lease@lessee-list@pipe-b-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lessee-list@pipe-b-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lessee-list@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lessee-list@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lessee-list@pipe-c-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lessee-list@pipe-c-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lessee-list@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lessee-list@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lessee-list@pipe-d-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lessee-list@pipe-d-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@lessee-list@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_lease@page-flip-implicit-plane:
- Statuses : 3 pass(s)
- Exec time: [0.82, 3.01] s
* igt@kms_lease@page-flip-implicit-plane@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.56] s
* igt@kms_lease@page-flip-implicit-plane@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.28] s
* igt@kms_lease@page-flip-implicit-plane@pipe-a-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.33] s
* igt@kms_lease@page-flip-implicit-plane@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [1.19] s
* igt@kms_lease@page-flip-implicit-plane@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.18] s
* igt@kms_lease@page-flip-implicit-plane@pipe-b-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.27] s
* igt@kms_lease@page-flip-implicit-plane@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [1.26] s
* igt@kms_lease@page-flip-implicit-plane@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.18] s
* igt@kms_lease@page-flip-implicit-plane@pipe-c-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.27] s
* igt@kms_lease@page-flip-implicit-plane@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.18] s
* igt@kms_lease@page-flip-implicit-plane@pipe-d-hdmi-a-3:
- Statuses : 1 pass(s)
- Exec time: [0.28] s
* igt@kms_lease@setcrtc-implicit-plane:
- Statuses : 3 pass(s)
- Exec time: [0.78, 2.34] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-a-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.48] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-a-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.28] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.29] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-b-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.27] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-b-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.26] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.16] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-c-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.28] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-c-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.25] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.16] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-d-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.29] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-d-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.24] s
* igt@kms_lease@setcrtc-implicit-plane@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.16] s
* igt@kms_lease@simple-lease:
- Statuses : 3 pass(s)
- Exec time: [0.86, 3.38] s
* igt@kms_lease@simple-lease@pipe-a-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.41] s
* igt@kms_lease@simple-lease@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.56] s
* igt@kms_lease@simple-lease@pipe-a-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.29] s
* igt@kms_lease@simple-lease@pipe-b-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.32] s
* igt@kms_lease@simple-lease@pipe-b-edp-1:
- Statuses : 1 pass(s)
- Exec time: [1.39] s
* igt@kms_lease@simple-lease@pipe-b-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.19] s
* igt@kms_lease@simple-lease@pipe-c-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.33] s
* igt@kms_lease@simple-lease@pipe-c-edp-1:
- Statuses : 1 pass(s)
- Exec time: [1.42] s
* igt@kms_lease@simple-lease@pipe-c-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.19] s
* igt@kms_lease@simple-lease@pipe-d-dp-4:
- Statuses : 1 pass(s)
- Exec time: [0.34] s
* igt@kms_lease@simple-lease@pipe-d-hdmi-a-1:
- Statuses : 1 pass(s)
- Exec time: [0.18] s
* igt@kms_plane_alpha_blend@alpha-7efc:
- Statuses : 4 pass(s)
- Exec time: [1.02, 2.38] s
* igt@kms_plane_alpha_blend@alpha-7efc@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.74] s
* igt@kms_plane_alpha_blend@alpha-basic:
- Statuses : 4 pass(s)
- Exec time: [5.10, 6.38] s
* igt@kms_plane_alpha_blend@alpha-basic@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [2.77] s
* igt@kms_plane_alpha_blend@alpha-opaque-fb:
- Statuses : 4 pass(s)
- Exec time: [0.98, 2.54] s
* igt@kms_plane_alpha_blend@alpha-transparent-fb:
- Statuses : 4 pass(s)
- Exec time: [1.00, 2.41] s
* igt@kms_plane_alpha_blend@constant-alpha-max:
- Statuses : 3 pass(s)
- Exec time: [1.79, 2.01] s
* igt@kms_plane_alpha_blend@constant-alpha-mid:
- Statuses : 4 pass(s)
- Exec time: [1.39, 3.02] s
* igt@kms_plane_alpha_blend@constant-alpha-mid@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [1.06] s
* igt@kms_plane_alpha_blend@constant-alpha-min:
- Statuses : 3 pass(s)
- Exec time: [1.34, 2.73] s
* igt@kms_plane_alpha_blend@constant-alpha-min@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.92] s
* igt@kms_plane_alpha_blend@coverage-7efc:
- Statuses : 4 pass(s)
- Exec time: [0.91, 2.20] s
* igt@kms_plane_alpha_blend@coverage-vs-premult-vs-constant:
- Statuses : 4 pass(s)
- Exec time: [0.82, 2.31] s
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers:
- Statuses : 3 pass(s) 1 skip(s)
- Exec time: [0.04, 2.47] s
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format:
- Statuses : 3 pass(s) 1 skip(s)
- Exec time: [0.03, 4.05] s
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation:
- Statuses : 2 pass(s) 1 skip(s)
- Exec time: [0.03, 1.77] s
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers:
- Statuses : 4 pass(s)
- Exec time: [2.19, 4.10] s
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-pixel-format:
- Statuses : 4 pass(s)
- Exec time: [3.66, 6.70] s
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation:
- Statuses : 4 pass(s)
- Exec time: [1.51, 3.42] s
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers:
- Statuses : 4 pass(s)
- Exec time: [2.16, 3.86] s
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-pixel-format:
- Statuses : 4 pass(s)
- Exec time: [3.65, 6.12] s
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation:
- Statuses : 4 pass(s)
- Exec time: [1.52, 3.48] s
* igt@kms_plane_scaling@plane-upscale-20x20-with-modifiers:
- Statuses : 4 pass(s)
- Exec time: [2.20, 3.89] s
* igt@kms_plane_scaling@plane-upscale-20x20-with-pixel-format:
- Statuses : 4 pass(s)
- Exec time: [3.63, 5.47] s
* igt@kms_plane_scaling@plane-upscale-20x20-with-rotation:
- Statuses : 4 pass(s)
- Exec time: [1.51, 3.24] s
* igt@kms_plane_scaling@plane-upscale-factor-0-25-with-modifiers:
- Statuses : 4 pass(s)
- Exec time: [2.19, 3.83] s
* igt@kms_plane_scaling@plane-upscale-factor-0-25-with-pixel-format:
- Statuses : 4 pass(s)
- Exec time: [3.64, 5.60] s
* igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation:
- Statuses : 3 pass(s)
- Exec time: [1.51, 1.81] s
Known issues
------------
Here are the changes found in xe-pw-151244v13_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@linear-32bpp-rotate-270:
- shard-adlp: NOTRUN -> [SKIP][8] ([Intel XE#316])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_big_fb@linear-32bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-270:
- shard-dg2-set2: NOTRUN -> [SKIP][9] ([Intel XE#316]) +1 other test skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-addfb-size-overflow:
- shard-dg2-set2: NOTRUN -> [SKIP][10] ([Intel XE#610])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-adlp: NOTRUN -> [DMESG-FAIL][11] ([Intel XE#4543]) +1 other test dmesg-fail
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@yf-tiled-16bpp-rotate-0:
- shard-dg2-set2: NOTRUN -> [SKIP][12] ([Intel XE#1124]) +5 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_big_fb@yf-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#1124])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p:
- shard-dg2-set2: NOTRUN -> [SKIP][14] ([Intel XE#2191]) +1 other test skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html
* igt@kms_bw@linear-tiling-1-displays-3840x2160p:
- shard-adlp: NOTRUN -> [SKIP][15] ([Intel XE#367]) +1 other test skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-2/igt@kms_bw@linear-tiling-1-displays-3840x2160p.html
* igt@kms_bw@linear-tiling-2-displays-1920x1080p:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#367])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_bw@linear-tiling-2-displays-1920x1080p.html
* igt@kms_bw@linear-tiling-4-displays-1920x1080p:
- shard-dg2-set2: NOTRUN -> [SKIP][17] ([Intel XE#367])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_bw@linear-tiling-4-displays-1920x1080p.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs@pipe-c-hdmi-a-2:
- shard-dg2-set2: NOTRUN -> [SKIP][18] ([Intel XE#787]) +174 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-432/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs@pipe-c-hdmi-a-2.html
* igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][19] ([Intel XE#455] / [Intel XE#787]) +29 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-436/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
- shard-adlp: NOTRUN -> [SKIP][20] ([Intel XE#455] / [Intel XE#787]) +1 other test skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][21] ([Intel XE#787]) +2 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#2652] / [Intel XE#787]) +3 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-3/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-a-dp-2.html
* igt@kms_cdclk@mode-transition:
- shard-adlp: NOTRUN -> [SKIP][23] ([Intel XE#4417] / [Intel XE#455])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_cdclk@mode-transition.html
* igt@kms_cdclk@mode-transition@pipe-a-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][24] ([Intel XE#4417]) +2 other tests skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_cdclk@mode-transition@pipe-a-hdmi-a-1.html
* igt@kms_chamelium_color@ctm-negative:
- shard-adlp: NOTRUN -> [SKIP][25] ([Intel XE#306])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-2/igt@kms_chamelium_color@ctm-negative.html
* igt@kms_chamelium_color@ctm-red-to-blue:
- shard-dg2-set2: NOTRUN -> [SKIP][26] ([Intel XE#306]) +1 other test skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_chamelium_color@ctm-red-to-blue.html
* igt@kms_chamelium_frames@hdmi-aspect-ratio:
- shard-adlp: NOTRUN -> [SKIP][27] ([Intel XE#373]) +2 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-2/igt@kms_chamelium_frames@hdmi-aspect-ratio.html
* igt@kms_chamelium_hpd@dp-hpd:
- shard-dg2-set2: NOTRUN -> [SKIP][28] ([Intel XE#373]) +4 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@kms_chamelium_hpd@dp-hpd.html
* igt@kms_content_protection@legacy@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][29] ([Intel XE#1178])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_content_protection@legacy@pipe-a-dp-2.html
- shard-dg2-set2: NOTRUN -> [FAIL][30] ([Intel XE#1178])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-432/igt@kms_content_protection@legacy@pipe-a-dp-2.html
* igt@kms_content_protection@uevent@pipe-a-dp-2:
- shard-dg2-set2: NOTRUN -> [FAIL][31] ([Intel XE#1188])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-432/igt@kms_content_protection@uevent@pipe-a-dp-2.html
* igt@kms_cursor_legacy@2x-cursor-vs-flip-atomic:
- shard-adlp: NOTRUN -> [SKIP][32] ([Intel XE#309])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@kms_cursor_legacy@2x-cursor-vs-flip-atomic.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
- shard-bmg: [PASS][33] -> [SKIP][34] ([Intel XE#2291]) +2 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-8/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html
* igt@kms_dp_link_training@non-uhbr-mst:
- shard-adlp: NOTRUN -> [SKIP][35] ([Intel XE#4354])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_dp_link_training@non-uhbr-mst.html
* igt@kms_dp_link_training@non-uhbr-sst:
- shard-bmg: [PASS][36] -> [SKIP][37] ([Intel XE#4354])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-1/igt@kms_dp_link_training@non-uhbr-sst.html
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@kms_dp_link_training@non-uhbr-sst.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-dg2-set2: NOTRUN -> [SKIP][38] ([Intel XE#455]) +7 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
- shard-dg2-set2: NOTRUN -> [SKIP][39] ([Intel XE#4422])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html
* igt@kms_flip@2x-flip-vs-dpms-on-nop:
- shard-bmg: [PASS][40] -> [SKIP][41] ([Intel XE#2316]) +1 other test skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-8/igt@kms_flip@2x-flip-vs-dpms-on-nop.html
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@kms_flip@2x-flip-vs-dpms-on-nop.html
* igt@kms_flip@flip-vs-rmfb-interruptible:
- shard-adlp: [PASS][42] -> [DMESG-WARN][43] ([Intel XE#4543] / [Intel XE#5208])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-2/igt@kms_flip@flip-vs-rmfb-interruptible.html
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@kms_flip@flip-vs-rmfb-interruptible.html
* igt@kms_flip@flip-vs-rmfb-interruptible@b-hdmi-a1:
- shard-adlp: [PASS][44] -> [DMESG-WARN][45] ([Intel XE#4543]) +12 other tests dmesg-warn
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-2/igt@kms_flip@flip-vs-rmfb-interruptible@b-hdmi-a1.html
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@kms_flip@flip-vs-rmfb-interruptible@b-hdmi-a1.html
* igt@kms_flip@flip-vs-suspend@d-hdmi-a3:
- shard-bmg: [PASS][46] -> [INCOMPLETE][47] ([Intel XE#2049] / [Intel XE#2597]) +1 other test incomplete
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-5/igt@kms_flip@flip-vs-suspend@d-hdmi-a3.html
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@kms_flip@flip-vs-suspend@d-hdmi-a3.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-valid-mode:
- shard-adlp: NOTRUN -> [SKIP][48] ([Intel XE#455]) +5 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-valid-mode.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-move:
- shard-dg2-set2: NOTRUN -> [SKIP][49] ([Intel XE#651]) +16 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-move.html
* igt@kms_frontbuffer_tracking@drrs-modesetfrombusy:
- shard-adlp: NOTRUN -> [SKIP][50] ([Intel XE#651]) +3 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_frontbuffer_tracking@drrs-modesetfrombusy.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-wc:
- shard-adlp: NOTRUN -> [SKIP][51] ([Intel XE#653]) +5 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][52] ([Intel XE#2313])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][53] ([Intel XE#653]) +16 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt:
- shard-adlp: NOTRUN -> [SKIP][54] ([Intel XE#656]) +9 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt.html
* igt@kms_hdr@invalid-hdr:
- shard-dg2-set2: [PASS][55] -> [SKIP][56] ([Intel XE#455])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-dg2-463/igt@kms_hdr@invalid-hdr.html
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-433/igt@kms_hdr@invalid-hdr.html
* igt@kms_joiner@invalid-modeset-force-big-joiner:
- shard-adlp: NOTRUN -> [SKIP][57] ([Intel XE#3012])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@kms_joiner@invalid-modeset-force-big-joiner.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-adlp: NOTRUN -> [SKIP][58] ([Intel XE#356])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_pipe_crc_basic@suspend-read-crc:
- shard-adlp: [PASS][59] -> [DMESG-WARN][60] ([Intel XE#2953] / [Intel XE#4173]) +6 other tests dmesg-warn
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-2/igt@kms_pipe_crc_basic@suspend-read-crc.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-2/igt@kms_pipe_crc_basic@suspend-read-crc.html
* igt@kms_pm_backlight@brightness-with-dpms:
- shard-dg2-set2: NOTRUN -> [SKIP][61] ([Intel XE#2938])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@kms_pm_backlight@brightness-with-dpms.html
* igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area:
- shard-dg2-set2: NOTRUN -> [SKIP][62] ([Intel XE#1406] / [Intel XE#1489]) +2 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html
* igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf:
- shard-adlp: NOTRUN -> [SKIP][63] ([Intel XE#1406] / [Intel XE#1489]) +3 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-2/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf.html
* igt@kms_psr@fbc-pr-cursor-plane-onoff:
- shard-dg2-set2: NOTRUN -> [SKIP][64] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +5 other tests skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_psr@fbc-pr-cursor-plane-onoff.html
* igt@kms_psr@fbc-psr-primary-blt:
- shard-adlp: NOTRUN -> [SKIP][65] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +2 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-2/igt@kms_psr@fbc-psr-primary-blt.html
* igt@kms_psr@pr-sprite-blt:
- shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_psr@pr-sprite-blt.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-adlp: NOTRUN -> [SKIP][67] ([Intel XE#1406] / [Intel XE#2939] / [Intel XE#5585])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
- shard-dg2-set2: NOTRUN -> [SKIP][68] ([Intel XE#1406] / [Intel XE#2939])
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@kms_setmode@invalid-clone-single-crtc-stealing:
- shard-bmg: [PASS][69] -> [SKIP][70] ([Intel XE#1435])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-5/igt@kms_setmode@invalid-clone-single-crtc-stealing.html
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@kms_setmode@invalid-clone-single-crtc-stealing.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-adlp: NOTRUN -> [SKIP][71] ([Intel XE#362])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
- shard-dg2-set2: NOTRUN -> [SKIP][72] ([Intel XE#1500])
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_tv_load_detect@load-detect:
- shard-dg2-set2: NOTRUN -> [SKIP][73] ([Intel XE#330])
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@kms_tv_load_detect@load-detect.html
* igt@xe_compute_preempt@compute-preempt:
- shard-adlp: NOTRUN -> [SKIP][74] ([Intel XE#455] / [Intel XE#5632]) +1 other test skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-2/igt@xe_compute_preempt@compute-preempt.html
* igt@xe_compute_preempt@compute-preempt-many:
- shard-dg2-set2: NOTRUN -> [FAIL][75] ([Intel XE#5890]) +1 other test fail
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@xe_compute_preempt@compute-preempt-many.html
* igt@xe_copy_basic@mem-set-linear-0x3fff:
- shard-dg2-set2: NOTRUN -> [SKIP][76] ([Intel XE#1126])
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@xe_copy_basic@mem-set-linear-0x3fff.html
* igt@xe_eudebug@basic-vm-bind:
- shard-dg2-set2: NOTRUN -> [SKIP][77] ([Intel XE#4837]) +4 other tests skip
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@xe_eudebug@basic-vm-bind.html
* igt@xe_eudebug_online@interrupt-other:
- shard-adlp: NOTRUN -> [SKIP][78] ([Intel XE#4837] / [Intel XE#5565])
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@xe_eudebug_online@interrupt-other.html
* igt@xe_eudebug_sriov@deny-sriov:
- shard-dg2-set2: NOTRUN -> [SKIP][79] ([Intel XE#4518])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@xe_eudebug_sriov@deny-sriov.html
* igt@xe_evict@evict-beng-large:
- shard-adlp: NOTRUN -> [SKIP][80] ([Intel XE#261] / [Intel XE#5564]) +1 other test skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@xe_evict@evict-beng-large.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-bind:
- shard-dg2-set2: [PASS][81] -> [SKIP][82] ([Intel XE#1392]) +5 other tests skip
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-dg2-434/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-bind.html
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-bind.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-rebind:
- shard-adlp: NOTRUN -> [SKIP][83] ([Intel XE#1392] / [Intel XE#5575])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-rebind.html
* igt@xe_exec_basic@multigpu-no-exec-rebind:
- shard-bmg: NOTRUN -> [SKIP][84] ([Intel XE#2322])
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@xe_exec_basic@multigpu-no-exec-rebind.html
* igt@xe_exec_fault_mode@many-bindexecqueue-rebind:
- shard-dg2-set2: NOTRUN -> [SKIP][85] ([Intel XE#288]) +12 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@xe_exec_fault_mode@many-bindexecqueue-rebind.html
* igt@xe_exec_fault_mode@many-execqueues-userptr-invalidate-race:
- shard-adlp: NOTRUN -> [SKIP][86] ([Intel XE#288] / [Intel XE#5561]) +4 other tests skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@xe_exec_fault_mode@many-execqueues-userptr-invalidate-race.html
* igt@xe_exec_system_allocator@many-execqueues-mmap-free-huge-nomemset:
- shard-bmg: NOTRUN -> [SKIP][87] ([Intel XE#4943])
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@xe_exec_system_allocator@many-execqueues-mmap-free-huge-nomemset.html
* igt@xe_exec_system_allocator@many-new-bo-map:
- shard-adlp: NOTRUN -> [SKIP][88] ([Intel XE#4915]) +52 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-2/igt@xe_exec_system_allocator@many-new-bo-map.html
* igt@xe_exec_system_allocator@threads-many-stride-new-bo-map:
- shard-bmg: [PASS][89] -> [ABORT][90] ([Intel XE#3970])
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-7/igt@xe_exec_system_allocator@threads-many-stride-new-bo-map.html
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-1/igt@xe_exec_system_allocator@threads-many-stride-new-bo-map.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-stride-new-race-nomemset:
- shard-dg2-set2: NOTRUN -> [SKIP][91] ([Intel XE#4915]) +115 other tests skip
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@xe_exec_system_allocator@threads-shared-vm-many-stride-new-race-nomemset.html
* igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
- shard-adlp: NOTRUN -> [ABORT][92] ([Intel XE#5530])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
* igt@xe_media_fill@media-fill:
- shard-dg2-set2: NOTRUN -> [SKIP][93] ([Intel XE#560])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@xe_media_fill@media-fill.html
* igt@xe_mmap@pci-membarrier-bad-object:
- shard-adlp: NOTRUN -> [SKIP][94] ([Intel XE#5100])
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@xe_mmap@pci-membarrier-bad-object.html
* igt@xe_module_load@load:
- shard-bmg: ([PASS][95], [PASS][96], [PASS][97], [PASS][98], [PASS][99], [PASS][100], [PASS][101], [PASS][102], [PASS][103], [PASS][104], [PASS][105], [PASS][106], [PASS][107], [PASS][108], [PASS][109], [PASS][110], [PASS][111], [PASS][112], [PASS][113], [PASS][114], [PASS][115], [PASS][116], [PASS][117], [PASS][118], [PASS][119]) -> ([PASS][120], [PASS][121], [PASS][122], [PASS][123], [PASS][124], [PASS][125], [PASS][126], [PASS][127], [PASS][128], [PASS][129], [PASS][130], [PASS][131], [PASS][132], [PASS][133], [SKIP][134], [PASS][135], [PASS][136], [PASS][137], [PASS][138], [PASS][139], [PASS][140], [PASS][141], [PASS][142], [PASS][143], [PASS][144], [PASS][145]) ([Intel XE#2457])
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@xe_module_load@load.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-5/igt@xe_module_load@load.html
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-5/igt@xe_module_load@load.html
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-1/igt@xe_module_load@load.html
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-1/igt@xe_module_load@load.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-1/igt@xe_module_load@load.html
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-7/igt@xe_module_load@load.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-8/igt@xe_module_load@load.html
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-7/igt@xe_module_load@load.html
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-7/igt@xe_module_load@load.html
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-5/igt@xe_module_load@load.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-3/igt@xe_module_load@load.html
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-1/igt@xe_module_load@load.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-3/igt@xe_module_load@load.html
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-4/igt@xe_module_load@load.html
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-4/igt@xe_module_load@load.html
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-4/igt@xe_module_load@load.html
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-4/igt@xe_module_load@load.html
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-8/igt@xe_module_load@load.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-8/igt@xe_module_load@load.html
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-3/igt@xe_module_load@load.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@xe_module_load@load.html
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@xe_module_load@load.html
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@xe_module_load@load.html
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-7/igt@xe_module_load@load.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-3/igt@xe_module_load@load.html
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-3/igt@xe_module_load@load.html
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-3/igt@xe_module_load@load.html
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-3/igt@xe_module_load@load.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@xe_module_load@load.html
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@xe_module_load@load.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@xe_module_load@load.html
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-5/igt@xe_module_load@load.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-5/igt@xe_module_load@load.html
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@xe_module_load@load.html
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@xe_module_load@load.html
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@xe_module_load@load.html
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-4/igt@xe_module_load@load.html
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-4/igt@xe_module_load@load.html
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@xe_module_load@load.html
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-5/igt@xe_module_load@load.html
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-5/igt@xe_module_load@load.html
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-7/igt@xe_module_load@load.html
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-1/igt@xe_module_load@load.html
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-1/igt@xe_module_load@load.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-4/igt@xe_module_load@load.html
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-4/igt@xe_module_load@load.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-1/igt@xe_module_load@load.html
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-7/igt@xe_module_load@load.html
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-7/igt@xe_module_load@load.html
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-7/igt@xe_module_load@load.html
* igt@xe_oa@invalid-oa-metric-set-id:
- shard-dg2-set2: NOTRUN -> [SKIP][146] ([Intel XE#3573]) +3 other tests skip
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@xe_oa@invalid-oa-metric-set-id.html
* igt@xe_pat@pat-index-xehpc:
- shard-dg2-set2: NOTRUN -> [SKIP][147] ([Intel XE#2838] / [Intel XE#979])
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@xe_pat@pat-index-xehpc.html
* igt@xe_pm@s4-d3cold-basic-exec:
- shard-dg2-set2: NOTRUN -> [SKIP][148] ([Intel XE#2284] / [Intel XE#366])
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@xe_pm@s4-d3cold-basic-exec.html
* igt@xe_pxp@pxp-src-to-pxp-dest-rendercopy:
- shard-adlp: NOTRUN -> [SKIP][149] ([Intel XE#4733] / [Intel XE#5594]) +1 other test skip
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-3/igt@xe_pxp@pxp-src-to-pxp-dest-rendercopy.html
- shard-dg2-set2: NOTRUN -> [SKIP][150] ([Intel XE#4733])
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@xe_pxp@pxp-src-to-pxp-dest-rendercopy.html
* igt@xe_query@multigpu-query-engines:
- shard-dg2-set2: NOTRUN -> [SKIP][151] ([Intel XE#944]) +2 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@xe_query@multigpu-query-engines.html
* igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling:
- shard-dg2-set2: NOTRUN -> [SKIP][152] ([Intel XE#4130]) +1 other test skip
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling.html
#### Possible fixes ####
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [INCOMPLETE][153] ([Intel XE#3862]) -> [PASS][154] +1 other test pass
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-5/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
- shard-dg2-set2: [INCOMPLETE][155] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522]) -> [PASS][156]
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-d-dp-4:
- shard-dg2-set2: [INCOMPLETE][157] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522]) -> [PASS][158]
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-d-dp-4.html
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-d-dp-4.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
- shard-bmg: [SKIP][159] ([Intel XE#2291]) -> [PASS][160] +5 other tests pass
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
* igt@kms_dp_aux_dev:
- shard-bmg: [SKIP][161] ([Intel XE#3009]) -> [PASS][162]
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@kms_dp_aux_dev.html
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_dp_aux_dev.html
* igt@kms_flip@2x-flip-vs-expired-vblank:
- shard-bmg: [SKIP][163] ([Intel XE#2316]) -> [PASS][164] +3 other tests pass
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@kms_flip@2x-flip-vs-expired-vblank.html
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank.html
* igt@kms_flip@basic-flip-vs-dpms:
- shard-adlp: [DMESG-WARN][165] ([Intel XE#4543]) -> [PASS][166] +13 other tests pass
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-4/igt@kms_flip@basic-flip-vs-dpms.html
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@kms_flip@basic-flip-vs-dpms.html
* igt@kms_flip@flip-vs-suspend@b-hdmi-a1:
- shard-adlp: [DMESG-WARN][167] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][168] +3 other tests pass
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-1/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-1/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html
* igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-y:
- shard-adlp: [FAIL][169] ([Intel XE#1874]) -> [PASS][170]
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-3/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-y.html
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-9/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-y.html
* igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-x:
- shard-adlp: [DMESG-FAIL][171] ([Intel XE#4543]) -> [PASS][172] +1 other test pass
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-3/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-x.html
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-9/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-x.html
* igt@kms_plane_alpha_blend@constant-alpha-mid@pipe-a-hdmi-a-6:
- shard-dg2-set2: [INCOMPLETE][173] -> [PASS][174] +1 other test pass
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-dg2-464/igt@kms_plane_alpha_blend@constant-alpha-mid@pipe-a-hdmi-a-6.html
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@kms_plane_alpha_blend@constant-alpha-mid@pipe-a-hdmi-a-6.html
* igt@kms_plane_multiple@2x-tiling-x:
- shard-bmg: [SKIP][175] ([Intel XE#4596]) -> [PASS][176]
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-x.html
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_plane_multiple@2x-tiling-x.html
* igt@kms_setmode@basic@pipe-a-dp-2:
- shard-bmg: [FAIL][177] ([Intel XE#2883]) -> [PASS][178] +6 other tests pass
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-3/igt@kms_setmode@basic@pipe-a-dp-2.html
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-7/igt@kms_setmode@basic@pipe-a-dp-2.html
* igt@kms_setmode@basic@pipe-a-hdmi-a-6:
- shard-dg2-set2: [FAIL][179] ([Intel XE#2883]) -> [PASS][180] +3 other tests pass
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-dg2-466/igt@kms_setmode@basic@pipe-a-hdmi-a-6.html
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-466/igt@kms_setmode@basic@pipe-a-hdmi-a-6.html
* igt@kms_setmode@clone-exclusive-crtc:
- shard-bmg: [SKIP][181] ([Intel XE#1435]) -> [PASS][182]
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@kms_setmode@clone-exclusive-crtc.html
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_setmode@clone-exclusive-crtc.html
* igt@kms_vrr@max-min@pipe-a-edp-1:
- shard-lnl: [FAIL][183] ([Intel XE#4227]) -> [PASS][184] +1 other test pass
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-lnl-1/igt@kms_vrr@max-min@pipe-a-edp-1.html
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-lnl-4/igt@kms_vrr@max-min@pipe-a-edp-1.html
* igt@kms_vrr@negative-basic:
- shard-bmg: [SKIP][185] ([Intel XE#1499]) -> [PASS][186]
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@kms_vrr@negative-basic.html
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_vrr@negative-basic.html
* igt@xe_exec_basic@multigpu-once-null-rebind:
- shard-dg2-set2: [SKIP][187] ([Intel XE#1392]) -> [PASS][188] +4 other tests pass
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-dg2-432/igt@xe_exec_basic@multigpu-once-null-rebind.html
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-464/igt@xe_exec_basic@multigpu-once-null-rebind.html
* igt@xe_exec_reset@parallel-gt-reset:
- shard-adlp: [DMESG-WARN][189] ([Intel XE#3876]) -> [PASS][190]
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-4/igt@xe_exec_reset@parallel-gt-reset.html
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@xe_exec_reset@parallel-gt-reset.html
* igt@xe_exec_system_allocator@fault-benchmark:
- shard-bmg: [TIMEOUT][191] -> [PASS][192]
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-4/igt@xe_exec_system_allocator@fault-benchmark.html
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-5/igt@xe_exec_system_allocator@fault-benchmark.html
* {igt@xe_exec_system_allocator@many-64k-new-prefetch}:
- shard-lnl: [CRASH][193] ([Intel XE#6192]) -> [PASS][194] +9 other tests pass
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-lnl-8/igt@xe_exec_system_allocator@many-64k-new-prefetch.html
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-lnl-5/igt@xe_exec_system_allocator@many-64k-new-prefetch.html
* {igt@xe_exec_system_allocator@twice-malloc-prefetch-madvise}:
- shard-bmg: [CRASH][195] ([Intel XE#6192]) -> [PASS][196] +11 other tests pass
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-1/igt@xe_exec_system_allocator@twice-malloc-prefetch-madvise.html
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-4/igt@xe_exec_system_allocator@twice-malloc-prefetch-madvise.html
* igt@xe_exec_threads@threads-mixed-userptr-rebind:
- shard-adlp: [FAIL][197] -> [PASS][198] +1 other test pass
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-4/igt@xe_exec_threads@threads-mixed-userptr-rebind.html
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@xe_exec_threads@threads-mixed-userptr-rebind.html
* igt@xe_sriov_scheduling@nonpreempt-engine-resets@numvfs-random:
- shard-adlp: [ABORT][199] ([Intel XE#4917] / [Intel XE#5545]) -> [PASS][200] +1 other test pass
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-8/igt@xe_sriov_scheduling@nonpreempt-engine-resets@numvfs-random.html
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-4/igt@xe_sriov_scheduling@nonpreempt-engine-resets@numvfs-random.html
#### Warnings ####
* igt@kms_content_protection@legacy:
- shard-bmg: [SKIP][201] ([Intel XE#2341]) -> [FAIL][202] ([Intel XE#1178])
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@kms_content_protection@legacy.html
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-8/igt@kms_content_protection@legacy.html
* igt@kms_flip@flip-vs-suspend:
- shard-adlp: [DMESG-WARN][203] ([Intel XE#2953] / [Intel XE#4173]) -> [DMESG-WARN][204] ([Intel XE#4543])
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-1/igt@kms_flip@flip-vs-suspend.html
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-1/igt@kms_flip@flip-vs-suspend.html
* igt@kms_flip@plain-flip-ts-check:
- shard-adlp: [DMESG-WARN][205] ([Intel XE#4543]) -> [DMESG-WARN][206] ([Intel XE#2953] / [Intel XE#4173] / [Intel XE#4543])
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-3/igt@kms_flip@plain-flip-ts-check.html
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-1/igt@kms_flip@plain-flip-ts-check.html
* igt@kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw:
- shard-bmg: [SKIP][207] ([Intel XE#2311]) -> [SKIP][208] ([Intel XE#2312]) +13 other tests skip
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-8/igt@kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw.html
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt:
- shard-bmg: [SKIP][209] ([Intel XE#2312]) -> [SKIP][210] ([Intel XE#2311]) +12 other tests skip
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt:
- shard-bmg: [SKIP][211] ([Intel XE#2312]) -> [SKIP][212] ([Intel XE#5390]) +6 other tests skip
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][213] ([Intel XE#5390]) -> [SKIP][214] ([Intel XE#2312]) +6 other tests skip
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc.html
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move:
- shard-bmg: [SKIP][215] ([Intel XE#2313]) -> [SKIP][216] ([Intel XE#2312]) +11 other tests skip
[215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move.html
[216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render:
- shard-bmg: [SKIP][217] ([Intel XE#2312]) -> [SKIP][218] ([Intel XE#2313]) +13 other tests skip
[217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html
[218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][219] ([Intel XE#3544]) -> [SKIP][220] ([Intel XE#3374] / [Intel XE#3544])
[219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-1/igt@kms_hdr@brightness-with-hdr.html
[220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-6/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-dg2-set2: [SKIP][221] ([Intel XE#362]) -> [FAIL][222] ([Intel XE#1729])
[221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern.html
[222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-dg2-433/igt@kms_tiled_display@basic-test-pattern.html
* igt@xe_exec_fault_mode@many-rebind:
- shard-adlp: [INCOMPLETE][223] ([Intel XE#2594]) -> [SKIP][224] ([Intel XE#288] / [Intel XE#5561])
[223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-adlp-9/igt@xe_exec_fault_mode@many-rebind.html
[224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-adlp-2/igt@xe_exec_fault_mode@many-rebind.html
* igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
- shard-bmg: [ABORT][225] ([Intel XE#4917] / [Intel XE#5466] / [Intel XE#5530]) -> [ABORT][226] ([Intel XE#5466] / [Intel XE#5530])
[225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412/shard-bmg-3/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
[226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/shard-bmg-3/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1188]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1188
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
[Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
[Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
[Intel XE#2594]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2594
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
[Intel XE#2838]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2838
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
[Intel XE#2883]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2883
[Intel XE#2938]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2938
[Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939
[Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
[Intel XE#3009]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3009
[Intel XE#3012]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3012
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/356
[Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#3862]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3862
[Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
[Intel XE#3970]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3970
[Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
[Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
[Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
[Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
[Intel XE#4345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4345
[Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4417
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4518]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4518
[Intel XE#4522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4522
[Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
[Intel XE#4917]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4917
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
[Intel XE#5208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5208
[Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
[Intel XE#5466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5466
[Intel XE#5530]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5530
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#5561]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5561
[Intel XE#5564]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5564
[Intel XE#5565]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5565
[Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
[Intel XE#5585]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5585
[Intel XE#5594]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5594
[Intel XE#560]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/560
[Intel XE#5632]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5632
[Intel XE#5786]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5786
[Intel XE#5890]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5890
[Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
[Intel XE#6192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6192
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
[Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
Build changes
-------------
* Linux: xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412 -> xe-pw-151244v13
IGT_8555: 8555
xe-3835-3008c5c8e2fade05918e6d8c456572c91f30d412: 3008c5c8e2fade05918e6d8c456572c91f30d412
xe-pw-151244v13: 151244v13
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-151244v13/index.html
[-- Attachment #2: Type: text/html, Size: 109355 bytes --]
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start
2025-09-28 7:05 ` [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start Ankit Nautiyal
@ 2025-09-29 8:45 ` Ville Syrjälä
2025-09-29 9:09 ` Ville Syrjälä
` (2 more replies)
2025-09-29 9:00 ` Ville Syrjälä
1 sibling, 3 replies; 30+ messages in thread
From: Ville Syrjälä @ 2025-09-29 8:45 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe
On Sun, Sep 28, 2025 at 12:35:40PM +0530, Ankit Nautiyal wrote:
> +static void intel_crtc_vblank_delay(struct intel_atomic_state *state,
> + struct intel_crtc *crtc)
> +{
> + struct intel_crtc_state *crtc_state =
> + intel_atomic_get_new_crtc_state(state, crtc);
> + struct drm_display_mode *adjusted_mode =
> + &crtc_state->hw.adjusted_mode;
> + int vblank_delay = 0;
> +
> + vblank_delay = intel_crtc_min_guardband_delay(state, crtc);
> +
> + adjusted_mode->crtc_vblank_start += vblank_delay;
The situation with crtc_vblank_start is already kinda broken,
and I think we need to fix that first somehow.
Currently crtc_vblank_start is assumed to be the vblank_start
for the fixed refresh rate case. That value can be different
from the variable refresh rate case whenever
always_use_vrr_tg()==false. On icl/tgl it's always different
due to the extra vblank delay, and also on adl+ it could be
different if we were to use an optimized guardband.
I think there are a few options how we might solve this:
1. keep crtc_vblank_start as is, and make sure every user of it
gets adjusted to also deal with the vrr case correctly
2. enable always_use_vrr_tg() whenever there might be switch
between vrr and fixed refresh rate, which I think would mean
crtc_state->vrr.in_range==true.
I kinda like option 2 because then we'll be doing the vrr vs.
fixed refresh rate always the same way. However we haven't really
tested that mode of operation on the older platforms, so I'd
rather not bet all your work on that working. If we later run
into problems with that then we'd have to revert everything.
So I think we should start with option 1, adjust all the
crtc_vblank_start users approriately (I don't think there are
too many of them), and adjust crtc_vblank_start to match
the guardband only when always_use_vrr_tg()==true.
After that I think we might still have some potential issues/race
conditions around the actual vrr <-> fixed refresh rate switch.
Those might require more work later, or if we decide at that point
to try option 2 maybe we could sidestep some/all of them.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start
2025-09-28 7:05 ` [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start Ankit Nautiyal
2025-09-29 8:45 ` Ville Syrjälä
@ 2025-09-29 9:00 ` Ville Syrjälä
2025-10-01 10:41 ` Nautiyal, Ankit K
1 sibling, 1 reply; 30+ messages in thread
From: Ville Syrjälä @ 2025-09-29 9:00 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe
On Sun, Sep 28, 2025 at 12:35:40PM +0530, Ankit Nautiyal wrote:
> As we move towards using a shorter, optimized guardband, we need to adjust
> how the delayed vblank start is computed.
>
> Use the helper intel_vrr_compute_guardband() to calculate the optimized
> guardband. Since this is measured from the vblank end, we shift the
> vblank-start accordingly.
>
> Calculate the minimum delay required based on the guardband and apply it in
> intel_crtc_vblank_delay() to update crtc_vblank_start.
>
> Additionally, introduce a new allow_vblank_delay_fastset() helper that
> combines the existing LRR-based logic with an additional check for the
> optimized guardband usage.
>
> v2:
> - Check if optimized guardband is more than vblank length and add debug
> print.
> - Extend vblank delay fastset logic to cover optimized guardband.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 79 +++++++++++++++++++-
> 1 file changed, 76 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 4135f9be53fd..97a3121a204f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -2361,6 +2361,67 @@ static int intel_crtc_compute_pipe_mode(struct intel_crtc_state *crtc_state)
> return 0;
> }
>
> +static
> +int intel_crtc_min_guardband_delay(struct intel_atomic_state *state,
> + struct intel_crtc *crtc)
> +{
> + struct intel_display *display = to_intel_display(state);
> + struct intel_crtc_state *crtc_state =
> + intel_atomic_get_new_crtc_state(state, crtc);
> + const struct drm_display_mode *adjusted_mode =
> + &crtc_state->hw.adjusted_mode;
> + struct drm_connector_state *conn_state;
> + struct drm_connector *drm_connector;
> + int vblank_length;
> + int i;
> +
> + if (!intel_vrr_use_optimized_guardband(crtc_state))
> + return 0;
> +
> + vblank_length = crtc_state->vrr.vmin -
> + adjusted_mode->crtc_vdisplay;
> +
> + for_each_new_connector_in_state(&state->base,
> + drm_connector,
> + conn_state, i) {
> + int guardband;
> + struct intel_connector *connector;
> +
> + if (conn_state->crtc != &crtc->base)
> + continue;
> +
> + connector = to_intel_connector(drm_connector);
> + guardband = intel_vrr_compute_guardband(crtc_state,
> + connector);
> + if (guardband > vblank_length) {
> + drm_dbg_kms(display->drm,
> + "[CRTC:%d:%s] Cannot optimize guardband (%d) exceeds max (%d)\n",
> + crtc->base.base.id, crtc->base.name,
> + guardband,
> + vblank_length);
> + return 0;
> + }
> +
> + return vblank_length - guardband;
> + }
> +
> + return 0;
> +}
> +
> +static void intel_crtc_vblank_delay(struct intel_atomic_state *state,
> + struct intel_crtc *crtc)
> +{
> + struct intel_crtc_state *crtc_state =
> + intel_atomic_get_new_crtc_state(state, crtc);
> + struct drm_display_mode *adjusted_mode =
> + &crtc_state->hw.adjusted_mode;
> + int vblank_delay = 0;
> +
> + vblank_delay = intel_crtc_min_guardband_delay(state, crtc);
> +
> + adjusted_mode->crtc_vblank_start += vblank_delay;
> +}
> +
> static int intel_crtc_set_context_latency(struct intel_crtc_state *crtc_state)
> {
> struct intel_display *display = to_intel_display(crtc_state);
> @@ -2413,6 +2474,7 @@ static int intel_crtc_compute_config(struct intel_atomic_state *state,
> ret = intel_crtc_compute_set_context_latency(state, crtc);
> if (ret)
> return ret;
> + intel_crtc_vblank_delay(state, crtc);
IMO we should get rid of all this vblank_delay terminology here.
This one I think should just be our current
intel_vrr_compute_config_late() (renamed to eg.
intel_vrr_compute_guardband()).
After which we just have to solve all the chicken vs. egg problems
to really compute the approriate optimized guardband value.
> ret = intel_dpll_crtc_compute_clock(state, crtc);
> if (ret)
> @@ -5101,13 +5163,24 @@ static bool allow_vblank_delay_fastset_lrr(const struct intel_crtc_state *old_cr
> {
> struct intel_display *display = to_intel_display(old_crtc_state);
>
> + return HAS_LRR(display) && old_crtc_state->inherited &&
> + !intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_DSI);
> +}
> +
> +static bool allow_vblank_delay_fastset(const struct intel_crtc_state *old_crtc_state,
> + const struct intel_crtc_state *new_crtc_state)
> +{
> /*
> * Allow fastboot to fix up vblank delay (handled via LRR
> * codepaths), a bit dodgy as the registers aren't
> * double buffered but seems to be working more or less...
> + *
> + * Additionally, with the optimized guardband the vblank start
> + * is moved further away from the undelayed vblank. Allow this
> + * vblank delay when optimized guardband is used.
> */
> - return HAS_LRR(display) && old_crtc_state->inherited &&
> - !intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_DSI);
> + return allow_vblank_delay_fastset_lrr(old_crtc_state) ||
> + intel_vrr_use_optimized_guardband(new_crtc_state);
> }
>
> bool
> @@ -5242,7 +5315,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
> PIPE_CONF_CHECK_I(name.crtc_hsync_start); \
> PIPE_CONF_CHECK_I(name.crtc_hsync_end); \
> PIPE_CONF_CHECK_I(name.crtc_vdisplay); \
> - if (!fastset || !allow_vblank_delay_fastset_lrr(current_config)) \
> + if (!fastset || !allow_vblank_delay_fastset(current_config, pipe_config)) \
> PIPE_CONF_CHECK_I(name.crtc_vblank_start); \
> PIPE_CONF_CHECK_I(name.crtc_vsync_start); \
> PIPE_CONF_CHECK_I(name.crtc_vsync_end); \
> --
> 2.45.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start
2025-09-29 8:45 ` Ville Syrjälä
@ 2025-09-29 9:09 ` Ville Syrjälä
2025-09-29 9:21 ` Ville Syrjälä
2025-10-01 10:34 ` Nautiyal, Ankit K
2 siblings, 0 replies; 30+ messages in thread
From: Ville Syrjälä @ 2025-09-29 9:09 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe
On Mon, Sep 29, 2025 at 11:45:19AM +0300, Ville Syrjälä wrote:
> On Sun, Sep 28, 2025 at 12:35:40PM +0530, Ankit Nautiyal wrote:
> > +static void intel_crtc_vblank_delay(struct intel_atomic_state *state,
> > + struct intel_crtc *crtc)
> > +{
> > + struct intel_crtc_state *crtc_state =
> > + intel_atomic_get_new_crtc_state(state, crtc);
> > + struct drm_display_mode *adjusted_mode =
> > + &crtc_state->hw.adjusted_mode;
> > + int vblank_delay = 0;
> > +
> > + vblank_delay = intel_crtc_min_guardband_delay(state, crtc);
> > +
> > + adjusted_mode->crtc_vblank_start += vblank_delay;
>
> The situation with crtc_vblank_start is already kinda broken,
> and I think we need to fix that first somehow.
>
> Currently crtc_vblank_start is assumed to be the vblank_start
> for the fixed refresh rate case. That value can be different
> from the variable refresh rate case whenever
> always_use_vrr_tg()==false. On icl/tgl it's always different
> due to the extra vblank delay, and also on adl+ it could be
> different if we were to use an optimized guardband.
>
> I think there are a few options how we might solve this:
> 1. keep crtc_vblank_start as is, and make sure every user of it
> gets adjusted to also deal with the vrr case correctly
> 2. enable always_use_vrr_tg() whenever there might be switch
> between vrr and fixed refresh rate, which I think would mean
> crtc_state->vrr.in_range==true.
And just as a reminder in case I think of it again later:
3. use an optimized guardband only when always_use_vrr_tg()==true
But that wouldn't actually solve the already existing issue
on icl/tgl. So not really a good option.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start
2025-09-29 8:45 ` Ville Syrjälä
2025-09-29 9:09 ` Ville Syrjälä
@ 2025-09-29 9:21 ` Ville Syrjälä
2025-10-01 10:34 ` Nautiyal, Ankit K
2 siblings, 0 replies; 30+ messages in thread
From: Ville Syrjälä @ 2025-09-29 9:21 UTC (permalink / raw)
To: Ankit Nautiyal; +Cc: intel-gfx, intel-xe
On Mon, Sep 29, 2025 at 11:45:19AM +0300, Ville Syrjälä wrote:
> On Sun, Sep 28, 2025 at 12:35:40PM +0530, Ankit Nautiyal wrote:
> > +static void intel_crtc_vblank_delay(struct intel_atomic_state *state,
> > + struct intel_crtc *crtc)
> > +{
> > + struct intel_crtc_state *crtc_state =
> > + intel_atomic_get_new_crtc_state(state, crtc);
> > + struct drm_display_mode *adjusted_mode =
> > + &crtc_state->hw.adjusted_mode;
> > + int vblank_delay = 0;
> > +
> > + vblank_delay = intel_crtc_min_guardband_delay(state, crtc);
> > +
> > + adjusted_mode->crtc_vblank_start += vblank_delay;
>
> The situation with crtc_vblank_start is already kinda broken,
> and I think we need to fix that first somehow.
>
> Currently crtc_vblank_start is assumed to be the vblank_start
> for the fixed refresh rate case. That value can be different
> from the variable refresh rate case whenever
> always_use_vrr_tg()==false. On icl/tgl it's always different
> due to the extra vblank delay, and also on adl+ it could be
> different if we were to use an optimized guardband.
>
> I think there are a few options how we might solve this:
> 1. keep crtc_vblank_start as is, and make sure every user of it
> gets adjusted to also deal with the vrr case correctly
> 2. enable always_use_vrr_tg() whenever there might be switch
> between vrr and fixed refresh rate, which I think would mean
> crtc_state->vrr.in_range==true.
One slight downside with option 2 would that we migth lose
fastboot support. Dunno if we could come up with a scheme that
prefers option 2 while still allowing the live legacy TG -> VRR
TG change during fastboot...
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start
2025-09-29 8:45 ` Ville Syrjälä
2025-09-29 9:09 ` Ville Syrjälä
2025-09-29 9:21 ` Ville Syrjälä
@ 2025-10-01 10:34 ` Nautiyal, Ankit K
2025-10-01 12:10 ` Ville Syrjälä
2 siblings, 1 reply; 30+ messages in thread
From: Nautiyal, Ankit K @ 2025-10-01 10:34 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, intel-xe
On 9/29/2025 2:15 PM, Ville Syrjälä wrote:
> On Sun, Sep 28, 2025 at 12:35:40PM +0530, Ankit Nautiyal wrote:
>> +static void intel_crtc_vblank_delay(struct intel_atomic_state *state,
>> + struct intel_crtc *crtc)
>> +{
>> + struct intel_crtc_state *crtc_state =
>> + intel_atomic_get_new_crtc_state(state, crtc);
>> + struct drm_display_mode *adjusted_mode =
>> + &crtc_state->hw.adjusted_mode;
>> + int vblank_delay = 0;
>> +
>> + vblank_delay = intel_crtc_min_guardband_delay(state, crtc);
>> +
>> + adjusted_mode->crtc_vblank_start += vblank_delay;
> The situation with crtc_vblank_start is already kinda broken,
> and I think we need to fix that first somehow.
>
> Currently crtc_vblank_start is assumed to be the vblank_start
> for the fixed refresh rate case. That value can be different
> from the variable refresh rate case whenever
> always_use_vrr_tg()==false. On icl/tgl it's always different
> due to the extra vblank delay, and also on adl+ it could be
> different if we were to use an optimized guardband.
>
> I think there are a few options how we might solve this:
> 1. keep crtc_vblank_start as is, and make sure every user of it
> gets adjusted to also deal with the vrr case correctly
Alright, so we avoid changing the vblank_start.
It means for platforms with always_use_vrr_tg()==true we directly set
the value for guardband. (Currently I was getting it from vmin_vtotal -
vblank_start)
For platforms ADL+ with always always_use_vrr_tg()== false for the fixed
refresh rate case, guardband is full vblank_length for variable refresh
rate set the guardband directly.
As you have mentioned need to check which all places we need vblank_start.
For ICL/TGL we do not use optimization for now, right?
The extra_vblank_delay quirk is already handled while filling the
registers.
> 2. enable always_use_vrr_tg() whenever there might be switch
> between vrr and fixed refresh rate, which I think would mean
> crtc_state->vrr.in_range==true.
I think I didnt get this part:
Do you mean later at some point we move to option 2:
always_use_vrr_tg()==true for all platforms.(Need to check if we can do
it for ICL, TGL).
>
> I kinda like option 2 because then we'll be doing the vrr vs.
> fixed refresh rate always the same way. However we haven't really
> tested that mode of operation on the older platforms, so I'd
> rather not bet all your work on that working. If we later run
> into problems with that then we'd have to revert everything.
>
> So I think we should start with option 1, adjust all the
> crtc_vblank_start users approriately (I don't think there are
> too many of them), and adjust crtc_vblank_start to match
> the guardband only when always_use_vrr_tg()==true.
Sure will start with this for now.
Thanks & Regards,
Ankit
>
> After that I think we might still have some potential issues/race
> conditions around the actual vrr <-> fixed refresh rate switch.
> Those might require more work later, or if we decide at that point
> to try option 2 maybe we could sidestep some/all of them.
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start
2025-09-29 9:00 ` Ville Syrjälä
@ 2025-10-01 10:41 ` Nautiyal, Ankit K
2025-10-01 12:12 ` Ville Syrjälä
0 siblings, 1 reply; 30+ messages in thread
From: Nautiyal, Ankit K @ 2025-10-01 10:41 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, intel-xe
On 9/29/2025 2:30 PM, Ville Syrjälä wrote:
> On Sun, Sep 28, 2025 at 12:35:40PM +0530, Ankit Nautiyal wrote:
>> As we move towards using a shorter, optimized guardband, we need to adjust
>> how the delayed vblank start is computed.
>>
>> Use the helper intel_vrr_compute_guardband() to calculate the optimized
>> guardband. Since this is measured from the vblank end, we shift the
>> vblank-start accordingly.
>>
>> Calculate the minimum delay required based on the guardband and apply it in
>> intel_crtc_vblank_delay() to update crtc_vblank_start.
>>
>> Additionally, introduce a new allow_vblank_delay_fastset() helper that
>> combines the existing LRR-based logic with an additional check for the
>> optimized guardband usage.
>>
>> v2:
>> - Check if optimized guardband is more than vblank length and add debug
>> print.
>> - Extend vblank delay fastset logic to cover optimized guardband.
>>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_display.c | 79 +++++++++++++++++++-
>> 1 file changed, 76 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
>> index 4135f9be53fd..97a3121a204f 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> @@ -2361,6 +2361,67 @@ static int intel_crtc_compute_pipe_mode(struct intel_crtc_state *crtc_state)
>> return 0;
>> }
>>
>> +static
>> +int intel_crtc_min_guardband_delay(struct intel_atomic_state *state,
>> + struct intel_crtc *crtc)
>> +{
>> + struct intel_display *display = to_intel_display(state);
>> + struct intel_crtc_state *crtc_state =
>> + intel_atomic_get_new_crtc_state(state, crtc);
>> + const struct drm_display_mode *adjusted_mode =
>> + &crtc_state->hw.adjusted_mode;
>> + struct drm_connector_state *conn_state;
>> + struct drm_connector *drm_connector;
>> + int vblank_length;
>> + int i;
>> +
>> + if (!intel_vrr_use_optimized_guardband(crtc_state))
>> + return 0;
>> +
>> + vblank_length = crtc_state->vrr.vmin -
>> + adjusted_mode->crtc_vdisplay;
>> +
>> + for_each_new_connector_in_state(&state->base,
>> + drm_connector,
>> + conn_state, i) {
>> + int guardband;
>> + struct intel_connector *connector;
>> +
>> + if (conn_state->crtc != &crtc->base)
>> + continue;
>> +
>> + connector = to_intel_connector(drm_connector);
>> + guardband = intel_vrr_compute_guardband(crtc_state,
>> + connector);
>> + if (guardband > vblank_length) {
>> + drm_dbg_kms(display->drm,
>> + "[CRTC:%d:%s] Cannot optimize guardband (%d) exceeds max (%d)\n",
>> + crtc->base.base.id, crtc->base.name,
>> + guardband,
>> + vblank_length);
>> + return 0;
>> + }
>> +
>> + return vblank_length - guardband;
>> + }
>> +
>> + return 0;
>> +}
>> +
>> +static void intel_crtc_vblank_delay(struct intel_atomic_state *state,
>> + struct intel_crtc *crtc)
>> +{
>> + struct intel_crtc_state *crtc_state =
>> + intel_atomic_get_new_crtc_state(state, crtc);
>> + struct drm_display_mode *adjusted_mode =
>> + &crtc_state->hw.adjusted_mode;
>> + int vblank_delay = 0;
>> +
>> + vblank_delay = intel_crtc_min_guardband_delay(state, crtc);
>> +
>> + adjusted_mode->crtc_vblank_start += vblank_delay;
>> +}
>> +
>> static int intel_crtc_set_context_latency(struct intel_crtc_state *crtc_state)
>> {
>> struct intel_display *display = to_intel_display(crtc_state);
>> @@ -2413,6 +2474,7 @@ static int intel_crtc_compute_config(struct intel_atomic_state *state,
>> ret = intel_crtc_compute_set_context_latency(state, crtc);
>> if (ret)
>> return ret;
>> + intel_crtc_vblank_delay(state, crtc);
> IMO we should get rid of all this vblank_delay terminology here.
> This one I think should just be our current
> intel_vrr_compute_config_late() (renamed to eg.
> intel_vrr_compute_guardband()).
Hmm ok so will rename this and call from intel_modeset_pipe_config_late().
Regards,
Ankit
>
> After which we just have to solve all the chicken vs. egg problems
> to really compute the approriate optimized guardband value.
>
>> ret = intel_dpll_crtc_compute_clock(state, crtc);
>> if (ret)
>> @@ -5101,13 +5163,24 @@ static bool allow_vblank_delay_fastset_lrr(const struct intel_crtc_state *old_cr
>> {
>> struct intel_display *display = to_intel_display(old_crtc_state);
>>
>> + return HAS_LRR(display) && old_crtc_state->inherited &&
>> + !intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_DSI);
>> +}
>> +
>> +static bool allow_vblank_delay_fastset(const struct intel_crtc_state *old_crtc_state,
>> + const struct intel_crtc_state *new_crtc_state)
>> +{
>> /*
>> * Allow fastboot to fix up vblank delay (handled via LRR
>> * codepaths), a bit dodgy as the registers aren't
>> * double buffered but seems to be working more or less...
>> + *
>> + * Additionally, with the optimized guardband the vblank start
>> + * is moved further away from the undelayed vblank. Allow this
>> + * vblank delay when optimized guardband is used.
>> */
>> - return HAS_LRR(display) && old_crtc_state->inherited &&
>> - !intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_DSI);
>> + return allow_vblank_delay_fastset_lrr(old_crtc_state) ||
>> + intel_vrr_use_optimized_guardband(new_crtc_state);
>> }
>>
>> bool
>> @@ -5242,7 +5315,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
>> PIPE_CONF_CHECK_I(name.crtc_hsync_start); \
>> PIPE_CONF_CHECK_I(name.crtc_hsync_end); \
>> PIPE_CONF_CHECK_I(name.crtc_vdisplay); \
>> - if (!fastset || !allow_vblank_delay_fastset_lrr(current_config)) \
>> + if (!fastset || !allow_vblank_delay_fastset(current_config, pipe_config)) \
>> PIPE_CONF_CHECK_I(name.crtc_vblank_start); \
>> PIPE_CONF_CHECK_I(name.crtc_vsync_start); \
>> PIPE_CONF_CHECK_I(name.crtc_vsync_end); \
>> --
>> 2.45.2
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start
2025-10-01 10:34 ` Nautiyal, Ankit K
@ 2025-10-01 12:10 ` Ville Syrjälä
2025-10-01 13:16 ` Nautiyal, Ankit K
0 siblings, 1 reply; 30+ messages in thread
From: Ville Syrjälä @ 2025-10-01 12:10 UTC (permalink / raw)
To: Nautiyal, Ankit K; +Cc: intel-gfx, intel-xe
On Wed, Oct 01, 2025 at 04:04:37PM +0530, Nautiyal, Ankit K wrote:
>
> On 9/29/2025 2:15 PM, Ville Syrjälä wrote:
> > On Sun, Sep 28, 2025 at 12:35:40PM +0530, Ankit Nautiyal wrote:
> >> +static void intel_crtc_vblank_delay(struct intel_atomic_state *state,
> >> + struct intel_crtc *crtc)
> >> +{
> >> + struct intel_crtc_state *crtc_state =
> >> + intel_atomic_get_new_crtc_state(state, crtc);
> >> + struct drm_display_mode *adjusted_mode =
> >> + &crtc_state->hw.adjusted_mode;
> >> + int vblank_delay = 0;
> >> +
> >> + vblank_delay = intel_crtc_min_guardband_delay(state, crtc);
> >> +
> >> + adjusted_mode->crtc_vblank_start += vblank_delay;
> > The situation with crtc_vblank_start is already kinda broken,
> > and I think we need to fix that first somehow.
> >
> > Currently crtc_vblank_start is assumed to be the vblank_start
> > for the fixed refresh rate case. That value can be different
> > from the variable refresh rate case whenever
> > always_use_vrr_tg()==false. On icl/tgl it's always different
> > due to the extra vblank delay, and also on adl+ it could be
> > different if we were to use an optimized guardband.
> >
> > I think there are a few options how we might solve this:
> > 1. keep crtc_vblank_start as is, and make sure every user of it
> > gets adjusted to also deal with the vrr case correctly
>
>
> Alright, so we avoid changing the vblank_start.
> It means for platforms with always_use_vrr_tg()==true we directly set
> the value for guardband. (Currently I was getting it from vmin_vtotal -
> vblank_start)
> For platforms ADL+ with always always_use_vrr_tg()== false for the fixed
> refresh rate case, guardband is full vblank_length for variable refresh
> rate set the guardband directly.
I think we could just use something like this:
something_something_vblank_len()
{
if (crtc_state->vrr.enable)
return crtc_state->vrr.guardband;
else
return adjuste_mode.crtc_vtotal -
adjusted_mode.crtc_vblank_start;
}
That should work fine for for both values of always_use_vrr_tg().
>
> As you have mentioned need to check which all places we need vblank_start.
>
> For ICL/TGL we do not use optimization for now, right?
Effectively we do, because of intel_vrr_extra_vblank_delay().
The VRR guardband is always one line less than the fixed refresh
rate guardband. And if we run into the max pipeline full limit
then the difference would be even larger.
> The extra_vblank_delay quirk is already handled while filling the
> registers.
>
>
> > 2. enable always_use_vrr_tg() whenever there might be switch
> > between vrr and fixed refresh rate, which I think would mean
> > crtc_state->vrr.in_range==true.
> I think I didnt get this part:
> Do you mean later at some point we move to option 2:
> always_use_vrr_tg()==true for all platforms.(Need to check if we can do
> it for ICL, TGL).
I'm pretty sure I tested always_use_vrr_tg()==true briefly on
TGL and ADL and it seemed to be working fine.
But I'm a bit concerned becase we originally enabled the VRR timing
generator earlier during the modeset (but not from the very start IIRC),
and that wasn't working all that well on some systems. So later I
changed things to keep running with the legacy TG for the modeset and
only switch to the VRR TG at the very end. It might have been some MTL
system where we had these problems actually...
It's of course possible that we've since fixed whatever was the
underlying cause there. Or maybe the problem really was that we
started to use the VRR timings already during the modeset. With the
current always_use_vrr_tg()==true code we will still use the fixed
refresh rate timings for the modeset, and switch to the VRR timings
only at the very end.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start
2025-10-01 10:41 ` Nautiyal, Ankit K
@ 2025-10-01 12:12 ` Ville Syrjälä
2025-10-01 13:17 ` Nautiyal, Ankit K
0 siblings, 1 reply; 30+ messages in thread
From: Ville Syrjälä @ 2025-10-01 12:12 UTC (permalink / raw)
To: Nautiyal, Ankit K; +Cc: intel-gfx, intel-xe
On Wed, Oct 01, 2025 at 04:11:13PM +0530, Nautiyal, Ankit K wrote:
>
> On 9/29/2025 2:30 PM, Ville Syrjälä wrote:
> > On Sun, Sep 28, 2025 at 12:35:40PM +0530, Ankit Nautiyal wrote:
> >> As we move towards using a shorter, optimized guardband, we need to adjust
> >> how the delayed vblank start is computed.
> >>
> >> Use the helper intel_vrr_compute_guardband() to calculate the optimized
> >> guardband. Since this is measured from the vblank end, we shift the
> >> vblank-start accordingly.
> >>
> >> Calculate the minimum delay required based on the guardband and apply it in
> >> intel_crtc_vblank_delay() to update crtc_vblank_start.
> >>
> >> Additionally, introduce a new allow_vblank_delay_fastset() helper that
> >> combines the existing LRR-based logic with an additional check for the
> >> optimized guardband usage.
> >>
> >> v2:
> >> - Check if optimized guardband is more than vblank length and add debug
> >> print.
> >> - Extend vblank delay fastset logic to cover optimized guardband.
> >>
> >> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> >> ---
> >> drivers/gpu/drm/i915/display/intel_display.c | 79 +++++++++++++++++++-
> >> 1 file changed, 76 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> >> index 4135f9be53fd..97a3121a204f 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_display.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> >> @@ -2361,6 +2361,67 @@ static int intel_crtc_compute_pipe_mode(struct intel_crtc_state *crtc_state)
> >> return 0;
> >> }
> >>
> >> +static
> >> +int intel_crtc_min_guardband_delay(struct intel_atomic_state *state,
> >> + struct intel_crtc *crtc)
> >> +{
> >> + struct intel_display *display = to_intel_display(state);
> >> + struct intel_crtc_state *crtc_state =
> >> + intel_atomic_get_new_crtc_state(state, crtc);
> >> + const struct drm_display_mode *adjusted_mode =
> >> + &crtc_state->hw.adjusted_mode;
> >> + struct drm_connector_state *conn_state;
> >> + struct drm_connector *drm_connector;
> >> + int vblank_length;
> >> + int i;
> >> +
> >> + if (!intel_vrr_use_optimized_guardband(crtc_state))
> >> + return 0;
> >> +
> >> + vblank_length = crtc_state->vrr.vmin -
> >> + adjusted_mode->crtc_vdisplay;
> >> +
> >> + for_each_new_connector_in_state(&state->base,
> >> + drm_connector,
> >> + conn_state, i) {
> >> + int guardband;
> >> + struct intel_connector *connector;
> >> +
> >> + if (conn_state->crtc != &crtc->base)
> >> + continue;
> >> +
> >> + connector = to_intel_connector(drm_connector);
> >> + guardband = intel_vrr_compute_guardband(crtc_state,
> >> + connector);
> >> + if (guardband > vblank_length) {
> >> + drm_dbg_kms(display->drm,
> >> + "[CRTC:%d:%s] Cannot optimize guardband (%d) exceeds max (%d)\n",
> >> + crtc->base.base.id, crtc->base.name,
> >> + guardband,
> >> + vblank_length);
> >> + return 0;
> >> + }
> >> +
> >> + return vblank_length - guardband;
> >> + }
> >> +
> >> + return 0;
> >> +}
> >> +
> >> +static void intel_crtc_vblank_delay(struct intel_atomic_state *state,
> >> + struct intel_crtc *crtc)
> >> +{
> >> + struct intel_crtc_state *crtc_state =
> >> + intel_atomic_get_new_crtc_state(state, crtc);
> >> + struct drm_display_mode *adjusted_mode =
> >> + &crtc_state->hw.adjusted_mode;
> >> + int vblank_delay = 0;
> >> +
> >> + vblank_delay = intel_crtc_min_guardband_delay(state, crtc);
> >> +
> >> + adjusted_mode->crtc_vblank_start += vblank_delay;
> >> +}
> >> +
> >> static int intel_crtc_set_context_latency(struct intel_crtc_state *crtc_state)
> >> {
> >> struct intel_display *display = to_intel_display(crtc_state);
> >> @@ -2413,6 +2474,7 @@ static int intel_crtc_compute_config(struct intel_atomic_state *state,
> >> ret = intel_crtc_compute_set_context_latency(state, crtc);
> >> if (ret)
> >> return ret;
> >> + intel_crtc_vblank_delay(state, crtc);
> > IMO we should get rid of all this vblank_delay terminology here.
> > This one I think should just be our current
> > intel_vrr_compute_config_late() (renamed to eg.
> > intel_vrr_compute_guardband()).
>
> Hmm ok so will rename this and call from intel_modeset_pipe_config_late().
I meant you should move the intel_vrr_compute_config_late() call
from intel_modeset_pipe_config_late() to here, and rename it to
eg. intel_vrr_compute_guardband().
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start
2025-10-01 12:10 ` Ville Syrjälä
@ 2025-10-01 13:16 ` Nautiyal, Ankit K
0 siblings, 0 replies; 30+ messages in thread
From: Nautiyal, Ankit K @ 2025-10-01 13:16 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, intel-xe
On 10/1/2025 5:40 PM, Ville Syrjälä wrote:
> On Wed, Oct 01, 2025 at 04:04:37PM +0530, Nautiyal, Ankit K wrote:
>> On 9/29/2025 2:15 PM, Ville Syrjälä wrote:
>>> On Sun, Sep 28, 2025 at 12:35:40PM +0530, Ankit Nautiyal wrote:
>>>> +static void intel_crtc_vblank_delay(struct intel_atomic_state *state,
>>>> + struct intel_crtc *crtc)
>>>> +{
>>>> + struct intel_crtc_state *crtc_state =
>>>> + intel_atomic_get_new_crtc_state(state, crtc);
>>>> + struct drm_display_mode *adjusted_mode =
>>>> + &crtc_state->hw.adjusted_mode;
>>>> + int vblank_delay = 0;
>>>> +
>>>> + vblank_delay = intel_crtc_min_guardband_delay(state, crtc);
>>>> +
>>>> + adjusted_mode->crtc_vblank_start += vblank_delay;
>>> The situation with crtc_vblank_start is already kinda broken,
>>> and I think we need to fix that first somehow.
>>>
>>> Currently crtc_vblank_start is assumed to be the vblank_start
>>> for the fixed refresh rate case. That value can be different
>>> from the variable refresh rate case whenever
>>> always_use_vrr_tg()==false. On icl/tgl it's always different
>>> due to the extra vblank delay, and also on adl+ it could be
>>> different if we were to use an optimized guardband.
>>>
>>> I think there are a few options how we might solve this:
>>> 1. keep crtc_vblank_start as is, and make sure every user of it
>>> gets adjusted to also deal with the vrr case correctly
>>
>> Alright, so we avoid changing the vblank_start.
>> It means for platforms with always_use_vrr_tg()==true we directly set
>> the value for guardband. (Currently I was getting it from vmin_vtotal -
>> vblank_start)
>> For platforms ADL+ with always always_use_vrr_tg()== false for the fixed
>> refresh rate case, guardband is full vblank_length for variable refresh
>> rate set the guardband directly.
> I think we could just use something like this:
>
> something_something_vblank_len()
> {
> if (crtc_state->vrr.enable)
> return crtc_state->vrr.guardband;
> else
> return adjuste_mode.crtc_vtotal -
> adjusted_mode.crtc_vblank_start;
> }
>
> That should work fine for for both values of always_use_vrr_tg().
Yep I had something similar in mind.
>
>> As you have mentioned need to check which all places we need vblank_start.
>>
>> For ICL/TGL we do not use optimization for now, right?
> Effectively we do, because of intel_vrr_extra_vblank_delay().
> The VRR guardband is always one line less than the fixed refresh
> rate guardband. And if we run into the max pipeline full limit
> then the difference would be even larger.
Oh ok, got it.
>
>> The extra_vblank_delay quirk is already handled while filling the
>> registers.
>>
>>
>>> 2. enable always_use_vrr_tg() whenever there might be switch
>>> between vrr and fixed refresh rate, which I think would mean
>>> crtc_state->vrr.in_range==true.
>> I think I didnt get this part:
>> Do you mean later at some point we move to option 2:
>> always_use_vrr_tg()==true for all platforms.(Need to check if we can do
>> it for ICL, TGL).
> I'm pretty sure I tested always_use_vrr_tg()==true briefly on
> TGL and ADL and it seemed to be working fine.
>
> But I'm a bit concerned becase we originally enabled the VRR timing
> generator earlier during the modeset (but not from the very start IIRC),
> and that wasn't working all that well on some systems. So later I
> changed things to keep running with the legacy TG for the modeset and
> only switch to the VRR TG at the very end. It might have been some MTL
> system where we had these problems actually...
>
> It's of course possible that we've since fixed whatever was the
> underlying cause there. Or maybe the problem really was that we
> started to use the VRR timings already during the modeset. With the
> current always_use_vrr_tg()==true code we will still use the fixed
> refresh rate timings for the modeset, and switch to the VRR timings
> only at the very end.
Hmm I think PSR was giving problem with fixed refresh rate mode for TGL
when I had tried that, but it was long back.
Need to recheck that.
Thanks for clearing things up.
Regards,
Ankit
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start
2025-10-01 12:12 ` Ville Syrjälä
@ 2025-10-01 13:17 ` Nautiyal, Ankit K
0 siblings, 0 replies; 30+ messages in thread
From: Nautiyal, Ankit K @ 2025-10-01 13:17 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, intel-xe
On 10/1/2025 5:42 PM, Ville Syrjälä wrote:
> On Wed, Oct 01, 2025 at 04:11:13PM +0530, Nautiyal, Ankit K wrote:
>> On 9/29/2025 2:30 PM, Ville Syrjälä wrote:
>>> On Sun, Sep 28, 2025 at 12:35:40PM +0530, Ankit Nautiyal wrote:
>>>> As we move towards using a shorter, optimized guardband, we need to adjust
>>>> how the delayed vblank start is computed.
>>>>
>>>> Use the helper intel_vrr_compute_guardband() to calculate the optimized
>>>> guardband. Since this is measured from the vblank end, we shift the
>>>> vblank-start accordingly.
>>>>
>>>> Calculate the minimum delay required based on the guardband and apply it in
>>>> intel_crtc_vblank_delay() to update crtc_vblank_start.
>>>>
>>>> Additionally, introduce a new allow_vblank_delay_fastset() helper that
>>>> combines the existing LRR-based logic with an additional check for the
>>>> optimized guardband usage.
>>>>
>>>> v2:
>>>> - Check if optimized guardband is more than vblank length and add debug
>>>> print.
>>>> - Extend vblank delay fastset logic to cover optimized guardband.
>>>>
>>>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>>>> ---
>>>> drivers/gpu/drm/i915/display/intel_display.c | 79 +++++++++++++++++++-
>>>> 1 file changed, 76 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
>>>> index 4135f9be53fd..97a3121a204f 100644
>>>> --- a/drivers/gpu/drm/i915/display/intel_display.c
>>>> +++ b/drivers/gpu/drm/i915/display/intel_display.c
>>>> @@ -2361,6 +2361,67 @@ static int intel_crtc_compute_pipe_mode(struct intel_crtc_state *crtc_state)
>>>> return 0;
>>>> }
>>>>
>>>> +static
>>>> +int intel_crtc_min_guardband_delay(struct intel_atomic_state *state,
>>>> + struct intel_crtc *crtc)
>>>> +{
>>>> + struct intel_display *display = to_intel_display(state);
>>>> + struct intel_crtc_state *crtc_state =
>>>> + intel_atomic_get_new_crtc_state(state, crtc);
>>>> + const struct drm_display_mode *adjusted_mode =
>>>> + &crtc_state->hw.adjusted_mode;
>>>> + struct drm_connector_state *conn_state;
>>>> + struct drm_connector *drm_connector;
>>>> + int vblank_length;
>>>> + int i;
>>>> +
>>>> + if (!intel_vrr_use_optimized_guardband(crtc_state))
>>>> + return 0;
>>>> +
>>>> + vblank_length = crtc_state->vrr.vmin -
>>>> + adjusted_mode->crtc_vdisplay;
>>>> +
>>>> + for_each_new_connector_in_state(&state->base,
>>>> + drm_connector,
>>>> + conn_state, i) {
>>>> + int guardband;
>>>> + struct intel_connector *connector;
>>>> +
>>>> + if (conn_state->crtc != &crtc->base)
>>>> + continue;
>>>> +
>>>> + connector = to_intel_connector(drm_connector);
>>>> + guardband = intel_vrr_compute_guardband(crtc_state,
>>>> + connector);
>>>> + if (guardband > vblank_length) {
>>>> + drm_dbg_kms(display->drm,
>>>> + "[CRTC:%d:%s] Cannot optimize guardband (%d) exceeds max (%d)\n",
>>>> + crtc->base.base.id, crtc->base.name,
>>>> + guardband,
>>>> + vblank_length);
>>>> + return 0;
>>>> + }
>>>> +
>>>> + return vblank_length - guardband;
>>>> + }
>>>> +
>>>> + return 0;
>>>> +}
>>>> +
>>>> +static void intel_crtc_vblank_delay(struct intel_atomic_state *state,
>>>> + struct intel_crtc *crtc)
>>>> +{
>>>> + struct intel_crtc_state *crtc_state =
>>>> + intel_atomic_get_new_crtc_state(state, crtc);
>>>> + struct drm_display_mode *adjusted_mode =
>>>> + &crtc_state->hw.adjusted_mode;
>>>> + int vblank_delay = 0;
>>>> +
>>>> + vblank_delay = intel_crtc_min_guardband_delay(state, crtc);
>>>> +
>>>> + adjusted_mode->crtc_vblank_start += vblank_delay;
>>>> +}
>>>> +
>>>> static int intel_crtc_set_context_latency(struct intel_crtc_state *crtc_state)
>>>> {
>>>> struct intel_display *display = to_intel_display(crtc_state);
>>>> @@ -2413,6 +2474,7 @@ static int intel_crtc_compute_config(struct intel_atomic_state *state,
>>>> ret = intel_crtc_compute_set_context_latency(state, crtc);
>>>> if (ret)
>>>> return ret;
>>>> + intel_crtc_vblank_delay(state, crtc);
>>> IMO we should get rid of all this vblank_delay terminology here.
>>> This one I think should just be our current
>>> intel_vrr_compute_config_late() (renamed to eg.
>>> intel_vrr_compute_guardband()).
>> Hmm ok so will rename this and call from intel_modeset_pipe_config_late().
> I meant you should move the intel_vrr_compute_config_late() call
> from intel_modeset_pipe_config_late() to here, and rename it to
> eg. intel_vrr_compute_guardband().
Oh ok sorry I got it other way round. Will do as suggested.
Regards,
Ankit
>
^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2025-10-01 13:17 UTC | newest]
Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-28 7:05 [PATCH 00/15] Optimize vrr.guardband and fix LRR Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 01/15] drm/i915/vrr: Use crtc_vsync_start/end for computing vrr.vsync_start/end Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 02/15] drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 03/15] drm/i915/skl_watermark: Pass linetime as argument to latency helpers Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 04/15] drm/i915/skl_scaler: Introduce helper for chroma downscale factor Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 05/15] drm/i915/display: Extract helpers to set dsc/scaler prefill latencies Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 06/15] drm/i915/dp: Add SDP latency computation helper Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 07/15] drm/i915/alpm: Add function to compute max link-wake latency Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 08/15] drm/i915/display: Add guardband check for feature latencies Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 09/15] drm/i915/skl_watermark: Remove redundant latency checks from vblank validation Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 10/15] drm/i915/vrr: Introduce helper to compute min static guardband Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 11/15] drm/i915/vrr: Use optimized guardband when VRR TG is active Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 12/15] drm/i915/vrr: Prepare for movement of vblank start for optimized guardband Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 13/15] drm/i915/display: Recompute crtc_vblank_start " Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 14/15] drm/i915/display: s/allow_vblank_delay_fastset/allow_vblank_delay_fastset_lrr Ankit Nautiyal
2025-09-28 7:05 ` [PATCH 15/15] drm/i915/display: Use optimized guardband to set vblank start Ankit Nautiyal
2025-09-29 8:45 ` Ville Syrjälä
2025-09-29 9:09 ` Ville Syrjälä
2025-09-29 9:21 ` Ville Syrjälä
2025-10-01 10:34 ` Nautiyal, Ankit K
2025-10-01 12:10 ` Ville Syrjälä
2025-10-01 13:16 ` Nautiyal, Ankit K
2025-09-29 9:00 ` Ville Syrjälä
2025-10-01 10:41 ` Nautiyal, Ankit K
2025-10-01 12:12 ` Ville Syrjälä
2025-10-01 13:17 ` Nautiyal, Ankit K
2025-09-28 7:31 ` ✓ CI.KUnit: success for Optimize vrr.guardband and fix LRR (rev13) Patchwork
2025-09-28 7:46 ` ✗ CI.checksparse: warning " Patchwork
2025-09-28 8:08 ` ✓ Xe.CI.BAT: success " Patchwork
2025-09-28 9:31 ` ✗ 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