Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Selective Fetch and async flip
@ 2025-11-25  6:32 Jouni Högander
  2025-11-25  6:32 ` [PATCH 1/4] drm/i915/psr: Add helper for checking if vblank evasion is needed by PSR Jouni Högander
                   ` (6 more replies)
  0 siblings, 7 replies; 16+ messages in thread
From: Jouni Högander @ 2025-11-25  6:32 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Jouni Högander

This patch set contains fixes for Selective Fetch async flip sequence:

Perform full frame update on async flip.
Perfrom vblank evasion on async flip when Selective Fetch enabled.
Allow async flip when Selective Fetch is enabled.

Jouni Högander (4):
  drm/i915/psr: Add helper for checking if vblank evasion is needed by
    PSR
  drm/i915/psr: Perform vblank evasion on async flip as well for PSR
  drm/i915/psr: Perform full frame update on async flip
  drm/i915/psr: Allow async flip when Selective Fetch enabled

 drivers/gpu/drm/i915/display/intel_crtc.c    |  6 ++++--
 drivers/gpu/drm/i915/display/intel_display.c |  8 --------
 drivers/gpu/drm/i915/display/intel_psr.c     | 18 +++++++++++++++++-
 drivers/gpu/drm/i915/display/intel_psr.h     |  1 +
 4 files changed, 22 insertions(+), 11 deletions(-)

-- 
2.43.0


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

* [PATCH 1/4] drm/i915/psr: Add helper for checking if vblank evasion is needed by PSR
  2025-11-25  6:32 [PATCH 0/4] Selective Fetch and async flip Jouni Högander
@ 2025-11-25  6:32 ` Jouni Högander
  2025-11-25 10:19   ` Jani Nikula
  2025-11-26 13:32   ` kernel test robot
  2025-11-25  6:32 ` [PATCH 2/4] drm/i915/psr: Perform vblank evasion on async flip as well for PSR Jouni Högander
                   ` (5 subsequent siblings)
  6 siblings, 2 replies; 16+ messages in thread
From: Jouni Högander @ 2025-11-25  6:32 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Jouni Högander

PSR2_MAN_TRK_CTL[SF Continuous full frame] is sampled on the rising edge of
delayed vblank. SW must ensure this bit is not changing around that
bit. Due to this PSR2 Selective Fetch needs vblank evasion.

Due to this add helper for intel_pipe_update_start usage to choose if
vblank evasion is needed by PSR.

Bspec: 50424
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 15 +++++++++++++++
 drivers/gpu/drm/i915/display/intel_psr.h |  1 +
 2 files changed, 16 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 08bca4573974..18d5fe992f58 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -4540,3 +4540,18 @@ int intel_psr_min_guardband(struct intel_crtc_state *crtc_state)
 
 	return psr_min_guardband;
 }
+
+bool intel_psr_needs_evasion(const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	struct intel_encoder *encoder;
+	struct intel_dp *intel_dp;
+
+	for_each_intel_encoder_mask_with_psr(display->drm, encoder,
+					     crtc_state->uapi.encoder_mask) {
+		intel_dp = enc_to_intel_dp(encoder);
+
+		break;
+	}
+	return intel_dp->psr.psr2_sel_fetch_enabled;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_psr.h b/drivers/gpu/drm/i915/display/intel_psr.h
index 620b35928832..8c09a9f8a00e 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.h
+++ b/drivers/gpu/drm/i915/display/intel_psr.h
@@ -86,5 +86,6 @@ bool intel_psr_needs_alpm_aux_less(struct intel_dp *intel_dp,
 void intel_psr_compute_config_late(struct intel_dp *intel_dp,
 				   struct intel_crtc_state *crtc_state);
 int intel_psr_min_guardband(struct intel_crtc_state *crtc_state);
+bool intel_psr_needs_evasion(const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_PSR_H__ */
-- 
2.43.0


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

* [PATCH 2/4] drm/i915/psr: Perform vblank evasion on async flip as well for PSR
  2025-11-25  6:32 [PATCH 0/4] Selective Fetch and async flip Jouni Högander
  2025-11-25  6:32 ` [PATCH 1/4] drm/i915/psr: Add helper for checking if vblank evasion is needed by PSR Jouni Högander
@ 2025-11-25  6:32 ` Jouni Högander
  2025-11-25 21:19   ` Ville Syrjälä
  2025-11-25  6:32 ` [PATCH 3/4] drm/i915/psr: Perform full frame update on async flip Jouni Högander
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Jouni Högander @ 2025-11-25  6:32 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Jouni Högander

PSR2_MAN_TRK_CTL[SF Continuous full frame] is sampled on the rising edge of
delayed vblank. SW must ensure this bit is not changing around that. Due to
this PSR2 Selective Fetch needs vblank evasion.

Currently vblank evasion is not done on async flip. Perform it in case
required by PSR.

Bspec: 50424
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_crtc.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
index 153ff4b4b52c..42c4ce07f8c0 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc.c
@@ -433,7 +433,8 @@ static bool intel_crtc_needs_vblank_work(const struct intel_crtc_state *crtc_sta
 		(intel_crtc_needs_color_update(crtc_state) &&
 		 !HAS_DOUBLE_BUFFERED_LUT(display)) &&
 		!intel_color_uses_dsb(crtc_state) &&
-		!crtc_state->use_dsb;
+		!crtc_state->use_dsb &&
+		!crtc_state->do_async_flip;
 }
 
 static void intel_crtc_vblank_work(struct kthread_work *base)
@@ -539,7 +540,8 @@ void intel_pipe_update_start(struct intel_atomic_state *state,
 	if (new_crtc_state->do_async_flip) {
 		intel_crtc_prepare_vblank_event(new_crtc_state,
 						&crtc->flip_done_event);
-		return;
+		if (!intel_psr_needs_evasion(new_crtc_state))
+			return;
 	}
 
 	if (intel_crtc_needs_vblank_work(new_crtc_state))
-- 
2.43.0


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

* [PATCH 3/4] drm/i915/psr: Perform full frame update on async flip
  2025-11-25  6:32 [PATCH 0/4] Selective Fetch and async flip Jouni Högander
  2025-11-25  6:32 ` [PATCH 1/4] drm/i915/psr: Add helper for checking if vblank evasion is needed by PSR Jouni Högander
  2025-11-25  6:32 ` [PATCH 2/4] drm/i915/psr: Perform vblank evasion on async flip as well for PSR Jouni Högander
@ 2025-11-25  6:32 ` Jouni Högander
  2025-11-25  6:32 ` [PATCH 4/4] drm/i915/psr: Allow async flip when Selective Fetch enabled Jouni Högander
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 16+ messages in thread
From: Jouni Högander @ 2025-11-25  6:32 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Jouni Högander

According to bspec selective fetch is not supported with async flips and
instructing full frame update on async flip.

Bspec: 55229
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 18d5fe992f58..e7781a816823 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -2749,7 +2749,8 @@ static bool psr2_sel_fetch_plane_state_supported(const struct intel_plane_state
  */
 static bool psr2_sel_fetch_pipe_state_supported(const struct intel_crtc_state *crtc_state)
 {
-	if (crtc_state->scaler_state.scaler_id >= 0)
+	if (crtc_state->scaler_state.scaler_id >= 0 ||
+	    crtc_state->uapi.async_flip)
 		return false;
 
 	return true;
-- 
2.43.0


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

* [PATCH 4/4] drm/i915/psr: Allow async flip when Selective Fetch enabled
  2025-11-25  6:32 [PATCH 0/4] Selective Fetch and async flip Jouni Högander
                   ` (2 preceding siblings ...)
  2025-11-25  6:32 ` [PATCH 3/4] drm/i915/psr: Perform full frame update on async flip Jouni Högander
@ 2025-11-25  6:32 ` Jouni Högander
  2025-11-25 10:39 ` ✓ CI.KUnit: success for Selective Fetch and async flip Patchwork
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 16+ messages in thread
From: Jouni Högander @ 2025-11-25  6:32 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Jouni Högander

Now as Selective Fetch is performing full frame update on async flip and
vblank evasion is done as needed we can allow async flip even when
Selective Fetch is enabled.

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 04f5c488f399..a8a3e8000187 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -6017,14 +6017,6 @@ static int intel_async_flip_check_uapi(struct intel_atomic_state *state,
 		return -EINVAL;
 	}
 
-	/* FIXME: selective fetch should be disabled for async flips */
-	if (new_crtc_state->enable_psr2_sel_fetch) {
-		drm_dbg_kms(display->drm,
-			    "[CRTC:%d:%s] async flip disallowed with PSR2 selective fetch\n",
-			    crtc->base.base.id, crtc->base.name);
-		return -EINVAL;
-	}
-
 	for_each_oldnew_intel_plane_in_state(state, plane, old_plane_state,
 					     new_plane_state, i) {
 		if (plane->pipe != crtc->pipe)
-- 
2.43.0


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

* Re: [PATCH 1/4] drm/i915/psr: Add helper for checking if vblank evasion is needed by PSR
  2025-11-25  6:32 ` [PATCH 1/4] drm/i915/psr: Add helper for checking if vblank evasion is needed by PSR Jouni Högander
@ 2025-11-25 10:19   ` Jani Nikula
  2025-11-26 13:32   ` kernel test robot
  1 sibling, 0 replies; 16+ messages in thread
From: Jani Nikula @ 2025-11-25 10:19 UTC (permalink / raw)
  To: Jouni Högander, intel-gfx, intel-xe; +Cc: Jouni Högander

On Tue, 25 Nov 2025, Jouni Högander <jouni.hogander@intel.com> wrote:
> PSR2_MAN_TRK_CTL[SF Continuous full frame] is sampled on the rising edge of
> delayed vblank. SW must ensure this bit is not changing around that
> bit. Due to this PSR2 Selective Fetch needs vblank evasion.
>
> Due to this add helper for intel_pipe_update_start usage to choose if
> vblank evasion is needed by PSR.
>
> Bspec: 50424
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_psr.c | 15 +++++++++++++++
>  drivers/gpu/drm/i915/display/intel_psr.h |  1 +
>  2 files changed, 16 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
> index 08bca4573974..18d5fe992f58 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -4540,3 +4540,18 @@ int intel_psr_min_guardband(struct intel_crtc_state *crtc_state)
>  
>  	return psr_min_guardband;
>  }
> +
> +bool intel_psr_needs_evasion(const struct intel_crtc_state *crtc_state)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +	struct intel_encoder *encoder;
> +	struct intel_dp *intel_dp;
> +
> +	for_each_intel_encoder_mask_with_psr(display->drm, encoder,
> +					     crtc_state->uapi.encoder_mask) {
> +		intel_dp = enc_to_intel_dp(encoder);
> +
> +		break;
> +	}
> +	return intel_dp->psr.psr2_sel_fetch_enabled;

This is going to trigger a static analyzer error on unused variable
intel_dp.

Better to have the return inside the loop, and return false at the end,
I think.

BR,
Jani.

> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.h b/drivers/gpu/drm/i915/display/intel_psr.h
> index 620b35928832..8c09a9f8a00e 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.h
> +++ b/drivers/gpu/drm/i915/display/intel_psr.h
> @@ -86,5 +86,6 @@ bool intel_psr_needs_alpm_aux_less(struct intel_dp *intel_dp,
>  void intel_psr_compute_config_late(struct intel_dp *intel_dp,
>  				   struct intel_crtc_state *crtc_state);
>  int intel_psr_min_guardband(struct intel_crtc_state *crtc_state);
> +bool intel_psr_needs_evasion(const struct intel_crtc_state *crtc_state);
>  
>  #endif /* __INTEL_PSR_H__ */

-- 
Jani Nikula, Intel

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

* ✓ CI.KUnit: success for Selective Fetch and async flip
  2025-11-25  6:32 [PATCH 0/4] Selective Fetch and async flip Jouni Högander
                   ` (3 preceding siblings ...)
  2025-11-25  6:32 ` [PATCH 4/4] drm/i915/psr: Allow async flip when Selective Fetch enabled Jouni Högander
@ 2025-11-25 10:39 ` Patchwork
  2025-11-25 10:55 ` ✗ CI.checksparse: warning " Patchwork
  2025-11-25 14:23 ` ✗ Xe.CI.Full: failure " Patchwork
  6 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-11-25 10:39 UTC (permalink / raw)
  To: Jouni Högander; +Cc: intel-xe

== Series Details ==

Series: Selective Fetch and async flip
URL   : https://patchwork.freedesktop.org/series/158002/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[10:38:38] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:38:42] 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
[10:39:13] Starting KUnit Kernel (1/1)...
[10:39:13] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:39:13] ================== guc_buf (11 subtests) ===================
[10:39:13] [PASSED] test_smallest
[10:39:13] [PASSED] test_largest
[10:39:13] [PASSED] test_granular
[10:39:13] [PASSED] test_unique
[10:39:13] [PASSED] test_overlap
[10:39:13] [PASSED] test_reusable
[10:39:13] [PASSED] test_too_big
[10:39:13] [PASSED] test_flush
[10:39:13] [PASSED] test_lookup
[10:39:13] [PASSED] test_data
[10:39:13] [PASSED] test_class
[10:39:13] ===================== [PASSED] guc_buf =====================
[10:39:13] =================== guc_dbm (7 subtests) ===================
[10:39:13] [PASSED] test_empty
[10:39:13] [PASSED] test_default
[10:39:13] ======================== test_size  ========================
[10:39:13] [PASSED] 4
[10:39:13] [PASSED] 8
[10:39:13] [PASSED] 32
[10:39:13] [PASSED] 256
[10:39:13] ==================== [PASSED] test_size ====================
[10:39:13] ======================= test_reuse  ========================
[10:39:13] [PASSED] 4
[10:39:13] [PASSED] 8
[10:39:13] [PASSED] 32
[10:39:13] [PASSED] 256
[10:39:13] =================== [PASSED] test_reuse ====================
[10:39:13] =================== test_range_overlap  ====================
[10:39:13] [PASSED] 4
[10:39:13] [PASSED] 8
[10:39:13] [PASSED] 32
[10:39:13] [PASSED] 256
[10:39:13] =============== [PASSED] test_range_overlap ================
[10:39:13] =================== test_range_compact  ====================
[10:39:13] [PASSED] 4
[10:39:13] [PASSED] 8
[10:39:13] [PASSED] 32
[10:39:13] [PASSED] 256
[10:39:13] =============== [PASSED] test_range_compact ================
[10:39:13] ==================== test_range_spare  =====================
[10:39:13] [PASSED] 4
[10:39:13] [PASSED] 8
[10:39:13] [PASSED] 32
[10:39:13] [PASSED] 256
[10:39:13] ================ [PASSED] test_range_spare =================
[10:39:13] ===================== [PASSED] guc_dbm =====================
[10:39:13] =================== guc_idm (6 subtests) ===================
[10:39:13] [PASSED] bad_init
[10:39:13] [PASSED] no_init
[10:39:13] [PASSED] init_fini
[10:39:13] [PASSED] check_used
[10:39:13] [PASSED] check_quota
[10:39:13] [PASSED] check_all
[10:39:13] ===================== [PASSED] guc_idm =====================
[10:39:13] ================== no_relay (3 subtests) ===================
[10:39:13] [PASSED] xe_drops_guc2pf_if_not_ready
[10:39:13] [PASSED] xe_drops_guc2vf_if_not_ready
[10:39:13] [PASSED] xe_rejects_send_if_not_ready
[10:39:13] ==================== [PASSED] no_relay =====================
[10:39:13] ================== pf_relay (14 subtests) ==================
[10:39:13] [PASSED] pf_rejects_guc2pf_too_short
[10:39:13] [PASSED] pf_rejects_guc2pf_too_long
[10:39:13] [PASSED] pf_rejects_guc2pf_no_payload
[10:39:13] [PASSED] pf_fails_no_payload
[10:39:13] [PASSED] pf_fails_bad_origin
[10:39:13] [PASSED] pf_fails_bad_type
[10:39:13] [PASSED] pf_txn_reports_error
[10:39:13] [PASSED] pf_txn_sends_pf2guc
[10:39:13] [PASSED] pf_sends_pf2guc
[10:39:13] [SKIPPED] pf_loopback_nop
[10:39:13] [SKIPPED] pf_loopback_echo
[10:39:13] [SKIPPED] pf_loopback_fail
[10:39:13] [SKIPPED] pf_loopback_busy
[10:39:13] [SKIPPED] pf_loopback_retry
[10:39:13] ==================== [PASSED] pf_relay =====================
[10:39:13] ================== vf_relay (3 subtests) ===================
[10:39:13] [PASSED] vf_rejects_guc2vf_too_short
[10:39:13] [PASSED] vf_rejects_guc2vf_too_long
[10:39:13] [PASSED] vf_rejects_guc2vf_no_payload
[10:39:13] ==================== [PASSED] vf_relay =====================
[10:39:13] ================ pf_gt_config (6 subtests) =================
[10:39:13] [PASSED] fair_contexts_1vf
[10:39:13] [PASSED] fair_doorbells_1vf
[10:39:13] [PASSED] fair_ggtt_1vf
[10:39:13] ====================== fair_contexts  ======================
[10:39:13] [PASSED] 1 VF
[10:39:13] [PASSED] 2 VFs
[10:39:13] [PASSED] 3 VFs
[10:39:13] [PASSED] 4 VFs
[10:39:13] [PASSED] 5 VFs
[10:39:13] [PASSED] 6 VFs
[10:39:13] [PASSED] 7 VFs
[10:39:13] [PASSED] 8 VFs
[10:39:13] [PASSED] 9 VFs
[10:39:13] [PASSED] 10 VFs
[10:39:13] [PASSED] 11 VFs
[10:39:13] [PASSED] 12 VFs
[10:39:13] [PASSED] 13 VFs
[10:39:13] [PASSED] 14 VFs
[10:39:13] [PASSED] 15 VFs
[10:39:13] [PASSED] 16 VFs
[10:39:13] [PASSED] 17 VFs
[10:39:13] [PASSED] 18 VFs
[10:39:13] [PASSED] 19 VFs
[10:39:13] [PASSED] 20 VFs
[10:39:13] [PASSED] 21 VFs
[10:39:13] [PASSED] 22 VFs
[10:39:13] [PASSED] 23 VFs
[10:39:13] [PASSED] 24 VFs
[10:39:13] [PASSED] 25 VFs
[10:39:13] [PASSED] 26 VFs
[10:39:13] [PASSED] 27 VFs
[10:39:13] [PASSED] 28 VFs
[10:39:13] [PASSED] 29 VFs
[10:39:13] [PASSED] 30 VFs
[10:39:13] [PASSED] 31 VFs
[10:39:13] [PASSED] 32 VFs
[10:39:13] [PASSED] 33 VFs
[10:39:13] [PASSED] 34 VFs
[10:39:13] [PASSED] 35 VFs
[10:39:13] [PASSED] 36 VFs
[10:39:13] [PASSED] 37 VFs
[10:39:13] [PASSED] 38 VFs
[10:39:13] [PASSED] 39 VFs
[10:39:13] [PASSED] 40 VFs
[10:39:13] [PASSED] 41 VFs
[10:39:13] [PASSED] 42 VFs
[10:39:13] [PASSED] 43 VFs
[10:39:13] [PASSED] 44 VFs
[10:39:13] [PASSED] 45 VFs
[10:39:13] [PASSED] 46 VFs
[10:39:13] [PASSED] 47 VFs
[10:39:13] [PASSED] 48 VFs
[10:39:13] [PASSED] 49 VFs
[10:39:13] [PASSED] 50 VFs
[10:39:13] [PASSED] 51 VFs
[10:39:13] [PASSED] 52 VFs
[10:39:13] [PASSED] 53 VFs
[10:39:13] [PASSED] 54 VFs
[10:39:13] [PASSED] 55 VFs
[10:39:13] [PASSED] 56 VFs
[10:39:13] [PASSED] 57 VFs
[10:39:13] [PASSED] 58 VFs
[10:39:13] [PASSED] 59 VFs
[10:39:13] [PASSED] 60 VFs
[10:39:13] [PASSED] 61 VFs
[10:39:13] [PASSED] 62 VFs
[10:39:13] [PASSED] 63 VFs
[10:39:13] ================== [PASSED] fair_contexts ==================
[10:39:13] ===================== fair_doorbells  ======================
[10:39:13] [PASSED] 1 VF
[10:39:13] [PASSED] 2 VFs
[10:39:13] [PASSED] 3 VFs
[10:39:13] [PASSED] 4 VFs
[10:39:13] [PASSED] 5 VFs
[10:39:13] [PASSED] 6 VFs
[10:39:13] [PASSED] 7 VFs
[10:39:13] [PASSED] 8 VFs
[10:39:13] [PASSED] 9 VFs
[10:39:13] [PASSED] 10 VFs
[10:39:13] [PASSED] 11 VFs
[10:39:13] [PASSED] 12 VFs
[10:39:13] [PASSED] 13 VFs
[10:39:13] [PASSED] 14 VFs
[10:39:13] [PASSED] 15 VFs
[10:39:13] [PASSED] 16 VFs
[10:39:13] [PASSED] 17 VFs
[10:39:13] [PASSED] 18 VFs
[10:39:13] [PASSED] 19 VFs
[10:39:13] [PASSED] 20 VFs
[10:39:13] [PASSED] 21 VFs
[10:39:13] [PASSED] 22 VFs
[10:39:13] [PASSED] 23 VFs
[10:39:13] [PASSED] 24 VFs
[10:39:13] [PASSED] 25 VFs
[10:39:13] [PASSED] 26 VFs
[10:39:13] [PASSED] 27 VFs
[10:39:13] [PASSED] 28 VFs
[10:39:13] [PASSED] 29 VFs
[10:39:13] [PASSED] 30 VFs
[10:39:13] [PASSED] 31 VFs
[10:39:13] [PASSED] 32 VFs
[10:39:13] [PASSED] 33 VFs
[10:39:13] [PASSED] 34 VFs
[10:39:13] [PASSED] 35 VFs
[10:39:13] [PASSED] 36 VFs
[10:39:13] [PASSED] 37 VFs
[10:39:13] [PASSED] 38 VFs
[10:39:13] [PASSED] 39 VFs
[10:39:13] [PASSED] 40 VFs
[10:39:13] [PASSED] 41 VFs
[10:39:13] [PASSED] 42 VFs
[10:39:13] [PASSED] 43 VFs
[10:39:13] [PASSED] 44 VFs
[10:39:13] [PASSED] 45 VFs
[10:39:13] [PASSED] 46 VFs
[10:39:13] [PASSED] 47 VFs
[10:39:13] [PASSED] 48 VFs
[10:39:13] [PASSED] 49 VFs
[10:39:13] [PASSED] 50 VFs
[10:39:13] [PASSED] 51 VFs
[10:39:13] [PASSED] 52 VFs
[10:39:13] [PASSED] 53 VFs
[10:39:13] [PASSED] 54 VFs
[10:39:13] [PASSED] 55 VFs
[10:39:13] [PASSED] 56 VFs
[10:39:13] [PASSED] 57 VFs
[10:39:13] [PASSED] 58 VFs
[10:39:13] [PASSED] 59 VFs
[10:39:13] [PASSED] 60 VFs
[10:39:13] [PASSED] 61 VFs
[10:39:13] [PASSED] 62 VFs
[10:39:13] [PASSED] 63 VFs
[10:39:13] ================= [PASSED] fair_doorbells ==================
[10:39:13] ======================== fair_ggtt  ========================
[10:39:13] [PASSED] 1 VF
[10:39:13] [PASSED] 2 VFs
[10:39:13] [PASSED] 3 VFs
[10:39:13] [PASSED] 4 VFs
[10:39:13] [PASSED] 5 VFs
[10:39:13] [PASSED] 6 VFs
[10:39:13] [PASSED] 7 VFs
[10:39:13] [PASSED] 8 VFs
[10:39:13] [PASSED] 9 VFs
[10:39:13] [PASSED] 10 VFs
[10:39:13] [PASSED] 11 VFs
[10:39:13] [PASSED] 12 VFs
[10:39:13] [PASSED] 13 VFs
[10:39:13] [PASSED] 14 VFs
[10:39:13] [PASSED] 15 VFs
[10:39:13] [PASSED] 16 VFs
[10:39:13] [PASSED] 17 VFs
[10:39:13] [PASSED] 18 VFs
[10:39:13] [PASSED] 19 VFs
[10:39:13] [PASSED] 20 VFs
[10:39:13] [PASSED] 21 VFs
[10:39:13] [PASSED] 22 VFs
[10:39:13] [PASSED] 23 VFs
[10:39:13] [PASSED] 24 VFs
[10:39:13] [PASSED] 25 VFs
[10:39:13] [PASSED] 26 VFs
[10:39:13] [PASSED] 27 VFs
[10:39:13] [PASSED] 28 VFs
[10:39:13] [PASSED] 29 VFs
[10:39:13] [PASSED] 30 VFs
[10:39:13] [PASSED] 31 VFs
[10:39:13] [PASSED] 32 VFs
[10:39:13] [PASSED] 33 VFs
[10:39:13] [PASSED] 34 VFs
[10:39:13] [PASSED] 35 VFs
[10:39:13] [PASSED] 36 VFs
[10:39:13] [PASSED] 37 VFs
[10:39:13] [PASSED] 38 VFs
[10:39:13] [PASSED] 39 VFs
[10:39:13] [PASSED] 40 VFs
[10:39:13] [PASSED] 41 VFs
[10:39:13] [PASSED] 42 VFs
[10:39:13] [PASSED] 43 VFs
[10:39:13] [PASSED] 44 VFs
[10:39:13] [PASSED] 45 VFs
[10:39:13] [PASSED] 46 VFs
[10:39:13] [PASSED] 47 VFs
[10:39:13] [PASSED] 48 VFs
[10:39:13] [PASSED] 49 VFs
[10:39:13] [PASSED] 50 VFs
[10:39:13] [PASSED] 51 VFs
[10:39:13] [PASSED] 52 VFs
[10:39:13] [PASSED] 53 VFs
[10:39:13] [PASSED] 54 VFs
[10:39:13] [PASSED] 55 VFs
[10:39:13] [PASSED] 56 VFs
[10:39:13] [PASSED] 57 VFs
[10:39:13] [PASSED] 58 VFs
[10:39:13] [PASSED] 59 VFs
[10:39:13] [PASSED] 60 VFs
[10:39:13] [PASSED] 61 VFs
[10:39:13] [PASSED] 62 VFs
[10:39:13] [PASSED] 63 VFs
[10:39:13] ==================== [PASSED] fair_ggtt ====================
[10:39:13] ================== [PASSED] pf_gt_config ===================
[10:39:13] ===================== lmtt (1 subtest) =====================
[10:39:13] ======================== test_ops  =========================
[10:39:13] [PASSED] 2-level
[10:39:13] [PASSED] multi-level
[10:39:13] ==================== [PASSED] test_ops =====================
[10:39:13] ====================== [PASSED] lmtt =======================
[10:39:13] ================= pf_service (11 subtests) =================
[10:39:13] [PASSED] pf_negotiate_any
[10:39:13] [PASSED] pf_negotiate_base_match
[10:39:13] [PASSED] pf_negotiate_base_newer
[10:39:13] [PASSED] pf_negotiate_base_next
[10:39:13] [SKIPPED] pf_negotiate_base_older
[10:39:13] [PASSED] pf_negotiate_base_prev
[10:39:13] [PASSED] pf_negotiate_latest_match
[10:39:13] [PASSED] pf_negotiate_latest_newer
[10:39:13] [PASSED] pf_negotiate_latest_next
[10:39:13] [SKIPPED] pf_negotiate_latest_older
[10:39:13] [SKIPPED] pf_negotiate_latest_prev
[10:39:13] =================== [PASSED] pf_service ====================
[10:39:13] ================= xe_guc_g2g (2 subtests) ==================
[10:39:13] ============== xe_live_guc_g2g_kunit_default  ==============
[10:39:13] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[10:39:13] ============== xe_live_guc_g2g_kunit_allmem  ===============
[10:39:13] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[10:39:13] =================== [SKIPPED] xe_guc_g2g ===================
[10:39:13] =================== xe_mocs (2 subtests) ===================
[10:39:13] ================ xe_live_mocs_kernel_kunit  ================
[10:39:13] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[10:39:13] ================ xe_live_mocs_reset_kunit  =================
[10:39:13] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[10:39:13] ==================== [SKIPPED] xe_mocs =====================
[10:39:13] ================= xe_migrate (2 subtests) ==================
[10:39:13] ================= xe_migrate_sanity_kunit  =================
[10:39:13] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[10:39:13] ================== xe_validate_ccs_kunit  ==================
[10:39:13] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[10:39:13] =================== [SKIPPED] xe_migrate ===================
[10:39:13] ================== xe_dma_buf (1 subtest) ==================
[10:39:13] ==================== xe_dma_buf_kunit  =====================
[10:39:13] ================ [SKIPPED] xe_dma_buf_kunit ================
[10:39:13] =================== [SKIPPED] xe_dma_buf ===================
[10:39:13] ================= xe_bo_shrink (1 subtest) =================
[10:39:13] =================== xe_bo_shrink_kunit  ====================
[10:39:13] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[10:39:13] ================== [SKIPPED] xe_bo_shrink ==================
[10:39:13] ==================== xe_bo (2 subtests) ====================
[10:39:13] ================== xe_ccs_migrate_kunit  ===================
[10:39:13] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[10:39:13] ==================== xe_bo_evict_kunit  ====================
[10:39:13] =============== [SKIPPED] xe_bo_evict_kunit ================
[10:39:13] ===================== [SKIPPED] xe_bo ======================
[10:39:13] ==================== args (11 subtests) ====================
[10:39:13] [PASSED] count_args_test
[10:39:13] [PASSED] call_args_example
[10:39:13] [PASSED] call_args_test
[10:39:13] [PASSED] drop_first_arg_example
[10:39:13] [PASSED] drop_first_arg_test
[10:39:13] [PASSED] first_arg_example
[10:39:13] [PASSED] first_arg_test
[10:39:13] [PASSED] last_arg_example
[10:39:13] [PASSED] last_arg_test
[10:39:13] [PASSED] pick_arg_example
[10:39:13] [PASSED] sep_comma_example
[10:39:13] ====================== [PASSED] args =======================
[10:39:13] =================== xe_pci (3 subtests) ====================
[10:39:13] ==================== check_graphics_ip  ====================
[10:39:13] [PASSED] 12.00 Xe_LP
[10:39:13] [PASSED] 12.10 Xe_LP+
[10:39:13] [PASSED] 12.55 Xe_HPG
[10:39:13] [PASSED] 12.60 Xe_HPC
[10:39:13] [PASSED] 12.70 Xe_LPG
[10:39:13] [PASSED] 12.71 Xe_LPG
[10:39:13] [PASSED] 12.74 Xe_LPG+
[10:39:13] [PASSED] 20.01 Xe2_HPG
[10:39:13] [PASSED] 20.02 Xe2_HPG
[10:39:13] [PASSED] 20.04 Xe2_LPG
[10:39:13] [PASSED] 30.00 Xe3_LPG
[10:39:13] [PASSED] 30.01 Xe3_LPG
[10:39:13] [PASSED] 30.03 Xe3_LPG
[10:39:13] [PASSED] 30.04 Xe3_LPG
[10:39:13] [PASSED] 30.05 Xe3_LPG
[10:39:13] [PASSED] 35.11 Xe3p_XPC
[10:39:13] ================ [PASSED] check_graphics_ip ================
[10:39:13] ===================== check_media_ip  ======================
[10:39:13] [PASSED] 12.00 Xe_M
[10:39:13] [PASSED] 12.55 Xe_HPM
[10:39:13] [PASSED] 13.00 Xe_LPM+
[10:39:13] [PASSED] 13.01 Xe2_HPM
[10:39:13] [PASSED] 20.00 Xe2_LPM
[10:39:13] [PASSED] 30.00 Xe3_LPM
[10:39:13] [PASSED] 30.02 Xe3_LPM
[10:39:13] [PASSED] 35.00 Xe3p_LPM
[10:39:13] [PASSED] 35.03 Xe3p_HPM
[10:39:13] ================= [PASSED] check_media_ip ==================
[10:39:13] =================== check_platform_desc  ===================
[10:39:13] [PASSED] 0x9A60 (TIGERLAKE)
[10:39:13] [PASSED] 0x9A68 (TIGERLAKE)
[10:39:13] [PASSED] 0x9A70 (TIGERLAKE)
[10:39:13] [PASSED] 0x9A40 (TIGERLAKE)
[10:39:13] [PASSED] 0x9A49 (TIGERLAKE)
[10:39:13] [PASSED] 0x9A59 (TIGERLAKE)
[10:39:13] [PASSED] 0x9A78 (TIGERLAKE)
[10:39:13] [PASSED] 0x9AC0 (TIGERLAKE)
[10:39:13] [PASSED] 0x9AC9 (TIGERLAKE)
[10:39:13] [PASSED] 0x9AD9 (TIGERLAKE)
[10:39:13] [PASSED] 0x9AF8 (TIGERLAKE)
[10:39:13] [PASSED] 0x4C80 (ROCKETLAKE)
[10:39:13] [PASSED] 0x4C8A (ROCKETLAKE)
[10:39:13] [PASSED] 0x4C8B (ROCKETLAKE)
[10:39:13] [PASSED] 0x4C8C (ROCKETLAKE)
[10:39:13] [PASSED] 0x4C90 (ROCKETLAKE)
[10:39:13] [PASSED] 0x4C9A (ROCKETLAKE)
[10:39:13] [PASSED] 0x4680 (ALDERLAKE_S)
[10:39:13] [PASSED] 0x4682 (ALDERLAKE_S)
[10:39:13] [PASSED] 0x4688 (ALDERLAKE_S)
[10:39:13] [PASSED] 0x468A (ALDERLAKE_S)
[10:39:13] [PASSED] 0x468B (ALDERLAKE_S)
[10:39:13] [PASSED] 0x4690 (ALDERLAKE_S)
[10:39:13] [PASSED] 0x4692 (ALDERLAKE_S)
[10:39:13] [PASSED] 0x4693 (ALDERLAKE_S)
[10:39:13] [PASSED] 0x46A0 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46A1 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46A2 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46A3 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46A6 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46A8 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46AA (ALDERLAKE_P)
[10:39:13] [PASSED] 0x462A (ALDERLAKE_P)
[10:39:13] [PASSED] 0x4626 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x4628 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46B0 (ALDERLAKE_P)
stty: 'standard input': Inappropriate ioctl for device
[10:39:13] [PASSED] 0x46B1 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46B2 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46B3 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46C0 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46C1 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46C2 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46C3 (ALDERLAKE_P)
[10:39:13] [PASSED] 0x46D0 (ALDERLAKE_N)
[10:39:13] [PASSED] 0x46D1 (ALDERLAKE_N)
[10:39:13] [PASSED] 0x46D2 (ALDERLAKE_N)
[10:39:13] [PASSED] 0x46D3 (ALDERLAKE_N)
[10:39:13] [PASSED] 0x46D4 (ALDERLAKE_N)
[10:39:13] [PASSED] 0xA721 (ALDERLAKE_P)
[10:39:13] [PASSED] 0xA7A1 (ALDERLAKE_P)
[10:39:13] [PASSED] 0xA7A9 (ALDERLAKE_P)
[10:39:13] [PASSED] 0xA7AC (ALDERLAKE_P)
[10:39:13] [PASSED] 0xA7AD (ALDERLAKE_P)
[10:39:13] [PASSED] 0xA720 (ALDERLAKE_P)
[10:39:13] [PASSED] 0xA7A0 (ALDERLAKE_P)
[10:39:13] [PASSED] 0xA7A8 (ALDERLAKE_P)
[10:39:13] [PASSED] 0xA7AA (ALDERLAKE_P)
[10:39:13] [PASSED] 0xA7AB (ALDERLAKE_P)
[10:39:13] [PASSED] 0xA780 (ALDERLAKE_S)
[10:39:13] [PASSED] 0xA781 (ALDERLAKE_S)
[10:39:13] [PASSED] 0xA782 (ALDERLAKE_S)
[10:39:13] [PASSED] 0xA783 (ALDERLAKE_S)
[10:39:13] [PASSED] 0xA788 (ALDERLAKE_S)
[10:39:13] [PASSED] 0xA789 (ALDERLAKE_S)
[10:39:13] [PASSED] 0xA78A (ALDERLAKE_S)
[10:39:13] [PASSED] 0xA78B (ALDERLAKE_S)
[10:39:13] [PASSED] 0x4905 (DG1)
[10:39:13] [PASSED] 0x4906 (DG1)
[10:39:13] [PASSED] 0x4907 (DG1)
[10:39:13] [PASSED] 0x4908 (DG1)
[10:39:13] [PASSED] 0x4909 (DG1)
[10:39:13] [PASSED] 0x56C0 (DG2)
[10:39:13] [PASSED] 0x56C2 (DG2)
[10:39:13] [PASSED] 0x56C1 (DG2)
[10:39:13] [PASSED] 0x7D51 (METEORLAKE)
[10:39:13] [PASSED] 0x7DD1 (METEORLAKE)
[10:39:13] [PASSED] 0x7D41 (METEORLAKE)
[10:39:13] [PASSED] 0x7D67 (METEORLAKE)
[10:39:13] [PASSED] 0xB640 (METEORLAKE)
[10:39:13] [PASSED] 0x56A0 (DG2)
[10:39:13] [PASSED] 0x56A1 (DG2)
[10:39:13] [PASSED] 0x56A2 (DG2)
[10:39:13] [PASSED] 0x56BE (DG2)
[10:39:13] [PASSED] 0x56BF (DG2)
[10:39:13] [PASSED] 0x5690 (DG2)
[10:39:13] [PASSED] 0x5691 (DG2)
[10:39:13] [PASSED] 0x5692 (DG2)
[10:39:13] [PASSED] 0x56A5 (DG2)
[10:39:13] [PASSED] 0x56A6 (DG2)
[10:39:13] [PASSED] 0x56B0 (DG2)
[10:39:13] [PASSED] 0x56B1 (DG2)
[10:39:13] [PASSED] 0x56BA (DG2)
[10:39:13] [PASSED] 0x56BB (DG2)
[10:39:13] [PASSED] 0x56BC (DG2)
[10:39:13] [PASSED] 0x56BD (DG2)
[10:39:13] [PASSED] 0x5693 (DG2)
[10:39:13] [PASSED] 0x5694 (DG2)
[10:39:13] [PASSED] 0x5695 (DG2)
[10:39:13] [PASSED] 0x56A3 (DG2)
[10:39:13] [PASSED] 0x56A4 (DG2)
[10:39:13] [PASSED] 0x56B2 (DG2)
[10:39:13] [PASSED] 0x56B3 (DG2)
[10:39:13] [PASSED] 0x5696 (DG2)
[10:39:13] [PASSED] 0x5697 (DG2)
[10:39:13] [PASSED] 0xB69 (PVC)
[10:39:13] [PASSED] 0xB6E (PVC)
[10:39:13] [PASSED] 0xBD4 (PVC)
[10:39:13] [PASSED] 0xBD5 (PVC)
[10:39:13] [PASSED] 0xBD6 (PVC)
[10:39:13] [PASSED] 0xBD7 (PVC)
[10:39:13] [PASSED] 0xBD8 (PVC)
[10:39:13] [PASSED] 0xBD9 (PVC)
[10:39:13] [PASSED] 0xBDA (PVC)
[10:39:13] [PASSED] 0xBDB (PVC)
[10:39:13] [PASSED] 0xBE0 (PVC)
[10:39:13] [PASSED] 0xBE1 (PVC)
[10:39:13] [PASSED] 0xBE5 (PVC)
[10:39:13] [PASSED] 0x7D40 (METEORLAKE)
[10:39:13] [PASSED] 0x7D45 (METEORLAKE)
[10:39:13] [PASSED] 0x7D55 (METEORLAKE)
[10:39:13] [PASSED] 0x7D60 (METEORLAKE)
[10:39:13] [PASSED] 0x7DD5 (METEORLAKE)
[10:39:13] [PASSED] 0x6420 (LUNARLAKE)
[10:39:13] [PASSED] 0x64A0 (LUNARLAKE)
[10:39:13] [PASSED] 0x64B0 (LUNARLAKE)
[10:39:13] [PASSED] 0xE202 (BATTLEMAGE)
[10:39:13] [PASSED] 0xE209 (BATTLEMAGE)
[10:39:13] [PASSED] 0xE20B (BATTLEMAGE)
[10:39:13] [PASSED] 0xE20C (BATTLEMAGE)
[10:39:13] [PASSED] 0xE20D (BATTLEMAGE)
[10:39:13] [PASSED] 0xE210 (BATTLEMAGE)
[10:39:13] [PASSED] 0xE211 (BATTLEMAGE)
[10:39:13] [PASSED] 0xE212 (BATTLEMAGE)
[10:39:13] [PASSED] 0xE216 (BATTLEMAGE)
[10:39:13] [PASSED] 0xE220 (BATTLEMAGE)
[10:39:13] [PASSED] 0xE221 (BATTLEMAGE)
[10:39:13] [PASSED] 0xE222 (BATTLEMAGE)
[10:39:13] [PASSED] 0xE223 (BATTLEMAGE)
[10:39:13] [PASSED] 0xB080 (PANTHERLAKE)
[10:39:13] [PASSED] 0xB081 (PANTHERLAKE)
[10:39:13] [PASSED] 0xB082 (PANTHERLAKE)
[10:39:13] [PASSED] 0xB083 (PANTHERLAKE)
[10:39:13] [PASSED] 0xB084 (PANTHERLAKE)
[10:39:13] [PASSED] 0xB085 (PANTHERLAKE)
[10:39:13] [PASSED] 0xB086 (PANTHERLAKE)
[10:39:13] [PASSED] 0xB087 (PANTHERLAKE)
[10:39:13] [PASSED] 0xB08F (PANTHERLAKE)
[10:39:13] [PASSED] 0xB090 (PANTHERLAKE)
[10:39:13] [PASSED] 0xB0A0 (PANTHERLAKE)
[10:39:13] [PASSED] 0xB0B0 (PANTHERLAKE)
[10:39:13] [PASSED] 0xD740 (NOVALAKE_S)
[10:39:13] [PASSED] 0xD741 (NOVALAKE_S)
[10:39:13] [PASSED] 0xD742 (NOVALAKE_S)
[10:39:13] [PASSED] 0xD743 (NOVALAKE_S)
[10:39:13] [PASSED] 0xD744 (NOVALAKE_S)
[10:39:13] [PASSED] 0xD745 (NOVALAKE_S)
[10:39:13] [PASSED] 0x674C (CRESCENTISLAND)
[10:39:13] [PASSED] 0xFD80 (PANTHERLAKE)
[10:39:13] [PASSED] 0xFD81 (PANTHERLAKE)
[10:39:13] =============== [PASSED] check_platform_desc ===============
[10:39:13] ===================== [PASSED] xe_pci ======================
[10:39:13] =================== xe_rtp (2 subtests) ====================
[10:39:13] =============== xe_rtp_process_to_sr_tests  ================
[10:39:13] [PASSED] coalesce-same-reg
[10:39:13] [PASSED] no-match-no-add
[10:39:13] [PASSED] match-or
[10:39:13] [PASSED] match-or-xfail
[10:39:13] [PASSED] no-match-no-add-multiple-rules
[10:39:13] [PASSED] two-regs-two-entries
[10:39:13] [PASSED] clr-one-set-other
[10:39:13] [PASSED] set-field
[10:39:13] [PASSED] conflict-duplicate
[10:39:13] [PASSED] conflict-not-disjoint
[10:39:13] [PASSED] conflict-reg-type
[10:39:13] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[10:39:13] ================== xe_rtp_process_tests  ===================
[10:39:13] [PASSED] active1
[10:39:13] [PASSED] active2
[10:39:13] [PASSED] active-inactive
[10:39:13] [PASSED] inactive-active
[10:39:13] [PASSED] inactive-1st_or_active-inactive
[10:39:13] [PASSED] inactive-2nd_or_active-inactive
[10:39:13] [PASSED] inactive-last_or_active-inactive
[10:39:13] [PASSED] inactive-no_or_active-inactive
[10:39:13] ============== [PASSED] xe_rtp_process_tests ===============
[10:39:13] ===================== [PASSED] xe_rtp ======================
[10:39:13] ==================== xe_wa (1 subtest) =====================
[10:39:13] ======================== xe_wa_gt  =========================
[10:39:13] [PASSED] TIGERLAKE B0
[10:39:13] [PASSED] DG1 A0
[10:39:13] [PASSED] DG1 B0
[10:39:13] [PASSED] ALDERLAKE_S A0
[10:39:13] [PASSED] ALDERLAKE_S B0
[10:39:13] [PASSED] ALDERLAKE_S C0
[10:39:13] [PASSED] ALDERLAKE_S D0
[10:39:13] [PASSED] ALDERLAKE_P A0
[10:39:13] [PASSED] ALDERLAKE_P B0
[10:39:13] [PASSED] ALDERLAKE_P C0
[10:39:13] [PASSED] ALDERLAKE_S RPLS D0
[10:39:13] [PASSED] ALDERLAKE_P RPLU E0
[10:39:13] [PASSED] DG2 G10 C0
[10:39:13] [PASSED] DG2 G11 B1
[10:39:13] [PASSED] DG2 G12 A1
[10:39:13] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[10:39:13] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[10:39:13] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[10:39:13] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[10:39:13] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[10:39:13] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[10:39:13] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[10:39:13] ==================== [PASSED] xe_wa_gt =====================
[10:39:13] ====================== [PASSED] xe_wa ======================
[10:39:13] ============================================================
[10:39:13] Testing complete. Ran 510 tests: passed: 492, skipped: 18
[10:39:13] Elapsed time: 35.791s total, 4.236s configuring, 31.088s building, 0.447s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[10:39:14] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:39:15] 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
[10:39:41] Starting KUnit Kernel (1/1)...
[10:39:41] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:39:41] ============ drm_test_pick_cmdline (2 subtests) ============
[10:39:41] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[10:39:41] =============== drm_test_pick_cmdline_named  ===============
[10:39:41] [PASSED] NTSC
[10:39:41] [PASSED] NTSC-J
[10:39:41] [PASSED] PAL
[10:39:41] [PASSED] PAL-M
[10:39:41] =========== [PASSED] drm_test_pick_cmdline_named ===========
[10:39:41] ============== [PASSED] drm_test_pick_cmdline ==============
[10:39:41] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[10:39:41] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[10:39:41] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[10:39:41] =========== drm_validate_clone_mode (2 subtests) ===========
[10:39:41] ============== drm_test_check_in_clone_mode  ===============
[10:39:41] [PASSED] in_clone_mode
[10:39:41] [PASSED] not_in_clone_mode
[10:39:41] ========== [PASSED] drm_test_check_in_clone_mode ===========
[10:39:41] =============== drm_test_check_valid_clones  ===============
[10:39:41] [PASSED] not_in_clone_mode
[10:39:41] [PASSED] valid_clone
[10:39:41] [PASSED] invalid_clone
[10:39:41] =========== [PASSED] drm_test_check_valid_clones ===========
[10:39:41] ============= [PASSED] drm_validate_clone_mode =============
[10:39:41] ============= drm_validate_modeset (1 subtest) =============
[10:39:41] [PASSED] drm_test_check_connector_changed_modeset
[10:39:41] ============== [PASSED] drm_validate_modeset ===============
[10:39:41] ====== drm_test_bridge_get_current_state (2 subtests) ======
[10:39:41] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[10:39:41] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[10:39:41] ======== [PASSED] drm_test_bridge_get_current_state ========
[10:39:41] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[10:39:41] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[10:39:41] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[10:39:41] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[10:39:41] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[10:39:41] ============== drm_bridge_alloc (2 subtests) ===============
[10:39:41] [PASSED] drm_test_drm_bridge_alloc_basic
[10:39:41] [PASSED] drm_test_drm_bridge_alloc_get_put
[10:39:41] ================ [PASSED] drm_bridge_alloc =================
[10:39:41] ================== drm_buddy (8 subtests) ==================
[10:39:41] [PASSED] drm_test_buddy_alloc_limit
[10:39:41] [PASSED] drm_test_buddy_alloc_optimistic
[10:39:41] [PASSED] drm_test_buddy_alloc_pessimistic
[10:39:41] [PASSED] drm_test_buddy_alloc_pathological
[10:39:41] [PASSED] drm_test_buddy_alloc_contiguous
[10:39:41] [PASSED] drm_test_buddy_alloc_clear
[10:39:41] [PASSED] drm_test_buddy_alloc_range_bias
[10:39:41] [PASSED] drm_test_buddy_fragmentation_performance
[10:39:41] ==================== [PASSED] drm_buddy ====================
[10:39:41] ============= drm_cmdline_parser (40 subtests) =============
[10:39:41] [PASSED] drm_test_cmdline_force_d_only
[10:39:41] [PASSED] drm_test_cmdline_force_D_only_dvi
[10:39:41] [PASSED] drm_test_cmdline_force_D_only_hdmi
[10:39:41] [PASSED] drm_test_cmdline_force_D_only_not_digital
[10:39:41] [PASSED] drm_test_cmdline_force_e_only
[10:39:41] [PASSED] drm_test_cmdline_res
[10:39:41] [PASSED] drm_test_cmdline_res_vesa
[10:39:41] [PASSED] drm_test_cmdline_res_vesa_rblank
[10:39:41] [PASSED] drm_test_cmdline_res_rblank
[10:39:41] [PASSED] drm_test_cmdline_res_bpp
[10:39:41] [PASSED] drm_test_cmdline_res_refresh
[10:39:41] [PASSED] drm_test_cmdline_res_bpp_refresh
[10:39:41] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[10:39:41] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[10:39:41] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[10:39:41] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[10:39:41] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[10:39:41] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[10:39:41] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[10:39:41] [PASSED] drm_test_cmdline_res_margins_force_on
[10:39:41] [PASSED] drm_test_cmdline_res_vesa_margins
[10:39:41] [PASSED] drm_test_cmdline_name
[10:39:41] [PASSED] drm_test_cmdline_name_bpp
[10:39:41] [PASSED] drm_test_cmdline_name_option
[10:39:41] [PASSED] drm_test_cmdline_name_bpp_option
[10:39:41] [PASSED] drm_test_cmdline_rotate_0
[10:39:41] [PASSED] drm_test_cmdline_rotate_90
[10:39:41] [PASSED] drm_test_cmdline_rotate_180
[10:39:41] [PASSED] drm_test_cmdline_rotate_270
[10:39:41] [PASSED] drm_test_cmdline_hmirror
[10:39:41] [PASSED] drm_test_cmdline_vmirror
[10:39:41] [PASSED] drm_test_cmdline_margin_options
[10:39:41] [PASSED] drm_test_cmdline_multiple_options
[10:39:41] [PASSED] drm_test_cmdline_bpp_extra_and_option
[10:39:41] [PASSED] drm_test_cmdline_extra_and_option
[10:39:41] [PASSED] drm_test_cmdline_freestanding_options
[10:39:41] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[10:39:41] [PASSED] drm_test_cmdline_panel_orientation
[10:39:41] ================ drm_test_cmdline_invalid  =================
[10:39:41] [PASSED] margin_only
[10:39:41] [PASSED] interlace_only
[10:39:41] [PASSED] res_missing_x
[10:39:41] [PASSED] res_missing_y
[10:39:41] [PASSED] res_bad_y
[10:39:41] [PASSED] res_missing_y_bpp
[10:39:41] [PASSED] res_bad_bpp
[10:39:41] [PASSED] res_bad_refresh
[10:39:41] [PASSED] res_bpp_refresh_force_on_off
[10:39:41] [PASSED] res_invalid_mode
[10:39:41] [PASSED] res_bpp_wrong_place_mode
[10:39:41] [PASSED] name_bpp_refresh
[10:39:41] [PASSED] name_refresh
[10:39:41] [PASSED] name_refresh_wrong_mode
[10:39:41] [PASSED] name_refresh_invalid_mode
[10:39:41] [PASSED] rotate_multiple
[10:39:41] [PASSED] rotate_invalid_val
[10:39:41] [PASSED] rotate_truncated
[10:39:41] [PASSED] invalid_option
[10:39:41] [PASSED] invalid_tv_option
[10:39:41] [PASSED] truncated_tv_option
[10:39:41] ============ [PASSED] drm_test_cmdline_invalid =============
[10:39:41] =============== drm_test_cmdline_tv_options  ===============
[10:39:41] [PASSED] NTSC
[10:39:41] [PASSED] NTSC_443
[10:39:41] [PASSED] NTSC_J
[10:39:41] [PASSED] PAL
[10:39:41] [PASSED] PAL_M
[10:39:41] [PASSED] PAL_N
[10:39:41] [PASSED] SECAM
[10:39:41] [PASSED] MONO_525
[10:39:41] [PASSED] MONO_625
[10:39:41] =========== [PASSED] drm_test_cmdline_tv_options ===========
[10:39:41] =============== [PASSED] drm_cmdline_parser ================
[10:39:41] ========== drmm_connector_hdmi_init (20 subtests) ==========
[10:39:41] [PASSED] drm_test_connector_hdmi_init_valid
[10:39:41] [PASSED] drm_test_connector_hdmi_init_bpc_8
[10:39:41] [PASSED] drm_test_connector_hdmi_init_bpc_10
[10:39:41] [PASSED] drm_test_connector_hdmi_init_bpc_12
[10:39:41] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[10:39:41] [PASSED] drm_test_connector_hdmi_init_bpc_null
[10:39:41] [PASSED] drm_test_connector_hdmi_init_formats_empty
[10:39:41] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[10:39:41] === drm_test_connector_hdmi_init_formats_yuv420_allowed  ===
[10:39:41] [PASSED] supported_formats=0x9 yuv420_allowed=1
[10:39:41] [PASSED] supported_formats=0x9 yuv420_allowed=0
[10:39:41] [PASSED] supported_formats=0x3 yuv420_allowed=1
[10:39:41] [PASSED] supported_formats=0x3 yuv420_allowed=0
[10:39:41] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[10:39:41] [PASSED] drm_test_connector_hdmi_init_null_ddc
[10:39:41] [PASSED] drm_test_connector_hdmi_init_null_product
[10:39:41] [PASSED] drm_test_connector_hdmi_init_null_vendor
[10:39:41] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[10:39:41] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[10:39:41] [PASSED] drm_test_connector_hdmi_init_product_valid
[10:39:41] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[10:39:41] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[10:39:41] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[10:39:41] ========= drm_test_connector_hdmi_init_type_valid  =========
[10:39:41] [PASSED] HDMI-A
[10:39:41] [PASSED] HDMI-B
[10:39:41] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[10:39:41] ======== drm_test_connector_hdmi_init_type_invalid  ========
[10:39:41] [PASSED] Unknown
[10:39:41] [PASSED] VGA
[10:39:41] [PASSED] DVI-I
[10:39:41] [PASSED] DVI-D
[10:39:41] [PASSED] DVI-A
[10:39:41] [PASSED] Composite
[10:39:41] [PASSED] SVIDEO
[10:39:41] [PASSED] LVDS
[10:39:41] [PASSED] Component
[10:39:41] [PASSED] DIN
[10:39:41] [PASSED] DP
[10:39:41] [PASSED] TV
[10:39:41] [PASSED] eDP
[10:39:41] [PASSED] Virtual
[10:39:41] [PASSED] DSI
[10:39:41] [PASSED] DPI
[10:39:41] [PASSED] Writeback
[10:39:41] [PASSED] SPI
[10:39:41] [PASSED] USB
[10:39:41] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[10:39:41] ============ [PASSED] drmm_connector_hdmi_init =============
[10:39:41] ============= drmm_connector_init (3 subtests) =============
[10:39:41] [PASSED] drm_test_drmm_connector_init
[10:39:41] [PASSED] drm_test_drmm_connector_init_null_ddc
[10:39:41] ========= drm_test_drmm_connector_init_type_valid  =========
[10:39:41] [PASSED] Unknown
[10:39:41] [PASSED] VGA
[10:39:41] [PASSED] DVI-I
[10:39:41] [PASSED] DVI-D
[10:39:41] [PASSED] DVI-A
[10:39:41] [PASSED] Composite
[10:39:41] [PASSED] SVIDEO
[10:39:41] [PASSED] LVDS
[10:39:41] [PASSED] Component
[10:39:41] [PASSED] DIN
[10:39:41] [PASSED] DP
[10:39:41] [PASSED] HDMI-A
[10:39:41] [PASSED] HDMI-B
[10:39:41] [PASSED] TV
[10:39:41] [PASSED] eDP
[10:39:41] [PASSED] Virtual
[10:39:41] [PASSED] DSI
[10:39:41] [PASSED] DPI
[10:39:41] [PASSED] Writeback
[10:39:41] [PASSED] SPI
[10:39:41] [PASSED] USB
[10:39:41] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[10:39:41] =============== [PASSED] drmm_connector_init ===============
[10:39:41] ========= drm_connector_dynamic_init (6 subtests) ==========
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_init
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_init_properties
[10:39:41] ===== drm_test_drm_connector_dynamic_init_type_valid  ======
[10:39:41] [PASSED] Unknown
[10:39:41] [PASSED] VGA
[10:39:41] [PASSED] DVI-I
[10:39:41] [PASSED] DVI-D
[10:39:41] [PASSED] DVI-A
[10:39:41] [PASSED] Composite
[10:39:41] [PASSED] SVIDEO
[10:39:41] [PASSED] LVDS
[10:39:41] [PASSED] Component
[10:39:41] [PASSED] DIN
[10:39:41] [PASSED] DP
[10:39:41] [PASSED] HDMI-A
[10:39:41] [PASSED] HDMI-B
[10:39:41] [PASSED] TV
[10:39:41] [PASSED] eDP
[10:39:41] [PASSED] Virtual
[10:39:41] [PASSED] DSI
[10:39:41] [PASSED] DPI
[10:39:41] [PASSED] Writeback
[10:39:41] [PASSED] SPI
[10:39:41] [PASSED] USB
[10:39:41] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[10:39:41] ======== drm_test_drm_connector_dynamic_init_name  =========
[10:39:41] [PASSED] Unknown
[10:39:41] [PASSED] VGA
[10:39:41] [PASSED] DVI-I
[10:39:41] [PASSED] DVI-D
[10:39:41] [PASSED] DVI-A
[10:39:41] [PASSED] Composite
[10:39:41] [PASSED] SVIDEO
[10:39:41] [PASSED] LVDS
[10:39:41] [PASSED] Component
[10:39:41] [PASSED] DIN
[10:39:41] [PASSED] DP
[10:39:41] [PASSED] HDMI-A
[10:39:41] [PASSED] HDMI-B
[10:39:41] [PASSED] TV
[10:39:41] [PASSED] eDP
[10:39:41] [PASSED] Virtual
[10:39:41] [PASSED] DSI
[10:39:41] [PASSED] DPI
[10:39:41] [PASSED] Writeback
[10:39:41] [PASSED] SPI
[10:39:41] [PASSED] USB
[10:39:41] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[10:39:41] =========== [PASSED] drm_connector_dynamic_init ============
[10:39:41] ==== drm_connector_dynamic_register_early (4 subtests) =====
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[10:39:41] ====== [PASSED] drm_connector_dynamic_register_early =======
[10:39:41] ======= drm_connector_dynamic_register (7 subtests) ========
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[10:39:41] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[10:39:41] ========= [PASSED] drm_connector_dynamic_register ==========
[10:39:41] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[10:39:41] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[10:39:41] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[10:39:41] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[10:39:41] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[10:39:41] ========== drm_test_get_tv_mode_from_name_valid  ===========
[10:39:41] [PASSED] NTSC
[10:39:41] [PASSED] NTSC-443
[10:39:41] [PASSED] NTSC-J
[10:39:41] [PASSED] PAL
[10:39:41] [PASSED] PAL-M
[10:39:41] [PASSED] PAL-N
[10:39:41] [PASSED] SECAM
[10:39:41] [PASSED] Mono
[10:39:41] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[10:39:41] [PASSED] drm_test_get_tv_mode_from_name_truncated
[10:39:41] ============ [PASSED] drm_get_tv_mode_from_name ============
[10:39:41] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[10:39:41] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[10:39:41] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[10:39:41] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[10:39:41] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[10:39:41] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[10:39:41] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[10:39:41] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid  =
[10:39:41] [PASSED] VIC 96
[10:39:41] [PASSED] VIC 97
[10:39:41] [PASSED] VIC 101
[10:39:41] [PASSED] VIC 102
[10:39:41] [PASSED] VIC 106
[10:39:41] [PASSED] VIC 107
[10:39:41] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[10:39:41] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[10:39:41] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[10:39:41] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[10:39:41] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[10:39:41] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[10:39:41] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[10:39:41] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[10:39:41] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name  ====
[10:39:41] [PASSED] Automatic
[10:39:41] [PASSED] Full
[10:39:41] [PASSED] Limited 16:235
[10:39:41] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[10:39:41] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[10:39:41] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[10:39:41] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[10:39:41] === drm_test_drm_hdmi_connector_get_output_format_name  ====
[10:39:41] [PASSED] RGB
[10:39:41] [PASSED] YUV 4:2:0
[10:39:41] [PASSED] YUV 4:2:2
[10:39:41] [PASSED] YUV 4:4:4
[10:39:41] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[10:39:41] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[10:39:41] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[10:39:41] ============= drm_damage_helper (21 subtests) ==============
[10:39:41] [PASSED] drm_test_damage_iter_no_damage
[10:39:41] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[10:39:41] [PASSED] drm_test_damage_iter_no_damage_src_moved
[10:39:41] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[10:39:41] [PASSED] drm_test_damage_iter_no_damage_not_visible
[10:39:41] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[10:39:41] [PASSED] drm_test_damage_iter_no_damage_no_fb
[10:39:41] [PASSED] drm_test_damage_iter_simple_damage
[10:39:41] [PASSED] drm_test_damage_iter_single_damage
[10:39:41] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[10:39:41] [PASSED] drm_test_damage_iter_single_damage_outside_src
[10:39:41] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[10:39:41] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[10:39:41] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[10:39:41] [PASSED] drm_test_damage_iter_single_damage_src_moved
[10:39:41] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[10:39:41] [PASSED] drm_test_damage_iter_damage
[10:39:41] [PASSED] drm_test_damage_iter_damage_one_intersect
[10:39:41] [PASSED] drm_test_damage_iter_damage_one_outside
[10:39:41] [PASSED] drm_test_damage_iter_damage_src_moved
[10:39:41] [PASSED] drm_test_damage_iter_damage_not_visible
[10:39:41] ================ [PASSED] drm_damage_helper ================
[10:39:41] ============== drm_dp_mst_helper (3 subtests) ==============
[10:39:41] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[10:39:41] [PASSED] Clock 154000 BPP 30 DSC disabled
[10:39:41] [PASSED] Clock 234000 BPP 30 DSC disabled
[10:39:41] [PASSED] Clock 297000 BPP 24 DSC disabled
[10:39:41] [PASSED] Clock 332880 BPP 24 DSC enabled
[10:39:41] [PASSED] Clock 324540 BPP 24 DSC enabled
[10:39:41] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[10:39:41] ============== drm_test_dp_mst_calc_pbn_div  ===============
[10:39:41] [PASSED] Link rate 2000000 lane count 4
[10:39:41] [PASSED] Link rate 2000000 lane count 2
[10:39:41] [PASSED] Link rate 2000000 lane count 1
[10:39:41] [PASSED] Link rate 1350000 lane count 4
[10:39:41] [PASSED] Link rate 1350000 lane count 2
[10:39:41] [PASSED] Link rate 1350000 lane count 1
[10:39:41] [PASSED] Link rate 1000000 lane count 4
[10:39:41] [PASSED] Link rate 1000000 lane count 2
[10:39:41] [PASSED] Link rate 1000000 lane count 1
[10:39:41] [PASSED] Link rate 810000 lane count 4
[10:39:41] [PASSED] Link rate 810000 lane count 2
[10:39:41] [PASSED] Link rate 810000 lane count 1
[10:39:41] [PASSED] Link rate 540000 lane count 4
[10:39:41] [PASSED] Link rate 540000 lane count 2
[10:39:41] [PASSED] Link rate 540000 lane count 1
[10:39:41] [PASSED] Link rate 270000 lane count 4
[10:39:41] [PASSED] Link rate 270000 lane count 2
[10:39:41] [PASSED] Link rate 270000 lane count 1
[10:39:41] [PASSED] Link rate 162000 lane count 4
[10:39:41] [PASSED] Link rate 162000 lane count 2
[10:39:41] [PASSED] Link rate 162000 lane count 1
[10:39:41] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[10:39:41] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[10:39:41] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[10:39:41] [PASSED] DP_POWER_UP_PHY with port number
[10:39:41] [PASSED] DP_POWER_DOWN_PHY with port number
[10:39:41] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[10:39:41] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[10:39:41] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[10:39:41] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[10:39:41] [PASSED] DP_QUERY_PAYLOAD with port number
[10:39:41] [PASSED] DP_QUERY_PAYLOAD with VCPI
[10:39:41] [PASSED] DP_REMOTE_DPCD_READ with port number
[10:39:41] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[10:39:41] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[10:39:41] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[10:39:41] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[10:39:41] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[10:39:41] [PASSED] DP_REMOTE_I2C_READ with port number
[10:39:41] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[10:39:41] [PASSED] DP_REMOTE_I2C_READ with transactions array
[10:39:41] [PASSED] DP_REMOTE_I2C_WRITE with port number
[10:39:41] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[10:39:41] [PASSED] DP_REMOTE_I2C_WRITE with data array
[10:39:41] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[10:39:41] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[10:39:41] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[10:39:41] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[10:39:41] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[10:39:41] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[10:39:41] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[10:39:41] ================ [PASSED] drm_dp_mst_helper ================
[10:39:41] ================== drm_exec (7 subtests) ===================
[10:39:41] [PASSED] sanitycheck
[10:39:41] [PASSED] test_lock
[10:39:41] [PASSED] test_lock_unlock
[10:39:41] [PASSED] test_duplicates
[10:39:41] [PASSED] test_prepare
[10:39:41] [PASSED] test_prepare_array
[10:39:41] [PASSED] test_multiple_loops
[10:39:41] ==================== [PASSED] drm_exec =====================
[10:39:41] =========== drm_format_helper_test (17 subtests) ===========
[10:39:41] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[10:39:41] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[10:39:41] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[10:39:41] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[10:39:41] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[10:39:41] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[10:39:41] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[10:39:41] ============= drm_test_fb_xrgb8888_to_bgr888  ==============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[10:39:41] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[10:39:41] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[10:39:41] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[10:39:41] ============== drm_test_fb_xrgb8888_to_mono  ===============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[10:39:41] ==================== drm_test_fb_swab  =====================
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ================ [PASSED] drm_test_fb_swab =================
[10:39:41] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[10:39:41] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[10:39:41] [PASSED] single_pixel_source_buffer
[10:39:41] [PASSED] single_pixel_clip_rectangle
[10:39:41] [PASSED] well_known_colors
[10:39:41] [PASSED] destination_pitch
[10:39:41] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[10:39:41] ================= drm_test_fb_clip_offset  =================
[10:39:41] [PASSED] pass through
[10:39:41] [PASSED] horizontal offset
[10:39:41] [PASSED] vertical offset
[10:39:41] [PASSED] horizontal and vertical offset
[10:39:41] [PASSED] horizontal offset (custom pitch)
[10:39:41] [PASSED] vertical offset (custom pitch)
[10:39:41] [PASSED] horizontal and vertical offset (custom pitch)
[10:39:41] ============= [PASSED] drm_test_fb_clip_offset =============
[10:39:41] =================== drm_test_fb_memcpy  ====================
[10:39:41] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[10:39:41] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[10:39:41] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[10:39:41] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[10:39:41] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[10:39:41] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[10:39:41] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[10:39:41] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[10:39:41] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[10:39:41] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[10:39:41] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[10:39:41] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[10:39:41] =============== [PASSED] drm_test_fb_memcpy ================
[10:39:41] ============= [PASSED] drm_format_helper_test ==============
[10:39:41] ================= drm_format (18 subtests) =================
[10:39:41] [PASSED] drm_test_format_block_width_invalid
[10:39:41] [PASSED] drm_test_format_block_width_one_plane
[10:39:41] [PASSED] drm_test_format_block_width_two_plane
[10:39:41] [PASSED] drm_test_format_block_width_three_plane
[10:39:41] [PASSED] drm_test_format_block_width_tiled
[10:39:41] [PASSED] drm_test_format_block_height_invalid
[10:39:41] [PASSED] drm_test_format_block_height_one_plane
[10:39:41] [PASSED] drm_test_format_block_height_two_plane
[10:39:41] [PASSED] drm_test_format_block_height_three_plane
[10:39:41] [PASSED] drm_test_format_block_height_tiled
[10:39:41] [PASSED] drm_test_format_min_pitch_invalid
[10:39:41] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[10:39:41] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[10:39:41] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[10:39:41] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[10:39:41] [PASSED] drm_test_format_min_pitch_two_plane
[10:39:41] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[10:39:41] [PASSED] drm_test_format_min_pitch_tiled
[10:39:41] =================== [PASSED] drm_format ====================
[10:39:41] ============== drm_framebuffer (10 subtests) ===============
[10:39:41] ========== drm_test_framebuffer_check_src_coords  ==========
[10:39:41] [PASSED] Success: source fits into fb
[10:39:41] [PASSED] Fail: overflowing fb with x-axis coordinate
[10:39:41] [PASSED] Fail: overflowing fb with y-axis coordinate
[10:39:41] [PASSED] Fail: overflowing fb with source width
[10:39:41] [PASSED] Fail: overflowing fb with source height
[10:39:41] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[10:39:41] [PASSED] drm_test_framebuffer_cleanup
[10:39:41] =============== drm_test_framebuffer_create  ===============
[10:39:41] [PASSED] ABGR8888 normal sizes
[10:39:41] [PASSED] ABGR8888 max sizes
[10:39:41] [PASSED] ABGR8888 pitch greater than min required
[10:39:41] [PASSED] ABGR8888 pitch less than min required
[10:39:41] [PASSED] ABGR8888 Invalid width
[10:39:41] [PASSED] ABGR8888 Invalid buffer handle
[10:39:41] [PASSED] No pixel format
[10:39:41] [PASSED] ABGR8888 Width 0
[10:39:41] [PASSED] ABGR8888 Height 0
[10:39:41] [PASSED] ABGR8888 Out of bound height * pitch combination
[10:39:41] [PASSED] ABGR8888 Large buffer offset
[10:39:41] [PASSED] ABGR8888 Buffer offset for inexistent plane
[10:39:41] [PASSED] ABGR8888 Invalid flag
[10:39:41] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[10:39:41] [PASSED] ABGR8888 Valid buffer modifier
[10:39:41] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[10:39:41] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[10:39:41] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[10:39:41] [PASSED] NV12 Normal sizes
[10:39:41] [PASSED] NV12 Max sizes
[10:39:41] [PASSED] NV12 Invalid pitch
[10:39:41] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[10:39:41] [PASSED] NV12 different  modifier per-plane
[10:39:41] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[10:39:41] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[10:39:41] [PASSED] NV12 Modifier for inexistent plane
[10:39:41] [PASSED] NV12 Handle for inexistent plane
[10:39:41] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[10:39:41] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[10:39:41] [PASSED] YVU420 Normal sizes
[10:39:41] [PASSED] YVU420 Max sizes
[10:39:41] [PASSED] YVU420 Invalid pitch
[10:39:41] [PASSED] YVU420 Different pitches
[10:39:41] [PASSED] YVU420 Different buffer offsets/pitches
[10:39:41] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[10:39:41] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[10:39:41] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[10:39:41] [PASSED] YVU420 Valid modifier
[10:39:41] [PASSED] YVU420 Different modifiers per plane
[10:39:41] [PASSED] YVU420 Modifier for inexistent plane
[10:39:41] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[10:39:41] [PASSED] X0L2 Normal sizes
[10:39:41] [PASSED] X0L2 Max sizes
[10:39:41] [PASSED] X0L2 Invalid pitch
[10:39:41] [PASSED] X0L2 Pitch greater than minimum required
[10:39:41] [PASSED] X0L2 Handle for inexistent plane
[10:39:41] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[10:39:41] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[10:39:41] [PASSED] X0L2 Valid modifier
[10:39:41] [PASSED] X0L2 Modifier for inexistent plane
[10:39:41] =========== [PASSED] drm_test_framebuffer_create ===========
[10:39:41] [PASSED] drm_test_framebuffer_free
[10:39:41] [PASSED] drm_test_framebuffer_init
[10:39:41] [PASSED] drm_test_framebuffer_init_bad_format
[10:39:41] [PASSED] drm_test_framebuffer_init_dev_mismatch
[10:39:41] [PASSED] drm_test_framebuffer_lookup
[10:39:41] [PASSED] drm_test_framebuffer_lookup_inexistent
[10:39:41] [PASSED] drm_test_framebuffer_modifiers_not_supported
[10:39:41] ================= [PASSED] drm_framebuffer =================
[10:39:41] ================ drm_gem_shmem (8 subtests) ================
[10:39:41] [PASSED] drm_gem_shmem_test_obj_create
[10:39:41] [PASSED] drm_gem_shmem_test_obj_create_private
[10:39:41] [PASSED] drm_gem_shmem_test_pin_pages
[10:39:41] [PASSED] drm_gem_shmem_test_vmap
[10:39:41] [PASSED] drm_gem_shmem_test_get_pages_sgt
[10:39:41] [PASSED] drm_gem_shmem_test_get_sg_table
[10:39:41] [PASSED] drm_gem_shmem_test_madvise
[10:39:41] [PASSED] drm_gem_shmem_test_purge
[10:39:41] ================== [PASSED] drm_gem_shmem ==================
[10:39:41] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[10:39:41] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[10:39:41] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[10:39:41] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[10:39:41] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[10:39:41] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[10:39:41] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[10:39:41] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420  =======
[10:39:41] [PASSED] Automatic
[10:39:41] [PASSED] Full
[10:39:41] [PASSED] Limited 16:235
[10:39:41] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[10:39:41] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[10:39:41] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[10:39:41] [PASSED] drm_test_check_disable_connector
[10:39:41] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[10:39:41] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[10:39:41] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[10:39:41] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[10:39:41] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[10:39:41] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[10:39:41] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[10:39:41] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[10:39:41] [PASSED] drm_test_check_output_bpc_dvi
[10:39:41] [PASSED] drm_test_check_output_bpc_format_vic_1
[10:39:41] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[10:39:41] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[10:39:41] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[10:39:41] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[10:39:41] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[10:39:41] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[10:39:41] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[10:39:41] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[10:39:41] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[10:39:41] [PASSED] drm_test_check_broadcast_rgb_value
[10:39:41] [PASSED] drm_test_check_bpc_8_value
[10:39:41] [PASSED] drm_test_check_bpc_10_value
[10:39:41] [PASSED] drm_test_check_bpc_12_value
[10:39:41] [PASSED] drm_test_check_format_value
[10:39:41] [PASSED] drm_test_check_tmds_char_value
[10:39:41] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[10:39:41] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[10:39:41] [PASSED] drm_test_check_mode_valid
[10:39:41] [PASSED] drm_test_check_mode_valid_reject
[10:39:41] [PASSED] drm_test_check_mode_valid_reject_rate
[10:39:41] [PASSED] drm_test_check_mode_valid_reject_max_clock
[10:39:41] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[10:39:41] ================= drm_managed (2 subtests) =================
[10:39:41] [PASSED] drm_test_managed_release_action
[10:39:41] [PASSED] drm_test_managed_run_action
[10:39:41] =================== [PASSED] drm_managed ===================
[10:39:41] =================== drm_mm (6 subtests) ====================
[10:39:41] [PASSED] drm_test_mm_init
[10:39:41] [PASSED] drm_test_mm_debug
[10:39:41] [PASSED] drm_test_mm_align32
[10:39:41] [PASSED] drm_test_mm_align64
[10:39:41] [PASSED] drm_test_mm_lowest
[10:39:41] [PASSED] drm_test_mm_highest
[10:39:41] ===================== [PASSED] drm_mm ======================
[10:39:41] ============= drm_modes_analog_tv (5 subtests) =============
[10:39:41] [PASSED] drm_test_modes_analog_tv_mono_576i
[10:39:41] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[10:39:41] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[10:39:41] [PASSED] drm_test_modes_analog_tv_pal_576i
[10:39:41] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[10:39:41] =============== [PASSED] drm_modes_analog_tv ===============
[10:39:41] ============== drm_plane_helper (2 subtests) ===============
[10:39:41] =============== drm_test_check_plane_state  ================
[10:39:41] [PASSED] clipping_simple
[10:39:41] [PASSED] clipping_rotate_reflect
[10:39:41] [PASSED] positioning_simple
[10:39:41] [PASSED] upscaling
[10:39:41] [PASSED] downscaling
[10:39:41] [PASSED] rounding1
[10:39:41] [PASSED] rounding2
[10:39:41] [PASSED] rounding3
[10:39:41] [PASSED] rounding4
[10:39:41] =========== [PASSED] drm_test_check_plane_state ============
[10:39:41] =========== drm_test_check_invalid_plane_state  ============
[10:39:41] [PASSED] positioning_invalid
[10:39:41] [PASSED] upscaling_invalid
[10:39:41] [PASSED] downscaling_invalid
[10:39:41] ======= [PASSED] drm_test_check_invalid_plane_state ========
[10:39:41] ================ [PASSED] drm_plane_helper =================
[10:39:41] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[10:39:41] ====== drm_test_connector_helper_tv_get_modes_check  =======
[10:39:41] [PASSED] None
[10:39:41] [PASSED] PAL
[10:39:41] [PASSED] NTSC
[10:39:41] [PASSED] Both, NTSC Default
[10:39:41] [PASSED] Both, PAL Default
[10:39:41] [PASSED] Both, NTSC Default, with PAL on command-line
[10:39:41] [PASSED] Both, PAL Default, with NTSC on command-line
[10:39:41] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[10:39:41] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[10:39:41] ================== drm_rect (9 subtests) ===================
[10:39:41] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[10:39:41] [PASSED] drm_test_rect_clip_scaled_not_clipped
[10:39:41] [PASSED] drm_test_rect_clip_scaled_clipped
[10:39:41] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[10:39:41] ================= drm_test_rect_intersect  =================
[10:39:41] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[10:39:41] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[10:39:41] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[10:39:41] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[10:39:41] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[10:39:41] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[10:39:41] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[10:39:41] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[10:39:41] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[10:39:41] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[10:39:41] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[10:39:41] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[10:39:41] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[10:39:41] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[10:39:41] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[10:39:41] ============= [PASSED] drm_test_rect_intersect =============
[10:39:41] ================ drm_test_rect_calc_hscale  ================
[10:39:41] [PASSED] normal use
[10:39:41] [PASSED] out of max range
[10:39:41] [PASSED] out of min range
[10:39:41] [PASSED] zero dst
[10:39:41] [PASSED] negative src
[10:39:41] [PASSED] negative dst
[10:39:41] ============ [PASSED] drm_test_rect_calc_hscale ============
[10:39:41] ================ drm_test_rect_calc_vscale  ================
[10:39:41] [PASSED] normal use
stty: 'standard input': Inappropriate ioctl for device
[10:39:41] [PASSED] out of max range
[10:39:41] [PASSED] out of min range
[10:39:41] [PASSED] zero dst
[10:39:41] [PASSED] negative src
[10:39:41] [PASSED] negative dst
[10:39:41] ============ [PASSED] drm_test_rect_calc_vscale ============
[10:39:41] ================== drm_test_rect_rotate  ===================
[10:39:41] [PASSED] reflect-x
[10:39:41] [PASSED] reflect-y
[10:39:41] [PASSED] rotate-0
[10:39:41] [PASSED] rotate-90
[10:39:41] [PASSED] rotate-180
[10:39:41] [PASSED] rotate-270
[10:39:41] ============== [PASSED] drm_test_rect_rotate ===============
[10:39:41] ================ drm_test_rect_rotate_inv  =================
[10:39:41] [PASSED] reflect-x
[10:39:41] [PASSED] reflect-y
[10:39:41] [PASSED] rotate-0
[10:39:41] [PASSED] rotate-90
[10:39:41] [PASSED] rotate-180
[10:39:41] [PASSED] rotate-270
[10:39:41] ============ [PASSED] drm_test_rect_rotate_inv =============
[10:39:41] ==================== [PASSED] drm_rect =====================
[10:39:41] ============ drm_sysfb_modeset_test (1 subtest) ============
[10:39:41] ============ drm_test_sysfb_build_fourcc_list  =============
[10:39:41] [PASSED] no native formats
[10:39:41] [PASSED] XRGB8888 as native format
[10:39:41] [PASSED] remove duplicates
[10:39:41] [PASSED] convert alpha formats
[10:39:41] [PASSED] random formats
[10:39:41] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[10:39:41] ============= [PASSED] drm_sysfb_modeset_test ==============
[10:39:41] ============================================================
[10:39:41] Testing complete. Ran 622 tests: passed: 622
[10:39:41] Elapsed time: 27.460s total, 1.714s configuring, 25.320s building, 0.409s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[10:39:41] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:39:43] 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
[10:39:52] Starting KUnit Kernel (1/1)...
[10:39:52] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:39:52] ================= ttm_device (5 subtests) ==================
[10:39:52] [PASSED] ttm_device_init_basic
[10:39:52] [PASSED] ttm_device_init_multiple
[10:39:52] [PASSED] ttm_device_fini_basic
[10:39:52] [PASSED] ttm_device_init_no_vma_man
[10:39:52] ================== ttm_device_init_pools  ==================
[10:39:52] [PASSED] No DMA allocations, no DMA32 required
[10:39:52] [PASSED] DMA allocations, DMA32 required
[10:39:52] [PASSED] No DMA allocations, DMA32 required
[10:39:52] [PASSED] DMA allocations, no DMA32 required
[10:39:52] ============== [PASSED] ttm_device_init_pools ==============
[10:39:52] =================== [PASSED] ttm_device ====================
[10:39:52] ================== ttm_pool (8 subtests) ===================
[10:39:52] ================== ttm_pool_alloc_basic  ===================
[10:39:52] [PASSED] One page
[10:39:52] [PASSED] More than one page
[10:39:52] [PASSED] Above the allocation limit
[10:39:52] [PASSED] One page, with coherent DMA mappings enabled
[10:39:52] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[10:39:52] ============== [PASSED] ttm_pool_alloc_basic ===============
[10:39:52] ============== ttm_pool_alloc_basic_dma_addr  ==============
[10:39:52] [PASSED] One page
[10:39:52] [PASSED] More than one page
[10:39:52] [PASSED] Above the allocation limit
[10:39:52] [PASSED] One page, with coherent DMA mappings enabled
[10:39:52] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[10:39:52] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[10:39:52] [PASSED] ttm_pool_alloc_order_caching_match
[10:39:52] [PASSED] ttm_pool_alloc_caching_mismatch
[10:39:52] [PASSED] ttm_pool_alloc_order_mismatch
[10:39:52] [PASSED] ttm_pool_free_dma_alloc
[10:39:52] [PASSED] ttm_pool_free_no_dma_alloc
[10:39:52] [PASSED] ttm_pool_fini_basic
[10:39:52] ==================== [PASSED] ttm_pool =====================
[10:39:52] ================ ttm_resource (8 subtests) =================
[10:39:52] ================= ttm_resource_init_basic  =================
[10:39:52] [PASSED] Init resource in TTM_PL_SYSTEM
[10:39:52] [PASSED] Init resource in TTM_PL_VRAM
[10:39:52] [PASSED] Init resource in a private placement
[10:39:52] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[10:39:52] ============= [PASSED] ttm_resource_init_basic =============
[10:39:52] [PASSED] ttm_resource_init_pinned
[10:39:52] [PASSED] ttm_resource_fini_basic
[10:39:52] [PASSED] ttm_resource_manager_init_basic
[10:39:52] [PASSED] ttm_resource_manager_usage_basic
[10:39:52] [PASSED] ttm_resource_manager_set_used_basic
[10:39:52] [PASSED] ttm_sys_man_alloc_basic
[10:39:52] [PASSED] ttm_sys_man_free_basic
[10:39:52] ================== [PASSED] ttm_resource ===================
[10:39:52] =================== ttm_tt (15 subtests) ===================
[10:39:52] ==================== ttm_tt_init_basic  ====================
[10:39:52] [PASSED] Page-aligned size
[10:39:52] [PASSED] Extra pages requested
[10:39:52] ================ [PASSED] ttm_tt_init_basic ================
[10:39:52] [PASSED] ttm_tt_init_misaligned
[10:39:52] [PASSED] ttm_tt_fini_basic
[10:39:52] [PASSED] ttm_tt_fini_sg
[10:39:52] [PASSED] ttm_tt_fini_shmem
[10:39:52] [PASSED] ttm_tt_create_basic
[10:39:52] [PASSED] ttm_tt_create_invalid_bo_type
[10:39:52] [PASSED] ttm_tt_create_ttm_exists
[10:39:52] [PASSED] ttm_tt_create_failed
[10:39:52] [PASSED] ttm_tt_destroy_basic
[10:39:52] [PASSED] ttm_tt_populate_null_ttm
[10:39:52] [PASSED] ttm_tt_populate_populated_ttm
[10:39:52] [PASSED] ttm_tt_unpopulate_basic
[10:39:52] [PASSED] ttm_tt_unpopulate_empty_ttm
[10:39:52] [PASSED] ttm_tt_swapin_basic
[10:39:52] ===================== [PASSED] ttm_tt ======================
[10:39:52] =================== ttm_bo (14 subtests) ===================
[10:39:52] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[10:39:52] [PASSED] Cannot be interrupted and sleeps
[10:39:52] [PASSED] Cannot be interrupted, locks straight away
[10:39:52] [PASSED] Can be interrupted, sleeps
[10:39:52] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[10:39:52] [PASSED] ttm_bo_reserve_locked_no_sleep
[10:39:52] [PASSED] ttm_bo_reserve_no_wait_ticket
[10:39:52] [PASSED] ttm_bo_reserve_double_resv
[10:39:52] [PASSED] ttm_bo_reserve_interrupted
[10:39:52] [PASSED] ttm_bo_reserve_deadlock
[10:39:52] [PASSED] ttm_bo_unreserve_basic
[10:39:52] [PASSED] ttm_bo_unreserve_pinned
[10:39:52] [PASSED] ttm_bo_unreserve_bulk
[10:39:52] [PASSED] ttm_bo_fini_basic
[10:39:52] [PASSED] ttm_bo_fini_shared_resv
[10:39:52] [PASSED] ttm_bo_pin_basic
[10:39:52] [PASSED] ttm_bo_pin_unpin_resource
[10:39:52] [PASSED] ttm_bo_multiple_pin_one_unpin
[10:39:52] ===================== [PASSED] ttm_bo ======================
[10:39:52] ============== ttm_bo_validate (21 subtests) ===============
[10:39:52] ============== ttm_bo_init_reserved_sys_man  ===============
[10:39:52] [PASSED] Buffer object for userspace
[10:39:52] [PASSED] Kernel buffer object
[10:39:52] [PASSED] Shared buffer object
[10:39:52] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[10:39:52] ============== ttm_bo_init_reserved_mock_man  ==============
[10:39:52] [PASSED] Buffer object for userspace
[10:39:52] [PASSED] Kernel buffer object
[10:39:52] [PASSED] Shared buffer object
[10:39:52] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[10:39:52] [PASSED] ttm_bo_init_reserved_resv
[10:39:52] ================== ttm_bo_validate_basic  ==================
[10:39:52] [PASSED] Buffer object for userspace
[10:39:52] [PASSED] Kernel buffer object
[10:39:52] [PASSED] Shared buffer object
[10:39:52] ============== [PASSED] ttm_bo_validate_basic ==============
[10:39:52] [PASSED] ttm_bo_validate_invalid_placement
[10:39:52] ============= ttm_bo_validate_same_placement  ==============
[10:39:52] [PASSED] System manager
[10:39:52] [PASSED] VRAM manager
[10:39:52] ========= [PASSED] ttm_bo_validate_same_placement ==========
[10:39:52] [PASSED] ttm_bo_validate_failed_alloc
[10:39:52] [PASSED] ttm_bo_validate_pinned
[10:39:52] [PASSED] ttm_bo_validate_busy_placement
[10:39:52] ================ ttm_bo_validate_multihop  =================
[10:39:52] [PASSED] Buffer object for userspace
[10:39:52] [PASSED] Kernel buffer object
[10:39:52] [PASSED] Shared buffer object
[10:39:52] ============ [PASSED] ttm_bo_validate_multihop =============
[10:39:52] ========== ttm_bo_validate_no_placement_signaled  ==========
[10:39:52] [PASSED] Buffer object in system domain, no page vector
[10:39:52] [PASSED] Buffer object in system domain with an existing page vector
[10:39:52] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[10:39:52] ======== ttm_bo_validate_no_placement_not_signaled  ========
[10:39:52] [PASSED] Buffer object for userspace
[10:39:52] [PASSED] Kernel buffer object
[10:39:52] [PASSED] Shared buffer object
[10:39:52] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[10:39:52] [PASSED] ttm_bo_validate_move_fence_signaled
[10:39:52] ========= ttm_bo_validate_move_fence_not_signaled  =========
[10:39:52] [PASSED] Waits for GPU
[10:39:52] [PASSED] Tries to lock straight away
[10:39:52] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[10:39:52] [PASSED] ttm_bo_validate_happy_evict
[10:39:52] [PASSED] ttm_bo_validate_all_pinned_evict
[10:39:52] [PASSED] ttm_bo_validate_allowed_only_evict
[10:39:52] [PASSED] ttm_bo_validate_deleted_evict
[10:39:52] [PASSED] ttm_bo_validate_busy_domain_evict
[10:39:52] [PASSED] ttm_bo_validate_evict_gutting
[10:39:52] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[10:39:52] ================= [PASSED] ttm_bo_validate =================
[10:39:52] ============================================================
[10:39:52] Testing complete. Ran 101 tests: passed: 101
[10:39:52] Elapsed time: 11.342s total, 1.680s configuring, 9.446s building, 0.189s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✗ CI.checksparse: warning for Selective Fetch and async flip
  2025-11-25  6:32 [PATCH 0/4] Selective Fetch and async flip Jouni Högander
                   ` (4 preceding siblings ...)
  2025-11-25 10:39 ` ✓ CI.KUnit: success for Selective Fetch and async flip Patchwork
@ 2025-11-25 10:55 ` Patchwork
  2025-11-25 14:23 ` ✗ Xe.CI.Full: failure " Patchwork
  6 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-11-25 10:55 UTC (permalink / raw)
  To: Jouni Högander; +Cc: intel-xe

== Series Details ==

Series: Selective Fetch and async flip
URL   : https://patchwork.freedesktop.org/series/158002/
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 c9ffb8a8ab1294c1870e017e0502cb8089d3d8b8
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:2072:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2072:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2072:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2072:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2072:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2072:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2072:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2072:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2072:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2072:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2085:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2085:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_lt_phy.c:1935:35: warning: Using plain integer as NULL pointer
+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] 16+ messages in thread

* ✗ Xe.CI.Full: failure for Selective Fetch and async flip
  2025-11-25  6:32 [PATCH 0/4] Selective Fetch and async flip Jouni Högander
                   ` (5 preceding siblings ...)
  2025-11-25 10:55 ` ✗ CI.checksparse: warning " Patchwork
@ 2025-11-25 14:23 ` Patchwork
  6 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-11-25 14:23 UTC (permalink / raw)
  To: Jouni Högander; +Cc: intel-xe

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

== Series Details ==

Series: Selective Fetch and async flip
URL   : https://patchwork.freedesktop.org/series/158002/
State : failure

== Summary ==

ERROR: The runconfig 'xe-4143-c9ffb8a8ab1294c1870e017e0502cb8089d3d8b8_FULL' does not exist in the database

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-158002v1/index.html

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

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

* Re: [PATCH 2/4] drm/i915/psr: Perform vblank evasion on async flip as well for PSR
  2025-11-25  6:32 ` [PATCH 2/4] drm/i915/psr: Perform vblank evasion on async flip as well for PSR Jouni Högander
@ 2025-11-25 21:19   ` Ville Syrjälä
  2025-11-27 10:57     ` Hogander, Jouni
  0 siblings, 1 reply; 16+ messages in thread
From: Ville Syrjälä @ 2025-11-25 21:19 UTC (permalink / raw)
  To: Jouni Högander; +Cc: intel-gfx, intel-xe

On Tue, Nov 25, 2025 at 08:32:51AM +0200, Jouni Högander wrote:
> PSR2_MAN_TRK_CTL[SF Continuous full frame] is sampled on the rising edge of
> delayed vblank. SW must ensure this bit is not changing around that. Due to
> this PSR2 Selective Fetch needs vblank evasion.
> 
> Currently vblank evasion is not done on async flip. Perform it in case
> required by PSR.
> 
> Bspec: 50424
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_crtc.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
> index 153ff4b4b52c..42c4ce07f8c0 100644
> --- a/drivers/gpu/drm/i915/display/intel_crtc.c
> +++ b/drivers/gpu/drm/i915/display/intel_crtc.c
> @@ -433,7 +433,8 @@ static bool intel_crtc_needs_vblank_work(const struct intel_crtc_state *crtc_sta
>  		(intel_crtc_needs_color_update(crtc_state) &&
>  		 !HAS_DOUBLE_BUFFERED_LUT(display)) &&
>  		!intel_color_uses_dsb(crtc_state) &&
> -		!crtc_state->use_dsb;
> +		!crtc_state->use_dsb &&
> +		!crtc_state->do_async_flip;
>  }
>  
>  static void intel_crtc_vblank_work(struct kthread_work *base)
> @@ -539,7 +540,8 @@ void intel_pipe_update_start(struct intel_atomic_state *state,
>  	if (new_crtc_state->do_async_flip) {
>  		intel_crtc_prepare_vblank_event(new_crtc_state,
>  						&crtc->flip_done_event);
> -		return;
> +		if (!intel_psr_needs_evasion(new_crtc_state))
> +			return;

I don't think we want hack this into such low level code. We
anyway convert the first async flip to a sync flip (see
intel_plane_do_async_flip()), so that's when you should disable
selective fetch, and keep it disabled afterwards as long as
async flips are being requested for the plane by userspace.

The problem is that uapi.async_flip is ephemeral, so you can't
just check for that. I think what we need is a way to track
which planes have been requested to do async flips. We almost 
have that with the async_flip_planes bitmask, and I think we
can make it do exactly what we want by just dropping the
need_async_flip_toggle_wa check from 
intel_plane_atomic_calc_changes(). That should be safe since
all places that currently use the bitmask also check for
need_async_flip_toggle_wa.

The alternative would be to track the uapi async flip requests
in a separate bitmask. That might be a bit more optimal in that
we wouldn't clear the bit from there when some other plane
or the pipe itself needs a sync update while the plane is already
performing async flips. But not having that just means you'll
end up toggling selective fetch back on and the off again when
a sync update intervenes a stream of async flips.

Oh, and needs_async_flip_vtd_wa() should probably also use
the bitmask rather than looking at uapi.async_flip.

>  	}
>  
>  	if (intel_crtc_needs_vblank_work(new_crtc_state))
> -- 
> 2.43.0

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 1/4] drm/i915/psr: Add helper for checking if vblank evasion is needed by PSR
  2025-11-25  6:32 ` [PATCH 1/4] drm/i915/psr: Add helper for checking if vblank evasion is needed by PSR Jouni Högander
  2025-11-25 10:19   ` Jani Nikula
@ 2025-11-26 13:32   ` kernel test robot
  1 sibling, 0 replies; 16+ messages in thread
From: kernel test robot @ 2025-11-26 13:32 UTC (permalink / raw)
  To: Jouni Högander, intel-gfx, intel-xe
  Cc: llvm, oe-kbuild-all, Jouni Högander

Hi Jouni,

kernel test robot noticed the following build warnings:

[auto build test WARNING on next-20251124]
[cannot apply to drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip v6.18-rc7 v6.18-rc6 v6.18-rc5 linus/master v6.18-rc7]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Jouni-H-gander/drm-i915-psr-Add-helper-for-checking-if-vblank-evasion-is-needed-by-PSR/20251125-143352
base:   next-20251124
patch link:    https://lore.kernel.org/r/20251125063253.328023-2-jouni.hogander%40intel.com
patch subject: [PATCH 1/4] drm/i915/psr: Add helper for checking if vblank evasion is needed by PSR
config: x86_64-randconfig-003-20251126 (https://download.01.org/0day-ci/archive/20251126/202511262156.H5YJpnc5-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251126/202511262156.H5YJpnc5-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202511262156.H5YJpnc5-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/i915/display/intel_psr.c:4550:2: warning: variable 'intel_dp' is used uninitialized whenever 'for' loop exits because its condition is false [-Wsometimes-uninitialized]
    4550 |         for_each_intel_encoder_mask_with_psr(display->drm, encoder,
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    4551 |                                              crtc_state->uapi.encoder_mask) {
         |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_display.h:271:2: note: expanded from macro 'for_each_intel_encoder_mask_with_psr'
     271 |         list_for_each_entry((intel_encoder), &(dev)->mode_config.encoder_list, base.head) \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:783:7: note: expanded from macro 'list_for_each_entry'
     783 |              !list_entry_is_head(pos, head, member);                    \
         |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c:4556:9: note: uninitialized use occurs here
    4556 |         return intel_dp->psr.psr2_sel_fetch_enabled;
         |                ^~~~~~~~
   drivers/gpu/drm/i915/display/intel_psr.c:4550:2: note: remove the condition if it is always true
    4550 |         for_each_intel_encoder_mask_with_psr(display->drm, encoder,
         |         ^
   drivers/gpu/drm/i915/display/intel_display.h:271:2: note: expanded from macro 'for_each_intel_encoder_mask_with_psr'
     271 |         list_for_each_entry((intel_encoder), &(dev)->mode_config.encoder_list, base.head) \
         |         ^
   include/linux/list.h:783:7: note: expanded from macro 'list_for_each_entry'
     783 |              !list_entry_is_head(pos, head, member);                    \
         |              ^
   drivers/gpu/drm/i915/display/intel_psr.c:4548:27: note: initialize the variable 'intel_dp' to silence this warning
    4548 |         struct intel_dp *intel_dp;
         |                                  ^
         |                                   = NULL
   1 warning generated.


vim +4550 drivers/gpu/drm/i915/display/intel_psr.c

  4543	
  4544	bool intel_psr_needs_evasion(const struct intel_crtc_state *crtc_state)
  4545	{
  4546		struct intel_display *display = to_intel_display(crtc_state);
  4547		struct intel_encoder *encoder;
  4548		struct intel_dp *intel_dp;
  4549	
> 4550		for_each_intel_encoder_mask_with_psr(display->drm, encoder,

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* Re: [PATCH 2/4] drm/i915/psr: Perform vblank evasion on async flip as well for PSR
  2025-11-25 21:19   ` Ville Syrjälä
@ 2025-11-27 10:57     ` Hogander, Jouni
  2025-11-27 11:36       ` Hogander, Jouni
  2025-11-27 22:02       ` Ville Syrjälä
  0 siblings, 2 replies; 16+ messages in thread
From: Hogander, Jouni @ 2025-11-27 10:57 UTC (permalink / raw)
  To: ville.syrjala@linux.intel.com
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org

On Tue, 2025-11-25 at 23:19 +0200, Ville Syrjälä wrote:
> On Tue, Nov 25, 2025 at 08:32:51AM +0200, Jouni Högander wrote:
> > PSR2_MAN_TRK_CTL[SF Continuous full frame] is sampled on the rising
> > edge of
> > delayed vblank. SW must ensure this bit is not changing around
> > that. Due to
> > this PSR2 Selective Fetch needs vblank evasion.
> > 
> > Currently vblank evasion is not done on async flip. Perform it in
> > case
> > required by PSR.
> > 
> > Bspec: 50424
> > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_crtc.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c
> > b/drivers/gpu/drm/i915/display/intel_crtc.c
> > index 153ff4b4b52c..42c4ce07f8c0 100644
> > --- a/drivers/gpu/drm/i915/display/intel_crtc.c
> > +++ b/drivers/gpu/drm/i915/display/intel_crtc.c
> > @@ -433,7 +433,8 @@ static bool intel_crtc_needs_vblank_work(const
> > struct intel_crtc_state *crtc_sta
> >  		(intel_crtc_needs_color_update(crtc_state) &&
> >  		 !HAS_DOUBLE_BUFFERED_LUT(display)) &&
> >  		!intel_color_uses_dsb(crtc_state) &&
> > -		!crtc_state->use_dsb;
> > +		!crtc_state->use_dsb &&
> > +		!crtc_state->do_async_flip;
> >  }
> >  
> >  static void intel_crtc_vblank_work(struct kthread_work *base)
> > @@ -539,7 +540,8 @@ void intel_pipe_update_start(struct
> > intel_atomic_state *state,
> >  	if (new_crtc_state->do_async_flip) {
> >  		intel_crtc_prepare_vblank_event(new_crtc_state,
> >  						&crtc-
> > >flip_done_event);
> > -		return;
> > +		if (!intel_psr_needs_evasion(new_crtc_state))
> > +			return;
> 
> I don't think we want hack this into such low level code. We
> anyway convert the first async flip to a sync flip (see
> intel_plane_do_async_flip()), so that's when you should disable
> selective fetch, and keep it disabled afterwards as long as
> async flips are being requested for the plane by userspace.

Isn't async flip always initiated by user space (uapi.async_flip == 1)?
Are you concerned on this sequence:

1. async flip on primary plane (full frame update)
2. normal flip on secondary plane (selective fetch/update)
3. async flip on primary plane (full frame update)

Is there some problem in performing selective fetch/update on step 2?
Please note that we are not disabling PSR2 at step 2. We are just
performing 1 selective fetch/update in between there.

BR,

Jouni Högander

> 
> The problem is that uapi.async_flip is ephemeral, so you can't
> just check for that. I think what we need is a way to track
> which planes have been requested to do async flips. We almost 
> have that with the async_flip_planes bitmask, and I think we
> can make it do exactly what we want by just dropping the
> need_async_flip_toggle_wa check from 
> intel_plane_atomic_calc_changes(). That should be safe since
> all places that currently use the bitmask also check for
> need_async_flip_toggle_wa.
> 
> The alternative would be to track the uapi async flip requests
> in a separate bitmask. That might be a bit more optimal in that
> we wouldn't clear the bit from there when some other plane
> or the pipe itself needs a sync update while the plane is already
> performing async flips. But not having that just means you'll
> end up toggling selective fetch back on and the off again when
> a sync update intervenes a stream of async flips.
> 
> Oh, and needs_async_flip_vtd_wa() should probably also use
> the bitmask rather than looking at uapi.async_flip.
> 
> >  	}
> >  
> >  	if (intel_crtc_needs_vblank_work(new_crtc_state))
> > -- 
> > 2.43.0
> 


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

* Re: [PATCH 2/4] drm/i915/psr: Perform vblank evasion on async flip as well for PSR
  2025-11-27 10:57     ` Hogander, Jouni
@ 2025-11-27 11:36       ` Hogander, Jouni
  2025-11-27 22:02       ` Ville Syrjälä
  1 sibling, 0 replies; 16+ messages in thread
From: Hogander, Jouni @ 2025-11-27 11:36 UTC (permalink / raw)
  To: ville.syrjala@linux.intel.com
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org

On Thu, 2025-11-27 at 12:57 +0200, Hogander, Jouni wrote:
> On Tue, 2025-11-25 at 23:19 +0200, Ville Syrjälä wrote:
> > On Tue, Nov 25, 2025 at 08:32:51AM +0200, Jouni Högander wrote:
> > > PSR2_MAN_TRK_CTL[SF Continuous full frame] is sampled on the
> > > rising
> > > edge of
> > > delayed vblank. SW must ensure this bit is not changing around
> > > that. Due to
> > > this PSR2 Selective Fetch needs vblank evasion.
> > > 
> > > Currently vblank evasion is not done on async flip. Perform it in
> > > case
> > > required by PSR.
> > > 
> > > Bspec: 50424
> > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_crtc.c | 6 ++++--
> > >  1 file changed, 4 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c
> > > b/drivers/gpu/drm/i915/display/intel_crtc.c
> > > index 153ff4b4b52c..42c4ce07f8c0 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_crtc.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_crtc.c
> > > @@ -433,7 +433,8 @@ static bool
> > > intel_crtc_needs_vblank_work(const
> > > struct intel_crtc_state *crtc_sta
> > >  		(intel_crtc_needs_color_update(crtc_state) &&
> > >  		 !HAS_DOUBLE_BUFFERED_LUT(display)) &&
> > >  		!intel_color_uses_dsb(crtc_state) &&
> > > -		!crtc_state->use_dsb;
> > > +		!crtc_state->use_dsb &&
> > > +		!crtc_state->do_async_flip;
> > >  }
> > >  
> > >  static void intel_crtc_vblank_work(struct kthread_work *base)
> > > @@ -539,7 +540,8 @@ void intel_pipe_update_start(struct
> > > intel_atomic_state *state,
> > >  	if (new_crtc_state->do_async_flip) {
> > >  		intel_crtc_prepare_vblank_event(new_crtc_state,
> > >  						&crtc-
> > > > flip_done_event);
> > > -		return;
> > > +		if (!intel_psr_needs_evasion(new_crtc_state))
> > > +			return;
> > 
> > I don't think we want hack this into such low level code. We
> > anyway convert the first async flip to a sync flip (see
> > intel_plane_do_async_flip()), so that's when you should disable
> > selective fetch, and keep it disabled afterwards as long as
> > async flips are being requested for the plane by userspace.
> 
> Isn't async flip always initiated by user space (uapi.async_flip ==
> 1)?
> Are you concerned on this sequence:
> 
> 1. async flip on primary plane (full frame update)
> 2. normal flip on secondary plane (selective fetch/update)
> 3. async flip on primary plane (full frame update)
> 
> Is there some problem in performing selective fetch/update on step 2?
> Please note that we are not disabling PSR2 at step 2. 
> We are just performing 1 selective fetch/update in between there.

I should have said "we are not disabling PSR2 at step 1 and 3. We are
just performing full frame updates there and one selective fetch/update
in between at step2."

BR,

Jouni Högander

> 
> BR,
> 
> Jouni Högander
> 
> > 
> > The problem is that uapi.async_flip is ephemeral, so you can't
> > just check for that. I think what we need is a way to track
> > which planes have been requested to do async flips. We almost 
> > have that with the async_flip_planes bitmask, and I think we
> > can make it do exactly what we want by just dropping the
> > need_async_flip_toggle_wa check from 
> > intel_plane_atomic_calc_changes(). That should be safe since
> > all places that currently use the bitmask also check for
> > need_async_flip_toggle_wa.
> > 
> > The alternative would be to track the uapi async flip requests
> > in a separate bitmask. That might be a bit more optimal in that
> > we wouldn't clear the bit from there when some other plane
> > or the pipe itself needs a sync update while the plane is already
> > performing async flips. But not having that just means you'll
> > end up toggling selective fetch back on and the off again when
> > a sync update intervenes a stream of async flips.
> > 
> > Oh, and needs_async_flip_vtd_wa() should probably also use
> > the bitmask rather than looking at uapi.async_flip.
> > 
> > >  	}
> > >  
> > >  	if (intel_crtc_needs_vblank_work(new_crtc_state))
> > > -- 
> > > 2.43.0
> > 
> 


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

* Re: [PATCH 2/4] drm/i915/psr: Perform vblank evasion on async flip as well for PSR
  2025-11-27 10:57     ` Hogander, Jouni
  2025-11-27 11:36       ` Hogander, Jouni
@ 2025-11-27 22:02       ` Ville Syrjälä
  2025-11-28 14:40         ` Hogander, Jouni
  1 sibling, 1 reply; 16+ messages in thread
From: Ville Syrjälä @ 2025-11-27 22:02 UTC (permalink / raw)
  To: Hogander, Jouni
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org

On Thu, Nov 27, 2025 at 10:57:09AM +0000, Hogander, Jouni wrote:
> On Tue, 2025-11-25 at 23:19 +0200, Ville Syrjälä wrote:
> > On Tue, Nov 25, 2025 at 08:32:51AM +0200, Jouni Högander wrote:
> > > PSR2_MAN_TRK_CTL[SF Continuous full frame] is sampled on the rising
> > > edge of
> > > delayed vblank. SW must ensure this bit is not changing around
> > > that. Due to
> > > this PSR2 Selective Fetch needs vblank evasion.
> > > 
> > > Currently vblank evasion is not done on async flip. Perform it in
> > > case
> > > required by PSR.
> > > 
> > > Bspec: 50424
> > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_crtc.c | 6 ++++--
> > >  1 file changed, 4 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c
> > > b/drivers/gpu/drm/i915/display/intel_crtc.c
> > > index 153ff4b4b52c..42c4ce07f8c0 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_crtc.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_crtc.c
> > > @@ -433,7 +433,8 @@ static bool intel_crtc_needs_vblank_work(const
> > > struct intel_crtc_state *crtc_sta
> > >  		(intel_crtc_needs_color_update(crtc_state) &&
> > >  		 !HAS_DOUBLE_BUFFERED_LUT(display)) &&
> > >  		!intel_color_uses_dsb(crtc_state) &&
> > > -		!crtc_state->use_dsb;
> > > +		!crtc_state->use_dsb &&
> > > +		!crtc_state->do_async_flip;
> > >  }
> > >  
> > >  static void intel_crtc_vblank_work(struct kthread_work *base)
> > > @@ -539,7 +540,8 @@ void intel_pipe_update_start(struct
> > > intel_atomic_state *state,
> > >  	if (new_crtc_state->do_async_flip) {
> > >  		intel_crtc_prepare_vblank_event(new_crtc_state,
> > >  						&crtc-
> > > >flip_done_event);
> > > -		return;
> > > +		if (!intel_psr_needs_evasion(new_crtc_state))
> > > +			return;
> > 
> > I don't think we want hack this into such low level code. We
> > anyway convert the first async flip to a sync flip (see
> > intel_plane_do_async_flip()), so that's when you should disable
> > selective fetch, and keep it disabled afterwards as long as
> > async flips are being requested for the plane by userspace.
> 
> Isn't async flip always initiated by user space (uapi.async_flip == 1)?
> Are you concerned on this sequence:
> 
> 1. async flip on primary plane (full frame update)
> 2. normal flip on secondary plane (selective fetch/update)
> 3. async flip on primary plane (full frame update)
> 
> Is there some problem in performing selective fetch/update on step 2?
> Please note that we are not disabling PSR2 at step 2. We are just
> performing 1 selective fetch/update in between there.

That selective update may pull in planes that are doing async flips
currently, and I'm certain we don't have the code to update the state
tracking to indicate that they're no longer in, what I like to think
as, "async flip mode". I suppose the distinction might not matter
too much for these platforms (assuming has_sel_fetch and
need_async_flip_toggle_wa don't overlap), but we should still keep
the code consistent to make it easier to understand.

I suppose you could handle it correctly by clearing async_flip_planes
in appropriate places, but I still don't like adding yet another
special case to the commit codepaths. I think that code is
complex enough already.

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 2/4] drm/i915/psr: Perform vblank evasion on async flip as well for PSR
  2025-11-27 22:02       ` Ville Syrjälä
@ 2025-11-28 14:40         ` Hogander, Jouni
  2025-12-01 11:36           ` Hogander, Jouni
  0 siblings, 1 reply; 16+ messages in thread
From: Hogander, Jouni @ 2025-11-28 14:40 UTC (permalink / raw)
  To: ville.syrjala@linux.intel.com
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org

On Fri, 2025-11-28 at 00:02 +0200, Ville Syrjälä wrote:
> On Thu, Nov 27, 2025 at 10:57:09AM +0000, Hogander, Jouni wrote:
> > On Tue, 2025-11-25 at 23:19 +0200, Ville Syrjälä wrote:
> > > On Tue, Nov 25, 2025 at 08:32:51AM +0200, Jouni Högander wrote:
> > > > PSR2_MAN_TRK_CTL[SF Continuous full frame] is sampled on the
> > > > rising
> > > > edge of
> > > > delayed vblank. SW must ensure this bit is not changing around
> > > > that. Due to
> > > > this PSR2 Selective Fetch needs vblank evasion.
> > > > 
> > > > Currently vblank evasion is not done on async flip. Perform it
> > > > in
> > > > case
> > > > required by PSR.
> > > > 
> > > > Bspec: 50424
> > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/display/intel_crtc.c | 6 ++++--
> > > >  1 file changed, 4 insertions(+), 2 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c
> > > > b/drivers/gpu/drm/i915/display/intel_crtc.c
> > > > index 153ff4b4b52c..42c4ce07f8c0 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_crtc.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_crtc.c
> > > > @@ -433,7 +433,8 @@ static bool
> > > > intel_crtc_needs_vblank_work(const
> > > > struct intel_crtc_state *crtc_sta
> > > >  		(intel_crtc_needs_color_update(crtc_state) &&
> > > >  		 !HAS_DOUBLE_BUFFERED_LUT(display)) &&
> > > >  		!intel_color_uses_dsb(crtc_state) &&
> > > > -		!crtc_state->use_dsb;
> > > > +		!crtc_state->use_dsb &&
> > > > +		!crtc_state->do_async_flip;
> > > >  }
> > > >  
> > > >  static void intel_crtc_vblank_work(struct kthread_work *base)
> > > > @@ -539,7 +540,8 @@ void intel_pipe_update_start(struct
> > > > intel_atomic_state *state,
> > > >  	if (new_crtc_state->do_async_flip) {
> > > >  		intel_crtc_prepare_vblank_event(new_crtc_state
> > > > ,
> > > >  						&crtc-
> > > > > flip_done_event);
> > > > -		return;
> > > > +		if (!intel_psr_needs_evasion(new_crtc_state))
> > > > +			return;
> > > 
> > > I don't think we want hack this into such low level code. We
> > > anyway convert the first async flip to a sync flip (see
> > > intel_plane_do_async_flip()), so that's when you should disable
> > > selective fetch, and keep it disabled afterwards as long as
> > > async flips are being requested for the plane by userspace.
> > 
> > Isn't async flip always initiated by user space (uapi.async_flip ==
> > 1)?
> > Are you concerned on this sequence:
> > 
> > 1. async flip on primary plane (full frame update)
> > 2. normal flip on secondary plane (selective fetch/update)
> > 3. async flip on primary plane (full frame update)
> > 
> > Is there some problem in performing selective fetch/update on step
> > 2?
> > Please note that we are not disabling PSR2 at step 2. We are just
> > performing 1 selective fetch/update in between there.
> 
> That selective update may pull in planes that are doing async flips
> currently, and I'm certain we don't have the code to update the state
> tracking to indicate that they're no longer in, what I like to think
> as, "async flip mode".

Ok. You earlier mentioned uapi.async_flip being ephemeral. So checking
both old_crtc_state->uapi.async_flip and new_crtc_state-
>uapi.async_flip is not possible? If both are false then we would know
there is at least one non-async update after possible async update so
there can't be pending async flip.

BR,

Jouni Högander

> I suppose the distinction might not matter
> too much for these platforms (assuming has_sel_fetch and
> need_async_flip_toggle_wa don't overlap), but we should still keep
> the code consistent to make it easier to understand.
> 
> I suppose you could handle it correctly by clearing async_flip_planes
> in appropriate places, but I still don't like adding yet another
> special case to the commit codepaths. I think that code is
> complex enough already.
> 


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

* Re: [PATCH 2/4] drm/i915/psr: Perform vblank evasion on async flip as well for PSR
  2025-11-28 14:40         ` Hogander, Jouni
@ 2025-12-01 11:36           ` Hogander, Jouni
  0 siblings, 0 replies; 16+ messages in thread
From: Hogander, Jouni @ 2025-12-01 11:36 UTC (permalink / raw)
  To: ville.syrjala@linux.intel.com
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org

On Fri, 2025-11-28 at 16:40 +0200, Hogander, Jouni wrote:
> On Fri, 2025-11-28 at 00:02 +0200, Ville Syrjälä wrote:
> > On Thu, Nov 27, 2025 at 10:57:09AM +0000, Hogander, Jouni wrote:
> > > On Tue, 2025-11-25 at 23:19 +0200, Ville Syrjälä wrote:
> > > > On Tue, Nov 25, 2025 at 08:32:51AM +0200, Jouni Högander wrote:
> > > > > PSR2_MAN_TRK_CTL[SF Continuous full frame] is sampled on the
> > > > > rising
> > > > > edge of
> > > > > delayed vblank. SW must ensure this bit is not changing
> > > > > around
> > > > > that. Due to
> > > > > this PSR2 Selective Fetch needs vblank evasion.
> > > > > 
> > > > > Currently vblank evasion is not done on async flip. Perform
> > > > > it
> > > > > in
> > > > > case
> > > > > required by PSR.
> > > > > 
> > > > > Bspec: 50424
> > > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > > > > ---
> > > > >  drivers/gpu/drm/i915/display/intel_crtc.c | 6 ++++--
> > > > >  1 file changed, 4 insertions(+), 2 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c
> > > > > b/drivers/gpu/drm/i915/display/intel_crtc.c
> > > > > index 153ff4b4b52c..42c4ce07f8c0 100644
> > > > > --- a/drivers/gpu/drm/i915/display/intel_crtc.c
> > > > > +++ b/drivers/gpu/drm/i915/display/intel_crtc.c
> > > > > @@ -433,7 +433,8 @@ static bool
> > > > > intel_crtc_needs_vblank_work(const
> > > > > struct intel_crtc_state *crtc_sta
> > > > >  		(intel_crtc_needs_color_update(crtc_state)
> > > > > &&
> > > > >  		 !HAS_DOUBLE_BUFFERED_LUT(display)) &&
> > > > >  		!intel_color_uses_dsb(crtc_state) &&
> > > > > -		!crtc_state->use_dsb;
> > > > > +		!crtc_state->use_dsb &&
> > > > > +		!crtc_state->do_async_flip;
> > > > >  }
> > > > >  
> > > > >  static void intel_crtc_vblank_work(struct kthread_work
> > > > > *base)
> > > > > @@ -539,7 +540,8 @@ void intel_pipe_update_start(struct
> > > > > intel_atomic_state *state,
> > > > >  	if (new_crtc_state->do_async_flip) {
> > > > >  		intel_crtc_prepare_vblank_event(new_crtc_sta
> > > > > te
> > > > > ,
> > > > >  						&crtc-
> > > > > > flip_done_event);
> > > > > -		return;
> > > > > +		if
> > > > > (!intel_psr_needs_evasion(new_crtc_state))
> > > > > +			return;
> > > > 
> > > > I don't think we want hack this into such low level code. We
> > > > anyway convert the first async flip to a sync flip (see
> > > > intel_plane_do_async_flip()), so that's when you should disable
> > > > selective fetch, and keep it disabled afterwards as long as
> > > > async flips are being requested for the plane by userspace.
> > > 
> > > Isn't async flip always initiated by user space (uapi.async_flip
> > > ==
> > > 1)?
> > > Are you concerned on this sequence:
> > > 
> > > 1. async flip on primary plane (full frame update)
> > > 2. normal flip on secondary plane (selective fetch/update)
> > > 3. async flip on primary plane (full frame update)
> > > 
> > > Is there some problem in performing selective fetch/update on
> > > step
> > > 2?
> > > Please note that we are not disabling PSR2 at step 2. We are just
> > > performing 1 selective fetch/update in between there.
> > 
> > That selective update may pull in planes that are doing async flips
> > currently, and I'm certain we don't have the code to update the
> > state
> > tracking to indicate that they're no longer in, what I like to
> > think
> > as, "async flip mode".
> 
> Ok. You earlier mentioned uapi.async_flip being ephemeral. So
> checking
> both old_crtc_state->uapi.async_flip and new_crtc_state-
> > uapi.async_flip is not possible? If both are false then we would
> > know
> there is at least one non-async update after possible async update so
> there can't be pending async flip.

Sent out now version using crtc_state->async_flip_planes.

BR,

Jouni Högander

> 
> BR,
> 
> Jouni Högander
> 
> > I suppose the distinction might not matter
> > too much for these platforms (assuming has_sel_fetch and
> > need_async_flip_toggle_wa don't overlap), but we should still keep
> > the code consistent to make it easier to understand.
> > 
> > I suppose you could handle it correctly by clearing
> > async_flip_planes
> > in appropriate places, but I still don't like adding yet another
> > special case to the commit codepaths. I think that code is
> > complex enough already.
> > 
> 


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

end of thread, other threads:[~2025-12-01 11:36 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-25  6:32 [PATCH 0/4] Selective Fetch and async flip Jouni Högander
2025-11-25  6:32 ` [PATCH 1/4] drm/i915/psr: Add helper for checking if vblank evasion is needed by PSR Jouni Högander
2025-11-25 10:19   ` Jani Nikula
2025-11-26 13:32   ` kernel test robot
2025-11-25  6:32 ` [PATCH 2/4] drm/i915/psr: Perform vblank evasion on async flip as well for PSR Jouni Högander
2025-11-25 21:19   ` Ville Syrjälä
2025-11-27 10:57     ` Hogander, Jouni
2025-11-27 11:36       ` Hogander, Jouni
2025-11-27 22:02       ` Ville Syrjälä
2025-11-28 14:40         ` Hogander, Jouni
2025-12-01 11:36           ` Hogander, Jouni
2025-11-25  6:32 ` [PATCH 3/4] drm/i915/psr: Perform full frame update on async flip Jouni Högander
2025-11-25  6:32 ` [PATCH 4/4] drm/i915/psr: Allow async flip when Selective Fetch enabled Jouni Högander
2025-11-25 10:39 ` ✓ CI.KUnit: success for Selective Fetch and async flip Patchwork
2025-11-25 10:55 ` ✗ CI.checksparse: warning " Patchwork
2025-11-25 14:23 ` ✗ 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