* [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
2026-04-22 7:37 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
@ 2026-04-22 7:37 ` Nemesa Garg
2026-04-22 9:46 ` Ville Syrjälä
0 siblings, 1 reply; 22+ messages in thread
From: Nemesa Garg @ 2026-04-22 7:37 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Nemesa Garg
In joiner mode, secondary cursor commits may still be running
even when the primary cursor commit is done.
Check secondary cursor commit status before taking the fast path.
If any secondary commit is still pending, fallback to slow path.
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 29 +++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 18d1014de361..609915c798ba 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -13,6 +13,7 @@
#include <drm/drm_vblank.h>
#include "intel_atomic.h"
+#include "intel_crtc.h"
#include "intel_cursor.h"
#include "intel_cursor_regs.h"
#include "intel_de.h"
@@ -797,6 +798,30 @@ void intel_cursor_unpin_work(struct kthread_work *base)
intel_plane_destroy_state(&plane->base, &plane_state->uapi);
}
+static bool
+intel_cursor_joiner_commits_idle(struct intel_display *display,
+ const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *secondary_crtc;
+ u8 secondary_pipes = intel_crtc_joiner_secondary_pipes(crtc_state);
+
+ if (!secondary_pipes)
+ return true;
+
+ for_each_intel_crtc_in_pipe_mask(display->drm, secondary_crtc, secondary_pipes) {
+ struct intel_plane *secondary_plane =
+ intel_crtc_get_plane(secondary_crtc, PLANE_CURSOR);
+ struct intel_plane_state *secondary_plane_state =
+ to_intel_plane_state(secondary_plane->base.state);
+
+ if (secondary_plane_state->uapi.commit &&
+ !try_wait_for_completion(&secondary_plane_state->uapi.commit->hw_done))
+ return false;
+ }
+
+ return true;
+}
+
static int
intel_legacy_cursor_update(struct drm_plane *_plane,
struct drm_crtc *_crtc,
@@ -843,6 +868,10 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
!try_wait_for_completion(&old_plane_state->uapi.commit->hw_done))
goto slow;
+ /* For joiner case also do the same thing as above */
+ if (!intel_cursor_joiner_commits_idle(display, crtc_state))
+ goto slow;
+
/*
* If any parameters change that may affect watermarks,
* take the slowpath. Only changing fb or position should be
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
2026-04-22 7:37 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
@ 2026-04-22 9:46 ` Ville Syrjälä
2026-04-27 6:14 ` Garg, Nemesa
0 siblings, 1 reply; 22+ messages in thread
From: Ville Syrjälä @ 2026-04-22 9:46 UTC (permalink / raw)
To: Nemesa Garg; +Cc: intel-gfx, intel-xe
On Wed, Apr 22, 2026 at 01:07:17PM +0530, Nemesa Garg wrote:
> In joiner mode, secondary cursor commits may still be running
> even when the primary cursor commit is done.
> Check secondary cursor commit status before taking the fast path.
> If any secondary commit is still pending, fallback to slow path.
>
> Assisted-by: Claude:claude-sonnet-4.6
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_cursor.c | 29 +++++++++++++++++++++
> 1 file changed, 29 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
> index 18d1014de361..609915c798ba 100644
> --- a/drivers/gpu/drm/i915/display/intel_cursor.c
> +++ b/drivers/gpu/drm/i915/display/intel_cursor.c
> @@ -13,6 +13,7 @@
> #include <drm/drm_vblank.h>
>
> #include "intel_atomic.h"
> +#include "intel_crtc.h"
> #include "intel_cursor.h"
> #include "intel_cursor_regs.h"
> #include "intel_de.h"
> @@ -797,6 +798,30 @@ void intel_cursor_unpin_work(struct kthread_work *base)
> intel_plane_destroy_state(&plane->base, &plane_state->uapi);
> }
>
> +static bool
> +intel_cursor_joiner_commits_idle(struct intel_display *display,
> + const struct intel_crtc_state *crtc_state)
> +{
> + struct intel_crtc *secondary_crtc;
> + u8 secondary_pipes = intel_crtc_joiner_secondary_pipes(crtc_state);
> +
> + if (!secondary_pipes)
> + return true;
> +
> + for_each_intel_crtc_in_pipe_mask(display->drm, secondary_crtc, secondary_pipes) {
You want to just iterate over intel_crtc_joined_pipe_mask() everywhere.
That way the primary and secondary pipes all just get handled in exactly
the same way.
AFAICS you've completely skipped over proper locking in this series.
> + struct intel_plane *secondary_plane =
> + intel_crtc_get_plane(secondary_crtc, PLANE_CURSOR);
> + struct intel_plane_state *secondary_plane_state =
> + to_intel_plane_state(secondary_plane->base.state);
> +
> + if (secondary_plane_state->uapi.commit &&
> + !try_wait_for_completion(&secondary_plane_state->uapi.commit->hw_done))
> + return false;
> + }
> +
> + return true;
> +}
> +
> static int
> intel_legacy_cursor_update(struct drm_plane *_plane,
> struct drm_crtc *_crtc,
> @@ -843,6 +868,10 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
> !try_wait_for_completion(&old_plane_state->uapi.commit->hw_done))
> goto slow;
>
> + /* For joiner case also do the same thing as above */
> + if (!intel_cursor_joiner_commits_idle(display, crtc_state))
> + goto slow;
> +
> /*
> * If any parameters change that may affect watermarks,
> * take the slowpath. Only changing fb or position should be
> --
> 2.25.1
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
2026-04-22 9:46 ` Ville Syrjälä
@ 2026-04-27 6:14 ` Garg, Nemesa
0 siblings, 0 replies; 22+ messages in thread
From: Garg, Nemesa @ 2026-04-27 6:14 UTC (permalink / raw)
To: Ville Syrjälä
Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
> -----Original Message-----
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Sent: Wednesday, April 22, 2026 3:16 PM
> To: Garg, Nemesa <nemesa.garg@intel.com>
> Cc: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Subject: Re: [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
>
> On Wed, Apr 22, 2026 at 01:07:17PM +0530, Nemesa Garg wrote:
> > In joiner mode, secondary cursor commits may still be running even
> > when the primary cursor commit is done.
> > Check secondary cursor commit status before taking the fast path.
> > If any secondary commit is still pending, fallback to slow path.
> >
> > Assisted-by: Claude:claude-sonnet-4.6
> > Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_cursor.c | 29
> > +++++++++++++++++++++
> > 1 file changed, 29 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c
> > b/drivers/gpu/drm/i915/display/intel_cursor.c
> > index 18d1014de361..609915c798ba 100644
> > --- a/drivers/gpu/drm/i915/display/intel_cursor.c
> > +++ b/drivers/gpu/drm/i915/display/intel_cursor.c
> > @@ -13,6 +13,7 @@
> > #include <drm/drm_vblank.h>
> >
> > #include "intel_atomic.h"
> > +#include "intel_crtc.h"
> > #include "intel_cursor.h"
> > #include "intel_cursor_regs.h"
> > #include "intel_de.h"
> > @@ -797,6 +798,30 @@ void intel_cursor_unpin_work(struct kthread_work
> *base)
> > intel_plane_destroy_state(&plane->base, &plane_state->uapi); }
> >
> > +static bool
> > +intel_cursor_joiner_commits_idle(struct intel_display *display,
> > + const struct intel_crtc_state *crtc_state) {
> > + struct intel_crtc *secondary_crtc;
> > + u8 secondary_pipes = intel_crtc_joiner_secondary_pipes(crtc_state);
> > +
> > + if (!secondary_pipes)
> > + return true;
> > +
> > + for_each_intel_crtc_in_pipe_mask(display->drm, secondary_crtc,
> > +secondary_pipes) {
>
> You want to just iterate over intel_crtc_joined_pipe_mask() everywhere.
> That way the primary and secondary pipes all just get handled in exactly the
> same way.
>
> AFAICS you've completely skipped over proper locking in this series.
>
Ack.
Thanks and Regards,
Nemesa
> > + struct intel_plane *secondary_plane =
> > + intel_crtc_get_plane(secondary_crtc,
> PLANE_CURSOR);
> > + struct intel_plane_state *secondary_plane_state =
> > +
> to_intel_plane_state(secondary_plane->base.state);
> > +
> > + if (secondary_plane_state->uapi.commit &&
> > + !try_wait_for_completion(&secondary_plane_state-
> >uapi.commit->hw_done))
> > + return false;
> > + }
> > +
> > + return true;
> > +}
> > +
> > static int
> > intel_legacy_cursor_update(struct drm_plane *_plane,
> > struct drm_crtc *_crtc,
> > @@ -843,6 +868,10 @@ intel_legacy_cursor_update(struct drm_plane
> *_plane,
> > !try_wait_for_completion(&old_plane_state->uapi.commit-
> >hw_done))
> > goto slow;
> >
> > + /* For joiner case also do the same thing as above */
> > + if (!intel_cursor_joiner_commits_idle(display, crtc_state))
> > + goto slow;
> > +
> > /*
> > * If any parameters change that may affect watermarks,
> > * take the slowpath. Only changing fb or position should be
> > --
> > 2.25.1
>
> --
> Ville Syrjälä
> Intel
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
2026-04-28 14:16 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
@ 2026-04-28 14:16 ` Nemesa Garg
0 siblings, 0 replies; 22+ messages in thread
From: Nemesa Garg @ 2026-04-28 14:16 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Nemesa Garg
In joiner mode, secondary cursor commits may still be running
even when the primary cursor commit is done.
Check all joined cursor commit status before taking the fast path.
If any commit is still pending, fallback to slow path.
v2: Use intel_crtc_joined_pipe_mask(). [Ville]
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 26 +++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 18d1014de361..f4db795448bf 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -13,6 +13,7 @@
#include <drm/drm_vblank.h>
#include "intel_atomic.h"
+#include "intel_crtc.h"
#include "intel_cursor.h"
#include "intel_cursor_regs.h"
#include "intel_de.h"
@@ -797,6 +798,27 @@ void intel_cursor_unpin_work(struct kthread_work *base)
intel_plane_destroy_state(&plane->base, &plane_state->uapi);
}
+static bool
+intel_cursor_joiner_commits_idle(struct intel_display *display,
+ const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *pipe_crtc;
+
+ for_each_intel_crtc_in_pipe_mask(display->drm, pipe_crtc,
+ intel_crtc_joined_pipe_mask(crtc_state)) {
+ struct intel_plane *pipe_plane =
+ intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
+ struct intel_plane_state *pipe_plane_state =
+ to_intel_plane_state(pipe_plane->base.state);
+
+ if (pipe_plane_state->uapi.commit &&
+ !try_wait_for_completion(&pipe_plane_state->uapi.commit->hw_done))
+ return false;
+ }
+
+ return true;
+}
+
static int
intel_legacy_cursor_update(struct drm_plane *_plane,
struct drm_crtc *_crtc,
@@ -843,6 +865,10 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
!try_wait_for_completion(&old_plane_state->uapi.commit->hw_done))
goto slow;
+ /* Check all joined pipes for pending commits */
+ if (!intel_cursor_joiner_commits_idle(display, crtc_state))
+ goto slow;
+
/*
* If any parameters change that may affect watermarks,
* take the slowpath. Only changing fb or position should be
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
2026-06-08 6:26 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
@ 2026-06-08 6:26 ` Nemesa Garg
2026-07-01 16:25 ` Borah, Chaitanya Kumar
0 siblings, 1 reply; 22+ messages in thread
From: Nemesa Garg @ 2026-06-08 6:26 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Nemesa Garg
In joiner mode, secondary cursor commits may still be running
even when the primary cursor commit is done. Walking the secondary
pipes also requires holding the secondary planes modeset locks.
Add intel_cursor_lock_joined_planes() to acquire modeset locks
for all secondary cursor planes. Check all joined cursor commit
status before taking the fast path. If any commit is still pending,
fallback to slow path.
v2: Use intel_crtc_joined_pipe_mask(). [Ville]
v3: Lock secondary cursor CRTCs and planes. [sashiko]
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 63 +++++++++++++++++++++
1 file changed, 63 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 88384dea868b..f8b24865c93a 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -13,6 +13,7 @@
#include <drm/drm_vblank.h>
#include "intel_atomic.h"
+#include "intel_crtc.h"
#include "intel_cursor.h"
#include "intel_cursor_regs.h"
#include "intel_de.h"
@@ -796,6 +797,58 @@ void intel_cursor_unpin_work(struct kthread_work *base)
intel_plane_destroy_state(&plane->base, &plane_state->uapi);
}
+static int intel_cursor_lock_joined_planes(struct intel_display *display,
+ const struct intel_crtc_state *crtc_state,
+ struct intel_plane *primary_plane,
+ struct drm_modeset_acquire_ctx *ctx)
+{
+ struct intel_crtc *pipe_crtc;
+ int ret;
+
+ for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
+ intel_crtc_joined_pipe_mask(crtc_state)) {
+ struct intel_plane *pipe_plane =
+ intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
+
+ if (pipe_plane == primary_plane)
+ continue;
+
+ ret = drm_modeset_lock(&pipe_crtc->base.mutex, ctx);
+ if (ret)
+ return ret;
+
+ ret = drm_modeset_lock(&pipe_plane->base.mutex, ctx);
+ if (ret)
+ return ret;
+ }
+ return 0;
+}
+
+static bool
+intel_cursor_joiner_commits_idle(struct intel_display *display,
+ const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *pipe_crtc;
+
+ for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
+ intel_crtc_joined_pipe_mask(crtc_state)) {
+ struct intel_plane *pipe_plane;
+ struct intel_plane_state *pipe_plane_state;
+
+ if (pipe_crtc == to_intel_crtc(crtc_state->uapi.crtc))
+ continue;
+
+ pipe_plane = intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
+ pipe_plane_state = to_intel_plane_state(pipe_plane->base.state);
+
+ if (pipe_plane_state->uapi.commit &&
+ !try_wait_for_completion(&pipe_plane_state->uapi.commit->hw_done))
+ return false;
+ }
+
+ return true;
+}
+
static int
intel_legacy_cursor_update(struct drm_plane *_plane,
struct drm_crtc *_crtc,
@@ -842,6 +895,16 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
!try_wait_for_completion(&old_plane_state->uapi.commit->hw_done))
goto slow;
+ ret = intel_cursor_lock_joined_planes(display, crtc_state, plane, ctx);
+ if (ret == -EDEADLK)
+ return ret;
+ if (ret)
+ goto slow;
+
+ /* Check all joined pipes for pending commits */
+ if (!intel_cursor_joiner_commits_idle(display, crtc_state))
+ goto slow;
+
/*
* If any parameters change that may affect watermarks,
* take the slowpath. Only changing fb or position should be
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
2026-06-08 6:26 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
@ 2026-07-01 16:25 ` Borah, Chaitanya Kumar
2026-07-06 8:40 ` Garg, Nemesa
0 siblings, 1 reply; 22+ messages in thread
From: Borah, Chaitanya Kumar @ 2026-07-01 16:25 UTC (permalink / raw)
To: Nemesa Garg, intel-gfx, intel-xe
Hello Nemesa,
On 6/8/2026 11:56 AM, Nemesa Garg wrote:
> In joiner mode, secondary cursor commits may still be running
> even when the primary cursor commit is done. Walking the secondary
> pipes also requires holding the secondary planes modeset locks.
> Add intel_cursor_lock_joined_planes() to acquire modeset locks
> for all secondary cursor planes. Check all joined cursor commit
> status before taking the fast path. If any commit is still pending,
> fallback to slow path.
>
> v2: Use intel_crtc_joined_pipe_mask(). [Ville]
> v3: Lock secondary cursor CRTCs and planes. [sashiko]
>
> Assisted-by: Claude:claude-sonnet-4.6
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_cursor.c | 63 +++++++++++++++++++++
> 1 file changed, 63 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
> index 88384dea868b..f8b24865c93a 100644
> --- a/drivers/gpu/drm/i915/display/intel_cursor.c
> +++ b/drivers/gpu/drm/i915/display/intel_cursor.c
> @@ -13,6 +13,7 @@
> #include <drm/drm_vblank.h>
>
> #include "intel_atomic.h"
> +#include "intel_crtc.h"
> #include "intel_cursor.h"
> #include "intel_cursor_regs.h"
> #include "intel_de.h"
> @@ -796,6 +797,58 @@ void intel_cursor_unpin_work(struct kthread_work *base)
> intel_plane_destroy_state(&plane->base, &plane_state->uapi);
> }
>
> +static int intel_cursor_lock_joined_planes(struct intel_display *display,
> + const struct intel_crtc_state *crtc_state,
> + struct intel_plane *primary_plane,
> + struct drm_modeset_acquire_ctx *ctx)
> +{
> + struct intel_crtc *pipe_crtc;
> + int ret;
> +
> + for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
> + intel_crtc_joined_pipe_mask(crtc_state)) {
> + struct intel_plane *pipe_plane =
> + intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
> +
> + if (pipe_plane == primary_plane)
> + continue;
...
> +
> + ret = drm_modeset_lock(&pipe_crtc->base.mutex, ctx);
> + if (ret)
> + return ret;
> +
> + ret = drm_modeset_lock(&pipe_plane->base.mutex, ctx);
> + if (ret)
> + return ret;
> + }
> + return 0;
> +}
> +
> +static bool
> +intel_cursor_joiner_commits_idle(struct intel_display *display,
> + const struct intel_crtc_state *crtc_state)
> +{
> + struct intel_crtc *pipe_crtc;
> +
> + for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
> + intel_crtc_joined_pipe_mask(crtc_state)) {
> + struct intel_plane *pipe_plane;
> + struct intel_plane_state *pipe_plane_state;
> +
> + if (pipe_crtc == to_intel_crtc(crtc_state->uapi.crtc))
> + continue;
> +
Both the helpers have two different ways to skip the primary. I would
suggest, pick one and use it in both.
> + pipe_plane = intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
> + pipe_plane_state = to_intel_plane_state(pipe_plane->base.state);
> +
> + if (pipe_plane_state->uapi.commit &&
> + !try_wait_for_completion(&pipe_plane_state->uapi.commit->hw_done))
> + return false;
> + }
> +
> + return true;
> +}
> +
> static int
> intel_legacy_cursor_update(struct drm_plane *_plane,
> struct drm_crtc *_crtc,
> @@ -842,6 +895,16 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
> !try_wait_for_completion(&old_plane_state->uapi.commit->hw_done))
> goto slow;
>
> + ret = intel_cursor_lock_joined_planes(display, crtc_state, plane, ctx);
> + if (ret == -EDEADLK)
> + return ret;
> + if (ret)
> + goto slow;
> +
> + /* Check all joined pipes for pending commits */
> + if (!intel_cursor_joiner_commits_idle(display, crtc_state))
> + goto slow;
> +
The param check right below can be a quick early bail out to the slow
path. Better to move it above the lock so we don't grab every secondary
crtc/plane lock just to drop straight to the slow path.
Rather than special-casing the primary pipe in both helpers (and in two
different ways), can we just iterate the full joined mask uniformly?
Obviously, taking care of any special treatment that the primary pipe needs.
==
Chaitanya
> /*
> * If any parameters change that may affect watermarks,
> * take the slowpath. Only changing fb or position should be
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
2026-07-01 16:25 ` Borah, Chaitanya Kumar
@ 2026-07-06 8:40 ` Garg, Nemesa
0 siblings, 0 replies; 22+ messages in thread
From: Garg, Nemesa @ 2026-07-06 8:40 UTC (permalink / raw)
To: Borah, Chaitanya Kumar, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
> -----Original Message-----
> From: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com>
> Sent: Wednesday, July 1, 2026 9:56 PM
> To: Garg, Nemesa <nemesa.garg@intel.com>; intel-gfx@lists.freedesktop.org;
> intel-xe@lists.freedesktop.org
> Subject: Re: [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
>
> Hello Nemesa,
>
> On 6/8/2026 11:56 AM, Nemesa Garg wrote:
> > In joiner mode, secondary cursor commits may still be running even
> > when the primary cursor commit is done. Walking the secondary pipes
> > also requires holding the secondary planes modeset locks.
> > Add intel_cursor_lock_joined_planes() to acquire modeset locks for all
> > secondary cursor planes. Check all joined cursor commit status before
> > taking the fast path. If any commit is still pending, fallback to slow
> > path.
> >
> > v2: Use intel_crtc_joined_pipe_mask(). [Ville]
> > v3: Lock secondary cursor CRTCs and planes. [sashiko]
> >
> > Assisted-by: Claude:claude-sonnet-4.6
> > Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_cursor.c | 63 +++++++++++++++++++++
> > 1 file changed, 63 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c
> > b/drivers/gpu/drm/i915/display/intel_cursor.c
> > index 88384dea868b..f8b24865c93a 100644
> > --- a/drivers/gpu/drm/i915/display/intel_cursor.c
> > +++ b/drivers/gpu/drm/i915/display/intel_cursor.c
> > @@ -13,6 +13,7 @@
> > #include <drm/drm_vblank.h>
> >
> > #include "intel_atomic.h"
> > +#include "intel_crtc.h"
> > #include "intel_cursor.h"
> > #include "intel_cursor_regs.h"
> > #include "intel_de.h"
> > @@ -796,6 +797,58 @@ void intel_cursor_unpin_work(struct kthread_work
> *base)
> > intel_plane_destroy_state(&plane->base, &plane_state->uapi);
> > }
> >
> > +static int intel_cursor_lock_joined_planes(struct intel_display *display,
> > + const struct intel_crtc_state
> *crtc_state,
> > + struct intel_plane *primary_plane,
> > + struct drm_modeset_acquire_ctx
> *ctx) {
> > + struct intel_crtc *pipe_crtc;
> > + int ret;
> > +
> > + for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
> > +
> intel_crtc_joined_pipe_mask(crtc_state)) {
> > + struct intel_plane *pipe_plane =
> > + intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
> > +
> > + if (pipe_plane == primary_plane)
> > + continue;
>
> ...
>
> > +
> > + ret = drm_modeset_lock(&pipe_crtc->base.mutex, ctx);
> > + if (ret)
> > + return ret;
> > +
> > + ret = drm_modeset_lock(&pipe_plane->base.mutex, ctx);
> > + if (ret)
> > + return ret;
> > + }
> > + return 0;
> > +}
> > +
> > +static bool
> > +intel_cursor_joiner_commits_idle(struct intel_display *display,
> > + const struct intel_crtc_state *crtc_state) {
> > + struct intel_crtc *pipe_crtc;
> > +
> > + for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
> > +
> intel_crtc_joined_pipe_mask(crtc_state)) {
> > + struct intel_plane *pipe_plane;
> > + struct intel_plane_state *pipe_plane_state;
> > +
> > + if (pipe_crtc == to_intel_crtc(crtc_state->uapi.crtc))
> > + continue;
> > +
>
> Both the helpers have two different ways to skip the primary. I would suggest,
> pick one and use it in both.
>
> > + pipe_plane = intel_crtc_get_plane(pipe_crtc,
> PLANE_CURSOR);
> > + pipe_plane_state = to_intel_plane_state(pipe_plane-
> >base.state);
> > +
> > + if (pipe_plane_state->uapi.commit &&
> > + !try_wait_for_completion(&pipe_plane_state-
> >uapi.commit->hw_done))
> > + return false;
> > + }
> > +
> > + return true;
> > +}
> > +
> > static int
> > intel_legacy_cursor_update(struct drm_plane *_plane,
> > struct drm_crtc *_crtc,
> > @@ -842,6 +895,16 @@ intel_legacy_cursor_update(struct drm_plane
> *_plane,
> > !try_wait_for_completion(&old_plane_state->uapi.commit-
> >hw_done))
> > goto slow;
> >
> > + ret = intel_cursor_lock_joined_planes(display, crtc_state, plane, ctx);
> > + if (ret == -EDEADLK)
> > + return ret;
> > + if (ret)
> > + goto slow;
> > +
> > + /* Check all joined pipes for pending commits */
> > + if (!intel_cursor_joiner_commits_idle(display, crtc_state))
> > + goto slow;
> > +
>
> The param check right below can be a quick early bail out to the slow path.
> Better to move it above the lock so we don't grab every secondary crtc/plane
> lock just to drop straight to the slow path.
>
> Rather than special-casing the primary pipe in both helpers (and in two
> different ways), can we just iterate the full joined mask uniformly?
> Obviously, taking care of any special treatment that the primary pipe needs.
>
> ==
> Chaitanya
>
Hi Chaitanya,
Ack.
> > /*
> > * If any parameters change that may affect watermarks,
> > * take the slowpath. Only changing fb or position should be
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
2026-07-06 11:56 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
@ 2026-07-06 11:56 ` Nemesa Garg
2026-07-29 15:28 ` Borah, Chaitanya Kumar
0 siblings, 1 reply; 22+ messages in thread
From: Nemesa Garg @ 2026-07-06 11:56 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Nemesa Garg
In joiner mode, secondary cursor commits may still be running
even when the primary cursor commit is done. Walking the secondary
pipes also requires holding the secondary planes modeset locks.
Add intel_cursor_lock_joined_planes() to acquire modeset locks
for all secondary cursor planes. Check all joined cursor commit
status before taking the fast path. If any commit is still pending,
fallback to slow path.
v2: Use intel_crtc_joined_pipe_mask(). [Ville]
v3: Lock secondary cursor CRTCs and planes. [sashiko]
v4: Iterate the full joined mask uniformly in both helpers, no
primary special-case.
Move the parameter-change check above the lock acquisition so
we don't grab secondary locks just to fall to slow path. [Chaitanya]
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 69 ++++++++++++++++++---
1 file changed, 60 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 88384dea868b..af7fc1f888c4 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -13,6 +13,7 @@
#include <drm/drm_vblank.h>
#include "intel_atomic.h"
+#include "intel_crtc.h"
#include "intel_cursor.h"
#include "intel_cursor_regs.h"
#include "intel_de.h"
@@ -796,6 +797,50 @@ void intel_cursor_unpin_work(struct kthread_work *base)
intel_plane_destroy_state(&plane->base, &plane_state->uapi);
}
+static int intel_cursor_lock_joined_planes(struct intel_display *display,
+ const struct intel_crtc_state *crtc_state,
+ struct drm_modeset_acquire_ctx *ctx)
+{
+ struct intel_crtc *pipe_crtc;
+ int ret;
+
+ for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
+ intel_crtc_joined_pipe_mask(crtc_state)) {
+ struct intel_plane *pipe_plane =
+ intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
+
+ ret = drm_modeset_lock(&pipe_crtc->base.mutex, ctx);
+ if (ret)
+ return ret;
+
+ ret = drm_modeset_lock(&pipe_plane->base.mutex, ctx);
+ if (ret)
+ return ret;
+ }
+ return 0;
+}
+
+static bool
+intel_cursor_joiner_commits_idle(struct intel_display *display,
+ const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *pipe_crtc;
+
+ for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
+ intel_crtc_joined_pipe_mask(crtc_state)) {
+ struct intel_plane *pipe_plane =
+ intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
+ struct intel_plane_state *pipe_plane_state =
+ to_intel_plane_state(pipe_plane->base.state);
+
+ if (pipe_plane_state->uapi.commit &&
+ !try_wait_for_completion(&pipe_plane_state->uapi.commit->hw_done))
+ return false;
+ }
+
+ return true;
+}
+
static int
intel_legacy_cursor_update(struct drm_plane *_plane,
struct drm_crtc *_crtc,
@@ -833,15 +878,6 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
crtc_state->joiner_pipes)
goto slow;
- /*
- * Don't do an async update if there is an outstanding commit modifying
- * the plane. This prevents our async update's changes from getting
- * overridden by a previous synchronous update's state.
- */
- if (old_plane_state->uapi.commit &&
- !try_wait_for_completion(&old_plane_state->uapi.commit->hw_done))
- goto slow;
-
/*
* If any parameters change that may affect watermarks,
* take the slowpath. Only changing fb or position should be
@@ -855,6 +891,21 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
!old_plane_state->uapi.fb != !fb)
goto slow;
+ ret = intel_cursor_lock_joined_planes(display, crtc_state, ctx);
+ if (ret == -EDEADLK)
+ return ret;
+ if (ret)
+ goto slow;
+
+ /*
+ * Don't do an async update if there is an outstanding commit modifying
+ * any of the joined cursor planes. This prevents our async update's
+ * changes from getting overridden by a previous synchronous update's
+ * state.
+ */
+ if (!intel_cursor_joiner_commits_idle(display, crtc_state))
+ goto slow;
+
new_plane_state = to_intel_plane_state(intel_plane_duplicate_state(&plane->base));
if (!new_plane_state)
return -ENOMEM;
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
2026-07-06 11:56 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
@ 2026-07-29 15:28 ` Borah, Chaitanya Kumar
0 siblings, 0 replies; 22+ messages in thread
From: Borah, Chaitanya Kumar @ 2026-07-29 15:28 UTC (permalink / raw)
To: Nemesa Garg, intel-gfx, intel-xe
On 7/6/2026 5:26 PM, Nemesa Garg wrote:
> In joiner mode, secondary cursor commits may still be running
> even when the primary cursor commit is done. Walking the secondary
> pipes also requires holding the secondary planes modeset locks.
> Add intel_cursor_lock_joined_planes() to acquire modeset locks
> for all secondary cursor planes. Check all joined cursor commit
> status before taking the fast path. If any commit is still pending,
> fallback to slow path.
>
> v2: Use intel_crtc_joined_pipe_mask(). [Ville]
> v3: Lock secondary cursor CRTCs and planes. [sashiko]
> v4: Iterate the full joined mask uniformly in both helpers, no
> primary special-case.
> Move the parameter-change check above the lock acquisition so
> we don't grab secondary locks just to fall to slow path. [Chaitanya]
>
> Assisted-by: Claude:claude-sonnet-4.6
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_cursor.c | 69 ++++++++++++++++++---
> 1 file changed, 60 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
> index 88384dea868b..af7fc1f888c4 100644
> --- a/drivers/gpu/drm/i915/display/intel_cursor.c
> +++ b/drivers/gpu/drm/i915/display/intel_cursor.c
> @@ -13,6 +13,7 @@
> #include <drm/drm_vblank.h>
>
> #include "intel_atomic.h"
> +#include "intel_crtc.h"
do we need this header here?
I think it is only needed for intel_crtc_get_vblank_counter(). Add it
with the patch that adds the dependency.
> #include "intel_cursor.h"
> #include "intel_cursor_regs.h"
> #include "intel_de.h"
> @@ -796,6 +797,50 @@ void intel_cursor_unpin_work(struct kthread_work *base)
> intel_plane_destroy_state(&plane->base, &plane_state->uapi);
> }
>
> +static int intel_cursor_lock_joined_planes(struct intel_display *display,
> + const struct intel_crtc_state *crtc_state,
> + struct drm_modeset_acquire_ctx *ctx)
> +{
> + struct intel_crtc *pipe_crtc;
> + int ret;
> +
> + for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
> + intel_crtc_joined_pipe_mask(crtc_state)) {
> + struct intel_plane *pipe_plane =
> + intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
> +
> + ret = drm_modeset_lock(&pipe_crtc->base.mutex, ctx);
> + if (ret)
> + return ret;
> +
> + ret = drm_modeset_lock(&pipe_plane->base.mutex, ctx);
> + if (ret)
> + return ret;
> + }
> + return 0;
> +}
> +
> +static bool
> +intel_cursor_joiner_commits_idle(struct intel_display *display,
> + const struct intel_crtc_state *crtc_state)
> +{
> + struct intel_crtc *pipe_crtc;
> +
> + for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
> + intel_crtc_joined_pipe_mask(crtc_state)) {
> + struct intel_plane *pipe_plane =
> + intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
> + struct intel_plane_state *pipe_plane_state =
> + to_intel_plane_state(pipe_plane->base.state);
> +
> + if (pipe_plane_state->uapi.commit &&
> + !try_wait_for_completion(&pipe_plane_state->uapi.commit->hw_done))
> + return false;
> + }
> +
> + return true;
> +}
> +
> static int
> intel_legacy_cursor_update(struct drm_plane *_plane,
> struct drm_crtc *_crtc,
> @@ -833,15 +878,6 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
> crtc_state->joiner_pipes)
> goto slow;
>
> - /*
> - * Don't do an async update if there is an outstanding commit modifying
> - * the plane. This prevents our async update's changes from getting
> - * overridden by a previous synchronous update's state.
> - */
> - if (old_plane_state->uapi.commit &&
> - !try_wait_for_completion(&old_plane_state->uapi.commit->hw_done))
> - goto slow;
> -
> /*
> * If any parameters change that may affect watermarks,
> * take the slowpath. Only changing fb or position should be
> @@ -855,6 +891,21 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
> !old_plane_state->uapi.fb != !fb)
> goto slow;
>
> + ret = intel_cursor_lock_joined_planes(display, crtc_state, ctx);
> + if (ret == -EDEADLK)
> + return ret;
> + if (ret)
> + goto slow;
> +
> + /*
> + * Don't do an async update if there is an outstanding commit modifying
> + * any of the joined cursor planes. This prevents our async update's
> + * changes from getting overridden by a previous synchronous update's
> + * state.
> + */
> + if (!intel_cursor_joiner_commits_idle(display, crtc_state))
> + goto slow;
> +
> new_plane_state = to_intel_plane_state(intel_plane_duplicate_state(&plane->base));
> if (!new_plane_state)
> return -ENOMEM;
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 0/6] Enable joiner cursor fast updates
@ 2026-08-18 8:42 Nemesa Garg
2026-08-18 8:42 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
` (9 more replies)
0 siblings, 10 replies; 22+ messages in thread
From: Nemesa Garg @ 2026-08-18 8:42 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: chaitanya.kumar.borah, Nemesa Garg
This series enables the cursor fast path for joiner mode
and adds the missing secondary-plane handling to keep updates
correct and synchronized.
Nemesa Garg (6):
drm/i915/cursor: Check joiner cursor commit status
drm/i915/cursor: Add helper to update cursor plane
drm/i915/cursor: Handle secondary cursor state
drm/i915/cursor: Program secondary cursor planes
drm/i915/cursor: Schedule cursor unpin per joined pipe
drm/i915/cursor: Allow joiner cursor fast path update
drivers/gpu/drm/i915/display/intel_cursor.c | 274 +++++++++++++++-----
1 file changed, 205 insertions(+), 69 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
2026-08-18 8:42 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
@ 2026-08-18 8:42 ` Nemesa Garg
2026-08-18 8:59 ` sashiko-bot
2026-08-18 8:42 ` [PATCH 2/6] drm/i915/cursor: Add helper to update cursor plane Nemesa Garg
` (8 subsequent siblings)
9 siblings, 1 reply; 22+ messages in thread
From: Nemesa Garg @ 2026-08-18 8:42 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: chaitanya.kumar.borah, Nemesa Garg
In joiner mode, secondary cursor commits may still be running
even when the primary cursor commit is done. Walking the secondary
pipes also requires holding the secondary planes modeset locks.
Add intel_cursor_lock_joined_planes() to acquire modeset locks
for all secondary cursor planes. Check all joined cursor commit
status before taking the fast path. If any commit is still pending,
fallback to slow path.
v2: Use intel_crtc_joined_pipe_mask(). [Ville]
v3: Lock secondary cursor CRTCs and planes. [sashiko]
v4: Iterate the full joined mask uniformly in both helpers, no
primary special-case.
Move the parameter-change check above the lock acquisition so
we don't grab secondary locks just to fall to slow path. [Chaitanya]
v5: Remove extra header declerartion. [Chaitanya]
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 68 ++++++++++++++++++---
1 file changed, 59 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 0673f16f6fd0..bc1e58d5c4c5 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -796,6 +796,50 @@ void intel_cursor_unpin_work(struct kthread_work *base)
intel_plane_destroy_state(&plane->base, &plane_state->uapi);
}
+static int intel_cursor_lock_joined_planes(struct intel_display *display,
+ const struct intel_crtc_state *crtc_state,
+ struct drm_modeset_acquire_ctx *ctx)
+{
+ struct intel_crtc *pipe_crtc;
+ int ret;
+
+ for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
+ intel_crtc_joined_pipe_mask(crtc_state)) {
+ struct intel_plane *pipe_plane =
+ intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
+
+ ret = drm_modeset_lock(&pipe_crtc->base.mutex, ctx);
+ if (ret)
+ return ret;
+
+ ret = drm_modeset_lock(&pipe_plane->base.mutex, ctx);
+ if (ret)
+ return ret;
+ }
+ return 0;
+}
+
+static bool
+intel_cursor_joiner_commits_idle(struct intel_display *display,
+ const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *pipe_crtc;
+
+ for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
+ intel_crtc_joined_pipe_mask(crtc_state)) {
+ struct intel_plane *pipe_plane =
+ intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
+ struct intel_plane_state *pipe_plane_state =
+ to_intel_plane_state(pipe_plane->base.state);
+
+ if (pipe_plane_state->uapi.commit &&
+ !try_wait_for_completion(&pipe_plane_state->uapi.commit->hw_done))
+ return false;
+ }
+
+ return true;
+}
+
static int
intel_legacy_cursor_update(struct drm_plane *_plane,
struct drm_crtc *_crtc,
@@ -833,15 +877,6 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
crtc_state->joiner_pipes)
goto slow;
- /*
- * Don't do an async update if there is an outstanding commit modifying
- * the plane. This prevents our async update's changes from getting
- * overridden by a previous synchronous update's state.
- */
- if (old_plane_state->uapi.commit &&
- !try_wait_for_completion(&old_plane_state->uapi.commit->hw_done))
- goto slow;
-
/*
* If any parameters change that may affect watermarks,
* take the slowpath. Only changing fb or position should be
@@ -855,6 +890,21 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
!old_plane_state->uapi.fb != !fb)
goto slow;
+ ret = intel_cursor_lock_joined_planes(display, crtc_state, ctx);
+ if (ret == -EDEADLK)
+ return ret;
+ if (ret)
+ goto slow;
+
+ /*
+ * Don't do an async update if there is an outstanding commit modifying
+ * any of the joined cursor planes. This prevents our async update's
+ * changes from getting overridden by a previous synchronous update's
+ * state.
+ */
+ if (!intel_cursor_joiner_commits_idle(display, crtc_state))
+ goto slow;
+
new_plane_state = to_intel_plane_state(intel_plane_duplicate_state(&plane->base));
if (!new_plane_state)
return -ENOMEM;
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 2/6] drm/i915/cursor: Add helper to update cursor plane
2026-08-18 8:42 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
2026-08-18 8:42 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
@ 2026-08-18 8:42 ` Nemesa Garg
2026-08-18 8:42 ` [PATCH 3/6] drm/i915/cursor: Handle secondary cursor state Nemesa Garg
` (7 subsequent siblings)
9 siblings, 0 replies; 22+ messages in thread
From: Nemesa Garg @ 2026-08-18 8:42 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: chaitanya.kumar.borah, Nemesa Garg
Move cursor fast path plane state update into helper
function. The target hw.crtc is passed as a parameter
so a later patch can reuse the helper for joiner
secondary pipes, where hw.crtc points at the secondary
being programmed while uapi.crtc stays on the primary.
v4: Drop uapi.crtc assignment from the helper. [Chaitanya]
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 39 ++++++++++++++-------
1 file changed, 27 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index bc1e58d5c4c5..db4eaa74fc58 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -840,6 +840,29 @@ intel_cursor_joiner_commits_idle(struct intel_display *display,
return true;
}
+static void
+intel_cursor_fastpath_update_plane_state(struct intel_plane_state *plane_state,
+ struct drm_framebuffer *fb,
+ struct intel_crtc *hw_crtc,
+ int crtc_x, int crtc_y,
+ unsigned int crtc_w, unsigned int crtc_h,
+ u32 src_x, u32 src_y,
+ u32 src_w, u32 src_h)
+{
+ drm_atomic_set_fb_for_plane(&plane_state->uapi, fb);
+
+ plane_state->uapi.src_x = src_x;
+ plane_state->uapi.src_y = src_y;
+ plane_state->uapi.src_w = src_w;
+ plane_state->uapi.src_h = src_h;
+ plane_state->uapi.crtc_x = crtc_x;
+ plane_state->uapi.crtc_y = crtc_y;
+ plane_state->uapi.crtc_w = crtc_w;
+ plane_state->uapi.crtc_h = crtc_h;
+
+ intel_plane_copy_uapi_to_hw_state(NULL, plane_state, plane_state, hw_crtc);
+}
+
static int
intel_legacy_cursor_update(struct drm_plane *_plane,
struct drm_crtc *_crtc,
@@ -915,18 +938,10 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
goto out_free;
}
- drm_atomic_set_fb_for_plane(&new_plane_state->uapi, fb);
-
- new_plane_state->uapi.src_x = src_x;
- new_plane_state->uapi.src_y = src_y;
- new_plane_state->uapi.src_w = src_w;
- new_plane_state->uapi.src_h = src_h;
- new_plane_state->uapi.crtc_x = crtc_x;
- new_plane_state->uapi.crtc_y = crtc_y;
- new_plane_state->uapi.crtc_w = crtc_w;
- new_plane_state->uapi.crtc_h = crtc_h;
-
- intel_plane_copy_uapi_to_hw_state(NULL, new_plane_state, new_plane_state, crtc);
+ intel_cursor_fastpath_update_plane_state(new_plane_state, fb,
+ crtc,
+ crtc_x, crtc_y, crtc_w, crtc_h,
+ src_x, src_y, src_w, src_h);
ret = intel_plane_atomic_check_with_state(crtc_state, new_crtc_state,
old_plane_state, new_plane_state);
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 3/6] drm/i915/cursor: Handle secondary cursor state
2026-08-18 8:42 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
2026-08-18 8:42 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
2026-08-18 8:42 ` [PATCH 2/6] drm/i915/cursor: Add helper to update cursor plane Nemesa Garg
@ 2026-08-18 8:42 ` Nemesa Garg
2026-08-18 8:58 ` sashiko-bot
2026-08-18 8:42 ` [PATCH 4/6] drm/i915/cursor: Program secondary cursor planes Nemesa Garg
` (6 subsequent siblings)
9 siblings, 1 reply; 22+ messages in thread
From: Nemesa Garg @ 2026-08-18 8:42 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: chaitanya.kumar.borah, Nemesa Garg
In joiner mode the fast path cursor update must handle
secondary pipes. Iterate over all joined pipes uniformly
to duplicate plane state, run check_plane(), pin the
framebuffer and on success swap in the new plane state
for each secondary cursor.
Track every successfully prepared pipe in a joined_pipe_state[] array
of struct intel_cursor_joiner_state so that later frontbuffer, unpin
and error-cleanup paths treat primary and secondaries uniformly,
and ensures the primary's pinned framebuffer is released if a
secondary fails partway through.
v2: Use intel_crtc_joined_pipe_mask(). [Ville]
Add locking mechanism. [Ville]
v3: Drop the per-pipe fastpath mutex array. [sashiko]
v4: Fold parallel arrays into struct intel_cursor_joiner_state joined_pipe_state[].
unify primary/secondary in a single loop.
use bare check_plane(). [Chaitanya]
v5: Fix secondary uapi.crtc to each pipe's own crtc.
Rename intel_cursor_pipe to intel_cursor_joiner_state and
joined[] to joined_pipe_state[]. [Chaitanya]
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 121 ++++++++++++++------
1 file changed, 86 insertions(+), 35 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index db4eaa74fc58..6492105cb976 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -863,6 +863,14 @@ intel_cursor_fastpath_update_plane_state(struct intel_plane_state *plane_state,
intel_plane_copy_uapi_to_hw_state(NULL, plane_state, plane_state, hw_crtc);
}
+struct intel_cursor_joiner_state {
+ struct intel_plane *plane;
+ struct intel_crtc *crtc;
+ struct intel_crtc_state *crtc_state;
+ struct intel_plane_state *old_plane_state;
+ struct intel_plane_state *new_plane_state;
+};
+
static int
intel_legacy_cursor_update(struct drm_plane *_plane,
struct drm_crtc *_crtc,
@@ -878,11 +886,13 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
struct intel_display *display = to_intel_display(plane);
struct intel_plane_state *old_plane_state =
to_intel_plane_state(plane->base.state);
- struct intel_plane_state *new_plane_state;
+ struct intel_plane_state *new_plane_state = NULL;
struct intel_crtc_state *crtc_state =
to_intel_crtc_state(crtc->base.state);
- struct intel_crtc_state *new_crtc_state;
struct intel_vblank_evade_ctx evade;
+ struct intel_cursor_joiner_state joined_pipe_state[I915_MAX_PIPES] = {};
+ struct intel_crtc *pipe_crtc;
+ int num_pipes = 0;
int ret;
/*
@@ -928,38 +938,70 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
if (!intel_cursor_joiner_commits_idle(display, crtc_state))
goto slow;
- new_plane_state = to_intel_plane_state(intel_plane_duplicate_state(&plane->base));
- if (!new_plane_state)
- return -ENOMEM;
+ /*
+ * Iterate over all joined pipes (primary and secondary) uniformly.
+ * The joined pipe mask includes both the primary pipe and all
+ * secondary joiner pipes, allowing us to handle them all the same way.
+ */
+ for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
+ intel_crtc_joined_pipe_mask(crtc_state)) {
+ struct intel_cursor_joiner_state *j = &joined_pipe_state[num_pipes];
+
+ j->plane = intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
+ j->crtc = pipe_crtc;
+ j->crtc_state = to_intel_crtc_state(pipe_crtc->base.state);
+ j->old_plane_state = to_intel_plane_state(j->plane->base.state);
+ j->new_plane_state =
+ to_intel_plane_state(intel_plane_duplicate_state(&j->plane->base));
+
+ if (!j->new_plane_state) {
+ ret = -ENOMEM;
+ goto out_free;
+ }
- new_crtc_state = to_intel_crtc_state(intel_crtc_duplicate_state(&crtc->base));
- if (!new_crtc_state) {
- ret = -ENOMEM;
- goto out_free;
- }
+ j->new_plane_state->uapi.crtc = &pipe_crtc->base;
- intel_cursor_fastpath_update_plane_state(new_plane_state, fb,
- crtc,
- crtc_x, crtc_y, crtc_w, crtc_h,
- src_x, src_y, src_w, src_h);
+ intel_cursor_fastpath_update_plane_state(j->new_plane_state, fb,
+ pipe_crtc,
+ crtc_x, crtc_y,
+ crtc_w, crtc_h,
+ src_x, src_y,
+ src_w, src_h);
- ret = intel_plane_atomic_check_with_state(crtc_state, new_crtc_state,
- old_plane_state, new_plane_state);
- if (ret)
- goto out_free;
+ ret = j->plane->check_plane(j->crtc_state, j->new_plane_state);
+ if (ret) {
+ intel_plane_destroy_state(&j->plane->base,
+ &j->new_plane_state->uapi);
+ goto out_free;
+ }
- ret = intel_plane_pin_fb(new_plane_state, old_plane_state);
- if (ret)
- goto out_free;
+ ret = intel_plane_pin_fb(j->new_plane_state, j->old_plane_state);
+ if (ret) {
+ intel_plane_destroy_state(&j->plane->base,
+ &j->new_plane_state->uapi);
+ goto out_free;
+ }
+
+ num_pipes++;
+ }
- intel_frontbuffer_flush(to_intel_frontbuffer(new_plane_state->hw.fb),
+ new_plane_state = joined_pipe_state[0].new_plane_state;
+ intel_frontbuffer_flush(to_intel_frontbuffer(joined_pipe_state[0].new_plane_state->hw.fb),
ORIGIN_CURSOR_UPDATE);
- intel_frontbuffer_track(to_intel_frontbuffer(old_plane_state->hw.fb),
- to_intel_frontbuffer(new_plane_state->hw.fb),
- plane->frontbuffer_bit);
- /* Swap plane state */
- plane->base.state = &new_plane_state->uapi;
+ for (int i = 0; i < num_pipes; i++)
+ intel_frontbuffer_track(to_intel_frontbuffer(joined_pipe_state[i].old_plane_state->hw.fb),
+ to_intel_frontbuffer(joined_pipe_state[i].new_plane_state->hw.fb),
+ joined_pipe_state[i].plane->frontbuffer_bit);
+
+ for (int i = 0; i < num_pipes; i++) {
+ joined_pipe_state[i].plane->base.state = &joined_pipe_state[i].new_plane_state->uapi;
+
+ if (joined_pipe_state[i].new_plane_state->uapi.visible)
+ joined_pipe_state[i].crtc_state->active_planes |= BIT(PLANE_CURSOR);
+ else
+ joined_pipe_state[i].crtc_state->active_planes &= ~BIT(PLANE_CURSOR);
+ }
/*
* We cannot swap crtc_state as it may be in use by an atomic commit or
@@ -971,7 +1013,6 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
* planes atomically. If the cursor was part of the atomic update then
* we would have taken the slowpath.
*/
- crtc_state->active_planes = new_crtc_state->active_planes;
intel_vblank_evade_init(crtc_state, crtc_state, &evade);
@@ -1004,6 +1045,10 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
intel_psr_unlock(crtc_state);
+ /*
+ * Schedule or immediately unpin old framebuffers.
+ * Protect against concurrent access.
+ */
if (old_plane_state->ggtt_vma != new_plane_state->ggtt_vma) {
drm_vblank_work_init(&old_plane_state->unpin_work, &crtc->base,
intel_cursor_unpin_work);
@@ -1012,18 +1057,24 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
drm_crtc_accurate_vblank_count(&crtc->base) + 1,
false);
- old_plane_state = NULL;
+ joined_pipe_state[0].old_plane_state = NULL;
} else {
intel_plane_unpin_fb(old_plane_state);
}
out_free:
- if (new_crtc_state)
- intel_crtc_destroy_state(&crtc->base, &new_crtc_state->uapi);
- if (ret)
- intel_plane_destroy_state(&plane->base, &new_plane_state->uapi);
- else if (old_plane_state)
- intel_plane_destroy_state(&plane->base, &old_plane_state->uapi);
+ if (ret) {
+ for (int i = 0; i < num_pipes; i++) {
+ intel_plane_unpin_fb(joined_pipe_state[i].new_plane_state);
+ intel_plane_destroy_state(&joined_pipe_state[i].plane->base,
+ &joined_pipe_state[i].new_plane_state->uapi);
+ }
+ } else {
+ for (int i = 0; i < num_pipes; i++)
+ if (joined_pipe_state[i].old_plane_state)
+ intel_plane_destroy_state(&joined_pipe_state[i].plane->base,
+ &joined_pipe_state[i].old_plane_state->uapi);
+ }
return ret;
slow:
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 4/6] drm/i915/cursor: Program secondary cursor planes
2026-08-18 8:42 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
` (2 preceding siblings ...)
2026-08-18 8:42 ` [PATCH 3/6] drm/i915/cursor: Handle secondary cursor state Nemesa Garg
@ 2026-08-18 8:42 ` Nemesa Garg
2026-08-18 8:42 ` [PATCH 5/6] drm/i915/cursor: Schedule cursor unpin per joined pipe Nemesa Garg
` (5 subsequent siblings)
9 siblings, 0 replies; 22+ messages in thread
From: Nemesa Garg @ 2026-08-18 8:42 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: chaitanya.kumar.borah, Nemesa Garg
Iterate over all joined pipes when arming/disabling the cursor plane so
secondary pipes are updated together with the primary. The pin, check
and state duplication for secondary pipes was already prepared in the
previous commit; this converts the update_arm pass to a loop over the
joined_pipe_state[] array.
Because the whole loop runs inside a single primary vblank-evade,
sample intel_crtc_get_vblank_counter() per pipe around each arm and
emit a drm_err() if the counter ticks during that pipe's own
programming.
v2: Check primary and secondary pipe together. [Ville]
v3: Use struct intel_cursor_joiner_state. [Ville]
v4: Add per-pipe vblank straddle detection around the arm loop. [Chaitanya]
v5: Move straddle check outside the loop to cover all pipes together.
Sample vblank counter from primary pipe only.
Move drm_err() after local_irq_enable(). [Chaitnaya]
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 33 +++++++++++++++++----
1 file changed, 28 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 6492105cb976..be32fb6dbc6b 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -13,6 +13,7 @@
#include <drm/drm_vblank.h>
#include "intel_atomic.h"
+#include "intel_crtc.h"
#include "intel_cursor.h"
#include "intel_cursor_regs.h"
#include "intel_de.h"
@@ -893,6 +894,7 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
struct intel_cursor_joiner_state joined_pipe_state[I915_MAX_PIPES] = {};
struct intel_crtc *pipe_crtc;
int num_pipes = 0;
+ u32 start_vbl_count, end_vbl_count;
int ret;
/*
@@ -1034,15 +1036,36 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
local_irq_disable();
}
- if (new_plane_state->uapi.visible) {
- intel_plane_update_noarm(NULL, plane, crtc_state, new_plane_state);
- intel_plane_update_arm(NULL, plane, crtc_state, new_plane_state);
- } else {
- intel_plane_disable_arm(NULL, plane, crtc_state);
+ /*
+ * Joiner pipes are vblank-synchronized, so sampling only the primary
+ * pipe is sufficient to detect a straddle across all joined pipes.
+ * The vblank evasion above also operates on the primary pipe only.
+ */
+ start_vbl_count = intel_crtc_get_vblank_counter(joined_pipe_state[0].crtc);
+
+ for (int i = 0; i < num_pipes; i++) {
+ if (joined_pipe_state[i].new_plane_state->uapi.visible) {
+ intel_plane_update_noarm(NULL, joined_pipe_state[i].plane,
+ joined_pipe_state[i].crtc_state,
+ joined_pipe_state[i].new_plane_state);
+ intel_plane_update_arm(NULL, joined_pipe_state[i].plane,
+ joined_pipe_state[i].crtc_state,
+ joined_pipe_state[i].new_plane_state);
+ } else {
+ intel_plane_disable_arm(NULL, joined_pipe_state[i].plane, joined_pipe_state[i].crtc_state);
+ }
}
+ end_vbl_count = intel_crtc_get_vblank_counter(joined_pipe_state[0].crtc);
+
local_irq_enable();
+ if (start_vbl_count != end_vbl_count)
+ drm_err(display->drm,
+ "Atomic update failure on pipe %c (start=%u end=%u)\n",
+ pipe_name(joined_pipe_state[0].crtc->pipe),
+ start_vbl_count, end_vbl_count);
+
intel_psr_unlock(crtc_state);
/*
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 5/6] drm/i915/cursor: Schedule cursor unpin per joined pipe
2026-08-18 8:42 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
` (3 preceding siblings ...)
2026-08-18 8:42 ` [PATCH 4/6] drm/i915/cursor: Program secondary cursor planes Nemesa Garg
@ 2026-08-18 8:42 ` Nemesa Garg
2026-08-18 8:42 ` [PATCH 6/6] drm/i915/cursor: Allow joiner cursor fast path update Nemesa Garg
` (4 subsequent siblings)
9 siblings, 0 replies; 22+ messages in thread
From: Nemesa Garg @ 2026-08-18 8:42 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: chaitanya.kumar.borah, Nemesa Garg
Convert the primary-only vblank unpin block into a loop over the
joined_pipe_state[] array so each pipe's old cursor framebuffer is scheduled for
unpin (or unpinned inline when unchanged) independently. All unpin
work is armed on the primary crtc's vblank (&crtc->base), consistent
with the single primary vblank evasion used above.
v4: Split from the update_arm loop conversion. [Chaitanya]
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 26 ++++++++++-----------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index be32fb6dbc6b..8599b39b033e 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -887,7 +887,6 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
struct intel_display *display = to_intel_display(plane);
struct intel_plane_state *old_plane_state =
to_intel_plane_state(plane->base.state);
- struct intel_plane_state *new_plane_state = NULL;
struct intel_crtc_state *crtc_state =
to_intel_crtc_state(crtc->base.state);
struct intel_vblank_evade_ctx evade;
@@ -987,7 +986,6 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
num_pipes++;
}
- new_plane_state = joined_pipe_state[0].new_plane_state;
intel_frontbuffer_flush(to_intel_frontbuffer(joined_pipe_state[0].new_plane_state->hw.fb),
ORIGIN_CURSOR_UPDATE);
@@ -1072,17 +1070,19 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
* Schedule or immediately unpin old framebuffers.
* Protect against concurrent access.
*/
- if (old_plane_state->ggtt_vma != new_plane_state->ggtt_vma) {
- drm_vblank_work_init(&old_plane_state->unpin_work, &crtc->base,
- intel_cursor_unpin_work);
-
- drm_vblank_work_schedule(&old_plane_state->unpin_work,
- drm_crtc_accurate_vblank_count(&crtc->base) + 1,
- false);
-
- joined_pipe_state[0].old_plane_state = NULL;
- } else {
- intel_plane_unpin_fb(old_plane_state);
+ for (int i = 0; i < num_pipes; i++) {
+ struct intel_plane_state *old = joined_pipe_state[i].old_plane_state;
+
+ if (old->ggtt_vma != joined_pipe_state[i].new_plane_state->ggtt_vma) {
+ drm_vblank_work_init(&old->unpin_work, &crtc->base,
+ intel_cursor_unpin_work);
+ drm_vblank_work_schedule(&old->unpin_work,
+ drm_crtc_accurate_vblank_count(&crtc->base) + 1,
+ false);
+ joined_pipe_state[i].old_plane_state = NULL;
+ } else {
+ intel_plane_unpin_fb(old);
+ }
}
out_free:
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 6/6] drm/i915/cursor: Allow joiner cursor fast path update
2026-08-18 8:42 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
` (4 preceding siblings ...)
2026-08-18 8:42 ` [PATCH 5/6] drm/i915/cursor: Schedule cursor unpin per joined pipe Nemesa Garg
@ 2026-08-18 8:42 ` Nemesa Garg
2026-08-18 8:53 ` ✗ CI.checkpatch: warning for Enable joiner cursor fast updates (rev5) Patchwork
` (3 subsequent siblings)
9 siblings, 0 replies; 22+ messages in thread
From: Nemesa Garg @ 2026-08-18 8:42 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: chaitanya.kumar.borah, Nemesa Garg
The legacy cursor path forced all joiner updates to the
slow path by checking joiner_pipes.
Drop the condition so that joiner cursor updates can use
the fast path.
v4: Trimmed to only the joiner_pipes gate drop. [Chaitanya]
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 8599b39b033e..7a0026acdb21 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -902,13 +902,10 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
* PSR2 selective fetch also requires the slow path as
* PSR2 plane and transcoder registers can only be updated during
* vblank.
- *
- * FIXME joiner fastpath would be good
*/
if (!crtc_state->hw.active ||
intel_crtc_needs_modeset(crtc_state) ||
- intel_crtc_needs_fastset(crtc_state) ||
- crtc_state->joiner_pipes)
+ intel_crtc_needs_fastset(crtc_state))
goto slow;
/*
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* ✗ CI.checkpatch: warning for Enable joiner cursor fast updates (rev5)
2026-08-18 8:42 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
` (5 preceding siblings ...)
2026-08-18 8:42 ` [PATCH 6/6] drm/i915/cursor: Allow joiner cursor fast path update Nemesa Garg
@ 2026-08-18 8:53 ` Patchwork
2026-08-18 8:55 ` ✓ CI.KUnit: success " Patchwork
` (2 subsequent siblings)
9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2026-08-18 8:53 UTC (permalink / raw)
To: Nemesa Garg; +Cc: intel-xe
== Series Details ==
Series: Enable joiner cursor fast updates (rev5)
URL : https://patchwork.freedesktop.org/series/165272/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
061140b9bc586ae7f40abc1249c97e1cc72d1b9d
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 126d13a8caa9028d73e47527654f65590bb9d128
Author: Nemesa Garg <nemesa.garg@intel.com>
Date: Tue Aug 18 14:12:36 2026 +0530
drm/i915/cursor: Allow joiner cursor fast path update
The legacy cursor path forced all joiner updates to the
slow path by checking joiner_pipes.
Drop the condition so that joiner cursor updates can use
the fast path.
v4: Trimmed to only the joiner_pipes gate drop. [Chaitanya]
Assisted-by: Claude:claude-sonnet-4.6
Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
+ /mt/dim checkpatch 275df33dcf4c5d018717867a0b29ed1d3b62c1ef drm-intel
16d67db3d2b8 drm/i915/cursor: Check joiner cursor commit status
6788c5f7daa1 drm/i915/cursor: Add helper to update cursor plane
75f1e17e2f4d drm/i915/cursor: Handle secondary cursor state
-:21: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#21:
v4: Fold parallel arrays into struct intel_cursor_joiner_state joined_pipe_state[].
-:147: WARNING:LONG_LINE: line length of 106 exceeds 100 columns
#147: FILE: drivers/gpu/drm/i915/display/intel_cursor.c:993:
+ intel_frontbuffer_track(to_intel_frontbuffer(joined_pipe_state[i].old_plane_state->hw.fb),
-:148: WARNING:LONG_LINE: line length of 106 exceeds 100 columns
#148: FILE: drivers/gpu/drm/i915/display/intel_cursor.c:994:
+ to_intel_frontbuffer(joined_pipe_state[i].new_plane_state->hw.fb),
-:152: WARNING:LONG_LINE: line length of 101 exceeds 100 columns
#152: FILE: drivers/gpu/drm/i915/display/intel_cursor.c:998:
+ joined_pipe_state[i].plane->base.state = &joined_pipe_state[i].new_plane_state->uapi;
-:208: WARNING:LONG_LINE: line length of 103 exceeds 100 columns
#208: FILE: drivers/gpu/drm/i915/display/intel_cursor.c:1076:
+ &joined_pipe_state[i].old_plane_state->uapi);
total: 0 errors, 5 warnings, 0 checks, 172 lines checked
5c583d10b7af drm/i915/cursor: Program secondary cursor planes
-:72: WARNING:LONG_LINE: line length of 115 exceeds 100 columns
#72: FILE: drivers/gpu/drm/i915/display/intel_cursor.c:1055:
+ intel_plane_disable_arm(NULL, joined_pipe_state[i].plane, joined_pipe_state[i].crtc_state);
total: 0 errors, 1 warnings, 0 checks, 55 lines checked
b3d093b2a2a6 drm/i915/cursor: Schedule cursor unpin per joined pipe
-:7: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#7:
joined_pipe_state[] array so each pipe's old cursor framebuffer is scheduled for
total: 0 errors, 1 warnings, 0 checks, 44 lines checked
126d13a8caa9 drm/i915/cursor: Allow joiner cursor fast path update
^ permalink raw reply [flat|nested] 22+ messages in thread
* ✓ CI.KUnit: success for Enable joiner cursor fast updates (rev5)
2026-08-18 8:42 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
` (6 preceding siblings ...)
2026-08-18 8:53 ` ✗ CI.checkpatch: warning for Enable joiner cursor fast updates (rev5) Patchwork
@ 2026-08-18 8:55 ` Patchwork
2026-08-18 9:31 ` ✓ Xe.CI.BAT: " Patchwork
2026-08-18 10:35 ` ✓ Xe.CI.FULL: " Patchwork
9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2026-08-18 8:55 UTC (permalink / raw)
To: Nemesa Garg; +Cc: intel-xe
== Series Details ==
Series: Enable joiner cursor fast updates (rev5)
URL : https://patchwork.freedesktop.org/series/165272/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[08:53:35] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[08:53:39] 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
[08:54:11] Starting KUnit Kernel (1/1)...
[08:54:11] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[08:54:11] ================== guc_buf (11 subtests) ===================
[08:54:11] [PASSED] test_smallest
[08:54:11] [PASSED] test_largest
[08:54:12] [PASSED] test_granular
[08:54:12] [PASSED] test_unique
[08:54:12] [PASSED] test_overlap
[08:54:12] [PASSED] test_reusable
[08:54:12] [PASSED] test_too_big
[08:54:12] [PASSED] test_flush
[08:54:12] [PASSED] test_lookup
[08:54:12] [PASSED] test_data
[08:54:12] [PASSED] test_class
[08:54:12] ===================== [PASSED] guc_buf =====================
[08:54:12] =================== guc_dbm (7 subtests) ===================
[08:54:12] [PASSED] test_empty
[08:54:12] [PASSED] test_default
[08:54:12] ======================== test_size ========================
[08:54:12] [PASSED] 4
[08:54:12] [PASSED] 8
[08:54:12] [PASSED] 32
[08:54:12] [PASSED] 256
[08:54:12] ==================== [PASSED] test_size ====================
[08:54:12] ======================= test_reuse ========================
[08:54:12] [PASSED] 4
[08:54:12] [PASSED] 8
[08:54:12] [PASSED] 32
[08:54:12] [PASSED] 256
[08:54:12] =================== [PASSED] test_reuse ====================
[08:54:12] =================== test_range_overlap ====================
[08:54:12] [PASSED] 4
[08:54:12] [PASSED] 8
[08:54:12] [PASSED] 32
[08:54:12] [PASSED] 256
[08:54:12] =============== [PASSED] test_range_overlap ================
[08:54:12] =================== test_range_compact ====================
[08:54:12] [PASSED] 4
[08:54:12] [PASSED] 8
[08:54:12] [PASSED] 32
[08:54:12] [PASSED] 256
[08:54:12] =============== [PASSED] test_range_compact ================
[08:54:12] ==================== test_range_spare =====================
[08:54:12] [PASSED] 4
[08:54:12] [PASSED] 8
[08:54:12] [PASSED] 32
[08:54:12] [PASSED] 256
[08:54:12] ================ [PASSED] test_range_spare =================
[08:54:12] ===================== [PASSED] guc_dbm =====================
[08:54:12] =================== guc_idm (6 subtests) ===================
[08:54:12] [PASSED] bad_init
[08:54:12] [PASSED] no_init
[08:54:12] [PASSED] init_fini
[08:54:12] [PASSED] check_used
[08:54:12] [PASSED] check_quota
[08:54:12] [PASSED] check_all
[08:54:12] ===================== [PASSED] guc_idm =====================
[08:54:12] =============== guc_klv_helpers (9 subtests) ===============
[08:54:12] [PASSED] test_count
[08:54:12] [PASSED] test_encode_u32
[08:54:12] [PASSED] test_encode_u64
[08:54:12] [PASSED] test_encode_string
[08:54:12] [PASSED] test_encode_object_raw
[08:54:12] [PASSED] test_encode_object_klv
[08:54:12] [PASSED] test_encode_object_nested
[08:54:12] [PASSED] test_encode_object_basic
[08:54:12] [PASSED] test_print
[08:54:12] ================= [PASSED] guc_klv_helpers =================
[08:54:12] =================== xe_log (4 subtests) ====================
[08:54:12] [PASSED] demo_cper
[08:54:12] [PASSED] demo_dmesg
[08:54:12] ======================= test_dmesg ========================
[08:54:12] [PASSED] test_fatal
[08:54:12] [PASSED] test_fatal_tile
[08:54:12] [PASSED] test_fatal_gt
[08:54:12] [PASSED] test_fatal_comp
[08:54:12] [PASSED] test_fatal_comp_tile
[08:54:12] [PASSED] test_fatal_comp_gt
[08:54:12] [PASSED] test_fatal_all
[08:54:12] [PASSED] test_recoverable
[08:54:12] [PASSED] test_recoverable_tile
[08:54:12] [PASSED] test_recoverable_gt
[08:54:12] [PASSED] test_recoverable_comp
[08:54:12] [PASSED] test_recoverable_comp_tile
[08:54:12] [PASSED] test_recoverable_comp_gt
[08:54:12] [PASSED] test_recoverable_all
[08:54:12] [PASSED] test_info
[08:54:12] [PASSED] test_info_tile
[08:54:12] [PASSED] test_info_gt
[08:54:12] [PASSED] test_info_err
[08:54:12] [PASSED] test_info_comp
[08:54:12] [PASSED] test_info_comp_tile
[08:54:12] [PASSED] test_info_comp_gt
[08:54:12] [PASSED] test_info_all
[08:54:12] [PASSED] test_hw_fatal
[08:54:12] [PASSED] test_hw_recoverable
[08:54:12] [PASSED] test_hw_corrected
[08:54:12] [PASSED] test_hw_informational
[08:54:12] =================== [PASSED] test_dmesg ====================
[08:54:12] ====================== test_invalid =======================
[08:54:12] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG)
[08:54:12] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG)
[08:54:12] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG)
[08:54:12] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG)
[08:54:12] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG)
[08:54:12] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG)
[08:54:12] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG)
[08:54:12] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG)
[08:54:12] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG)
[08:54:12] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG)
[08:54:12] ================== [SKIPPED] test_invalid ==================
[08:54:12] ===================== [PASSED] xe_log ======================
[08:54:12] ================== no_relay (3 subtests) ===================
[08:54:12] [PASSED] xe_drops_guc2pf_if_not_ready
[08:54:12] [PASSED] xe_drops_guc2vf_if_not_ready
[08:54:12] [PASSED] xe_rejects_send_if_not_ready
[08:54:12] ==================== [PASSED] no_relay =====================
[08:54:12] ================== pf_relay (14 subtests) ==================
[08:54:12] [PASSED] pf_rejects_guc2pf_too_short
[08:54:12] [PASSED] pf_rejects_guc2pf_too_long
[08:54:12] [PASSED] pf_rejects_guc2pf_no_payload
[08:54:12] [PASSED] pf_fails_no_payload
[08:54:12] [PASSED] pf_fails_bad_origin
[08:54:12] [PASSED] pf_fails_bad_type
[08:54:12] [PASSED] pf_txn_reports_error
[08:54:12] [PASSED] pf_txn_sends_pf2guc
[08:54:12] [PASSED] pf_sends_pf2guc
[08:54:12] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[08:54:12] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[08:54:12] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[08:54:12] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[08:54:12] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[08:54:12] ==================== [PASSED] pf_relay =====================
[08:54:12] ================== vf_relay (3 subtests) ===================
[08:54:12] [PASSED] vf_rejects_guc2vf_too_short
[08:54:12] [PASSED] vf_rejects_guc2vf_too_long
[08:54:12] [PASSED] vf_rejects_guc2vf_no_payload
[08:54:12] ==================== [PASSED] vf_relay =====================
[08:54:12] ================ pf_gt_config (9 subtests) =================
[08:54:12] [PASSED] fair_contexts_1vf
[08:54:12] [PASSED] fair_doorbells_1vf
[08:54:12] [PASSED] fair_ggtt_1vf
[08:54:12] ====================== fair_vram_1vf ======================
[08:54:12] [PASSED] 3.50 GiB
[08:54:12] [PASSED] 11.5 GiB
[08:54:12] [PASSED] 15.5 GiB
[08:54:12] [PASSED] 31.5 GiB
[08:54:12] [PASSED] 63.5 GiB
[08:54:12] [PASSED] 1.91 GiB
[08:54:12] ================== [PASSED] fair_vram_1vf ==================
[08:54:12] ================ fair_vram_1vf_admin_only =================
[08:54:12] [PASSED] 3.50 GiB
[08:54:12] [PASSED] 11.5 GiB
[08:54:12] [PASSED] 15.5 GiB
[08:54:12] [PASSED] 31.5 GiB
[08:54:12] [PASSED] 63.5 GiB
[08:54:12] [PASSED] 1.91 GiB
[08:54:12] ============ [PASSED] fair_vram_1vf_admin_only =============
[08:54:12] ====================== fair_contexts ======================
[08:54:12] [PASSED] 1 VF
[08:54:12] [PASSED] 2 VFs
[08:54:12] [PASSED] 3 VFs
[08:54:12] [PASSED] 4 VFs
[08:54:12] [PASSED] 5 VFs
[08:54:12] [PASSED] 6 VFs
[08:54:12] [PASSED] 7 VFs
[08:54:12] [PASSED] 8 VFs
[08:54:12] [PASSED] 9 VFs
[08:54:12] [PASSED] 10 VFs
[08:54:12] [PASSED] 11 VFs
[08:54:12] [PASSED] 12 VFs
[08:54:12] [PASSED] 13 VFs
[08:54:12] [PASSED] 14 VFs
[08:54:12] [PASSED] 15 VFs
[08:54:12] [PASSED] 16 VFs
[08:54:12] [PASSED] 17 VFs
[08:54:12] [PASSED] 18 VFs
[08:54:12] [PASSED] 19 VFs
[08:54:12] [PASSED] 20 VFs
[08:54:12] [PASSED] 21 VFs
[08:54:12] [PASSED] 22 VFs
[08:54:12] [PASSED] 23 VFs
[08:54:12] [PASSED] 24 VFs
[08:54:12] [PASSED] 25 VFs
[08:54:12] [PASSED] 26 VFs
[08:54:12] [PASSED] 27 VFs
[08:54:12] [PASSED] 28 VFs
[08:54:12] [PASSED] 29 VFs
[08:54:12] [PASSED] 30 VFs
[08:54:12] [PASSED] 31 VFs
[08:54:12] [PASSED] 32 VFs
[08:54:12] [PASSED] 33 VFs
[08:54:12] [PASSED] 34 VFs
[08:54:12] [PASSED] 35 VFs
[08:54:12] [PASSED] 36 VFs
[08:54:12] [PASSED] 37 VFs
[08:54:12] [PASSED] 38 VFs
[08:54:12] [PASSED] 39 VFs
[08:54:12] [PASSED] 40 VFs
[08:54:12] [PASSED] 41 VFs
[08:54:12] [PASSED] 42 VFs
[08:54:12] [PASSED] 43 VFs
[08:54:12] [PASSED] 44 VFs
[08:54:12] [PASSED] 45 VFs
[08:54:12] [PASSED] 46 VFs
[08:54:12] [PASSED] 47 VFs
[08:54:12] [PASSED] 48 VFs
[08:54:12] [PASSED] 49 VFs
[08:54:12] [PASSED] 50 VFs
[08:54:12] [PASSED] 51 VFs
[08:54:12] [PASSED] 52 VFs
[08:54:12] [PASSED] 53 VFs
[08:54:12] [PASSED] 54 VFs
[08:54:12] [PASSED] 55 VFs
[08:54:12] [PASSED] 56 VFs
[08:54:12] [PASSED] 57 VFs
[08:54:12] [PASSED] 58 VFs
[08:54:12] [PASSED] 59 VFs
[08:54:12] [PASSED] 60 VFs
[08:54:12] [PASSED] 61 VFs
[08:54:12] [PASSED] 62 VFs
[08:54:12] [PASSED] 63 VFs
[08:54:12] ================== [PASSED] fair_contexts ==================
[08:54:12] ===================== fair_doorbells ======================
[08:54:12] [PASSED] 1 VF
[08:54:12] [PASSED] 2 VFs
[08:54:12] [PASSED] 3 VFs
[08:54:12] [PASSED] 4 VFs
[08:54:12] [PASSED] 5 VFs
[08:54:12] [PASSED] 6 VFs
[08:54:12] [PASSED] 7 VFs
[08:54:12] [PASSED] 8 VFs
[08:54:12] [PASSED] 9 VFs
[08:54:12] [PASSED] 10 VFs
[08:54:12] [PASSED] 11 VFs
[08:54:12] [PASSED] 12 VFs
[08:54:12] [PASSED] 13 VFs
[08:54:12] [PASSED] 14 VFs
[08:54:12] [PASSED] 15 VFs
[08:54:12] [PASSED] 16 VFs
[08:54:12] [PASSED] 17 VFs
[08:54:12] [PASSED] 18 VFs
[08:54:12] [PASSED] 19 VFs
[08:54:12] [PASSED] 20 VFs
[08:54:12] [PASSED] 21 VFs
[08:54:12] [PASSED] 22 VFs
[08:54:12] [PASSED] 23 VFs
[08:54:12] [PASSED] 24 VFs
[08:54:12] [PASSED] 25 VFs
[08:54:12] [PASSED] 26 VFs
[08:54:12] [PASSED] 27 VFs
[08:54:12] [PASSED] 28 VFs
[08:54:12] [PASSED] 29 VFs
[08:54:12] [PASSED] 30 VFs
[08:54:12] [PASSED] 31 VFs
[08:54:12] [PASSED] 32 VFs
[08:54:12] [PASSED] 33 VFs
[08:54:12] [PASSED] 34 VFs
[08:54:12] [PASSED] 35 VFs
[08:54:12] [PASSED] 36 VFs
[08:54:12] [PASSED] 37 VFs
[08:54:12] [PASSED] 38 VFs
[08:54:12] [PASSED] 39 VFs
[08:54:12] [PASSED] 40 VFs
[08:54:12] [PASSED] 41 VFs
[08:54:12] [PASSED] 42 VFs
[08:54:12] [PASSED] 43 VFs
[08:54:12] [PASSED] 44 VFs
[08:54:12] [PASSED] 45 VFs
[08:54:12] [PASSED] 46 VFs
[08:54:12] [PASSED] 47 VFs
[08:54:12] [PASSED] 48 VFs
[08:54:12] [PASSED] 49 VFs
[08:54:12] [PASSED] 50 VFs
[08:54:12] [PASSED] 51 VFs
[08:54:12] [PASSED] 52 VFs
[08:54:12] [PASSED] 53 VFs
[08:54:12] [PASSED] 54 VFs
[08:54:12] [PASSED] 55 VFs
[08:54:12] [PASSED] 56 VFs
[08:54:12] [PASSED] 57 VFs
[08:54:12] [PASSED] 58 VFs
[08:54:12] [PASSED] 59 VFs
[08:54:12] [PASSED] 60 VFs
[08:54:12] [PASSED] 61 VFs
[08:54:12] [PASSED] 62 VFs
[08:54:12] [PASSED] 63 VFs
[08:54:12] ================= [PASSED] fair_doorbells ==================
[08:54:12] ======================== fair_ggtt ========================
[08:54:12] [PASSED] 1 VF
[08:54:12] [PASSED] 2 VFs
[08:54:12] [PASSED] 3 VFs
[08:54:12] [PASSED] 4 VFs
[08:54:12] [PASSED] 5 VFs
[08:54:12] [PASSED] 6 VFs
[08:54:12] [PASSED] 7 VFs
[08:54:12] [PASSED] 8 VFs
[08:54:12] [PASSED] 9 VFs
[08:54:12] [PASSED] 10 VFs
[08:54:12] [PASSED] 11 VFs
[08:54:12] [PASSED] 12 VFs
[08:54:12] [PASSED] 13 VFs
[08:54:12] [PASSED] 14 VFs
[08:54:12] [PASSED] 15 VFs
[08:54:12] [PASSED] 16 VFs
[08:54:12] [PASSED] 17 VFs
[08:54:12] [PASSED] 18 VFs
[08:54:12] [PASSED] 19 VFs
[08:54:12] [PASSED] 20 VFs
[08:54:12] [PASSED] 21 VFs
[08:54:12] [PASSED] 22 VFs
[08:54:12] [PASSED] 23 VFs
[08:54:12] [PASSED] 24 VFs
[08:54:12] [PASSED] 25 VFs
[08:54:12] [PASSED] 26 VFs
[08:54:12] [PASSED] 27 VFs
[08:54:12] [PASSED] 28 VFs
[08:54:12] [PASSED] 29 VFs
[08:54:12] [PASSED] 30 VFs
[08:54:12] [PASSED] 31 VFs
[08:54:12] [PASSED] 32 VFs
[08:54:12] [PASSED] 33 VFs
[08:54:12] [PASSED] 34 VFs
[08:54:12] [PASSED] 35 VFs
[08:54:12] [PASSED] 36 VFs
[08:54:12] [PASSED] 37 VFs
[08:54:12] [PASSED] 38 VFs
[08:54:12] [PASSED] 39 VFs
[08:54:12] [PASSED] 40 VFs
[08:54:12] [PASSED] 41 VFs
[08:54:12] [PASSED] 42 VFs
[08:54:12] [PASSED] 43 VFs
[08:54:12] [PASSED] 44 VFs
[08:54:12] [PASSED] 45 VFs
[08:54:12] [PASSED] 46 VFs
[08:54:12] [PASSED] 47 VFs
[08:54:12] [PASSED] 48 VFs
[08:54:12] [PASSED] 49 VFs
[08:54:12] [PASSED] 50 VFs
[08:54:12] [PASSED] 51 VFs
[08:54:12] [PASSED] 52 VFs
[08:54:12] [PASSED] 53 VFs
[08:54:12] [PASSED] 54 VFs
[08:54:12] [PASSED] 55 VFs
[08:54:12] [PASSED] 56 VFs
[08:54:12] [PASSED] 57 VFs
[08:54:12] [PASSED] 58 VFs
[08:54:12] [PASSED] 59 VFs
[08:54:12] [PASSED] 60 VFs
[08:54:12] [PASSED] 61 VFs
[08:54:12] [PASSED] 62 VFs
[08:54:12] [PASSED] 63 VFs
[08:54:12] ==================== [PASSED] fair_ggtt ====================
[08:54:12] ======================== fair_vram ========================
[08:54:12] [PASSED] 1 VF
[08:54:12] [PASSED] 2 VFs
[08:54:12] [PASSED] 3 VFs
[08:54:12] [PASSED] 4 VFs
[08:54:12] [PASSED] 5 VFs
[08:54:12] [PASSED] 6 VFs
[08:54:12] [PASSED] 7 VFs
[08:54:12] [PASSED] 8 VFs
[08:54:12] [PASSED] 9 VFs
[08:54:12] [PASSED] 10 VFs
[08:54:12] [PASSED] 11 VFs
[08:54:12] [PASSED] 12 VFs
[08:54:12] [PASSED] 13 VFs
[08:54:12] [PASSED] 14 VFs
[08:54:12] [PASSED] 15 VFs
[08:54:12] [PASSED] 16 VFs
[08:54:12] [PASSED] 17 VFs
[08:54:12] [PASSED] 18 VFs
[08:54:12] [PASSED] 19 VFs
[08:54:12] [PASSED] 20 VFs
[08:54:12] [PASSED] 21 VFs
[08:54:12] [PASSED] 22 VFs
[08:54:12] [PASSED] 23 VFs
[08:54:12] [PASSED] 24 VFs
[08:54:12] [PASSED] 25 VFs
[08:54:12] [PASSED] 26 VFs
[08:54:12] [PASSED] 27 VFs
[08:54:12] [PASSED] 28 VFs
[08:54:12] [PASSED] 29 VFs
[08:54:12] [PASSED] 30 VFs
[08:54:12] [PASSED] 31 VFs
[08:54:12] [PASSED] 32 VFs
[08:54:12] [PASSED] 33 VFs
[08:54:12] [PASSED] 34 VFs
[08:54:12] [PASSED] 35 VFs
[08:54:12] [PASSED] 36 VFs
[08:54:12] [PASSED] 37 VFs
[08:54:12] [PASSED] 38 VFs
[08:54:12] [PASSED] 39 VFs
[08:54:12] [PASSED] 40 VFs
[08:54:12] [PASSED] 41 VFs
[08:54:12] [PASSED] 42 VFs
[08:54:12] [PASSED] 43 VFs
[08:54:12] [PASSED] 44 VFs
[08:54:12] [PASSED] 45 VFs
[08:54:12] [PASSED] 46 VFs
[08:54:12] [PASSED] 47 VFs
[08:54:12] [PASSED] 48 VFs
[08:54:12] [PASSED] 49 VFs
[08:54:12] [PASSED] 50 VFs
[08:54:12] [PASSED] 51 VFs
[08:54:12] [PASSED] 52 VFs
[08:54:12] [PASSED] 53 VFs
[08:54:12] [PASSED] 54 VFs
[08:54:12] [PASSED] 55 VFs
[08:54:12] [PASSED] 56 VFs
[08:54:12] [PASSED] 57 VFs
[08:54:12] [PASSED] 58 VFs
[08:54:12] [PASSED] 59 VFs
[08:54:12] [PASSED] 60 VFs
[08:54:12] [PASSED] 61 VFs
[08:54:12] [PASSED] 62 VFs
[08:54:12] [PASSED] 63 VFs
[08:54:12] ==================== [PASSED] fair_vram ====================
[08:54:12] ================== [PASSED] pf_gt_config ===================
[08:54:12] ===================== lmtt (1 subtest) =====================
[08:54:12] ======================== test_ops =========================
[08:54:12] [PASSED] 2-level
[08:54:12] [PASSED] multi-level
[08:54:12] ==================== [PASSED] test_ops =====================
[08:54:12] ====================== [PASSED] lmtt =======================
[08:54:12] ================= sriov_packet (1 subtest) =================
[08:54:12] [PASSED] test_descriptor_init
[08:54:12] ================== [PASSED] sriov_packet ===================
[08:54:12] ================= pf_service (11 subtests) =================
[08:54:12] [PASSED] pf_negotiate_any
[08:54:12] [PASSED] pf_negotiate_base_match
[08:54:12] [PASSED] pf_negotiate_base_newer
[08:54:12] [PASSED] pf_negotiate_base_next
[08:54:12] [SKIPPED] pf_negotiate_base_older (no older minor)
[08:54:12] [PASSED] pf_negotiate_base_prev
[08:54:12] [PASSED] pf_negotiate_latest_match
[08:54:12] [PASSED] pf_negotiate_latest_newer
[08:54:12] [PASSED] pf_negotiate_latest_next
[08:54:12] [SKIPPED] pf_negotiate_latest_older (no older minor)
[08:54:12] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[08:54:12] =================== [PASSED] pf_service ====================
[08:54:12] ================= xe_guc_g2g (2 subtests) ==================
[08:54:12] ============== xe_live_guc_g2g_kunit_default ==============
[08:54:12] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[08:54:12] ============== xe_live_guc_g2g_kunit_allmem ===============
[08:54:12] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[08:54:12] =================== [SKIPPED] xe_guc_g2g ===================
[08:54:12] =================== xe_mocs (2 subtests) ===================
[08:54:12] ================ xe_live_mocs_kernel_kunit ================
[08:54:12] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[08:54:12] ================ xe_live_mocs_reset_kunit =================
[08:54:12] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[08:54:12] ==================== [SKIPPED] xe_mocs =====================
[08:54:12] ================= xe_migrate (2 subtests) ==================
[08:54:12] ================= xe_migrate_sanity_kunit =================
[08:54:12] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[08:54:12] ================== xe_validate_ccs_kunit ==================
[08:54:12] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[08:54:12] =================== [SKIPPED] xe_migrate ===================
[08:54:12] ================== xe_dma_buf (1 subtest) ==================
[08:54:12] ==================== xe_dma_buf_kunit =====================
[08:54:12] ================ [SKIPPED] xe_dma_buf_kunit ================
[08:54:12] =================== [SKIPPED] xe_dma_buf ===================
[08:54:12] ================= xe_bo_shrink (1 subtest) =================
[08:54:12] =================== xe_bo_shrink_kunit ====================
[08:54:12] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[08:54:12] ================== [SKIPPED] xe_bo_shrink ==================
[08:54:12] ==================== xe_bo (2 subtests) ====================
[08:54:12] ================== xe_ccs_migrate_kunit ===================
[08:54:12] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[08:54:12] ==================== xe_bo_evict_kunit ====================
[08:54:12] =============== [SKIPPED] xe_bo_evict_kunit ================
[08:54:12] ===================== [SKIPPED] xe_bo ======================
[08:54:12] =================== xe_any (9 subtests) ====================
[08:54:12] [PASSED] test_to_xe
[08:54:12] [PASSED] test_to_dev
[08:54:12] [PASSED] test_to_pdev
[08:54:12] [PASSED] test_to_drm
[08:54:12] [PASSED] test_if_pdev
[08:54:12] [PASSED] test_if_xe
[08:54:12] [PASSED] test_if_tile
[08:54:12] [PASSED] test_if_gt
[08:54:12] [PASSED] test_to_id
[08:54:12] ===================== [PASSED] xe_any ======================
[08:54:12] ==================== args (13 subtests) ====================
[08:54:12] [PASSED] count_args_test
[08:54:12] [PASSED] call_args_example
[08:54:12] [PASSED] call_args_test
[08:54:12] [PASSED] drop_first_arg_example
[08:54:12] [PASSED] drop_first_arg_test
[08:54:12] [PASSED] first_arg_example
[08:54:12] [PASSED] first_arg_test
[08:54:12] [PASSED] last_arg_example
[08:54:12] [PASSED] last_arg_test
[08:54:12] [PASSED] pick_arg_example
[08:54:12] [PASSED] if_args_example
[08:54:12] [PASSED] if_args_test
[08:54:12] [PASSED] sep_comma_example
[08:54:12] ====================== [PASSED] args =======================
[08:54:12] =================== xe_pci (3 subtests) ====================
[08:54:12] ==================== check_graphics_ip ====================
[08:54:12] [PASSED] 12.00 Xe_LP
[08:54:12] [PASSED] 12.10 Xe_LP+
[08:54:12] [PASSED] 12.55 Xe_HPG
[08:54:12] [PASSED] 12.60 Xe_HPC
[08:54:12] [PASSED] 12.70 Xe_LPG
[08:54:12] [PASSED] 12.71 Xe_LPG
[08:54:12] [PASSED] 12.74 Xe_LPG+
[08:54:12] [PASSED] 20.01 Xe2_HPG
[08:54:12] [PASSED] 20.02 Xe2_HPG
[08:54:12] [PASSED] 20.04 Xe2_LPG
[08:54:12] [PASSED] 30.00 Xe3_LPG
[08:54:12] [PASSED] 30.01 Xe3_LPG
[08:54:12] [PASSED] 30.03 Xe3_LPG
[08:54:12] [PASSED] 30.04 Xe3_LPG
[08:54:12] [PASSED] 30.05 Xe3_LPG
[08:54:12] [PASSED] 35.10 Xe3p_LPG
[08:54:12] [PASSED] 35.11 Xe3p_XPC
[08:54:12] ================ [PASSED] check_graphics_ip ================
[08:54:12] ===================== check_media_ip ======================
[08:54:12] [PASSED] 12.00 Xe_M
[08:54:12] [PASSED] 12.55 Xe_HPM
[08:54:12] [PASSED] 13.00 Xe_LPM+
[08:54:12] [PASSED] 13.01 Xe2_HPM
[08:54:12] [PASSED] 20.00 Xe2_LPM
[08:54:12] [PASSED] 30.00 Xe3_LPM
[08:54:12] [PASSED] 30.02 Xe3_LPM
[08:54:12] [PASSED] 35.00 Xe3p_LPM
[08:54:12] [PASSED] 35.03 Xe3p_HPM
[08:54:12] ================= [PASSED] check_media_ip ==================
[08:54:12] =================== check_platform_desc ===================
[08:54:12] [PASSED] 0x9A60 (TIGERLAKE)
[08:54:12] [PASSED] 0x9A68 (TIGERLAKE)
[08:54:12] [PASSED] 0x9A70 (TIGERLAKE)
[08:54:12] [PASSED] 0x9A40 (TIGERLAKE)
[08:54:12] [PASSED] 0x9A49 (TIGERLAKE)
[08:54:12] [PASSED] 0x9A59 (TIGERLAKE)
[08:54:12] [PASSED] 0x9A78 (TIGERLAKE)
[08:54:12] [PASSED] 0x9AC0 (TIGERLAKE)
[08:54:12] [PASSED] 0x9AC9 (TIGERLAKE)
[08:54:12] [PASSED] 0x9AD9 (TIGERLAKE)
[08:54:12] [PASSED] 0x9AF8 (TIGERLAKE)
[08:54:12] [PASSED] 0x4C80 (ROCKETLAKE)
[08:54:12] [PASSED] 0x4C8A (ROCKETLAKE)
[08:54:12] [PASSED] 0x4C8B (ROCKETLAKE)
[08:54:12] [PASSED] 0x4C8C (ROCKETLAKE)
[08:54:12] [PASSED] 0x4C90 (ROCKETLAKE)
[08:54:12] [PASSED] 0x4C9A (ROCKETLAKE)
[08:54:12] [PASSED] 0x4680 (ALDERLAKE_S)
[08:54:12] [PASSED] 0x4682 (ALDERLAKE_S)
[08:54:12] [PASSED] 0x4688 (ALDERLAKE_S)
[08:54:12] [PASSED] 0x468A (ALDERLAKE_S)
[08:54:12] [PASSED] 0x468B (ALDERLAKE_S)
[08:54:12] [PASSED] 0x4690 (ALDERLAKE_S)
[08:54:12] [PASSED] 0x4692 (ALDERLAKE_S)
[08:54:12] [PASSED] 0x4693 (ALDERLAKE_S)
[08:54:12] [PASSED] 0x46A0 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46A1 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46A2 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46A3 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46A6 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46A8 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46AA (ALDERLAKE_P)
[08:54:12] [PASSED] 0x462A (ALDERLAKE_P)
[08:54:12] [PASSED] 0x4626 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x4628 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46B0 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46B1 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46B2 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46B3 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46C0 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46C1 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46C2 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46C3 (ALDERLAKE_P)
[08:54:12] [PASSED] 0x46D0 (ALDERLAKE_N)
[08:54:12] [PASSED] 0x46D1 (ALDERLAKE_N)
[08:54:12] [PASSED] 0x46D2 (ALDERLAKE_N)
[08:54:12] [PASSED] 0x46D3 (ALDERLAKE_N)
[08:54:12] [PASSED] 0x46D4 (ALDERLAKE_N)
[08:54:12] [PASSED] 0xA721 (ALDERLAKE_P)
[08:54:12] [PASSED] 0xA7A1 (ALDERLAKE_P)
[08:54:12] [PASSED] 0xA7A9 (ALDERLAKE_P)
[08:54:12] [PASSED] 0xA7AC (ALDERLAKE_P)
[08:54:12] [PASSED] 0xA7AD (ALDERLAKE_P)
[08:54:12] [PASSED] 0xA720 (ALDERLAKE_P)
[08:54:12] [PASSED] 0xA7A0 (ALDERLAKE_P)
[08:54:12] [PASSED] 0xA7A8 (ALDERLAKE_P)
[08:54:12] [PASSED] 0xA7AA (ALDERLAKE_P)
[08:54:12] [PASSED] 0xA7AB (ALDERLAKE_P)
[08:54:12] [PASSED] 0xA780 (ALDERLAKE_S)
[08:54:12] [PASSED] 0xA781 (ALDERLAKE_S)
[08:54:12] [PASSED] 0xA782 (ALDERLAKE_S)
[08:54:12] [PASSED] 0xA783 (ALDERLAKE_S)
[08:54:12] [PASSED] 0xA788 (ALDERLAKE_S)
[08:54:12] [PASSED] 0xA789 (ALDERLAKE_S)
[08:54:12] [PASSED] 0xA78A (ALDERLAKE_S)
[08:54:12] [PASSED] 0xA78B (ALDERLAKE_S)
[08:54:12] [PASSED] 0x4905 (DG1)
[08:54:12] [PASSED] 0x4906 (DG1)
[08:54:12] [PASSED] 0x4907 (DG1)
[08:54:12] [PASSED] 0x4908 (DG1)
[08:54:12] [PASSED] 0x4909 (DG1)
[08:54:12] [PASSED] 0x56C0 (DG2)
[08:54:12] [PASSED] 0x56C2 (DG2)
[08:54:12] [PASSED] 0x56C1 (DG2)
[08:54:12] [PASSED] 0x7D51 (METEORLAKE)
[08:54:12] [PASSED] 0x7DD1 (METEORLAKE)
[08:54:12] [PASSED] 0x7D41 (METEORLAKE)
[08:54:12] [PASSED] 0x7D67 (METEORLAKE)
[08:54:12] [PASSED] 0xB640 (METEORLAKE)
[08:54:12] [PASSED] 0x56A0 (DG2)
[08:54:12] [PASSED] 0x56A1 (DG2)
[08:54:12] [PASSED] 0x56A2 (DG2)
[08:54:12] [PASSED] 0x56BE (DG2)
[08:54:12] [PASSED] 0x56BF (DG2)
[08:54:12] [PASSED] 0x5690 (DG2)
[08:54:12] [PASSED] 0x5691 (DG2)
[08:54:12] [PASSED] 0x5692 (DG2)
[08:54:12] [PASSED] 0x56A5 (DG2)
[08:54:12] [PASSED] 0x56A6 (DG2)
[08:54:12] [PASSED] 0x56B0 (DG2)
[08:54:12] [PASSED] 0x56B1 (DG2)
[08:54:12] [PASSED] 0x56BA (DG2)
[08:54:12] [PASSED] 0x56BB (DG2)
[08:54:12] [PASSED] 0x56BC (DG2)
[08:54:12] [PASSED] 0x56BD (DG2)
[08:54:12] [PASSED] 0x5693 (DG2)
[08:54:12] [PASSED] 0x5694 (DG2)
[08:54:12] [PASSED] 0x5695 (DG2)
[08:54:12] [PASSED] 0x56A3 (DG2)
[08:54:12] [PASSED] 0x56A4 (DG2)
[08:54:12] [PASSED] 0x56B2 (DG2)
[08:54:12] [PASSED] 0x56B3 (DG2)
[08:54:12] [PASSED] 0x5696 (DG2)
[08:54:12] [PASSED] 0x5697 (DG2)
[08:54:12] [PASSED] 0xB69 (PVC)
[08:54:12] [PASSED] 0xB6E (PVC)
[08:54:12] [PASSED] 0xBD4 (PVC)
[08:54:12] [PASSED] 0xBD5 (PVC)
[08:54:12] [PASSED] 0xBD6 (PVC)
[08:54:12] [PASSED] 0xBD7 (PVC)
[08:54:12] [PASSED] 0xBD8 (PVC)
[08:54:12] [PASSED] 0xBD9 (PVC)
[08:54:12] [PASSED] 0xBDA (PVC)
[08:54:12] [PASSED] 0xBDB (PVC)
[08:54:12] [PASSED] 0xBE0 (PVC)
[08:54:12] [PASSED] 0xBE1 (PVC)
[08:54:12] [PASSED] 0xBE5 (PVC)
[08:54:12] [PASSED] 0x7D40 (METEORLAKE)
[08:54:12] [PASSED] 0x7D45 (METEORLAKE)
[08:54:12] [PASSED] 0x7D55 (METEORLAKE)
[08:54:12] [PASSED] 0x7D60 (METEORLAKE)
[08:54:12] [PASSED] 0x7DD5 (METEORLAKE)
[08:54:12] [PASSED] 0x6420 (LUNARLAKE)
[08:54:12] [PASSED] 0x64A0 (LUNARLAKE)
[08:54:12] [PASSED] 0x64B0 (LUNARLAKE)
[08:54:12] [PASSED] 0xE202 (BATTLEMAGE)
[08:54:12] [PASSED] 0xE209 (BATTLEMAGE)
[08:54:12] [PASSED] 0xE20B (BATTLEMAGE)
[08:54:12] [PASSED] 0xE20C (BATTLEMAGE)
[08:54:12] [PASSED] 0xE20D (BATTLEMAGE)
[08:54:12] [PASSED] 0xE210 (BATTLEMAGE)
[08:54:12] [PASSED] 0xE211 (BATTLEMAGE)
[08:54:12] [PASSED] 0xE212 (BATTLEMAGE)
[08:54:12] [PASSED] 0xE216 (BATTLEMAGE)
[08:54:12] [PASSED] 0xE220 (BATTLEMAGE)
[08:54:12] [PASSED] 0xE221 (BATTLEMAGE)
[08:54:12] [PASSED] 0xE222 (BATTLEMAGE)
[08:54:12] [PASSED] 0xE223 (BATTLEMAGE)
[08:54:12] [PASSED] 0xB080 (PANTHERLAKE)
[08:54:12] [PASSED] 0xB081 (PANTHERLAKE)
[08:54:12] [PASSED] 0xB082 (PANTHERLAKE)
[08:54:12] [PASSED] 0xB083 (PANTHERLAKE)
[08:54:12] [PASSED] 0xB084 (PANTHERLAKE)
[08:54:12] [PASSED] 0xB085 (PANTHERLAKE)
[08:54:12] [PASSED] 0xB086 (PANTHERLAKE)
[08:54:12] [PASSED] 0xB087 (PANTHERLAKE)
[08:54:12] [PASSED] 0xB08F (PANTHERLAKE)
[08:54:12] [PASSED] 0xB090 (PANTHERLAKE)
[08:54:12] [PASSED] 0xB0A0 (PANTHERLAKE)
[08:54:12] [PASSED] 0xB0B0 (PANTHERLAKE)
[08:54:12] [PASSED] 0xFD80 (PANTHERLAKE)
[08:54:12] [PASSED] 0xFD81 (PANTHERLAKE)
[08:54:12] [PASSED] 0xD740 (NOVALAKE_S)
[08:54:12] [PASSED] 0xD741 (NOVALAKE_S)
[08:54:12] [PASSED] 0xD742 (NOVALAKE_S)
[08:54:12] [PASSED] 0xD743 (NOVALAKE_S)
[08:54:12] [PASSED] 0xD745 (NOVALAKE_S)
[08:54:12] [PASSED] 0xD74A (NOVALAKE_S)
[08:54:12] [PASSED] 0xD74B (NOVALAKE_S)
[08:54:12] [PASSED] 0x674C (CRESCENTISLAND)
[08:54:12] [PASSED] 0x674D (CRESCENTISLAND)
[08:54:12] [PASSED] 0x674E (CRESCENTISLAND)
[08:54:12] [PASSED] 0x674F (CRESCENTISLAND)
[08:54:12] [PASSED] 0x6750 (CRESCENTISLAND)
[08:54:12] [PASSED] 0xD750 (NOVALAKE_P)
[08:54:12] [PASSED] 0xD751 (NOVALAKE_P)
[08:54:12] [PASSED] 0xD752 (NOVALAKE_P)
[08:54:12] [PASSED] 0xD753 (NOVALAKE_P)
[08:54:12] [PASSED] 0xD754 (NOVALAKE_P)
[08:54:12] [PASSED] 0xD755 (NOVALAKE_P)
[08:54:12] [PASSED] 0xD756 (NOVALAKE_P)
[08:54:12] [PASSED] 0xD757 (NOVALAKE_P)
[08:54:12] [PASSED] 0xD75F (NOVALAKE_P)
[08:54:12] =============== [PASSED] check_platform_desc ===============
[08:54:12] ===================== [PASSED] xe_pci ======================
[08:54:12] ============= xe_rtp_tables_test (5 subtests) ==============
[08:54:12] ================== xe_rtp_table_gt_test ===================
[08:54:12] [PASSED] gt_was/14011060649
[08:54:12] [PASSED] gt_was/14011059788
[08:54:12] [PASSED] gt_was/14015795083
[08:54:12] [PASSED] gt_was/16021867713
[08:54:12] [PASSED] gt_was/14019449301
[08:54:12] [PASSED] gt_was/16028005424
[08:54:12] [PASSED] gt_was/14026578760
[08:54:12] [PASSED] gt_was/1409420604
[08:54:12] [PASSED] gt_was/1408615072
[08:54:12] [PASSED] gt_was/22010523718
[08:54:12] [PASSED] gt_was/14011006942
[08:54:12] [PASSED] gt_was/14014830051
[08:54:12] [PASSED] gt_was/18018781329
[08:54:12] [PASSED] gt_was/1509235366
[08:54:12] [PASSED] gt_was/18018781329
[08:54:12] [PASSED] gt_was/16016694945
[08:54:12] [PASSED] gt_was/14018575942
[08:54:12] [PASSED] gt_was/22016670082
[08:54:12] [PASSED] gt_was/22016670082
[08:54:12] [PASSED] gt_was/14017421178
[08:54:12] [PASSED] gt_was/16025250150
[08:54:12] [PASSED] gt_was/14021871409
[08:54:12] [PASSED] gt_was/16021865536
[08:54:12] [PASSED] gt_was/14021486841
[08:54:12] [PASSED] gt_was/14025160223
[08:54:12] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[08:54:12] [PASSED] gt_was/14025635424
[08:54:12] [PASSED] gt_was/16028005424
[08:54:12] ============== [PASSED] xe_rtp_table_gt_test ===============
[08:54:12] ================== xe_rtp_table_gt_test ===================
[08:54:12] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[08:54:12] [PASSED] gt_tunings/Tuning: 32B Access Enable
[08:54:12] [PASSED] gt_tunings/Tuning: L3 cache
[08:54:12] [PASSED] gt_tunings/Tuning: L3 cache - media
[08:54:12] [PASSED] gt_tunings/Tuning: Compression Overfetch
[08:54:12] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[08:54:12] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[08:54:12] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[08:54:12] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[08:54:12] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[08:54:12] [PASSED] gt_tunings/Tuning: Stateless compression control
[08:54:12] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[08:54:12] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[08:54:12] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[08:54:12] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[08:54:12] ============== [PASSED] xe_rtp_table_gt_test ===============
[08:54:12] ================== xe_rtp_table_oob_test ==================
[08:54:12] [PASSED] oob_was/1607983814
[08:54:12] [PASSED] oob_was/16010904313
[08:54:12] [PASSED] oob_was/18022495364
[08:54:12] [PASSED] oob_was/22012773006
[08:54:12] [PASSED] oob_was/14014475959
[08:54:12] [PASSED] oob_was/22011391025
[08:54:12] [PASSED] oob_was/22012727170
[08:54:12] [PASSED] oob_was/22012727685
[08:54:12] [PASSED] oob_was/22016596838
[08:54:12] [PASSED] oob_was/18020744125
[08:54:12] [PASSED] oob_was/1409600907
[08:54:12] [PASSED] oob_was/22014953428
[08:54:12] [PASSED] oob_was/16017236439
[08:54:12] [PASSED] oob_was/14019821291
[08:54:12] [PASSED] oob_was/14015076503
[08:54:12] [PASSED] oob_was/14018913170
[08:54:12] [PASSED] oob_was/14018094691
[08:54:12] [PASSED] oob_was/18024947630
[08:54:12] [PASSED] oob_was/16022287689
[08:54:12] [PASSED] oob_was/13011645652
[08:54:12] [PASSED] oob_was/14022293748
[08:54:12] [PASSED] oob_was/22019794406
[08:54:12] [PASSED] oob_was/22019338487
[08:54:12] [PASSED] oob_was/16023588340
[08:54:12] [PASSED] oob_was/14019789679
[08:54:12] [PASSED] oob_was/14022866841
[08:54:12] [PASSED] oob_was/16021333562
[08:54:12] [PASSED] oob_was/14016712196
[08:54:12] [PASSED] oob_was/14015568240
[08:54:12] [PASSED] oob_was/18013179988
[08:54:12] [PASSED] oob_was/1508761755
[08:54:12] [PASSED] oob_was/16023105232
[08:54:12] [PASSED] oob_was/16026508708
[08:54:12] [PASSED] oob_was/14020001231
[08:54:12] [PASSED] oob_was/16023683509
[08:54:12] [PASSED] oob_was/14025515070
[08:54:12] [PASSED] oob_was/15015404425_disable
[08:54:12] [PASSED] oob_was/16026007364
[08:54:12] [PASSED] oob_was/14020316580
[08:54:12] [PASSED] oob_was/14025883347
[08:54:12] [PASSED] oob_was/16029380221
[08:54:12] [PASSED] oob_was/22022079272
[08:54:12] [PASSED] oob_was/16029897822
[08:54:12] [PASSED] oob_was/14027054324
[08:54:12] ============== [PASSED] xe_rtp_table_oob_test ==============
[08:54:12] ================ xe_rtp_table_dev_oob_test ================
[08:54:12] [PASSED] device_oob_was/22010954014
[08:54:12] [PASSED] device_oob_was/15015404425
[08:54:12] [PASSED] device_oob_was/22019338487_display
[08:54:12] [PASSED] device_oob_was/14022085890
[08:54:12] [PASSED] device_oob_was/14026539277
[08:54:12] [PASSED] device_oob_was/14026633728
[08:54:12] [PASSED] device_oob_was/14026746987
[08:54:12] [PASSED] device_oob_was/14026779378
[08:54:12] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[08:54:12] ========== xe_rtp_table_missing_upper_bound_test ==========
[08:54:12] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[08:54:12] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[08:54:12] [PASSED] register_whitelist/1806527549
[08:54:12] [PASSED] register_whitelist/allow_read_ctx_timestamp
[08:54:12] [PASSED] register_whitelist/allow_read_queue_timestamp
[08:54:12] [PASSED] register_whitelist/16014440446
[08:54:12] [PASSED] register_whitelist/16017236439
[08:54:12] [PASSED] register_whitelist/16020183090
[08:54:12] [PASSED] register_whitelist/14024997852
[08:54:12] [PASSED] register_whitelist/14024997852
[08:54:12] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[08:54:12] =============== [PASSED] xe_rtp_tables_test ================
[08:54:12] =================== xe_rtp (3 subtests) ====================
[08:54:12] =================== xe_rtp_rules_tests ====================
[08:54:12] [PASSED] no
[08:54:12] [PASSED] yes
[08:54:12] [PASSED] no-and-no
[08:54:12] [PASSED] no-and-yes
[08:54:12] [PASSED] yes-and-no
[08:54:12] [PASSED] yes-and-yes
[08:54:12] [PASSED] no-or-no
[08:54:12] [PASSED] no-or-yes
[08:54:12] [PASSED] yes-or-no
[08:54:12] [PASSED] yes-or-yes
[08:54:12] [PASSED] no-yes-or-yes-no
[08:54:12] [PASSED] no-yes-or-yes-yes
[08:54:12] [PASSED] yes-yes-or-no-yes
[08:54:12] [PASSED] yes-yes-or-yes-yes
[08:54:12] [PASSED] no-no-or-yes-or-no
[08:54:12] [PASSED] or
[08:54:12] [PASSED] or-yes
[08:54:12] [PASSED] or-no
[08:54:12] [PASSED] yes-or
[08:54:12] [PASSED] no-or
[08:54:12] [PASSED] no-or-or-yes
[08:54:12] [PASSED] yes-or-or-no
[08:54:12] [PASSED] no-or-or-no
[08:54:12] [PASSED] missing-context-engine-class
[08:54:12] [PASSED] missing-context-engine-class-or-yes
[08:54:12] [PASSED] missing-context-engine-class-or-or-yes
[08:54:12] =============== [PASSED] xe_rtp_rules_tests ================
[08:54:12] =============== xe_rtp_process_to_sr_tests ================
[08:54:12] [PASSED] coalesce-same-reg
[08:54:12] [PASSED] coalesce-same-reg-literal-and-func
[08:54:12] [PASSED] no-match-no-add
[08:54:12] [PASSED] two-regs-two-entries
[08:54:12] [PASSED] clr-one-set-other
[08:54:12] [PASSED] set-field
[08:54:12] [PASSED] conflict-duplicate
[08:54:12] [PASSED] conflict-not-disjoint
[08:54:12] [PASSED] conflict-not-disjoint-literal-and-func
[08:54:12] [PASSED] conflict-reg-type
[08:54:12] [PASSED] bad-mcr-reg-forced-to-regular
[08:54:12] [PASSED] bad-regular-reg-forced-to-mcr
[08:54:12] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[08:54:12] ================== xe_rtp_process_tests ===================
[08:54:12] [PASSED] active1
[08:54:12] [PASSED] active2
[08:54:12] [PASSED] active-inactive
[08:54:12] [PASSED] inactive-active
[08:54:12] [PASSED] inactive-active-inactive
[08:54:12] [PASSED] inactive-inactive-inactive
[08:54:12] ============== [PASSED] xe_rtp_process_tests ===============
[08:54:12] ===================== [PASSED] xe_rtp ======================
[08:54:12] ==================== xe_wa (1 subtest) =====================
[08:54:12] ======================== xe_wa_gt =========================
[08:54:12] [PASSED] TIGERLAKE B0
[08:54:12] [PASSED] DG1 A0
[08:54:12] [PASSED] DG1 B0
[08:54:12] [PASSED] ALDERLAKE_S A0
[08:54:12] [PASSED] ALDERLAKE_S B0
[08:54:12] [PASSED] ALDERLAKE_S C0
[08:54:12] [PASSED] ALDERLAKE_S D0
[08:54:12] [PASSED] ALDERLAKE_P A0
[08:54:12] [PASSED] ALDERLAKE_P B0
[08:54:12] [PASSED] ALDERLAKE_P C0
[08:54:12] [PASSED] ALDERLAKE_S RPLS D0
[08:54:12] [PASSED] ALDERLAKE_P RPLU E0
[08:54:12] [PASSED] DG2 G10 C0
[08:54:12] [PASSED] DG2 G11 B1
[08:54:12] [PASSED] DG2 G12 A1
[08:54:12] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[08:54:12] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[08:54:12] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[08:54:12] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[08:54:12] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[08:54:12] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[08:54:12] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[08:54:12] ==================== [PASSED] xe_wa_gt =====================
[08:54:12] ====================== [PASSED] xe_wa ======================
[08:54:12] ============================================================
[08:54:12] Testing complete. Ran 789 tests: passed: 761, skipped: 28
[08:54:12] Elapsed time: 37.289s total, 4.400s configuring, 32.173s building, 0.674s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[08:54:12] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[08:54:14] 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
[08:54:39] Starting KUnit Kernel (1/1)...
[08:54:39] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[08:54:39] ============ drm_test_pick_cmdline (2 subtests) ============
[08:54:39] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[08:54:39] =============== drm_test_pick_cmdline_named ===============
[08:54:39] [PASSED] NTSC
[08:54:39] [PASSED] NTSC-J
[08:54:39] [PASSED] PAL
[08:54:39] [PASSED] PAL-M
[08:54:39] =========== [PASSED] drm_test_pick_cmdline_named ===========
[08:54:39] ============== [PASSED] drm_test_pick_cmdline ==============
[08:54:39] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[08:54:39] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[08:54:39] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[08:54:39] =========== drm_validate_clone_mode (2 subtests) ===========
[08:54:39] ============== drm_test_check_in_clone_mode ===============
[08:54:39] [PASSED] in_clone_mode
[08:54:39] [PASSED] not_in_clone_mode
[08:54:39] ========== [PASSED] drm_test_check_in_clone_mode ===========
[08:54:39] =============== drm_test_check_valid_clones ===============
[08:54:39] [PASSED] not_in_clone_mode
[08:54:39] [PASSED] valid_clone
[08:54:39] [PASSED] invalid_clone
[08:54:39] =========== [PASSED] drm_test_check_valid_clones ===========
[08:54:39] ============= [PASSED] drm_validate_clone_mode =============
[08:54:39] ============= drm_validate_modeset (1 subtest) =============
[08:54:39] [PASSED] drm_test_check_connector_changed_modeset
[08:54:39] ============== [PASSED] drm_validate_modeset ===============
[08:54:39] ====== drm_test_bridge_get_current_state (1 subtest) =======
[08:54:39] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[08:54:39] ======== [PASSED] drm_test_bridge_get_current_state ========
[08:54:39] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[08:54:39] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[08:54:39] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[08:54:39] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[08:54:39] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[08:54:39] ============== drm_bridge_alloc (2 subtests) ===============
[08:54:39] [PASSED] drm_test_drm_bridge_alloc_basic
[08:54:39] [PASSED] drm_test_drm_bridge_alloc_get_put
[08:54:39] ================ [PASSED] drm_bridge_alloc =================
[08:54:39] ============= drm_bridge_bus_fmt (5 subtests) ==============
[08:54:39] [PASSED] drm_test_bridge_rgb_yuv_rgb
[08:54:39] [PASSED] drm_test_bridge_must_convert_to_yuv444
[08:54:39] [PASSED] drm_test_bridge_hdmi_auto_rgb
[08:54:39] [PASSED] drm_test_bridge_auto_first
[08:54:39] [PASSED] drm_test_bridge_rgb_yuv_no_path
[08:54:39] =============== [PASSED] drm_bridge_bus_fmt ================
[08:54:39] ============= drm_cmdline_parser (40 subtests) =============
[08:54:39] [PASSED] drm_test_cmdline_force_d_only
[08:54:39] [PASSED] drm_test_cmdline_force_D_only_dvi
[08:54:39] [PASSED] drm_test_cmdline_force_D_only_hdmi
[08:54:39] [PASSED] drm_test_cmdline_force_D_only_not_digital
[08:54:39] [PASSED] drm_test_cmdline_force_e_only
[08:54:39] [PASSED] drm_test_cmdline_res
[08:54:39] [PASSED] drm_test_cmdline_res_vesa
[08:54:39] [PASSED] drm_test_cmdline_res_vesa_rblank
[08:54:39] [PASSED] drm_test_cmdline_res_rblank
[08:54:39] [PASSED] drm_test_cmdline_res_bpp
[08:54:39] [PASSED] drm_test_cmdline_res_refresh
[08:54:39] [PASSED] drm_test_cmdline_res_bpp_refresh
[08:54:39] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[08:54:39] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[08:54:39] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[08:54:39] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[08:54:39] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[08:54:39] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[08:54:39] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[08:54:39] [PASSED] drm_test_cmdline_res_margins_force_on
[08:54:39] [PASSED] drm_test_cmdline_res_vesa_margins
[08:54:39] [PASSED] drm_test_cmdline_name
[08:54:39] [PASSED] drm_test_cmdline_name_bpp
[08:54:39] [PASSED] drm_test_cmdline_name_option
[08:54:39] [PASSED] drm_test_cmdline_name_bpp_option
[08:54:39] [PASSED] drm_test_cmdline_rotate_0
[08:54:39] [PASSED] drm_test_cmdline_rotate_90
[08:54:39] [PASSED] drm_test_cmdline_rotate_180
[08:54:39] [PASSED] drm_test_cmdline_rotate_270
[08:54:39] [PASSED] drm_test_cmdline_hmirror
[08:54:39] [PASSED] drm_test_cmdline_vmirror
[08:54:39] [PASSED] drm_test_cmdline_margin_options
[08:54:39] [PASSED] drm_test_cmdline_multiple_options
[08:54:39] [PASSED] drm_test_cmdline_bpp_extra_and_option
[08:54:39] [PASSED] drm_test_cmdline_extra_and_option
[08:54:39] [PASSED] drm_test_cmdline_freestanding_options
[08:54:39] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[08:54:39] [PASSED] drm_test_cmdline_panel_orientation
[08:54:39] ================ drm_test_cmdline_invalid =================
[08:54:39] [PASSED] margin_only
[08:54:39] [PASSED] interlace_only
[08:54:39] [PASSED] res_missing_x
[08:54:39] [PASSED] res_missing_y
[08:54:39] [PASSED] res_bad_y
[08:54:39] [PASSED] res_missing_y_bpp
[08:54:39] [PASSED] res_bad_bpp
[08:54:39] [PASSED] res_bad_refresh
[08:54:39] [PASSED] res_bpp_refresh_force_on_off
[08:54:39] [PASSED] res_invalid_mode
[08:54:39] [PASSED] res_bpp_wrong_place_mode
[08:54:39] [PASSED] name_bpp_refresh
[08:54:39] [PASSED] name_refresh
[08:54:39] [PASSED] name_refresh_wrong_mode
[08:54:39] [PASSED] name_refresh_invalid_mode
[08:54:39] [PASSED] rotate_multiple
[08:54:39] [PASSED] rotate_invalid_val
[08:54:39] [PASSED] rotate_truncated
[08:54:39] [PASSED] invalid_option
[08:54:39] [PASSED] invalid_tv_option
[08:54:39] [PASSED] truncated_tv_option
[08:54:39] ============ [PASSED] drm_test_cmdline_invalid =============
[08:54:39] =============== drm_test_cmdline_tv_options ===============
[08:54:39] [PASSED] NTSC
[08:54:39] [PASSED] NTSC_443
[08:54:39] [PASSED] NTSC_J
[08:54:39] [PASSED] PAL
[08:54:39] [PASSED] PAL_M
[08:54:39] [PASSED] PAL_N
[08:54:39] [PASSED] SECAM
[08:54:39] [PASSED] MONO_525
[08:54:39] [PASSED] MONO_625
[08:54:39] =========== [PASSED] drm_test_cmdline_tv_options ===========
[08:54:39] =============== [PASSED] drm_cmdline_parser ================
[08:54:39] ========== drmm_connector_hdmi_init (20 subtests) ==========
[08:54:39] [PASSED] drm_test_connector_hdmi_init_valid
[08:54:39] [PASSED] drm_test_connector_hdmi_init_bpc_8
[08:54:39] [PASSED] drm_test_connector_hdmi_init_bpc_10
[08:54:39] [PASSED] drm_test_connector_hdmi_init_bpc_12
[08:54:39] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[08:54:39] [PASSED] drm_test_connector_hdmi_init_bpc_null
[08:54:39] [PASSED] drm_test_connector_hdmi_init_formats_empty
[08:54:39] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[08:54:39] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[08:54:39] [PASSED] supported_formats=0x9 yuv420_allowed=1
[08:54:39] [PASSED] supported_formats=0x9 yuv420_allowed=0
[08:54:39] [PASSED] supported_formats=0x5 yuv420_allowed=1
[08:54:39] [PASSED] supported_formats=0x5 yuv420_allowed=0
[08:54:39] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[08:54:39] [PASSED] drm_test_connector_hdmi_init_null_ddc
[08:54:39] [PASSED] drm_test_connector_hdmi_init_null_product
[08:54:39] [PASSED] drm_test_connector_hdmi_init_null_vendor
[08:54:39] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[08:54:39] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[08:54:39] [PASSED] drm_test_connector_hdmi_init_product_valid
[08:54:39] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[08:54:39] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[08:54:39] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[08:54:39] ========= drm_test_connector_hdmi_init_type_valid =========
[08:54:39] [PASSED] HDMI-A
[08:54:39] [PASSED] HDMI-B
[08:54:39] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[08:54:39] ======== drm_test_connector_hdmi_init_type_invalid ========
[08:54:39] [PASSED] Unknown
[08:54:39] [PASSED] VGA
[08:54:39] [PASSED] DVI-I
[08:54:39] [PASSED] DVI-D
[08:54:39] [PASSED] DVI-A
[08:54:39] [PASSED] Composite
[08:54:39] [PASSED] SVIDEO
[08:54:39] [PASSED] LVDS
[08:54:39] [PASSED] Component
[08:54:39] [PASSED] DIN
[08:54:39] [PASSED] DP
[08:54:39] [PASSED] TV
[08:54:39] [PASSED] eDP
[08:54:39] [PASSED] Virtual
[08:54:39] [PASSED] DSI
[08:54:39] [PASSED] DPI
[08:54:39] [PASSED] Writeback
[08:54:39] [PASSED] SPI
[08:54:39] [PASSED] USB
[08:54:39] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[08:54:39] ============ [PASSED] drmm_connector_hdmi_init =============
[08:54:39] ============= drmm_connector_init (3 subtests) =============
[08:54:39] [PASSED] drm_test_drmm_connector_init
[08:54:39] [PASSED] drm_test_drmm_connector_init_null_ddc
[08:54:39] ========= drm_test_drmm_connector_init_type_valid =========
[08:54:39] [PASSED] Unknown
[08:54:39] [PASSED] VGA
[08:54:39] [PASSED] DVI-I
[08:54:39] [PASSED] DVI-D
[08:54:39] [PASSED] DVI-A
[08:54:39] [PASSED] Composite
[08:54:39] [PASSED] SVIDEO
[08:54:39] [PASSED] LVDS
[08:54:39] [PASSED] Component
[08:54:39] [PASSED] DIN
[08:54:39] [PASSED] DP
[08:54:39] [PASSED] HDMI-A
[08:54:39] [PASSED] HDMI-B
[08:54:39] [PASSED] TV
[08:54:39] [PASSED] eDP
[08:54:39] [PASSED] Virtual
[08:54:39] [PASSED] DSI
[08:54:39] [PASSED] DPI
[08:54:39] [PASSED] Writeback
[08:54:39] [PASSED] SPI
[08:54:39] [PASSED] USB
[08:54:39] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[08:54:39] =============== [PASSED] drmm_connector_init ===============
[08:54:39] ========= drm_connector_dynamic_init (6 subtests) ==========
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_init
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_init_properties
[08:54:39] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[08:54:39] [PASSED] Unknown
[08:54:39] [PASSED] VGA
[08:54:39] [PASSED] DVI-I
[08:54:39] [PASSED] DVI-D
[08:54:39] [PASSED] DVI-A
[08:54:39] [PASSED] Composite
[08:54:39] [PASSED] SVIDEO
[08:54:39] [PASSED] LVDS
[08:54:39] [PASSED] Component
[08:54:39] [PASSED] DIN
[08:54:39] [PASSED] DP
[08:54:39] [PASSED] HDMI-A
[08:54:39] [PASSED] HDMI-B
[08:54:39] [PASSED] TV
[08:54:39] [PASSED] eDP
[08:54:39] [PASSED] Virtual
[08:54:39] [PASSED] DSI
[08:54:39] [PASSED] DPI
[08:54:39] [PASSED] Writeback
[08:54:39] [PASSED] SPI
[08:54:39] [PASSED] USB
[08:54:39] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[08:54:39] ======== drm_test_drm_connector_dynamic_init_name =========
[08:54:39] [PASSED] Unknown
[08:54:39] [PASSED] VGA
[08:54:39] [PASSED] DVI-I
[08:54:39] [PASSED] DVI-D
[08:54:39] [PASSED] DVI-A
[08:54:39] [PASSED] Composite
[08:54:39] [PASSED] SVIDEO
[08:54:39] [PASSED] LVDS
[08:54:39] [PASSED] Component
[08:54:39] [PASSED] DIN
[08:54:39] [PASSED] DP
[08:54:39] [PASSED] HDMI-A
[08:54:39] [PASSED] HDMI-B
[08:54:39] [PASSED] TV
[08:54:39] [PASSED] eDP
[08:54:39] [PASSED] Virtual
[08:54:39] [PASSED] DSI
[08:54:39] [PASSED] DPI
[08:54:39] [PASSED] Writeback
[08:54:39] [PASSED] SPI
[08:54:39] [PASSED] USB
[08:54:39] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[08:54:39] =========== [PASSED] drm_connector_dynamic_init ============
[08:54:39] ==== drm_connector_dynamic_register_early (4 subtests) =====
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[08:54:39] ====== [PASSED] drm_connector_dynamic_register_early =======
[08:54:39] ======= drm_connector_dynamic_register (7 subtests) ========
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[08:54:39] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[08:54:39] ========= [PASSED] drm_connector_dynamic_register ==========
[08:54:39] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[08:54:39] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[08:54:39] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[08:54:39] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[08:54:39] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[08:54:39] ========== drm_test_get_tv_mode_from_name_valid ===========
[08:54:39] [PASSED] NTSC
[08:54:39] [PASSED] NTSC-443
[08:54:39] [PASSED] NTSC-J
[08:54:39] [PASSED] PAL
[08:54:39] [PASSED] PAL-M
[08:54:39] [PASSED] PAL-N
[08:54:39] [PASSED] SECAM
[08:54:39] [PASSED] Mono
[08:54:39] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[08:54:39] [PASSED] drm_test_get_tv_mode_from_name_truncated
[08:54:39] ============ [PASSED] drm_get_tv_mode_from_name ============
[08:54:39] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[08:54:39] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[08:54:39] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[08:54:39] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[08:54:39] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[08:54:39] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[08:54:39] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[08:54:39] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[08:54:39] [PASSED] VIC 96
[08:54:39] [PASSED] VIC 97
[08:54:39] [PASSED] VIC 101
[08:54:39] [PASSED] VIC 102
[08:54:39] [PASSED] VIC 106
[08:54:39] [PASSED] VIC 107
[08:54:39] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[08:54:39] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[08:54:39] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[08:54:39] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[08:54:39] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[08:54:39] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[08:54:39] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[08:54:39] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[08:54:39] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[08:54:39] [PASSED] Automatic
[08:54:39] [PASSED] Full
[08:54:39] [PASSED] Limited 16:235
[08:54:39] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[08:54:39] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[08:54:39] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[08:54:39] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[08:54:39] === drm_test_drm_hdmi_connector_get_output_format_name ====
[08:54:39] [PASSED] RGB
[08:54:39] [PASSED] YUV 4:2:0
[08:54:39] [PASSED] YUV 4:2:2
[08:54:39] [PASSED] YUV 4:4:4
[08:54:39] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[08:54:39] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[08:54:39] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[08:54:39] ============= drm_damage_helper (21 subtests) ==============
[08:54:39] [PASSED] drm_test_damage_iter_no_damage
[08:54:39] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[08:54:39] [PASSED] drm_test_damage_iter_no_damage_src_moved
[08:54:39] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[08:54:39] [PASSED] drm_test_damage_iter_no_damage_not_visible
[08:54:39] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[08:54:39] [PASSED] drm_test_damage_iter_no_damage_no_fb
[08:54:39] [PASSED] drm_test_damage_iter_simple_damage
[08:54:39] [PASSED] drm_test_damage_iter_single_damage
[08:54:39] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[08:54:39] [PASSED] drm_test_damage_iter_single_damage_outside_src
[08:54:39] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[08:54:39] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[08:54:39] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[08:54:39] [PASSED] drm_test_damage_iter_single_damage_src_moved
[08:54:39] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[08:54:39] [PASSED] drm_test_damage_iter_damage
[08:54:39] [PASSED] drm_test_damage_iter_damage_one_intersect
[08:54:39] [PASSED] drm_test_damage_iter_damage_one_outside
[08:54:39] [PASSED] drm_test_damage_iter_damage_src_moved
[08:54:39] [PASSED] drm_test_damage_iter_damage_not_visible
[08:54:39] ================ [PASSED] drm_damage_helper ================
[08:54:39] ============== drm_dp_mst_helper (3 subtests) ==============
[08:54:39] ============== drm_test_dp_mst_calc_pbn_mode ==============
[08:54:39] [PASSED] Clock 154000 BPP 30 DSC disabled
[08:54:39] [PASSED] Clock 234000 BPP 30 DSC disabled
[08:54:39] [PASSED] Clock 297000 BPP 24 DSC disabled
[08:54:39] [PASSED] Clock 332880 BPP 24 DSC enabled
[08:54:39] [PASSED] Clock 324540 BPP 24 DSC enabled
[08:54:39] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[08:54:39] ============== drm_test_dp_mst_calc_pbn_div ===============
[08:54:39] [PASSED] Link rate 2000000 lane count 4
[08:54:39] [PASSED] Link rate 2000000 lane count 2
[08:54:39] [PASSED] Link rate 2000000 lane count 1
[08:54:39] [PASSED] Link rate 1350000 lane count 4
[08:54:39] [PASSED] Link rate 1350000 lane count 2
[08:54:39] [PASSED] Link rate 1350000 lane count 1
[08:54:39] [PASSED] Link rate 1000000 lane count 4
[08:54:39] [PASSED] Link rate 1000000 lane count 2
[08:54:39] [PASSED] Link rate 1000000 lane count 1
[08:54:39] [PASSED] Link rate 810000 lane count 4
[08:54:39] [PASSED] Link rate 810000 lane count 2
[08:54:39] [PASSED] Link rate 810000 lane count 1
[08:54:39] [PASSED] Link rate 540000 lane count 4
[08:54:39] [PASSED] Link rate 540000 lane count 2
[08:54:39] [PASSED] Link rate 540000 lane count 1
[08:54:39] [PASSED] Link rate 270000 lane count 4
[08:54:39] [PASSED] Link rate 270000 lane count 2
[08:54:39] [PASSED] Link rate 270000 lane count 1
[08:54:39] [PASSED] Link rate 162000 lane count 4
[08:54:39] [PASSED] Link rate 162000 lane count 2
[08:54:39] [PASSED] Link rate 162000 lane count 1
[08:54:39] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[08:54:39] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[08:54:39] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[08:54:39] [PASSED] DP_POWER_UP_PHY with port number
[08:54:39] [PASSED] DP_POWER_DOWN_PHY with port number
[08:54:39] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[08:54:39] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[08:54:39] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[08:54:39] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[08:54:39] [PASSED] DP_QUERY_PAYLOAD with port number
[08:54:39] [PASSED] DP_QUERY_PAYLOAD with VCPI
[08:54:39] [PASSED] DP_REMOTE_DPCD_READ with port number
[08:54:39] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[08:54:39] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[08:54:39] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[08:54:39] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[08:54:39] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[08:54:39] [PASSED] DP_REMOTE_I2C_READ with port number
[08:54:39] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[08:54:39] [PASSED] DP_REMOTE_I2C_READ with transactions array
[08:54:39] [PASSED] DP_REMOTE_I2C_WRITE with port number
[08:54:39] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[08:54:39] [PASSED] DP_REMOTE_I2C_WRITE with data array
[08:54:39] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[08:54:39] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[08:54:39] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[08:54:39] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[08:54:39] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[08:54:39] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[08:54:39] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[08:54:39] ================ [PASSED] drm_dp_mst_helper ================
[08:54:39] ================== drm_exec (7 subtests) ===================
[08:54:39] [PASSED] sanitycheck
[08:54:39] [PASSED] test_lock
[08:54:39] [PASSED] test_lock_unlock
[08:54:39] [PASSED] test_duplicates
[08:54:39] [PASSED] test_prepare
[08:54:39] [PASSED] test_prepare_array
[08:54:39] [PASSED] test_multiple_loops
[08:54:39] ==================== [PASSED] drm_exec =====================
[08:54:39] =========== drm_format_helper_test (17 subtests) ===========
[08:54:39] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[08:54:39] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[08:54:39] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[08:54:39] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[08:54:39] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[08:54:39] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[08:54:39] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[08:54:39] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[08:54:39] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[08:54:39] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[08:54:39] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[08:54:39] ============== drm_test_fb_xrgb8888_to_mono ===============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[08:54:39] ==================== drm_test_fb_swab =====================
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ================ [PASSED] drm_test_fb_swab =================
[08:54:39] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[08:54:39] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[08:54:39] [PASSED] single_pixel_source_buffer
[08:54:39] [PASSED] single_pixel_clip_rectangle
[08:54:39] [PASSED] well_known_colors
[08:54:39] [PASSED] destination_pitch
[08:54:39] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[08:54:39] ================= drm_test_fb_clip_offset =================
[08:54:39] [PASSED] pass through
[08:54:39] [PASSED] horizontal offset
[08:54:39] [PASSED] vertical offset
[08:54:39] [PASSED] horizontal and vertical offset
[08:54:39] [PASSED] horizontal offset (custom pitch)
[08:54:39] [PASSED] vertical offset (custom pitch)
[08:54:39] [PASSED] horizontal and vertical offset (custom pitch)
[08:54:39] ============= [PASSED] drm_test_fb_clip_offset =============
[08:54:39] =================== drm_test_fb_memcpy ====================
[08:54:39] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[08:54:39] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[08:54:39] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[08:54:39] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[08:54:39] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[08:54:39] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[08:54:39] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[08:54:39] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[08:54:39] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[08:54:39] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[08:54:39] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[08:54:39] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[08:54:39] =============== [PASSED] drm_test_fb_memcpy ================
[08:54:39] ============= [PASSED] drm_format_helper_test ==============
[08:54:39] ================= drm_format (18 subtests) =================
[08:54:39] [PASSED] drm_test_format_block_width_invalid
[08:54:39] [PASSED] drm_test_format_block_width_one_plane
[08:54:39] [PASSED] drm_test_format_block_width_two_plane
[08:54:39] [PASSED] drm_test_format_block_width_three_plane
[08:54:39] [PASSED] drm_test_format_block_width_tiled
[08:54:39] [PASSED] drm_test_format_block_height_invalid
[08:54:39] [PASSED] drm_test_format_block_height_one_plane
[08:54:39] [PASSED] drm_test_format_block_height_two_plane
[08:54:39] [PASSED] drm_test_format_block_height_three_plane
[08:54:39] [PASSED] drm_test_format_block_height_tiled
[08:54:39] [PASSED] drm_test_format_min_pitch_invalid
[08:54:39] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[08:54:39] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[08:54:39] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[08:54:39] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[08:54:39] [PASSED] drm_test_format_min_pitch_two_plane
[08:54:39] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[08:54:39] [PASSED] drm_test_format_min_pitch_tiled
[08:54:39] =================== [PASSED] drm_format ====================
[08:54:39] ============== drm_framebuffer (10 subtests) ===============
[08:54:39] ========== drm_test_framebuffer_check_src_coords ==========
[08:54:39] [PASSED] Success: source fits into fb
[08:54:39] [PASSED] Fail: overflowing fb with x-axis coordinate
[08:54:39] [PASSED] Fail: overflowing fb with y-axis coordinate
[08:54:39] [PASSED] Fail: overflowing fb with source width
[08:54:39] [PASSED] Fail: overflowing fb with source height
[08:54:39] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[08:54:39] [PASSED] drm_test_framebuffer_cleanup
[08:54:39] =============== drm_test_framebuffer_create ===============
[08:54:39] [PASSED] ABGR8888 normal sizes
[08:54:39] [PASSED] ABGR8888 max sizes
[08:54:39] [PASSED] ABGR8888 pitch greater than min required
[08:54:39] [PASSED] ABGR8888 pitch less than min required
[08:54:39] [PASSED] ABGR8888 Invalid width
[08:54:39] [PASSED] ABGR8888 Invalid buffer handle
[08:54:39] [PASSED] No pixel format
[08:54:39] [PASSED] ABGR8888 Width 0
[08:54:39] [PASSED] ABGR8888 Height 0
[08:54:39] [PASSED] ABGR8888 Out of bound height * pitch combination
[08:54:39] [PASSED] ABGR8888 Large buffer offset
[08:54:39] [PASSED] ABGR8888 Buffer offset for inexistent plane
[08:54:39] [PASSED] ABGR8888 Invalid flag
[08:54:39] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[08:54:39] [PASSED] ABGR8888 Valid buffer modifier
[08:54:39] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[08:54:39] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[08:54:39] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[08:54:39] [PASSED] NV12 Normal sizes
[08:54:39] [PASSED] NV12 Max sizes
[08:54:39] [PASSED] NV12 Invalid pitch
[08:54:39] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[08:54:39] [PASSED] NV12 different modifier per-plane
[08:54:39] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[08:54:39] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[08:54:39] [PASSED] NV12 Modifier for inexistent plane
[08:54:39] [PASSED] NV12 Handle for inexistent plane
[08:54:39] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[08:54:39] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[08:54:39] [PASSED] YVU420 Normal sizes
[08:54:39] [PASSED] YVU420 Max sizes
[08:54:39] [PASSED] YVU420 Invalid pitch
[08:54:39] [PASSED] YVU420 Different pitches
[08:54:39] [PASSED] YVU420 Different buffer offsets/pitches
[08:54:39] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[08:54:39] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[08:54:39] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[08:54:39] [PASSED] YVU420 Valid modifier
[08:54:39] [PASSED] YVU420 Different modifiers per plane
[08:54:39] [PASSED] YVU420 Modifier for inexistent plane
[08:54:39] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[08:54:39] [PASSED] X0L2 Normal sizes
[08:54:39] [PASSED] X0L2 Max sizes
[08:54:39] [PASSED] X0L2 Invalid pitch
[08:54:39] [PASSED] X0L2 Pitch greater than minimum required
[08:54:39] [PASSED] X0L2 Handle for inexistent plane
[08:54:39] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[08:54:39] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[08:54:39] [PASSED] X0L2 Valid modifier
[08:54:39] [PASSED] X0L2 Modifier for inexistent plane
[08:54:39] =========== [PASSED] drm_test_framebuffer_create ===========
[08:54:39] [PASSED] drm_test_framebuffer_free
[08:54:39] [PASSED] drm_test_framebuffer_init
[08:54:39] [PASSED] drm_test_framebuffer_init_bad_format
[08:54:39] [PASSED] drm_test_framebuffer_init_dev_mismatch
[08:54:39] [PASSED] drm_test_framebuffer_lookup
[08:54:39] [PASSED] drm_test_framebuffer_lookup_inexistent
[08:54:39] [PASSED] drm_test_framebuffer_modifiers_not_supported
[08:54:39] ================= [PASSED] drm_framebuffer =================
[08:54:39] ================ drm_gem_shmem (8 subtests) ================
[08:54:39] [PASSED] drm_gem_shmem_test_obj_create
[08:54:39] [PASSED] drm_gem_shmem_test_obj_create_private
[08:54:39] [PASSED] drm_gem_shmem_test_pin_pages
[08:54:39] [PASSED] drm_gem_shmem_test_vmap
[08:54:39] [PASSED] drm_gem_shmem_test_get_sg_table
[08:54:39] [PASSED] drm_gem_shmem_test_get_pages_sgt
[08:54:39] [PASSED] drm_gem_shmem_test_madvise
[08:54:39] [PASSED] drm_gem_shmem_test_purge
[08:54:39] ================== [PASSED] drm_gem_shmem ==================
[08:54:39] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[08:54:39] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[08:54:39] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[08:54:39] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[08:54:39] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[08:54:39] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[08:54:39] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[08:54:39] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[08:54:39] [PASSED] Automatic
[08:54:39] [PASSED] Full
[08:54:39] [PASSED] Limited 16:235
[08:54:39] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[08:54:39] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[08:54:39] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[08:54:39] [PASSED] drm_test_check_disable_connector
[08:54:39] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[08:54:39] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[08:54:39] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[08:54:39] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[08:54:39] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[08:54:39] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[08:54:39] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[08:54:39] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[08:54:39] [PASSED] drm_test_check_output_bpc_dvi
[08:54:39] [PASSED] drm_test_check_output_bpc_format_vic_1
[08:54:39] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[08:54:39] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[08:54:39] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[08:54:39] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[08:54:39] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[08:54:39] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[08:54:39] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[08:54:39] ============ drm_test_check_hdmi_color_format =============
[08:54:39] [PASSED] AUTO -> RGB
[08:54:39] [PASSED] YCBCR422 -> YUV422
[08:54:39] [PASSED] YCBCR420 -> YUV420
[08:54:39] [PASSED] YCBCR444 -> YUV444
[08:54:39] [PASSED] RGB -> RGB
[08:54:39] ======== [PASSED] drm_test_check_hdmi_color_format =========
[08:54:39] ======== drm_test_check_hdmi_color_format_420_only ========
[08:54:39] [PASSED] RGB should fail
[08:54:39] [PASSED] YUV444 should fail
[08:54:39] [PASSED] YUV422 should fail
[08:54:39] [PASSED] YUV420 should work
[08:54:39] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[08:54:39] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[08:54:39] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[08:54:39] [PASSED] drm_test_check_broadcast_rgb_value
[08:54:39] [PASSED] drm_test_check_bpc_8_value
[08:54:39] [PASSED] drm_test_check_bpc_10_value
[08:54:39] [PASSED] drm_test_check_bpc_12_value
[08:54:39] [PASSED] drm_test_check_format_value
[08:54:39] [PASSED] drm_test_check_tmds_char_value
[08:54:39] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[08:54:39] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[08:54:39] [PASSED] drm_test_check_mode_valid
[08:54:39] [PASSED] drm_test_check_mode_valid_reject
[08:54:39] [PASSED] drm_test_check_mode_valid_reject_rate
[08:54:39] [PASSED] drm_test_check_mode_valid_reject_max_clock
[08:54:39] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[08:54:39] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[08:54:39] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[08:54:39] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[08:54:39] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[08:54:39] [PASSED] drm_test_check_infoframes
[08:54:39] [PASSED] drm_test_check_reject_avi_infoframe
[08:54:39] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[08:54:39] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[08:54:39] [PASSED] drm_test_check_reject_audio_infoframe
[08:54:39] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[08:54:39] ================= drm_managed (2 subtests) =================
[08:54:39] [PASSED] drm_test_managed_release_action
[08:54:39] [PASSED] drm_test_managed_run_action
[08:54:39] =================== [PASSED] drm_managed ===================
[08:54:39] =================== drm_mm (6 subtests) ====================
[08:54:39] [PASSED] drm_test_mm_init
[08:54:39] [PASSED] drm_test_mm_debug
[08:54:39] [PASSED] drm_test_mm_align32
[08:54:39] [PASSED] drm_test_mm_align64
[08:54:39] [PASSED] drm_test_mm_lowest
[08:54:39] [PASSED] drm_test_mm_highest
[08:54:39] ===================== [PASSED] drm_mm ======================
[08:54:39] ============= drm_modes_analog_tv (5 subtests) =============
[08:54:39] [PASSED] drm_test_modes_analog_tv_mono_576i
[08:54:39] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[08:54:39] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[08:54:39] [PASSED] drm_test_modes_analog_tv_pal_576i
[08:54:39] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[08:54:39] =============== [PASSED] drm_modes_analog_tv ===============
[08:54:39] ============== drm_plane_helper (2 subtests) ===============
[08:54:39] =============== drm_test_check_plane_state ================
[08:54:39] [PASSED] clipping_simple
[08:54:39] [PASSED] clipping_rotate_reflect
[08:54:39] [PASSED] positioning_simple
[08:54:39] [PASSED] upscaling
[08:54:39] [PASSED] downscaling
[08:54:39] [PASSED] rounding1
[08:54:39] [PASSED] rounding2
[08:54:39] [PASSED] rounding3
[08:54:39] [PASSED] rounding4
[08:54:39] =========== [PASSED] drm_test_check_plane_state ============
[08:54:39] =========== drm_test_check_invalid_plane_state ============
[08:54:39] [PASSED] positioning_invalid
[08:54:39] [PASSED] upscaling_invalid
[08:54:39] [PASSED] downscaling_invalid
[08:54:39] ======= [PASSED] drm_test_check_invalid_plane_state ========
[08:54:39] ================ [PASSED] drm_plane_helper =================
[08:54:39] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[08:54:39] ====== drm_test_connector_helper_tv_get_modes_check =======
[08:54:39] [PASSED] None
[08:54:39] [PASSED] PAL
[08:54:39] [PASSED] NTSC
[08:54:39] [PASSED] Both, NTSC Default
[08:54:39] [PASSED] Both, PAL Default
[08:54:39] [PASSED] Both, NTSC Default, with PAL on command-line
[08:54:39] [PASSED] Both, PAL Default, with NTSC on command-line
[08:54:39] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[08:54:39] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[08:54:39] ================== drm_rect (9 subtests) ===================
[08:54:39] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[08:54:39] [PASSED] drm_test_rect_clip_scaled_not_clipped
[08:54:39] [PASSED] drm_test_rect_clip_scaled_clipped
[08:54:39] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[08:54:39] ================= drm_test_rect_intersect =================
[08:54:39] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[08:54:39] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[08:54:39] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[08:54:39] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[08:54:39] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[08:54:39] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[08:54:39] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[08:54:39] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[08:54:39] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[08:54:39] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[08:54:39] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[08:54:39] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[08:54:39] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[08:54:39] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[08:54:39] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[08:54:39] ============= [PASSED] drm_test_rect_intersect =============
[08:54:39] ================ drm_test_rect_calc_hscale ================
[08:54:39] [PASSED] normal use
[08:54:39] [PASSED] out of max range
[08:54:39] [PASSED] out of min range
[08:54:39] [PASSED] zero dst
[08:54:39] [PASSED] negative src
[08:54:39] [PASSED] negative dst
[08:54:39] ============ [PASSED] drm_test_rect_calc_hscale ============
[08:54:39] ================ drm_test_rect_calc_vscale ================
[08:54:39] [PASSED] normal use
[08:54:39] [PASSED] out of max range
[08:54:39] [PASSED] out of min range
[08:54:39] [PASSED] zero dst
[08:54:39] [PASSED] negative src
[08:54:39] [PASSED] negative dst
[08:54:39] ============ [PASSED] drm_test_rect_calc_vscale ============
[08:54:39] ================== drm_test_rect_rotate ===================
[08:54:39] [PASSED] reflect-x
[08:54:39] [PASSED] reflect-y
[08:54:39] [PASSED] rotate-0
[08:54:39] [PASSED] rotate-90
[08:54:39] [PASSED] rotate-180
[08:54:39] [PASSED] rotate-270
[08:54:39] ============== [PASSED] drm_test_rect_rotate ===============
[08:54:39] ================ drm_test_rect_rotate_inv =================
[08:54:39] [PASSED] reflect-x
[08:54:39] [PASSED] reflect-y
[08:54:39] [PASSED] rotate-0
[08:54:39] [PASSED] rotate-90
[08:54:39] [PASSED] rotate-180
[08:54:39] [PASSED] rotate-270
[08:54:39] ============ [PASSED] drm_test_rect_rotate_inv =============
[08:54:39] ==================== [PASSED] drm_rect =====================
[08:54:39] ============ drm_sysfb_modeset_test (1 subtest) ============
[08:54:39] ============ drm_test_sysfb_build_fourcc_list =============
[08:54:39] [PASSED] no native formats
[08:54:39] [PASSED] XRGB8888 as native format
[08:54:39] [PASSED] remove duplicates
[08:54:39] [PASSED] convert alpha formats
[08:54:39] [PASSED] random formats
[08:54:39] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[08:54:39] ============= [PASSED] drm_sysfb_modeset_test ==============
[08:54:39] ================== drm_fixp (2 subtests) ===================
[08:54:39] [PASSED] drm_test_int2fixp
[08:54:39] [PASSED] drm_test_sm2fixp
[08:54:39] ==================== [PASSED] drm_fixp =====================
[08:54:39] ============================================================
[08:54:39] Testing complete. Ran 637 tests: passed: 637
[08:54:39] Elapsed time: 26.744s total, 1.799s configuring, 24.780s building, 0.143s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[08:54:39] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[08:54:41] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[08:54:51] Starting KUnit Kernel (1/1)...
[08:54:51] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[08:54:51] ================= ttm_device (5 subtests) ==================
[08:54:51] [PASSED] ttm_device_init_basic
[08:54:51] [PASSED] ttm_device_init_multiple
[08:54:51] [PASSED] ttm_device_fini_basic
[08:54:51] [PASSED] ttm_device_init_no_vma_man
[08:54:51] ================== ttm_device_init_pools ==================
[08:54:51] [PASSED] No DMA allocations, no DMA32 required
[08:54:51] [PASSED] DMA allocations, DMA32 required
[08:54:51] [PASSED] No DMA allocations, DMA32 required
[08:54:51] [PASSED] DMA allocations, no DMA32 required
[08:54:51] ============== [PASSED] ttm_device_init_pools ==============
[08:54:51] =================== [PASSED] ttm_device ====================
[08:54:51] ================== ttm_pool (8 subtests) ===================
[08:54:51] ================== ttm_pool_alloc_basic ===================
[08:54:51] [PASSED] One page
[08:54:51] [PASSED] More than one page
[08:54:51] [PASSED] Above the allocation limit
[08:54:51] [PASSED] One page, with coherent DMA mappings enabled
[08:54:51] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[08:54:51] ============== [PASSED] ttm_pool_alloc_basic ===============
[08:54:51] ============== ttm_pool_alloc_basic_dma_addr ==============
[08:54:51] [PASSED] One page
[08:54:51] [PASSED] More than one page
[08:54:51] [PASSED] Above the allocation limit
[08:54:51] [PASSED] One page, with coherent DMA mappings enabled
[08:54:51] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[08:54:51] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[08:54:51] [PASSED] ttm_pool_alloc_order_caching_match
[08:54:51] [PASSED] ttm_pool_alloc_caching_mismatch
[08:54:51] [PASSED] ttm_pool_alloc_order_mismatch
[08:54:51] [PASSED] ttm_pool_free_dma_alloc
[08:54:51] [PASSED] ttm_pool_free_no_dma_alloc
[08:54:51] [PASSED] ttm_pool_fini_basic
[08:54:51] ==================== [PASSED] ttm_pool =====================
[08:54:51] ================ ttm_resource (8 subtests) =================
[08:54:51] ================= ttm_resource_init_basic =================
[08:54:51] [PASSED] Init resource in TTM_PL_SYSTEM
[08:54:51] [PASSED] Init resource in TTM_PL_VRAM
[08:54:51] [PASSED] Init resource in a private placement
[08:54:51] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[08:54:51] ============= [PASSED] ttm_resource_init_basic =============
[08:54:51] [PASSED] ttm_resource_init_pinned
[08:54:51] [PASSED] ttm_resource_fini_basic
[08:54:51] [PASSED] ttm_resource_manager_init_basic
[08:54:51] [PASSED] ttm_resource_manager_usage_basic
[08:54:51] [PASSED] ttm_resource_manager_set_used_basic
[08:54:51] [PASSED] ttm_sys_man_alloc_basic
[08:54:51] [PASSED] ttm_sys_man_free_basic
[08:54:51] ================== [PASSED] ttm_resource ===================
[08:54:51] =================== ttm_tt (15 subtests) ===================
[08:54:51] ==================== ttm_tt_init_basic ====================
[08:54:51] [PASSED] Page-aligned size
[08:54:51] [PASSED] Extra pages requested
[08:54:51] ================ [PASSED] ttm_tt_init_basic ================
[08:54:51] [PASSED] ttm_tt_init_misaligned
[08:54:51] [PASSED] ttm_tt_fini_basic
[08:54:51] [PASSED] ttm_tt_fini_sg
[08:54:51] [PASSED] ttm_tt_fini_shmem
[08:54:51] [PASSED] ttm_tt_create_basic
[08:54:51] [PASSED] ttm_tt_create_invalid_bo_type
[08:54:51] [PASSED] ttm_tt_create_ttm_exists
[08:54:51] [PASSED] ttm_tt_create_failed
[08:54:51] [PASSED] ttm_tt_destroy_basic
[08:54:51] [PASSED] ttm_tt_populate_null_ttm
[08:54:51] [PASSED] ttm_tt_populate_populated_ttm
[08:54:51] [PASSED] ttm_tt_unpopulate_basic
[08:54:51] [PASSED] ttm_tt_unpopulate_empty_ttm
[08:54:51] [PASSED] ttm_tt_swapin_basic
[08:54:51] ===================== [PASSED] ttm_tt ======================
[08:54:51] =================== ttm_bo (14 subtests) ===================
[08:54:51] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[08:54:51] [PASSED] Cannot be interrupted and sleeps
[08:54:51] [PASSED] Cannot be interrupted, locks straight away
[08:54:51] [PASSED] Can be interrupted, sleeps
[08:54:51] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[08:54:51] [PASSED] ttm_bo_reserve_locked_no_sleep
[08:54:51] [PASSED] ttm_bo_reserve_no_wait_ticket
[08:54:51] [PASSED] ttm_bo_reserve_double_resv
[08:54:51] [PASSED] ttm_bo_reserve_interrupted
[08:54:51] [PASSED] ttm_bo_reserve_deadlock
[08:54:51] [PASSED] ttm_bo_unreserve_basic
[08:54:51] [PASSED] ttm_bo_unreserve_pinned
[08:54:51] [PASSED] ttm_bo_unreserve_bulk
[08:54:51] [PASSED] ttm_bo_fini_basic
[08:54:51] [PASSED] ttm_bo_fini_shared_resv
[08:54:51] [PASSED] ttm_bo_pin_basic
[08:54:51] [PASSED] ttm_bo_pin_unpin_resource
[08:54:51] [PASSED] ttm_bo_multiple_pin_one_unpin
[08:54:51] ===================== [PASSED] ttm_bo ======================
[08:54:51] ============== ttm_bo_validate (22 subtests) ===============
[08:54:51] ============== ttm_bo_init_reserved_sys_man ===============
[08:54:51] [PASSED] Buffer object for userspace
[08:54:51] [PASSED] Kernel buffer object
[08:54:51] [PASSED] Shared buffer object
[08:54:51] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[08:54:51] ============== ttm_bo_init_reserved_mock_man ==============
[08:54:51] [PASSED] Buffer object for userspace
[08:54:51] [PASSED] Kernel buffer object
[08:54:51] [PASSED] Shared buffer object
[08:54:51] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[08:54:51] [PASSED] ttm_bo_init_reserved_resv
[08:54:51] ================== ttm_bo_validate_basic ==================
[08:54:51] [PASSED] Buffer object for userspace
[08:54:51] [PASSED] Kernel buffer object
[08:54:51] [PASSED] Shared buffer object
[08:54:51] ============== [PASSED] ttm_bo_validate_basic ==============
[08:54:51] [PASSED] ttm_bo_validate_invalid_placement
[08:54:51] ============= ttm_bo_validate_same_placement ==============
[08:54:51] [PASSED] System manager
[08:54:51] [PASSED] VRAM manager
[08:54:51] ========= [PASSED] ttm_bo_validate_same_placement ==========
[08:54:51] [PASSED] ttm_bo_validate_failed_alloc
[08:54:51] [PASSED] ttm_bo_validate_pinned
[08:54:51] [PASSED] ttm_bo_validate_busy_placement
[08:54:51] ================ ttm_bo_validate_multihop =================
[08:54:51] [PASSED] Buffer object for userspace
[08:54:51] [PASSED] Kernel buffer object
[08:54:51] [PASSED] Shared buffer object
[08:54:51] ============ [PASSED] ttm_bo_validate_multihop =============
[08:54:51] ========== ttm_bo_validate_no_placement_signaled ==========
[08:54:51] [PASSED] Buffer object in system domain, no page vector
[08:54:51] [PASSED] Buffer object in system domain with an existing page vector
[08:54:51] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[08:54:51] ======== ttm_bo_validate_no_placement_not_signaled ========
[08:54:51] [PASSED] Buffer object for userspace
[08:54:51] [PASSED] Kernel buffer object
[08:54:51] [PASSED] Shared buffer object
[08:54:51] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[08:54:51] [PASSED] ttm_bo_validate_move_fence_signaled
[08:54:51] ========= ttm_bo_validate_move_fence_not_signaled =========
[08:54:51] [PASSED] Waits for GPU
[08:54:51] [PASSED] Tries to lock straight away
[08:54:51] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[08:54:51] [PASSED] ttm_bo_validate_swapout
[08:54:51] [PASSED] ttm_bo_validate_happy_evict
[08:54:51] [PASSED] ttm_bo_validate_all_pinned_evict
[08:54:51] [PASSED] ttm_bo_validate_allowed_only_evict
[08:54:51] [PASSED] ttm_bo_validate_deleted_evict
[08:54:51] [PASSED] ttm_bo_validate_busy_domain_evict
[08:54:51] [PASSED] ttm_bo_validate_evict_gutting
[08:54:51] [PASSED] ttm_bo_validate_recrusive_evict
[08:54:51] ================= [PASSED] ttm_bo_validate =================
[08:54:51] ============================================================
[08:54:51] Testing complete. Ran 102 tests: passed: 102
[08:54:51] Elapsed time: 11.822s total, 1.820s configuring, 9.788s building, 0.180s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[08:54:51] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[08:54:53] 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
[08:55:01] Starting KUnit Kernel (1/1)...
[08:55:01] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[08:55:01] =============== dma-buf-fence (12 subtests) ================
[08:55:01] [PASSED] test_sanitycheck
[08:55:01] [PASSED] test_signaling
[08:55:01] [PASSED] test_add_callback
[08:55:01] [PASSED] test_late_add_callback
[08:55:01] [PASSED] test_rm_callback
[08:55:01] [PASSED] test_late_rm_callback
[08:55:01] [PASSED] test_status
[08:55:01] [PASSED] test_error
[08:55:01] [PASSED] test_wait
[08:55:01] [PASSED] test_wait_timeout
[08:55:01] [PASSED] test_stub
[08:55:01] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[08:55:01] ================== [PASSED] dma-buf-fence ==================
[08:55:01] ============ dma-buf-fence-chain (11 subtests) =============
[08:55:01] [PASSED] test_sanitycheck
[08:55:01] [PASSED] test_find_seqno
[08:55:01] [PASSED] test_find_signaled
[08:55:01] [PASSED] test_find_out_of_order
[08:55:07] [PASSED] test_find_gap
[08:55:07] [PASSED] test_find_race
[08:55:07] [PASSED] test_signal_forward
[08:55:07] [PASSED] test_signal_backward
[08:55:07] [PASSED] test_wait_forward
[08:55:07] [PASSED] test_wait_backward
[08:55:07] [PASSED] test_wait_random
[08:55:07] =============== [PASSED] dma-buf-fence-chain ===============
[08:55:07] ============ dma-buf-fence-unwrap (10 subtests) ============
[08:55:07] [PASSED] test_sanitycheck
[08:55:07] [PASSED] test_unwrap_array
[08:55:07] [PASSED] test_unwrap_chain
[08:55:07] [PASSED] test_unwrap_chain_array
[08:55:07] [PASSED] test_unwrap_merge
[08:55:07] [PASSED] test_unwrap_merge_duplicate
[08:55:07] [PASSED] test_unwrap_merge_seqno
[08:55:07] [PASSED] test_unwrap_merge_order
[08:55:07] [PASSED] test_unwrap_merge_complex
[08:55:07] [PASSED] test_unwrap_merge_complex_seqno
[08:55:07] ============== [PASSED] dma-buf-fence-unwrap ===============
[08:55:07] ================ dma-buf-resv (5 subtests) =================
[08:55:07] [PASSED] test_sanitycheck
[08:55:07] ===================== test_signaling ======================
[08:55:07] [PASSED] kernel
[08:55:07] [PASSED] write
[08:55:07] [PASSED] read
[08:55:07] [PASSED] bookkeep
[08:55:07] ================= [PASSED] test_signaling ==================
[08:55:07] ====================== test_for_each ======================
[08:55:07] [PASSED] kernel
[08:55:07] [PASSED] write
[08:55:07] [PASSED] read
[08:55:07] [PASSED] bookkeep
[08:55:07] ================== [PASSED] test_for_each ==================
[08:55:07] ================= test_for_each_unlocked ==================
[08:55:07] [PASSED] kernel
[08:55:07] [PASSED] write
[08:55:07] [PASSED] read
[08:55:07] [PASSED] bookkeep
[08:55:07] ============= [PASSED] test_for_each_unlocked ==============
[08:55:07] ===================== test_get_fences =====================
[08:55:07] [PASSED] kernel
[08:55:07] [PASSED] write
[08:55:07] [PASSED] read
[08:55:07] [PASSED] bookkeep
[08:55:07] ================= [PASSED] test_get_fences =================
[08:55:07] ================== [PASSED] dma-buf-resv ===================
[08:55:07] ============================================================
[08:55:07] Testing complete. Ran 50 tests: passed: 49, skipped: 1
[08:55:07] Elapsed time: 15.718s total, 1.776s configuring, 8.620s building, 5.277s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 3/6] drm/i915/cursor: Handle secondary cursor state
2026-08-18 8:42 ` [PATCH 3/6] drm/i915/cursor: Handle secondary cursor state Nemesa Garg
@ 2026-08-18 8:58 ` sashiko-bot
0 siblings, 0 replies; 22+ messages in thread
From: sashiko-bot @ 2026-08-18 8:58 UTC (permalink / raw)
To: Nemesa Garg; +Cc: intel-xe, intel-gfx
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] The fast path cursor update fails to iterate over all joined pipes when unpinning their old framebuffers, leaking VMA pins and triggering use-after-free.
- [High] The fast path cursor update fails to write the new plane state to the hardware registers of secondary joined cursors.
- [Medium] The secondary cursor plane's uapi.crtc is incorrectly assigned to the secondary CRTC, breaking bigjoiner atomic state invariants.
--
--- Patch [3]: [PATCH 3/6] drm/i915/cursor: Handle secondary cursor state ---
commit 98f6f039bea454d797d8103020e7553cf275702d
Author: Nemesa Garg <nemesa.garg@intel.com>
drm/i915/cursor: Handle secondary cursor state
This commit modifies the fast path cursor update to handle secondary pipes
in joiner mode. It iterates over all joined pipes to duplicate and prepare
the plane states, tracking them in a joined_pipe_state array.
> diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
> --- a/drivers/gpu/drm/i915/display/intel_cursor.c
> +++ b/drivers/gpu/drm/i915/display/intel_cursor.c
[ ... ]
> @@ -928,38 +938,70 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
[ ... ]
> + for_each_intel_crtc_in_pipe_mask(display, pipe_crtc,
> + intel_crtc_joined_pipe_mask(crtc_state)) {
> + struct intel_cursor_joiner_state *j = &joined_pipe_state[num_pipes];
> +
> + j->plane = intel_crtc_get_plane(pipe_crtc, PLANE_CURSOR);
[ ... ]
> + j->new_plane_state->uapi.crtc = &pipe_crtc->base;
[Severity: Medium]
Does this assignment break the bigjoiner atomic state invariants?
The DRM framework requires that for joined pipes, a secondary plane's
uapi.crtc must point to the primary CRTC. This represents the single
logical CRTC to userspace, while only its hw.crtc points to the
secondary CRTC.
Assigning the secondary CRTC to the uapi.crtc field of secondary planes
could corrupt the atomic state tracker and lead to failures during
subsequent atomic commits.
Should this point to the primary CRTC instead?
> +
> + intel_cursor_fastpath_update_plane_state(j->new_plane_state, fb,
[ ... ]
> /*
> * We cannot swap crtc_state as it may be in use by an atomic commit or
> * page flip that's running simultaneously. If we swap crtc_state and
> * destroy the old state, we will cause a use-after-free there.
> *
> * Only update active_planes, which is needed for our internal
> * bookkeeping. Either value will do the right thing when updating
> * planes atomically. If the cursor was part of the atomic update then
> * we would have taken the slowpath.
> */
> - crtc_state->active_planes = new_crtc_state->active_planes;
>
> intel_vblank_evade_init(crtc_state, crtc_state, &evade);
>
> intel_psr_lock(crtc_state);
[Severity: High]
Are the hardware updates properly applied to the secondary cursor planes?
The unpatched hardware update block immediately following this code only calls
update functions for the primary plane:
if (new_plane_state->uapi.visible) {
intel_plane_update_noarm(NULL, plane, crtc_state, new_plane_state);
intel_plane_update_arm(NULL, plane, crtc_state, new_plane_state);
} else {
intel_plane_disable_arm(NULL, plane, crtc_state);
}
Because the fast path now handles joined pipes and populates the
joined_pipe_state array, failing to write the new plane state to the
hardware registers of the secondary joined cursors means the cursor will
not visually update on the secondary half of the display.
Could this block be updated to iterate over all pipes in joined_pipe_state?
> @@ -1004,6 +1045,10 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
>
> intel_psr_unlock(crtc_state);
>
> + /*
> + * Schedule or immediately unpin old framebuffers.
> + * Protect against concurrent access.
> + */
> if (old_plane_state->ggtt_vma != new_plane_state->ggtt_vma) {
> drm_vblank_work_init(&old_plane_state->unpin_work, &crtc->base,
> intel_cursor_unpin_work);
> @@ -1012,18 +1057,24 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
> drm_crtc_accurate_vblank_count(&crtc->base) + 1,
> false);
>
> - old_plane_state = NULL;
> + joined_pipe_state[0].old_plane_state = NULL;
> } else {
> intel_plane_unpin_fb(old_plane_state);
> }
[Severity: High]
Can this unpin path leak VMA pins and trigger a use-after-free for
secondary framebuffers?
This code explicitly unpins only the primary pipe's old state
(old_plane_state). However, in the out_free block below:
for (int i = 0; i < num_pipes; i++)
if (joined_pipe_state[i].old_plane_state)
intel_plane_destroy_state(&joined_pipe_state[i].plane->base,
&joined_pipe_state[i].old_plane_state->uapi);
The secondary pipes' old states are destroyed without being unpinned first.
This frees the state and drops the active framebuffer reference while the
secondary display hardware may still be actively scanning out the old
framebuffer.
Would it make sense to update the unpinning logic to iterate over all joined
pipes?
>
> out_free:
> - if (new_crtc_state)
> - intel_crtc_destroy_state(&crtc->base, &new_crtc_state->uapi);
> - if (ret)
> - intel_plane_destroy_state(&plane->base, &new_plane_state->uapi);
> - else if (old_plane_state)
> - intel_plane_destroy_state(&plane->base, &old_plane_state->uapi);
> + if (ret) {
> + for (int i = 0; i < num_pipes; i++) {
> + intel_plane_unpin_fb(joined_pipe_state[i].new_plane_state);
> + intel_plane_destroy_state(&joined_pipe_state[i].plane->base,
> + &joined_pipe_state[i].new_plane_state->uapi);
> + }
> + } else {
> + for (int i = 0; i < num_pipes; i++)
> + if (joined_pipe_state[i].old_plane_state)
> + intel_plane_destroy_state(&joined_pipe_state[i].plane->base,
> + &joined_pipe_state[i].old_plane_state->uapi);
> + }
> return ret;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260818084236.2168580-1-nemesa.garg@intel.com?part=3
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status
2026-08-18 8:42 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
@ 2026-08-18 8:59 ` sashiko-bot
0 siblings, 0 replies; 22+ messages in thread
From: sashiko-bot @ 2026-08-18 8:59 UTC (permalink / raw)
To: Nemesa Garg; +Cc: intel-gfx, intel-xe
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The newly added fast path logic for joined cursor planes is unreachable due to an unremoved fallback, and lacks secondary plane hardware update logic.
--
--- Patch [1]: [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status ---
commit 217b50906b0ee44f4341de677a7c7eeba08394c6
Author: Nemesa Garg <nemesa.garg@intel.com>
drm/i915/cursor: Check joiner cursor commit status
In joiner mode, secondary cursor commits may still be running
even when the primary cursor commit is done. Walking the secondary
pipes also requires holding the secondary planes modeset locks.
Add intel_cursor_lock_joined_planes() to acquire modeset locks
for all secondary cursor planes. Check all joined cursor commit
status before taking the fast path. If any commit is still pending,
fallback to slow path.
> diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
> index 0673f16f6fd0d..bc1e58d5c4c5e 100644
> --- a/drivers/gpu/drm/i915/display/intel_cursor.c
> +++ b/drivers/gpu/drm/i915/display/intel_cursor.c
[ ... ]
> @@ -833,15 +877,6 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
> crtc_state->joiner_pipes)
> goto slow;
[Severity: Medium]
Since this existing check unconditionally sends joiner configurations to
the slow path, doesn't it make the newly added fast path logic below
unreachable for joiner pipes?
[ ... ]
> @@ -855,6 +890,21 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
> !old_plane_state->uapi.fb != !fb)
> goto slow;
>
> + ret = intel_cursor_lock_joined_planes(display, crtc_state, ctx);
> + if (ret == -EDEADLK)
> + return ret;
> + if (ret)
> + goto slow;
> +
> + /*
> + * Don't do an async update if there is an outstanding commit modifying
> + * any of the joined cursor planes. This prevents our async update's
> + * changes from getting overridden by a previous synchronous update's
> + * state.
> + */
> + if (!intel_cursor_joiner_commits_idle(display, crtc_state))
> + goto slow;
> +
[Severity: Medium]
If the earlier fallback were removed, would the hardware update logic at the
end of intel_legacy_cursor_update() also need to be updated?
Currently, it only updates the primary plane:
if (new_plane_state->uapi.visible) {
intel_plane_update_noarm(NULL, plane, crtc_state, new_plane_state);
intel_plane_update_arm(NULL, plane, crtc_state, new_plane_state);
} else {
intel_plane_disable_arm(NULL, plane, crtc_state);
}
It looks like the secondary joined planes won't receive hardware updates if
the fast path is actually taken.
> new_plane_state = to_intel_plane_state(intel_plane_duplicate_state(&plane->base));
> if (!new_plane_state)
> return -ENOMEM;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260818084236.2168580-1-nemesa.garg@intel.com?part=1
^ permalink raw reply [flat|nested] 22+ messages in thread
* ✓ Xe.CI.BAT: success for Enable joiner cursor fast updates (rev5)
2026-08-18 8:42 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
` (7 preceding siblings ...)
2026-08-18 8:55 ` ✓ CI.KUnit: success " Patchwork
@ 2026-08-18 9:31 ` Patchwork
2026-08-18 10:35 ` ✓ Xe.CI.FULL: " Patchwork
9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2026-08-18 9:31 UTC (permalink / raw)
To: Nemesa Garg; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 954 bytes --]
== Series Details ==
Series: Enable joiner cursor fast updates (rev5)
URL : https://patchwork.freedesktop.org/series/165272/
State : success
== Summary ==
CI Bug Log - changes from xe-5609-775a898c77eec44922595e8f318cd359c98944fd_BAT -> xe-pw-165272v5_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-5609-775a898c77eec44922595e8f318cd359c98944fd -> xe-pw-165272v5
IGT_9059: f5a4ff79434df36db1d6b13deb37c90a6602565e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5609-775a898c77eec44922595e8f318cd359c98944fd: 775a898c77eec44922595e8f318cd359c98944fd
xe-pw-165272v5: 165272v5
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/index.html
[-- Attachment #2: Type: text/html, Size: 1502 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* ✓ Xe.CI.FULL: success for Enable joiner cursor fast updates (rev5)
2026-08-18 8:42 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
` (8 preceding siblings ...)
2026-08-18 9:31 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-08-18 10:35 ` Patchwork
9 siblings, 0 replies; 22+ messages in thread
From: Patchwork @ 2026-08-18 10:35 UTC (permalink / raw)
To: Nemesa Garg; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 36993 bytes --]
== Series Details ==
Series: Enable joiner cursor fast updates (rev5)
URL : https://patchwork.freedesktop.org/series/165272/
State : success
== Summary ==
CI Bug Log - changes from xe-5609-775a898c77eec44922595e8f318cd359c98944fd_FULL -> xe-pw-165272v5_FULL
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-165272v5_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@linear-64bpp-rotate-90:
- shard-lnl: NOTRUN -> [SKIP][1] ([Intel XE#1407]) +2 other tests skip
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_big_fb@linear-64bpp-rotate-90.html
* igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip:
- shard-bmg: NOTRUN -> [SKIP][2] ([Intel XE#7059] / [Intel XE#7085])
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@y-tiled-addfb-size-overflow:
- shard-lnl: NOTRUN -> [SKIP][3] ([Intel XE#1428] / [Intel XE#7387])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#1124]) +2 other tests skip
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-lnl: NOTRUN -> [SKIP][5] ([Intel XE#1124]) +3 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
* igt@kms_bw@connected-linear-tiling-2-displays-target-2160x1440p:
- shard-lnl: NOTRUN -> [SKIP][6] ([Intel XE#7679]) +1 other test skip
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_bw@connected-linear-tiling-2-displays-target-2160x1440p.html
* igt@kms_bw@linear-tiling-4-displays-target-3840x2160p:
- shard-lnl: NOTRUN -> [SKIP][7] ([Intel XE#8365])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_bw@linear-tiling-4-displays-target-3840x2160p.html
* igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs:
- shard-lnl: NOTRUN -> [SKIP][8] ([Intel XE#2887]) +3 other tests skip
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [PASS][9] -> [INCOMPLETE][10] ([Intel XE#7084] / [Intel XE#8150]) +1 other test incomplete
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-bmg-10/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-6/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#3432])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#2669] / [Intel XE#7389]) +3 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-edp-1.html
* igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-rc-ccs:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#2887]) +1 other test skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-rc-ccs.html
* igt@kms_chamelium_color_pipeline@plane-ctm3x4:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#7358])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_chamelium_color_pipeline@plane-ctm3x4.html
* igt@kms_chamelium_frames@hdmi-crc-fast:
- shard-lnl: NOTRUN -> [SKIP][15] ([Intel XE#373])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_chamelium_frames@hdmi-crc-fast.html
* igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#2252]) +1 other test skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate.html
* igt@kms_content_protection@atomic:
- shard-lnl: NOTRUN -> [SKIP][17] ([Intel XE#7642])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@dp-mst-type-0-hdcp14:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#6974])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_content_protection@dp-mst-type-0-hdcp14.html
* igt@kms_content_protection@dp-mst-type-1:
- shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#307] / [Intel XE#6974])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_content_protection@dp-mst-type-1.html
* igt@kms_cursor_crc@cursor-offscreen-256x85:
- shard-lnl: NOTRUN -> [SKIP][20] ([Intel XE#1424])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_cursor_crc@cursor-offscreen-256x85.html
* igt@kms_cursor_crc@cursor-onscreen-128x42:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#2320]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_cursor_crc@cursor-onscreen-128x42.html
* igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic:
- shard-lnl: NOTRUN -> [SKIP][22] ([Intel XE#309] / [Intel XE#7343]) +1 other test skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-bmg: [PASS][23] -> [FAIL][24] ([Intel XE#7809])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-bmg-10/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-9/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
* igt@kms_dsc@dsc-fractional-bpp-ultrajoiner:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#8265]) +1 other test skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_dsc@dsc-fractional-bpp-ultrajoiner.html
* igt@kms_dsc@dsc-with-bpc:
- shard-lnl: NOTRUN -> [SKIP][26] ([Intel XE#8265])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_dsc@dsc-with-bpc.html
* igt@kms_feature_discovery@vrr:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#8586])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_feature_discovery@vrr.html
* igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible:
- shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#1421])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-bmg: [PASS][29] -> [FAIL][30] ([Intel XE#3321]) +1 other test fail
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-bmg-1/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-10/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_flip@flip-vs-expired-vblank@b-edp1:
- shard-lnl: [PASS][31] -> [FAIL][32] ([Intel XE#301])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
* igt@kms_flip@flip-vs-expired-vblank@c-edp1:
- shard-lnl: [PASS][33] -> [FAIL][34] ([Intel XE#301] / [Intel XE#3149]) +1 other test fail
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][35] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][36] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][37] ([Intel XE#1397] / [Intel XE#7385])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#7178] / [Intel XE#7351])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#6312] / [Intel XE#651]) +2 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#656] / [Intel XE#7905]) +12 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-spr-indfb-onoff:
- shard-lnl: NOTRUN -> [SKIP][41] ([Intel XE#6312]) +1 other test skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@drrshdr-2p-primscrn-cur-indfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#2311]) +13 other tests skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_frontbuffer_tracking@drrshdr-2p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move:
- shard-bmg: NOTRUN -> [SKIP][43] ([Intel XE#4141]) +1 other test skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcdrrs-abgr161616f-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][44] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcdrrs-abgr161616f-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#2313]) +12 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-offscreen-pri-indfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][46] ([Intel XE#7865]) +6 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-offscreen-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-argb161616f-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][47] ([Intel XE#7061]) +1 other test skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcpsrhdr-argb161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@hdr-2p-primscrn-spr-indfb-move:
- shard-lnl: NOTRUN -> [SKIP][48] ([Intel XE#7905]) +12 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_frontbuffer_tracking@hdr-2p-primscrn-spr-indfb-move.html
* igt@kms_hdmi_inject@inject-audio:
- shard-lnl: NOTRUN -> [SKIP][49] ([Intel XE#1470] / [Intel XE#2853])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_hdmi_inject@inject-audio.html
* igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier:
- shard-lnl: NOTRUN -> [SKIP][50] ([Intel XE#7283]) +1 other test skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier.html
* igt@kms_plane@pixel-format-x-tiled-modifier@pipe-b-plane-5:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#8303]) +1 other test skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_plane@pixel-format-x-tiled-modifier@pipe-b-plane-5.html
* igt@kms_plane_lowres@tiling-yf:
- shard-lnl: NOTRUN -> [SKIP][52] ([Intel XE#599])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_plane_lowres@tiling-yf.html
* igt@kms_plane_multiple@2x-tiling-none@pipe-a-dp-2-pipe-c-hdmi-a-3:
- shard-bmg: [PASS][53] -> [INCOMPLETE][54] ([Intel XE#6819]) +1 other test incomplete
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-bmg-8/igt@kms_plane_multiple@2x-tiling-none@pipe-a-dp-2-pipe-c-hdmi-a-3.html
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-3/igt@kms_plane_multiple@2x-tiling-none@pipe-a-dp-2-pipe-c-hdmi-a-3.html
* igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-c:
- shard-lnl: NOTRUN -> [SKIP][55] ([Intel XE#2763] / [Intel XE#6886]) +3 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-c.html
* igt@kms_pm_backlight@fade:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#7376] / [Intel XE#7760] / [Intel XE#870])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_pm_backlight@fade.html
* igt@kms_pm_dc@deep-pkgc:
- shard-lnl: [PASS][57] -> [FAIL][58] ([Intel XE#2029] / [Intel XE#7395])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-lnl-3/igt@kms_pm_dc@deep-pkgc.html
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_pm_dc@deep-pkgc.html
* igt@kms_pm_rpm@package-g7:
- shard-lnl: NOTRUN -> [SKIP][59] ([Intel XE#6813])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_pm_rpm@package-g7.html
* igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf:
- shard-lnl: NOTRUN -> [SKIP][60] ([Intel XE#2893] / [Intel XE#7304])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf:
- shard-lnl: NOTRUN -> [SKIP][61] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#7304])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][62] ([Intel XE#4608])
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf@pipe-a-edp-1.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][63] ([Intel XE#4608] / [Intel XE#7304])
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-sf@pipe-b-edp-1.html
* igt@kms_psr2_sf@psr2-plane-move-sf-dmg-area:
- shard-bmg: NOTRUN -> [SKIP][64] ([Intel XE#1489]) +1 other test skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_psr2_sf@psr2-plane-move-sf-dmg-area.html
* igt@kms_psr2_su@page_flip-p010:
- shard-lnl: NOTRUN -> [SKIP][65] ([Intel XE#1128] / [Intel XE#7413])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@kms_psr2_su@page_flip-p010.html
* igt@kms_psr@fbc-pr-sprite-plane-move:
- shard-lnl: NOTRUN -> [SKIP][66] ([Intel XE#1406])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_psr@fbc-pr-sprite-plane-move.html
* igt@kms_psr@fbc-psr-primary-render:
- shard-bmg: NOTRUN -> [SKIP][67] ([Intel XE#2234] / [Intel XE#2850]) +1 other test skip
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_psr@fbc-psr-primary-render.html
* igt@kms_psr@fbc-psr2-cursor-plane-onoff:
- shard-lnl: NOTRUN -> [SKIP][68] ([Intel XE#1406] / [Intel XE#7345])
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html
* igt@kms_psr@fbc-psr2-cursor-plane-onoff@edp-1:
- shard-lnl: NOTRUN -> [SKIP][69] ([Intel XE#1406] / [Intel XE#4609] / [Intel XE#7345])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@kms_psr@fbc-psr2-cursor-plane-onoff@edp-1.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-bmg: NOTRUN -> [SKIP][70] ([Intel XE#7795])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-bmg: NOTRUN -> [SKIP][71] ([Intel XE#2330] / [Intel XE#5813])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_scaling_modes@scaling-mode-center:
- shard-bmg: NOTRUN -> [SKIP][72] ([Intel XE#2413])
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_scaling_modes@scaling-mode-center.html
* igt@kms_vrr@flip-basic-fastset:
- shard-bmg: NOTRUN -> [SKIP][73] ([Intel XE#1499])
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@kms_vrr@flip-basic-fastset.html
* igt@xe_compute_preempt@compute-preempt-many-vram:
- shard-lnl: NOTRUN -> [SKIP][74] ([Intel XE#5191] / [Intel XE#7316] / [Intel XE#7346])
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@xe_compute_preempt@compute-preempt-many-vram.html
* igt@xe_evict@evict-cm-threads-small:
- shard-lnl: NOTRUN -> [SKIP][75] ([Intel XE#6540] / [Intel XE#688]) +3 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@xe_evict@evict-cm-threads-small.html
* igt@xe_exec_balancer@no-exec-cm-virtual-userptr:
- shard-lnl: NOTRUN -> [SKIP][76] ([Intel XE#7482]) +3 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@xe_exec_balancer@no-exec-cm-virtual-userptr.html
* igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap:
- shard-lnl: NOTRUN -> [SKIP][77] ([Intel XE#1392]) +2 other tests skip
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html
* igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind:
- shard-bmg: NOTRUN -> [SKIP][78] ([Intel XE#2322] / [Intel XE#7372])
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind.html
* igt@xe_exec_fault_mode@atomic-many:
- shard-bmg: [PASS][79] -> [FAIL][80] ([Intel XE#8578])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-bmg-7/igt@xe_exec_fault_mode@atomic-many.html
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-5/igt@xe_exec_fault_mode@atomic-many.html
* igt@xe_exec_fault_mode@many-execqueues-multi-queue-rebind:
- shard-bmg: NOTRUN -> [SKIP][81] ([Intel XE#8374])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@xe_exec_fault_mode@many-execqueues-multi-queue-rebind.html
* igt@xe_exec_fault_mode@twice-multi-queue-userptr-invalidate-prefetch:
- shard-lnl: NOTRUN -> [SKIP][82] ([Intel XE#8374])
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@xe_exec_fault_mode@twice-multi-queue-userptr-invalidate-prefetch.html
* igt@xe_exec_multi_queue@many-queues-preempt-mode-fault-userptr:
- shard-lnl: NOTRUN -> [SKIP][83] ([Intel XE#8364]) +11 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@xe_exec_multi_queue@many-queues-preempt-mode-fault-userptr.html
* igt@xe_exec_multi_queue@max-queues-basic-smem:
- shard-bmg: NOTRUN -> [SKIP][84] ([Intel XE#8364]) +5 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@xe_exec_multi_queue@max-queues-basic-smem.html
* igt@xe_exec_reset@multi-queue-long-spin-many-queue-switch:
- shard-lnl: NOTRUN -> [SKIP][85] ([Intel XE#8369])
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@xe_exec_reset@multi-queue-long-spin-many-queue-switch.html
* igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-rebind:
- shard-lnl: NOTRUN -> [SKIP][86] ([Intel XE#8378]) +2 other tests skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-rebind.html
* igt@xe_exec_threads@threads-multi-queue-mixed-basic:
- shard-bmg: NOTRUN -> [SKIP][87] ([Intel XE#8378]) +1 other test skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@xe_exec_threads@threads-multi-queue-mixed-basic.html
* igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early:
- shard-bmg: [PASS][88] -> [ABORT][89] ([Intel XE#8007]) +2 other tests abort
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-bmg-9/igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early.html
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-3/igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early.html
* igt@xe_live_ktest@xe_eudebug:
- shard-bmg: NOTRUN -> [SKIP][90] ([Intel XE#2833])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-4/igt@xe_live_ktest@xe_eudebug.html
* igt@xe_mmap@pci-membarrier-bad-pagesize:
- shard-lnl: NOTRUN -> [SKIP][91] ([Intel XE#5100] / [Intel XE#7322] / [Intel XE#7408])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@xe_mmap@pci-membarrier-bad-pagesize.html
* igt@xe_page_reclaim@pat-index-xd:
- shard-lnl: NOTRUN -> [SKIP][92] ([Intel XE#7793])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@xe_page_reclaim@pat-index-xd.html
* igt@xe_pat@pat-sw-hw-suspend:
- shard-lnl: NOTRUN -> [FAIL][93] ([Intel XE#7695])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@xe_pat@pat-sw-hw-suspend.html
* igt@xe_pm@s3-vm-bind-prefetch:
- shard-lnl: NOTRUN -> [SKIP][94] ([Intel XE#584] / [Intel XE#7369])
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@xe_pm@s3-vm-bind-prefetch.html
* igt@xe_pmu@engine-activity-accuracy-50@engine-drm_xe_engine_class_video_enhance0:
- shard-bmg: [PASS][95] -> [FAIL][96] ([Intel XE#8555]) +2 other tests fail
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-bmg-8/igt@xe_pmu@engine-activity-accuracy-50@engine-drm_xe_engine_class_video_enhance0.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-1/igt@xe_pmu@engine-activity-accuracy-50@engine-drm_xe_engine_class_video_enhance0.html
* igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs:
- shard-lnl: NOTRUN -> [SKIP][97] ([Intel XE#4130] / [Intel XE#7366])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs.html
* igt@xe_sriov_scheduling@default-enabled-fair-scheduling:
- shard-lnl: NOTRUN -> [SKIP][98] ([Intel XE#8339])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-6/igt@xe_sriov_scheduling@default-enabled-fair-scheduling.html
* igt@xe_sriov_vfio@bind-unbind-vfs:
- shard-lnl: NOTRUN -> [SKIP][99] ([Intel XE#7724])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@xe_sriov_vfio@bind-unbind-vfs.html
#### Possible fixes ####
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [FAIL][100] ([Intel XE#7571]) -> [PASS][101]
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-bmg-6/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-6/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@xe_pmu@engine-activity-accuracy-50@engine-drm_xe_engine_class_compute0:
- shard-bmg: [FAIL][102] ([Intel XE#8555]) -> [PASS][103] +2 other tests pass
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-bmg-8/igt@xe_pmu@engine-activity-accuracy-50@engine-drm_xe_engine_class_compute0.html
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-1/igt@xe_pmu@engine-activity-accuracy-50@engine-drm_xe_engine_class_compute0.html
#### Warnings ####
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][104] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][105] ([Intel XE#3544])
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-bmg-6/igt@kms_hdr@brightness-with-hdr.html
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-bmg-9/igt@kms_hdr@brightness-with-hdr.html
* igt@xe_wedged@basic-wedged:
- shard-lnl: [ABORT][106] -> [DMESG-WARN][107] ([Intel XE#8963])
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5609-775a898c77eec44922595e8f318cd359c98944fd/shard-lnl-5/igt@xe_wedged@basic-wedged.html
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/shard-lnl-2/igt@xe_wedged@basic-wedged.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1428
[Intel XE#1470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1470
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
[Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
[Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2833]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2833
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2853]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2853
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
[Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
[Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
[Intel XE#5191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5191
[Intel XE#5813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5813
[Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
[Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#6813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6813
[Intel XE#6819]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6819
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
[Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
[Intel XE#7059]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7059
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
[Intel XE#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
[Intel XE#7316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7316
[Intel XE#7322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7322
[Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
[Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345
[Intel XE#7346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7346
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7366
[Intel XE#7369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7369
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
[Intel XE#7385]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7385
[Intel XE#7387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7387
[Intel XE#7389]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7389
[Intel XE#7395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7395
[Intel XE#7408]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7408
[Intel XE#7413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7413
[Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
[Intel XE#7571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7571
[Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
[Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
[Intel XE#7695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7695
[Intel XE#7724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7724
[Intel XE#7760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7760
[Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
[Intel XE#7795]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7795
[Intel XE#7809]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7809
[Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
[Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
[Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
[Intel XE#8150]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8150
[Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
[Intel XE#8303]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8303
[Intel XE#8339]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8339
[Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
[Intel XE#8365]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8365
[Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
[Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
[Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
[Intel XE#8555]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8555
[Intel XE#8578]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8578
[Intel XE#8586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8586
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#8963]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8963
Build changes
-------------
* Linux: xe-5609-775a898c77eec44922595e8f318cd359c98944fd -> xe-pw-165272v5
IGT_9059: f5a4ff79434df36db1d6b13deb37c90a6602565e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5609-775a898c77eec44922595e8f318cd359c98944fd: 775a898c77eec44922595e8f318cd359c98944fd
xe-pw-165272v5: 165272v5
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165272v5/index.html
[-- Attachment #2: Type: text/html, Size: 41217 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2026-08-18 10:35 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-18 8:42 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
2026-08-18 8:42 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
2026-08-18 8:59 ` sashiko-bot
2026-08-18 8:42 ` [PATCH 2/6] drm/i915/cursor: Add helper to update cursor plane Nemesa Garg
2026-08-18 8:42 ` [PATCH 3/6] drm/i915/cursor: Handle secondary cursor state Nemesa Garg
2026-08-18 8:58 ` sashiko-bot
2026-08-18 8:42 ` [PATCH 4/6] drm/i915/cursor: Program secondary cursor planes Nemesa Garg
2026-08-18 8:42 ` [PATCH 5/6] drm/i915/cursor: Schedule cursor unpin per joined pipe Nemesa Garg
2026-08-18 8:42 ` [PATCH 6/6] drm/i915/cursor: Allow joiner cursor fast path update Nemesa Garg
2026-08-18 8:53 ` ✗ CI.checkpatch: warning for Enable joiner cursor fast updates (rev5) Patchwork
2026-08-18 8:55 ` ✓ CI.KUnit: success " Patchwork
2026-08-18 9:31 ` ✓ Xe.CI.BAT: " Patchwork
2026-08-18 10:35 ` ✓ Xe.CI.FULL: " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2026-07-06 11:56 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
2026-07-06 11:56 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
2026-07-29 15:28 ` Borah, Chaitanya Kumar
2026-06-08 6:26 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
2026-06-08 6:26 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
2026-07-01 16:25 ` Borah, Chaitanya Kumar
2026-07-06 8:40 ` Garg, Nemesa
2026-04-28 14:16 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
2026-04-28 14:16 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
2026-04-22 7:37 [PATCH 0/6] Enable joiner cursor fast updates Nemesa Garg
2026-04-22 7:37 ` [PATCH 1/6] drm/i915/cursor: Check joiner cursor commit status Nemesa Garg
2026-04-22 9:46 ` Ville Syrjälä
2026-04-27 6:14 ` Garg, Nemesa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).