All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] drm/sched: Replace completion with a flush
@ 2026-06-11 12:34 Tvrtko Ursulin
  2026-06-11 12:45 ` ✗ CI.checkpatch: warning for " Patchwork
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Tvrtko Ursulin @ 2026-06-11 12:34 UTC (permalink / raw)
  To: dri-devel
  Cc: kernel-dev, Tvrtko Ursulin, Christian König,
	Danilo Krummrich, Matthew Brost, Philipp Stanner, amd-gfx,
	intel-xe

Due the scheduler locking design, and the inability to always lock both
the entity and the run-queue in the consistent order, a completion exists
which effectively marks the entity as in use from a call path which is not
able to lock it.

When entity is selected from the run job worker, its completion is marked
as non-idle all until the code is sure it will not be dereferencing it any
more, at which point it signals it as idle, releasing the potential
parallel cleanup path.

We can remove the need for this completion by implementing the identical
guarantee by simply flushing the run job work from the cleanup path, after
having removed the entity from the run queue.

We then know that the entity is no longer reachable by the run queue
selection logic, so as soon as any pending work is done the cleanup can
safely proceed. And because we have marked the entity as stopped, we also
know that the entity cannot re-enter the run queue.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Philipp Stanner <phasta@kernel.org>
Cc: amd-gfx@lists.freedesktop.org
Cc: intel-xe@lists.freedesktop.org
---
"Perfection is achieved, not when there is nothing more to add, but when
 there is nothing left to take away." - Antoine de Saint-Exupéry

Lets see what Intel's CI says about this, not to mention our new AI
overlords...
---
 drivers/gpu/drm/scheduler/sched_entity.c   | 25 +++++++++++++++-------
 drivers/gpu/drm/scheduler/sched_internal.h | 14 ++++++++++--
 drivers/gpu/drm/scheduler/sched_main.c     |  2 --
 drivers/gpu/drm/scheduler/sched_rq.c       | 14 +++++++-----
 include/drm/gpu_scheduler.h                |  9 --------
 5 files changed, 38 insertions(+), 26 deletions(-)

diff --git a/drivers/gpu/drm/scheduler/sched_entity.c b/drivers/gpu/drm/scheduler/sched_entity.c
index c51101ec70c1..e6f7c2fbefce 100644
--- a/drivers/gpu/drm/scheduler/sched_entity.c
+++ b/drivers/gpu/drm/scheduler/sched_entity.c
@@ -137,10 +137,6 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,
 	entity->rq = &sched_list[0]->rq;
 	RCU_INIT_POINTER(entity->last_scheduled, NULL);
 	RB_CLEAR_NODE(&entity->rb_tree_node);
-	init_completion(&entity->entity_idle);
-
-	/* We start in an idle state. */
-	complete_all(&entity->entity_idle);
 
 	spin_lock_init(&entity->lock);
 	spsc_queue_init(&entity->job_queue);
@@ -276,18 +272,24 @@ static void drm_sched_entity_kill_jobs_cb(struct dma_fence *f,
  */
 void drm_sched_entity_kill(struct drm_sched_entity *entity)
 {
+	struct drm_gpu_scheduler *sched;
 	struct drm_sched_job *job;
 	struct dma_fence *prev;
 
 	spin_lock(&entity->lock);
 	entity->stopped = true;
-	drm_sched_rq_remove_entity(entity->rq, entity);
+	sched = drm_sched_rq_remove_entity(entity->rq, entity);
 	spin_unlock(&entity->lock);
 
-	/* Make sure this entity is not used by the scheduler at the moment */
-	wait_for_completion(&entity->entity_idle);
+	/*
+	 * Make sure this entity is not used by the scheduler at the moment.
+	 *
+	 * Scheduler is guaranteed to be stable after the entity was stopped and
+	 * removed from the run-queue.
+	 */
+	if (sched)
+		drm_sched_flush_run_work(sched);
 
-	/* The entity is guaranteed to not be used by the scheduler */
 	prev = rcu_dereference_check(entity->last_scheduled, true);
 	dma_fence_get(prev);
 	while ((job = drm_sched_entity_queue_pop(entity))) {
@@ -576,6 +578,13 @@ void drm_sched_entity_select_rq(struct drm_sched_entity *entity)
 		return;
 
 	spin_lock(&entity->lock);
+
+	if (entity->stopped) {
+		spin_unlock(&entity->lock);
+		return;
+
+	}
+
 	sched = drm_sched_pick_best(entity->sched_list, entity->num_sched_list);
 	rq = sched ? &sched->rq : NULL;
 	if (rq != entity->rq) {
diff --git a/drivers/gpu/drm/scheduler/sched_internal.h b/drivers/gpu/drm/scheduler/sched_internal.h
index 13ecb771d7a2..80dece3be415 100644
--- a/drivers/gpu/drm/scheduler/sched_internal.h
+++ b/drivers/gpu/drm/scheduler/sched_internal.h
@@ -35,12 +35,22 @@ bool drm_sched_can_queue(struct drm_gpu_scheduler *sched,
 			 struct drm_sched_entity *entity);
 void drm_sched_wakeup(struct drm_gpu_scheduler *sched);
 
+/**
+ * drm_sched_flush_run_work - flush the run-job work
+ * @sched: scheduler instance
+ */
+static inline void drm_sched_flush_run_work(struct drm_gpu_scheduler *sched)
+{
+	flush_work(&sched->work_run_job);
+}
+
 void drm_sched_rq_init(struct drm_sched_rq *rq);
 
 struct drm_gpu_scheduler *
 drm_sched_rq_add_entity(struct drm_sched_entity *entity);
-void drm_sched_rq_remove_entity(struct drm_sched_rq *rq,
-				struct drm_sched_entity *entity);
+struct drm_gpu_scheduler *
+drm_sched_rq_remove_entity(struct drm_sched_rq *rq,
+			   struct drm_sched_entity *entity);
 void drm_sched_rq_pop_entity(struct drm_sched_entity *entity);
 
 struct drm_sched_entity *
diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
index d2ca01b31ee4..b90220794a14 100644
--- a/drivers/gpu/drm/scheduler/sched_main.c
+++ b/drivers/gpu/drm/scheduler/sched_main.c
@@ -997,7 +997,6 @@ static void drm_sched_run_job_work(struct work_struct *w)
 
 	sched_job = drm_sched_entity_pop_job(entity);
 	if (!sched_job) {
-		complete_all(&entity->entity_idle);
 		drm_sched_run_job_queue(sched);
 		return;
 	}
@@ -1013,7 +1012,6 @@ static void drm_sched_run_job_work(struct work_struct *w)
 	 * refcount has been incremented for the scheduler already.
 	 */
 	fence = sched->ops->run_job(sched_job);
-	complete_all(&entity->entity_idle);
 	drm_sched_fence_scheduled(s_fence, fence);
 
 	if (!IS_ERR_OR_NULL(fence)) {
diff --git a/drivers/gpu/drm/scheduler/sched_rq.c b/drivers/gpu/drm/scheduler/sched_rq.c
index 044546bcb5f8..3b9175e23bf2 100644
--- a/drivers/gpu/drm/scheduler/sched_rq.c
+++ b/drivers/gpu/drm/scheduler/sched_rq.c
@@ -287,16 +287,20 @@ drm_sched_rq_add_entity(struct drm_sched_entity *entity)
  * @entity: scheduler entity
  *
  * Removes a scheduler entity from the run queue.
+ *
+ * Return: DRM scheduler selected to handle this entity or NULL if entity has
+ * already been removed.
  */
-void drm_sched_rq_remove_entity(struct drm_sched_rq *rq,
-				struct drm_sched_entity *entity)
+struct drm_gpu_scheduler *
+drm_sched_rq_remove_entity(struct drm_sched_rq *rq,
+			   struct drm_sched_entity *entity)
 {
 	struct drm_gpu_scheduler *sched = container_of(rq, typeof(*sched), rq);
 
 	lockdep_assert_held(&entity->lock);
 
 	if (list_empty(&entity->list))
-		return;
+		return NULL;
 
 	spin_lock(&rq->lock);
 
@@ -306,6 +310,8 @@ void drm_sched_rq_remove_entity(struct drm_sched_rq *rq,
 	drm_sched_rq_remove_tree_locked(entity, rq);
 
 	spin_unlock(&rq->lock);
+
+	return sched;
 }
 
 /**
@@ -372,8 +378,6 @@ drm_sched_select_entity(struct drm_gpu_scheduler *sched)
 				spin_unlock(&rq->lock);
 				return ERR_PTR(-ENOSPC);
 			}
-
-			reinit_completion(&entity->entity_idle);
 			break;
 		}
 	}
diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h
index d61c19e78182..bde790dd7cc0 100644
--- a/include/drm/gpu_scheduler.h
+++ b/include/drm/gpu_scheduler.h
@@ -27,7 +27,6 @@
 #include <drm/spsc_queue.h>
 #include <linux/average.h>
 #include <linux/dma-fence.h>
-#include <linux/completion.h>
 #include <linux/xarray.h>
 #include <linux/workqueue.h>
 
@@ -222,14 +221,6 @@ struct drm_sched_entity {
 	 */
 	bool 				stopped;
 
-	/**
-	 * @entity_idle:
-	 *
-	 * Signals when entity is not in use, used to sequence entity cleanup in
-	 * drm_sched_entity_fini().
-	 */
-	struct completion		entity_idle;
-
 	/**
 	 * @oldest_job_waiting:
 	 *
-- 
2.54.0


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

* ✗ CI.checkpatch: warning for drm/sched: Replace completion with a flush
  2026-06-11 12:34 [RFC] drm/sched: Replace completion with a flush Tvrtko Ursulin
@ 2026-06-11 12:45 ` Patchwork
  2026-06-11 12:47 ` ✓ CI.KUnit: success " Patchwork
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2026-06-11 12:45 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

== Series Details ==

Series: drm/sched: Replace completion with a flush
URL   : https://patchwork.freedesktop.org/series/168353/
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 049c82d838220ce4824540e7d4a2588e6b8282c1
Author: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Date:   Thu Jun 11 13:34:23 2026 +0100

    drm/sched: Replace completion with a flush
    
    Due the scheduler locking design, and the inability to always lock both
    the entity and the run-queue in the consistent order, a completion exists
    which effectively marks the entity as in use from a call path which is not
    able to lock it.
    
    When entity is selected from the run job worker, its completion is marked
    as non-idle all until the code is sure it will not be dereferencing it any
    more, at which point it signals it as idle, releasing the potential
    parallel cleanup path.
    
    We can remove the need for this completion by implementing the identical
    guarantee by simply flushing the run job work from the cleanup path, after
    having removed the entity from the run queue.
    
    We then know that the entity is no longer reachable by the run queue
    selection logic, so as soon as any pending work is done the cleanup can
    safely proceed. And because we have marked the entity as stopped, we also
    know that the entity cannot re-enter the run queue.
    
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: Danilo Krummrich <dakr@kernel.org>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Cc: Philipp Stanner <phasta@kernel.org>
    Cc: amd-gfx@lists.freedesktop.org
    Cc: intel-xe@lists.freedesktop.org
+ /mt/dim checkpatch cea7f67c2db10faab5c62646dc91a335c2addb27 drm-intel
049c82d83822 drm/sched: Replace completion with a flush
-:89: CHECK:BRACES: Blank lines aren't necessary before a close brace '}'
#89: FILE: drivers/gpu/drm/scheduler/sched_entity.c:586:
+
+	}

total: 0 errors, 0 warnings, 1 checks, 149 lines checked



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

* ✓ CI.KUnit: success for drm/sched: Replace completion with a flush
  2026-06-11 12:34 [RFC] drm/sched: Replace completion with a flush Tvrtko Ursulin
  2026-06-11 12:45 ` ✗ CI.checkpatch: warning for " Patchwork
@ 2026-06-11 12:47 ` Patchwork
  2026-06-11 13:26 ` ✓ Xe.CI.BAT: " Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2026-06-11 12:47 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

== Series Details ==

Series: drm/sched: Replace completion with a flush
URL   : https://patchwork.freedesktop.org/series/168353/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[12:45:46] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:45:50] 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
[12:46:22] Starting KUnit Kernel (1/1)...
[12:46:22] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:46:22] ================== guc_buf (11 subtests) ===================
[12:46:22] [PASSED] test_smallest
[12:46:22] [PASSED] test_largest
[12:46:22] [PASSED] test_granular
[12:46:22] [PASSED] test_unique
[12:46:22] [PASSED] test_overlap
[12:46:22] [PASSED] test_reusable
[12:46:22] [PASSED] test_too_big
[12:46:22] [PASSED] test_flush
[12:46:22] [PASSED] test_lookup
[12:46:22] [PASSED] test_data
[12:46:22] [PASSED] test_class
[12:46:22] ===================== [PASSED] guc_buf =====================
[12:46:22] =================== guc_dbm (7 subtests) ===================
[12:46:22] [PASSED] test_empty
[12:46:22] [PASSED] test_default
[12:46:22] ======================== test_size  ========================
[12:46:22] [PASSED] 4
[12:46:22] [PASSED] 8
[12:46:22] [PASSED] 32
[12:46:22] [PASSED] 256
[12:46:22] ==================== [PASSED] test_size ====================
[12:46:22] ======================= test_reuse  ========================
[12:46:22] [PASSED] 4
[12:46:22] [PASSED] 8
[12:46:22] [PASSED] 32
[12:46:22] [PASSED] 256
[12:46:22] =================== [PASSED] test_reuse ====================
[12:46:22] =================== test_range_overlap  ====================
[12:46:22] [PASSED] 4
[12:46:22] [PASSED] 8
[12:46:22] [PASSED] 32
[12:46:22] [PASSED] 256
[12:46:22] =============== [PASSED] test_range_overlap ================
[12:46:22] =================== test_range_compact  ====================
[12:46:22] [PASSED] 4
[12:46:22] [PASSED] 8
[12:46:22] [PASSED] 32
[12:46:22] [PASSED] 256
[12:46:22] =============== [PASSED] test_range_compact ================
[12:46:22] ==================== test_range_spare  =====================
[12:46:22] [PASSED] 4
[12:46:22] [PASSED] 8
[12:46:22] [PASSED] 32
[12:46:22] [PASSED] 256
[12:46:22] ================ [PASSED] test_range_spare =================
[12:46:22] ===================== [PASSED] guc_dbm =====================
[12:46:22] =================== guc_idm (6 subtests) ===================
[12:46:22] [PASSED] bad_init
[12:46:22] [PASSED] no_init
[12:46:22] [PASSED] init_fini
[12:46:22] [PASSED] check_used
[12:46:22] [PASSED] check_quota
[12:46:22] [PASSED] check_all
[12:46:22] ===================== [PASSED] guc_idm =====================
[12:46:22] ================== no_relay (3 subtests) ===================
[12:46:22] [PASSED] xe_drops_guc2pf_if_not_ready
[12:46:22] [PASSED] xe_drops_guc2vf_if_not_ready
[12:46:22] [PASSED] xe_rejects_send_if_not_ready
[12:46:22] ==================== [PASSED] no_relay =====================
[12:46:22] ================== pf_relay (14 subtests) ==================
[12:46:22] [PASSED] pf_rejects_guc2pf_too_short
[12:46:22] [PASSED] pf_rejects_guc2pf_too_long
[12:46:22] [PASSED] pf_rejects_guc2pf_no_payload
[12:46:22] [PASSED] pf_fails_no_payload
[12:46:22] [PASSED] pf_fails_bad_origin
[12:46:22] [PASSED] pf_fails_bad_type
[12:46:22] [PASSED] pf_txn_reports_error
[12:46:22] [PASSED] pf_txn_sends_pf2guc
[12:46:22] [PASSED] pf_sends_pf2guc
[12:46:22] [SKIPPED] pf_loopback_nop
[12:46:22] [SKIPPED] pf_loopback_echo
[12:46:22] [SKIPPED] pf_loopback_fail
[12:46:22] [SKIPPED] pf_loopback_busy
[12:46:22] [SKIPPED] pf_loopback_retry
[12:46:22] ==================== [PASSED] pf_relay =====================
[12:46:22] ================== vf_relay (3 subtests) ===================
[12:46:22] [PASSED] vf_rejects_guc2vf_too_short
[12:46:22] [PASSED] vf_rejects_guc2vf_too_long
[12:46:22] [PASSED] vf_rejects_guc2vf_no_payload
[12:46:22] ==================== [PASSED] vf_relay =====================
[12:46:22] ================ pf_gt_config (9 subtests) =================
[12:46:22] [PASSED] fair_contexts_1vf
[12:46:22] [PASSED] fair_doorbells_1vf
[12:46:22] [PASSED] fair_ggtt_1vf
[12:46:22] ====================== fair_vram_1vf  ======================
[12:46:22] [PASSED] 3.50 GiB
[12:46:22] [PASSED] 11.5 GiB
[12:46:22] [PASSED] 15.5 GiB
[12:46:22] [PASSED] 31.5 GiB
[12:46:22] [PASSED] 63.5 GiB
[12:46:22] [PASSED] 1.91 GiB
[12:46:22] ================== [PASSED] fair_vram_1vf ==================
[12:46:22] ================ fair_vram_1vf_admin_only  =================
[12:46:22] [PASSED] 3.50 GiB
[12:46:22] [PASSED] 11.5 GiB
[12:46:22] [PASSED] 15.5 GiB
[12:46:22] [PASSED] 31.5 GiB
[12:46:22] [PASSED] 63.5 GiB
[12:46:22] [PASSED] 1.91 GiB
[12:46:22] ============ [PASSED] fair_vram_1vf_admin_only =============
[12:46:22] ====================== fair_contexts  ======================
[12:46:22] [PASSED] 1 VF
[12:46:22] [PASSED] 2 VFs
[12:46:22] [PASSED] 3 VFs
[12:46:22] [PASSED] 4 VFs
[12:46:22] [PASSED] 5 VFs
[12:46:22] [PASSED] 6 VFs
[12:46:22] [PASSED] 7 VFs
[12:46:22] [PASSED] 8 VFs
[12:46:22] [PASSED] 9 VFs
[12:46:22] [PASSED] 10 VFs
[12:46:22] [PASSED] 11 VFs
[12:46:22] [PASSED] 12 VFs
[12:46:22] [PASSED] 13 VFs
[12:46:22] [PASSED] 14 VFs
[12:46:22] [PASSED] 15 VFs
[12:46:22] [PASSED] 16 VFs
[12:46:22] [PASSED] 17 VFs
[12:46:22] [PASSED] 18 VFs
[12:46:22] [PASSED] 19 VFs
[12:46:22] [PASSED] 20 VFs
[12:46:22] [PASSED] 21 VFs
[12:46:22] [PASSED] 22 VFs
[12:46:22] [PASSED] 23 VFs
[12:46:22] [PASSED] 24 VFs
[12:46:22] [PASSED] 25 VFs
[12:46:22] [PASSED] 26 VFs
[12:46:22] [PASSED] 27 VFs
[12:46:22] [PASSED] 28 VFs
[12:46:22] [PASSED] 29 VFs
[12:46:22] [PASSED] 30 VFs
[12:46:22] [PASSED] 31 VFs
[12:46:22] [PASSED] 32 VFs
[12:46:22] [PASSED] 33 VFs
[12:46:22] [PASSED] 34 VFs
[12:46:22] [PASSED] 35 VFs
[12:46:22] [PASSED] 36 VFs
[12:46:22] [PASSED] 37 VFs
[12:46:22] [PASSED] 38 VFs
[12:46:22] [PASSED] 39 VFs
[12:46:22] [PASSED] 40 VFs
[12:46:22] [PASSED] 41 VFs
[12:46:22] [PASSED] 42 VFs
[12:46:22] [PASSED] 43 VFs
[12:46:22] [PASSED] 44 VFs
[12:46:22] [PASSED] 45 VFs
[12:46:22] [PASSED] 46 VFs
[12:46:22] [PASSED] 47 VFs
[12:46:22] [PASSED] 48 VFs
[12:46:22] [PASSED] 49 VFs
[12:46:22] [PASSED] 50 VFs
[12:46:22] [PASSED] 51 VFs
[12:46:22] [PASSED] 52 VFs
[12:46:22] [PASSED] 53 VFs
[12:46:22] [PASSED] 54 VFs
[12:46:22] [PASSED] 55 VFs
[12:46:22] [PASSED] 56 VFs
[12:46:22] [PASSED] 57 VFs
[12:46:22] [PASSED] 58 VFs
[12:46:22] [PASSED] 59 VFs
[12:46:22] [PASSED] 60 VFs
[12:46:22] [PASSED] 61 VFs
[12:46:22] [PASSED] 62 VFs
[12:46:22] [PASSED] 63 VFs
[12:46:22] ================== [PASSED] fair_contexts ==================
[12:46:22] ===================== fair_doorbells  ======================
[12:46:22] [PASSED] 1 VF
[12:46:22] [PASSED] 2 VFs
[12:46:22] [PASSED] 3 VFs
[12:46:22] [PASSED] 4 VFs
[12:46:22] [PASSED] 5 VFs
[12:46:22] [PASSED] 6 VFs
[12:46:22] [PASSED] 7 VFs
[12:46:22] [PASSED] 8 VFs
[12:46:22] [PASSED] 9 VFs
[12:46:22] [PASSED] 10 VFs
[12:46:22] [PASSED] 11 VFs
[12:46:22] [PASSED] 12 VFs
[12:46:22] [PASSED] 13 VFs
[12:46:22] [PASSED] 14 VFs
[12:46:22] [PASSED] 15 VFs
[12:46:22] [PASSED] 16 VFs
[12:46:22] [PASSED] 17 VFs
[12:46:22] [PASSED] 18 VFs
[12:46:22] [PASSED] 19 VFs
[12:46:22] [PASSED] 20 VFs
[12:46:22] [PASSED] 21 VFs
[12:46:22] [PASSED] 22 VFs
[12:46:22] [PASSED] 23 VFs
[12:46:22] [PASSED] 24 VFs
[12:46:22] [PASSED] 25 VFs
[12:46:22] [PASSED] 26 VFs
[12:46:22] [PASSED] 27 VFs
[12:46:22] [PASSED] 28 VFs
[12:46:22] [PASSED] 29 VFs
[12:46:22] [PASSED] 30 VFs
[12:46:22] [PASSED] 31 VFs
[12:46:22] [PASSED] 32 VFs
[12:46:22] [PASSED] 33 VFs
[12:46:22] [PASSED] 34 VFs
[12:46:22] [PASSED] 35 VFs
[12:46:22] [PASSED] 36 VFs
[12:46:22] [PASSED] 37 VFs
[12:46:22] [PASSED] 38 VFs
[12:46:22] [PASSED] 39 VFs
[12:46:22] [PASSED] 40 VFs
[12:46:22] [PASSED] 41 VFs
[12:46:22] [PASSED] 42 VFs
[12:46:22] [PASSED] 43 VFs
[12:46:22] [PASSED] 44 VFs
[12:46:22] [PASSED] 45 VFs
[12:46:22] [PASSED] 46 VFs
[12:46:22] [PASSED] 47 VFs
[12:46:22] [PASSED] 48 VFs
[12:46:22] [PASSED] 49 VFs
[12:46:22] [PASSED] 50 VFs
[12:46:22] [PASSED] 51 VFs
[12:46:22] [PASSED] 52 VFs
[12:46:22] [PASSED] 53 VFs
[12:46:22] [PASSED] 54 VFs
[12:46:22] [PASSED] 55 VFs
[12:46:22] [PASSED] 56 VFs
[12:46:22] [PASSED] 57 VFs
[12:46:22] [PASSED] 58 VFs
[12:46:22] [PASSED] 59 VFs
[12:46:22] [PASSED] 60 VFs
[12:46:22] [PASSED] 61 VFs
[12:46:22] [PASSED] 62 VFs
[12:46:22] [PASSED] 63 VFs
[12:46:22] ================= [PASSED] fair_doorbells ==================
[12:46:22] ======================== fair_ggtt  ========================
[12:46:22] [PASSED] 1 VF
[12:46:22] [PASSED] 2 VFs
[12:46:22] [PASSED] 3 VFs
[12:46:22] [PASSED] 4 VFs
[12:46:22] [PASSED] 5 VFs
[12:46:22] [PASSED] 6 VFs
[12:46:22] [PASSED] 7 VFs
[12:46:22] [PASSED] 8 VFs
[12:46:22] [PASSED] 9 VFs
[12:46:22] [PASSED] 10 VFs
[12:46:22] [PASSED] 11 VFs
[12:46:22] [PASSED] 12 VFs
[12:46:22] [PASSED] 13 VFs
[12:46:22] [PASSED] 14 VFs
[12:46:22] [PASSED] 15 VFs
[12:46:22] [PASSED] 16 VFs
[12:46:22] [PASSED] 17 VFs
[12:46:22] [PASSED] 18 VFs
[12:46:22] [PASSED] 19 VFs
[12:46:22] [PASSED] 20 VFs
[12:46:22] [PASSED] 21 VFs
[12:46:22] [PASSED] 22 VFs
[12:46:22] [PASSED] 23 VFs
[12:46:22] [PASSED] 24 VFs
[12:46:22] [PASSED] 25 VFs
[12:46:22] [PASSED] 26 VFs
[12:46:22] [PASSED] 27 VFs
[12:46:22] [PASSED] 28 VFs
[12:46:22] [PASSED] 29 VFs
[12:46:22] [PASSED] 30 VFs
[12:46:22] [PASSED] 31 VFs
[12:46:22] [PASSED] 32 VFs
[12:46:22] [PASSED] 33 VFs
[12:46:22] [PASSED] 34 VFs
[12:46:22] [PASSED] 35 VFs
[12:46:22] [PASSED] 36 VFs
[12:46:22] [PASSED] 37 VFs
[12:46:22] [PASSED] 38 VFs
[12:46:22] [PASSED] 39 VFs
[12:46:22] [PASSED] 40 VFs
[12:46:22] [PASSED] 41 VFs
[12:46:22] [PASSED] 42 VFs
[12:46:22] [PASSED] 43 VFs
[12:46:22] [PASSED] 44 VFs
[12:46:22] [PASSED] 45 VFs
[12:46:22] [PASSED] 46 VFs
[12:46:22] [PASSED] 47 VFs
[12:46:22] [PASSED] 48 VFs
[12:46:22] [PASSED] 49 VFs
[12:46:22] [PASSED] 50 VFs
[12:46:22] [PASSED] 51 VFs
[12:46:22] [PASSED] 52 VFs
[12:46:22] [PASSED] 53 VFs
[12:46:22] [PASSED] 54 VFs
[12:46:22] [PASSED] 55 VFs
[12:46:22] [PASSED] 56 VFs
[12:46:22] [PASSED] 57 VFs
[12:46:22] [PASSED] 58 VFs
[12:46:22] [PASSED] 59 VFs
[12:46:22] [PASSED] 60 VFs
[12:46:22] [PASSED] 61 VFs
[12:46:22] [PASSED] 62 VFs
[12:46:22] [PASSED] 63 VFs
[12:46:22] ==================== [PASSED] fair_ggtt ====================
[12:46:22] ======================== fair_vram  ========================
[12:46:22] [PASSED] 1 VF
[12:46:22] [PASSED] 2 VFs
[12:46:22] [PASSED] 3 VFs
[12:46:22] [PASSED] 4 VFs
[12:46:22] [PASSED] 5 VFs
[12:46:22] [PASSED] 6 VFs
[12:46:22] [PASSED] 7 VFs
[12:46:22] [PASSED] 8 VFs
[12:46:22] [PASSED] 9 VFs
[12:46:22] [PASSED] 10 VFs
[12:46:22] [PASSED] 11 VFs
[12:46:22] [PASSED] 12 VFs
[12:46:22] [PASSED] 13 VFs
[12:46:22] [PASSED] 14 VFs
[12:46:22] [PASSED] 15 VFs
[12:46:22] [PASSED] 16 VFs
[12:46:22] [PASSED] 17 VFs
[12:46:22] [PASSED] 18 VFs
[12:46:22] [PASSED] 19 VFs
[12:46:22] [PASSED] 20 VFs
[12:46:22] [PASSED] 21 VFs
[12:46:22] [PASSED] 22 VFs
[12:46:22] [PASSED] 23 VFs
[12:46:22] [PASSED] 24 VFs
[12:46:22] [PASSED] 25 VFs
[12:46:22] [PASSED] 26 VFs
[12:46:22] [PASSED] 27 VFs
[12:46:22] [PASSED] 28 VFs
[12:46:22] [PASSED] 29 VFs
[12:46:22] [PASSED] 30 VFs
[12:46:22] [PASSED] 31 VFs
[12:46:22] [PASSED] 32 VFs
[12:46:22] [PASSED] 33 VFs
[12:46:22] [PASSED] 34 VFs
[12:46:22] [PASSED] 35 VFs
[12:46:22] [PASSED] 36 VFs
[12:46:22] [PASSED] 37 VFs
[12:46:22] [PASSED] 38 VFs
[12:46:22] [PASSED] 39 VFs
[12:46:22] [PASSED] 40 VFs
[12:46:22] [PASSED] 41 VFs
[12:46:22] [PASSED] 42 VFs
[12:46:22] [PASSED] 43 VFs
[12:46:22] [PASSED] 44 VFs
[12:46:22] [PASSED] 45 VFs
[12:46:22] [PASSED] 46 VFs
[12:46:22] [PASSED] 47 VFs
[12:46:22] [PASSED] 48 VFs
[12:46:22] [PASSED] 49 VFs
[12:46:22] [PASSED] 50 VFs
[12:46:22] [PASSED] 51 VFs
[12:46:22] [PASSED] 52 VFs
[12:46:22] [PASSED] 53 VFs
[12:46:22] [PASSED] 54 VFs
[12:46:22] [PASSED] 55 VFs
[12:46:22] [PASSED] 56 VFs
[12:46:22] [PASSED] 57 VFs
[12:46:22] [PASSED] 58 VFs
[12:46:22] [PASSED] 59 VFs
[12:46:22] [PASSED] 60 VFs
[12:46:22] [PASSED] 61 VFs
[12:46:22] [PASSED] 62 VFs
[12:46:22] [PASSED] 63 VFs
[12:46:22] ==================== [PASSED] fair_vram ====================
[12:46:22] ================== [PASSED] pf_gt_config ===================
[12:46:22] ===================== lmtt (1 subtest) =====================
[12:46:22] ======================== test_ops  =========================
[12:46:22] [PASSED] 2-level
[12:46:22] [PASSED] multi-level
[12:46:22] ==================== [PASSED] test_ops =====================
[12:46:22] ====================== [PASSED] lmtt =======================
[12:46:22] ================= pf_service (11 subtests) =================
[12:46:22] [PASSED] pf_negotiate_any
[12:46:22] [PASSED] pf_negotiate_base_match
[12:46:22] [PASSED] pf_negotiate_base_newer
[12:46:22] [PASSED] pf_negotiate_base_next
[12:46:22] [SKIPPED] pf_negotiate_base_older
[12:46:22] [PASSED] pf_negotiate_base_prev
[12:46:22] [PASSED] pf_negotiate_latest_match
[12:46:22] [PASSED] pf_negotiate_latest_newer
[12:46:22] [PASSED] pf_negotiate_latest_next
[12:46:22] [SKIPPED] pf_negotiate_latest_older
[12:46:22] [SKIPPED] pf_negotiate_latest_prev
[12:46:22] =================== [PASSED] pf_service ====================
[12:46:22] ================= xe_guc_g2g (2 subtests) ==================
[12:46:22] ============== xe_live_guc_g2g_kunit_default  ==============
[12:46:22] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[12:46:22] ============== xe_live_guc_g2g_kunit_allmem  ===============
[12:46:22] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[12:46:22] =================== [SKIPPED] xe_guc_g2g ===================
[12:46:22] =================== xe_mocs (2 subtests) ===================
[12:46:22] ================ xe_live_mocs_kernel_kunit  ================
[12:46:22] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[12:46:22] ================ xe_live_mocs_reset_kunit  =================
[12:46:22] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[12:46:22] ==================== [SKIPPED] xe_mocs =====================
[12:46:22] ================= xe_migrate (2 subtests) ==================
[12:46:22] ================= xe_migrate_sanity_kunit  =================
[12:46:22] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[12:46:22] ================== xe_validate_ccs_kunit  ==================
[12:46:22] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[12:46:22] =================== [SKIPPED] xe_migrate ===================
[12:46:22] ================== xe_dma_buf (1 subtest) ==================
[12:46:22] ==================== xe_dma_buf_kunit  =====================
[12:46:22] ================ [SKIPPED] xe_dma_buf_kunit ================
[12:46:22] =================== [SKIPPED] xe_dma_buf ===================
[12:46:22] ================= xe_bo_shrink (1 subtest) =================
[12:46:22] =================== xe_bo_shrink_kunit  ====================
[12:46:22] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[12:46:22] ================== [SKIPPED] xe_bo_shrink ==================
[12:46:22] ==================== xe_bo (2 subtests) ====================
[12:46:22] ================== xe_ccs_migrate_kunit  ===================
[12:46:22] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[12:46:22] ==================== xe_bo_evict_kunit  ====================
[12:46:22] =============== [SKIPPED] xe_bo_evict_kunit ================
[12:46:22] ===================== [SKIPPED] xe_bo ======================
[12:46:22] ==================== args (13 subtests) ====================
[12:46:22] [PASSED] count_args_test
[12:46:22] [PASSED] call_args_example
[12:46:22] [PASSED] call_args_test
[12:46:22] [PASSED] drop_first_arg_example
[12:46:22] [PASSED] drop_first_arg_test
[12:46:22] [PASSED] first_arg_example
[12:46:22] [PASSED] first_arg_test
[12:46:22] [PASSED] last_arg_example
[12:46:22] [PASSED] last_arg_test
[12:46:22] [PASSED] pick_arg_example
[12:46:22] [PASSED] if_args_example
[12:46:22] [PASSED] if_args_test
[12:46:22] [PASSED] sep_comma_example
[12:46:22] ====================== [PASSED] args =======================
[12:46:22] =================== xe_pci (3 subtests) ====================
[12:46:22] ==================== check_graphics_ip  ====================
[12:46:22] [PASSED] 12.00 Xe_LP
[12:46:22] [PASSED] 12.10 Xe_LP+
[12:46:22] [PASSED] 12.55 Xe_HPG
[12:46:22] [PASSED] 12.60 Xe_HPC
[12:46:22] [PASSED] 12.70 Xe_LPG
[12:46:22] [PASSED] 12.71 Xe_LPG
[12:46:22] [PASSED] 12.74 Xe_LPG+
[12:46:22] [PASSED] 20.01 Xe2_HPG
[12:46:22] [PASSED] 20.02 Xe2_HPG
[12:46:22] [PASSED] 20.04 Xe2_LPG
[12:46:22] [PASSED] 30.00 Xe3_LPG
[12:46:22] [PASSED] 30.01 Xe3_LPG
[12:46:22] [PASSED] 30.03 Xe3_LPG
[12:46:22] [PASSED] 30.04 Xe3_LPG
[12:46:22] [PASSED] 30.05 Xe3_LPG
[12:46:22] [PASSED] 35.10 Xe3p_LPG
[12:46:22] [PASSED] 35.11 Xe3p_XPC
[12:46:22] ================ [PASSED] check_graphics_ip ================
[12:46:22] ===================== check_media_ip  ======================
[12:46:22] [PASSED] 12.00 Xe_M
[12:46:22] [PASSED] 12.55 Xe_HPM
[12:46:22] [PASSED] 13.00 Xe_LPM+
[12:46:22] [PASSED] 13.01 Xe2_HPM
[12:46:22] [PASSED] 20.00 Xe2_LPM
[12:46:22] [PASSED] 30.00 Xe3_LPM
[12:46:22] [PASSED] 30.02 Xe3_LPM
[12:46:22] [PASSED] 35.00 Xe3p_LPM
[12:46:22] [PASSED] 35.03 Xe3p_HPM
[12:46:22] ================= [PASSED] check_media_ip ==================
[12:46:22] =================== check_platform_desc  ===================
[12:46:22] [PASSED] 0x9A60 (TIGERLAKE)
[12:46:22] [PASSED] 0x9A68 (TIGERLAKE)
[12:46:22] [PASSED] 0x9A70 (TIGERLAKE)
[12:46:22] [PASSED] 0x9A40 (TIGERLAKE)
[12:46:22] [PASSED] 0x9A49 (TIGERLAKE)
[12:46:22] [PASSED] 0x9A59 (TIGERLAKE)
[12:46:22] [PASSED] 0x9A78 (TIGERLAKE)
[12:46:22] [PASSED] 0x9AC0 (TIGERLAKE)
[12:46:22] [PASSED] 0x9AC9 (TIGERLAKE)
[12:46:22] [PASSED] 0x9AD9 (TIGERLAKE)
[12:46:22] [PASSED] 0x9AF8 (TIGERLAKE)
[12:46:22] [PASSED] 0x4C80 (ROCKETLAKE)
[12:46:22] [PASSED] 0x4C8A (ROCKETLAKE)
[12:46:22] [PASSED] 0x4C8B (ROCKETLAKE)
[12:46:22] [PASSED] 0x4C8C (ROCKETLAKE)
[12:46:22] [PASSED] 0x4C90 (ROCKETLAKE)
[12:46:22] [PASSED] 0x4C9A (ROCKETLAKE)
[12:46:22] [PASSED] 0x4680 (ALDERLAKE_S)
[12:46:22] [PASSED] 0x4682 (ALDERLAKE_S)
[12:46:22] [PASSED] 0x4688 (ALDERLAKE_S)
[12:46:22] [PASSED] 0x468A (ALDERLAKE_S)
[12:46:22] [PASSED] 0x468B (ALDERLAKE_S)
[12:46:22] [PASSED] 0x4690 (ALDERLAKE_S)
[12:46:22] [PASSED] 0x4692 (ALDERLAKE_S)
[12:46:22] [PASSED] 0x4693 (ALDERLAKE_S)
[12:46:22] [PASSED] 0x46A0 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46A1 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46A2 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46A3 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46A6 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46A8 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46AA (ALDERLAKE_P)
[12:46:22] [PASSED] 0x462A (ALDERLAKE_P)
[12:46:22] [PASSED] 0x4626 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x4628 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46B0 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46B1 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46B2 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46B3 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46C0 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46C1 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46C2 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46C3 (ALDERLAKE_P)
[12:46:22] [PASSED] 0x46D0 (ALDERLAKE_N)
[12:46:22] [PASSED] 0x46D1 (ALDERLAKE_N)
[12:46:22] [PASSED] 0x46D2 (ALDERLAKE_N)
[12:46:22] [PASSED] 0x46D3 (ALDERLAKE_N)
[12:46:22] [PASSED] 0x46D4 (ALDERLAKE_N)
[12:46:22] [PASSED] 0xA721 (ALDERLAKE_P)
[12:46:22] [PASSED] 0xA7A1 (ALDERLAKE_P)
[12:46:22] [PASSED] 0xA7A9 (ALDERLAKE_P)
[12:46:22] [PASSED] 0xA7AC (ALDERLAKE_P)
[12:46:22] [PASSED] 0xA7AD (ALDERLAKE_P)
[12:46:22] [PASSED] 0xA720 (ALDERLAKE_P)
[12:46:22] [PASSED] 0xA7A0 (ALDERLAKE_P)
[12:46:22] [PASSED] 0xA7A8 (ALDERLAKE_P)
[12:46:22] [PASSED] 0xA7AA (ALDERLAKE_P)
[12:46:22] [PASSED] 0xA7AB (ALDERLAKE_P)
[12:46:22] [PASSED] 0xA780 (ALDERLAKE_S)
[12:46:22] [PASSED] 0xA781 (ALDERLAKE_S)
[12:46:22] [PASSED] 0xA782 (ALDERLAKE_S)
[12:46:22] [PASSED] 0xA783 (ALDERLAKE_S)
[12:46:22] [PASSED] 0xA788 (ALDERLAKE_S)
[12:46:22] [PASSED] 0xA789 (ALDERLAKE_S)
[12:46:22] [PASSED] 0xA78A (ALDERLAKE_S)
[12:46:22] [PASSED] 0xA78B (ALDERLAKE_S)
[12:46:22] [PASSED] 0x4905 (DG1)
[12:46:22] [PASSED] 0x4906 (DG1)
[12:46:22] [PASSED] 0x4907 (DG1)
[12:46:22] [PASSED] 0x4908 (DG1)
[12:46:22] [PASSED] 0x4909 (DG1)
[12:46:22] [PASSED] 0x56C0 (DG2)
[12:46:22] [PASSED] 0x56C2 (DG2)
[12:46:22] [PASSED] 0x56C1 (DG2)
[12:46:22] [PASSED] 0x7D51 (METEORLAKE)
[12:46:22] [PASSED] 0x7DD1 (METEORLAKE)
[12:46:22] [PASSED] 0x7D41 (METEORLAKE)
[12:46:22] [PASSED] 0x7D67 (METEORLAKE)
[12:46:22] [PASSED] 0xB640 (METEORLAKE)
[12:46:22] [PASSED] 0x56A0 (DG2)
[12:46:22] [PASSED] 0x56A1 (DG2)
[12:46:22] [PASSED] 0x56A2 (DG2)
[12:46:22] [PASSED] 0x56BE (DG2)
[12:46:22] [PASSED] 0x56BF (DG2)
[12:46:22] [PASSED] 0x5690 (DG2)
[12:46:22] [PASSED] 0x5691 (DG2)
[12:46:22] [PASSED] 0x5692 (DG2)
[12:46:22] [PASSED] 0x56A5 (DG2)
[12:46:22] [PASSED] 0x56A6 (DG2)
[12:46:22] [PASSED] 0x56B0 (DG2)
[12:46:22] [PASSED] 0x56B1 (DG2)
[12:46:22] [PASSED] 0x56BA (DG2)
[12:46:22] [PASSED] 0x56BB (DG2)
[12:46:22] [PASSED] 0x56BC (DG2)
[12:46:22] [PASSED] 0x56BD (DG2)
[12:46:22] [PASSED] 0x5693 (DG2)
[12:46:22] [PASSED] 0x5694 (DG2)
[12:46:22] [PASSED] 0x5695 (DG2)
[12:46:22] [PASSED] 0x56A3 (DG2)
[12:46:22] [PASSED] 0x56A4 (DG2)
[12:46:22] [PASSED] 0x56B2 (DG2)
[12:46:22] [PASSED] 0x56B3 (DG2)
[12:46:22] [PASSED] 0x5696 (DG2)
[12:46:22] [PASSED] 0x5697 (DG2)
[12:46:22] [PASSED] 0xB69 (PVC)
[12:46:22] [PASSED] 0xB6E (PVC)
[12:46:22] [PASSED] 0xBD4 (PVC)
[12:46:22] [PASSED] 0xBD5 (PVC)
[12:46:22] [PASSED] 0xBD6 (PVC)
[12:46:22] [PASSED] 0xBD7 (PVC)
[12:46:22] [PASSED] 0xBD8 (PVC)
[12:46:22] [PASSED] 0xBD9 (PVC)
[12:46:22] [PASSED] 0xBDA (PVC)
[12:46:22] [PASSED] 0xBDB (PVC)
[12:46:22] [PASSED] 0xBE0 (PVC)
[12:46:22] [PASSED] 0xBE1 (PVC)
[12:46:22] [PASSED] 0xBE5 (PVC)
[12:46:22] [PASSED] 0x7D40 (METEORLAKE)
[12:46:22] [PASSED] 0x7D45 (METEORLAKE)
[12:46:22] [PASSED] 0x7D55 (METEORLAKE)
[12:46:22] [PASSED] 0x7D60 (METEORLAKE)
[12:46:22] [PASSED] 0x7DD5 (METEORLAKE)
[12:46:22] [PASSED] 0x6420 (LUNARLAKE)
[12:46:22] [PASSED] 0x64A0 (LUNARLAKE)
[12:46:22] [PASSED] 0x64B0 (LUNARLAKE)
[12:46:22] [PASSED] 0xE202 (BATTLEMAGE)
[12:46:22] [PASSED] 0xE209 (BATTLEMAGE)
[12:46:22] [PASSED] 0xE20B (BATTLEMAGE)
[12:46:22] [PASSED] 0xE20C (BATTLEMAGE)
[12:46:22] [PASSED] 0xE20D (BATTLEMAGE)
[12:46:22] [PASSED] 0xE210 (BATTLEMAGE)
[12:46:22] [PASSED] 0xE211 (BATTLEMAGE)
[12:46:22] [PASSED] 0xE212 (BATTLEMAGE)
[12:46:22] [PASSED] 0xE216 (BATTLEMAGE)
[12:46:22] [PASSED] 0xE220 (BATTLEMAGE)
[12:46:22] [PASSED] 0xE221 (BATTLEMAGE)
[12:46:22] [PASSED] 0xE222 (BATTLEMAGE)
[12:46:22] [PASSED] 0xE223 (BATTLEMAGE)
[12:46:22] [PASSED] 0xB080 (PANTHERLAKE)
[12:46:22] [PASSED] 0xB081 (PANTHERLAKE)
[12:46:22] [PASSED] 0xB082 (PANTHERLAKE)
[12:46:22] [PASSED] 0xB083 (PANTHERLAKE)
[12:46:22] [PASSED] 0xB084 (PANTHERLAKE)
[12:46:22] [PASSED] 0xB085 (PANTHERLAKE)
[12:46:22] [PASSED] 0xB086 (PANTHERLAKE)
[12:46:22] [PASSED] 0xB087 (PANTHERLAKE)
[12:46:22] [PASSED] 0xB08F (PANTHERLAKE)
[12:46:22] [PASSED] 0xB090 (PANTHERLAKE)
[12:46:22] [PASSED] 0xB0A0 (PANTHERLAKE)
[12:46:22] [PASSED] 0xB0B0 (PANTHERLAKE)
[12:46:22] [PASSED] 0xFD80 (PANTHERLAKE)
[12:46:22] [PASSED] 0xFD81 (PANTHERLAKE)
[12:46:22] [PASSED] 0xD740 (NOVALAKE_S)
[12:46:22] [PASSED] 0xD741 (NOVALAKE_S)
[12:46:22] [PASSED] 0xD742 (NOVALAKE_S)
[12:46:22] [PASSED] 0xD743 (NOVALAKE_S)
[12:46:22] [PASSED] 0xD745 (NOVALAKE_S)
[12:46:22] [PASSED] 0xD74A (NOVALAKE_S)
[12:46:22] [PASSED] 0xD74B (NOVALAKE_S)
[12:46:22] [PASSED] 0x674C (CRESCENTISLAND)
[12:46:22] [PASSED] 0x674D (CRESCENTISLAND)
[12:46:22] [PASSED] 0x674E (CRESCENTISLAND)
[12:46:22] [PASSED] 0x674F (CRESCENTISLAND)
[12:46:22] [PASSED] 0x6750 (CRESCENTISLAND)
[12:46:22] [PASSED] 0xD750 (NOVALAKE_P)
[12:46:22] [PASSED] 0xD751 (NOVALAKE_P)
[12:46:22] [PASSED] 0xD752 (NOVALAKE_P)
[12:46:22] [PASSED] 0xD753 (NOVALAKE_P)
[12:46:22] [PASSED] 0xD754 (NOVALAKE_P)
[12:46:22] [PASSED] 0xD755 (NOVALAKE_P)
[12:46:22] [PASSED] 0xD756 (NOVALAKE_P)
[12:46:22] [PASSED] 0xD757 (NOVALAKE_P)
[12:46:22] [PASSED] 0xD75F (NOVALAKE_P)
[12:46:22] =============== [PASSED] check_platform_desc ===============
[12:46:22] ===================== [PASSED] xe_pci ======================
[12:46:22] ============= xe_rtp_tables_test (4 subtests) ==============
[12:46:22] ================== xe_rtp_table_gt_test  ===================
[12:46:22] [PASSED] gt_was/14011060649
[12:46:22] [PASSED] gt_was/14011059788
[12:46:22] [PASSED] gt_was/14015795083
[12:46:22] [PASSED] gt_was/16021867713
[12:46:22] [PASSED] gt_was/14019449301
[12:46:22] [PASSED] gt_was/16028005424
[12:46:22] [PASSED] gt_was/14026578760
[12:46:22] [PASSED] gt_was/1409420604
[12:46:22] [PASSED] gt_was/1408615072
[12:46:22] [PASSED] gt_was/22010523718
[12:46:22] [PASSED] gt_was/14011006942
[12:46:22] [PASSED] gt_was/14014830051
[12:46:22] [PASSED] gt_was/18018781329
[12:46:22] [PASSED] gt_was/1509235366
[12:46:22] [PASSED] gt_was/18018781329
[12:46:22] [PASSED] gt_was/16016694945
[12:46:22] [PASSED] gt_was/14018575942
[12:46:22] [PASSED] gt_was/22016670082
[12:46:22] [PASSED] gt_was/22016670082
[12:46:22] [PASSED] gt_was/14017421178
[12:46:22] [PASSED] gt_was/16025250150
[12:46:22] [PASSED] gt_was/14021871409
[12:46:22] [PASSED] gt_was/16021865536
[12:46:22] [PASSED] gt_was/14021486841
[12:46:22] [PASSED] gt_was/14025160223
[12:46:22] [PASSED] gt_was/14026144927, 16029437861
[12:46:22] [PASSED] gt_was/14025635424
[12:46:22] [PASSED] gt_was/16028005424
[12:46:22] ============== [PASSED] xe_rtp_table_gt_test ===============
[12:46:22] ================== xe_rtp_table_gt_test  ===================
[12:46:22] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[12:46:22] [PASSED] gt_tunings/Tuning: 32B Access Enable
[12:46:22] [PASSED] gt_tunings/Tuning: L3 cache
[12:46:22] [PASSED] gt_tunings/Tuning: L3 cache - media
[12:46:22] [PASSED] gt_tunings/Tuning: Compression Overfetch
[12:46:22] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[12:46:22] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[12:46:22] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[12:46:22] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[12:46:22] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[12:46:22] [PASSED] gt_tunings/Tuning: Stateless compression control
[12:46:22] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[12:46:22] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[12:46:22] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[12:46:22] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[12:46:22] ============== [PASSED] xe_rtp_table_gt_test ===============
[12:46:22] ================== xe_rtp_table_oob_test  ==================
[12:46:22] [PASSED] oob_was/1607983814
[12:46:22] [PASSED] oob_was/16010904313
[12:46:22] [PASSED] oob_was/18022495364
[12:46:22] [PASSED] oob_was/22012773006
[12:46:22] [PASSED] oob_was/14014475959
[12:46:22] [PASSED] oob_was/22011391025
[12:46:22] [PASSED] oob_was/22012727170
[12:46:22] [PASSED] oob_was/22012727685
[12:46:22] [PASSED] oob_was/22016596838
[12:46:22] [PASSED] oob_was/18020744125
[12:46:22] [PASSED] oob_was/1409600907
[12:46:22] [PASSED] oob_was/22014953428
[12:46:22] [PASSED] oob_was/16017236439
[12:46:22] [PASSED] oob_was/14019821291
[12:46:22] [PASSED] oob_was/14015076503
[12:46:22] [PASSED] oob_was/14018913170
[12:46:22] [PASSED] oob_was/14018094691
[12:46:22] [PASSED] oob_was/18024947630
[12:46:22] [PASSED] oob_was/16022287689
[12:46:22] [PASSED] oob_was/13011645652
[12:46:22] [PASSED] oob_was/14022293748
[12:46:22] [PASSED] oob_was/22019794406
[12:46:22] [PASSED] oob_was/22019338487
[12:46:22] [PASSED] oob_was/16023588340
[12:46:22] [PASSED] oob_was/14019789679
[12:46:22] [PASSED] oob_was/14022866841
[12:46:22] [PASSED] oob_was/16021333562
[12:46:22] [PASSED] oob_was/14016712196
[12:46:22] [PASSED] oob_was/14015568240
[12:46:22] [PASSED] oob_was/18013179988
[12:46:22] [PASSED] oob_was/1508761755
[12:46:22] [PASSED] oob_was/16023105232
[12:46:22] [PASSED] oob_was/16026508708
[12:46:22] [PASSED] oob_was/14020001231
[12:46:22] [PASSED] oob_was/16023683509
[12:46:22] [PASSED] oob_was/14025515070
[12:46:22] [PASSED] oob_was/15015404425_disable
[12:46:22] [PASSED] oob_was/16026007364
[12:46:22] [PASSED] oob_was/14020316580
[12:46:22] [PASSED] oob_was/14025883347
[12:46:22] ============== [PASSED] xe_rtp_table_oob_test ==============
[12:46:22] ================ xe_rtp_table_dev_oob_test  ================
[12:46:22] [PASSED] device_oob_was/22010954014
[12:46:22] [PASSED] device_oob_was/15015404425
[12:46:22] [PASSED] device_oob_was/22019338487_display
[12:46:22] [PASSED] device_oob_was/14022085890
[12:46:22] [PASSED] device_oob_was/14026539277
[12:46:22] [PASSED] device_oob_was/14026633728
[12:46:22] [PASSED] device_oob_was/14026746987
[12:46:22] [PASSED] device_oob_was/14026779378
[12:46:22] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[12:46:22] =============== [PASSED] xe_rtp_tables_test ================
[12:46:22] =================== xe_rtp (3 subtests) ====================
[12:46:22] =================== xe_rtp_rules_tests  ====================
[12:46:22] [PASSED] no
[12:46:22] [PASSED] yes
[12:46:22] [PASSED] no-and-no
[12:46:22] [PASSED] no-and-yes
[12:46:22] [PASSED] yes-and-no
[12:46:22] [PASSED] yes-and-yes
[12:46:22] [PASSED] no-or-no
[12:46:22] [PASSED] no-or-yes
[12:46:22] [PASSED] yes-or-no
[12:46:22] [PASSED] yes-or-yes
[12:46:22] [PASSED] no-yes-or-yes-no
[12:46:22] [PASSED] no-yes-or-yes-yes
[12:46:22] [PASSED] yes-yes-or-no-yes
[12:46:22] [PASSED] yes-yes-or-yes-yes
[12:46:22] [PASSED] no-no-or-yes-or-no
[12:46:22] [PASSED] or
[12:46:22] [PASSED] or-yes
[12:46:22] [PASSED] or-no
[12:46:22] [PASSED] yes-or
[12:46:22] [PASSED] no-or
[12:46:22] [PASSED] no-or-or-yes
[12:46:22] [PASSED] yes-or-or-no
[12:46:22] [PASSED] no-or-or-no
[12:46:22] [PASSED] missing-context-engine-class
[12:46:22] [PASSED] missing-context-engine-class-or-yes
[12:46:22] [PASSED] missing-context-engine-class-or-or-yes
[12:46:22] =============== [PASSED] xe_rtp_rules_tests ================
[12:46:22] =============== xe_rtp_process_to_sr_tests  ================
[12:46:22] [PASSED] coalesce-same-reg
[12:46:22] [PASSED] no-match-no-add
[12:46:22] [PASSED] two-regs-two-entries
[12:46:22] [PASSED] clr-one-set-other
[12:46:22] [PASSED] set-field
[12:46:22] [PASSED] conflict-duplicate
[12:46:22] [PASSED] conflict-not-disjoint
[12:46:22] [PASSED] conflict-reg-type
[12:46:22] [PASSED] bad-mcr-reg-forced-to-regular
[12:46:22] [PASSED] bad-regular-reg-forced-to-mcr
[12:46:22] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[12:46:22] ================== xe_rtp_process_tests  ===================
[12:46:22] [PASSED] active1
[12:46:22] [PASSED] active2
[12:46:22] [PASSED] active-inactive
[12:46:22] [PASSED] inactive-active
[12:46:22] [PASSED] inactive-active-inactive
[12:46:22] [PASSED] inactive-inactive-inactive
[12:46:22] ============== [PASSED] xe_rtp_process_tests ===============
[12:46:22] ===================== [PASSED] xe_rtp ======================
[12:46:22] ==================== xe_wa (1 subtest) =====================
[12:46:22] ======================== xe_wa_gt  =========================
[12:46:22] [PASSED] TIGERLAKE B0
[12:46:22] [PASSED] DG1 A0
[12:46:22] [PASSED] DG1 B0
[12:46:22] [PASSED] ALDERLAKE_S A0
[12:46:22] [PASSED] ALDERLAKE_S B0
[12:46:22] [PASSED] ALDERLAKE_S C0
[12:46:22] [PASSED] ALDERLAKE_S D0
[12:46:22] [PASSED] ALDERLAKE_P A0
[12:46:22] [PASSED] ALDERLAKE_P B0
[12:46:22] [PASSED] ALDERLAKE_P C0
[12:46:22] [PASSED] ALDERLAKE_S RPLS D0
[12:46:22] [PASSED] ALDERLAKE_P RPLU E0
[12:46:22] [PASSED] DG2 G10 C0
[12:46:22] [PASSED] DG2 G11 B1
[12:46:22] [PASSED] DG2 G12 A1
[12:46:22] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[12:46:22] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[12:46:22] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[12:46:22] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[12:46:22] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[12:46:22] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[12:46:22] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[12:46:22] ==================== [PASSED] xe_wa_gt =====================
[12:46:22] ====================== [PASSED] xe_wa ======================
[12:46:22] ============================================================
[12:46:22] Testing complete. Ran 716 tests: passed: 698, skipped: 18
[12:46:22] Elapsed time: 36.418s total, 4.325s configuring, 31.427s building, 0.656s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[12:46:23] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:46:24] 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
In file included from ../drivers/gpu/drm/tests/drm_bridge_test.c:21:
../drivers/gpu/drm/tests/drm_kunit_edid.h:958:28: warning: ‘test_edid_hdmi_4k_rgb_yuv420_dc_max_340mhz’ defined but not used [-Wunused-const-variable=]
  958 | static const unsigned char test_edid_hdmi_4k_rgb_yuv420_dc_max_340mhz[] = {
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../drivers/gpu/drm/tests/drm_kunit_edid.h:726:28: warning: ‘test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz’ defined but not used [-Wunused-const-variable=]
  726 | static const unsigned char test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz[] = {
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../drivers/gpu/drm/tests/drm_kunit_edid.h:612:28: warning: ‘test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz’ defined but not used [-Wunused-const-variable=]
  612 | static const unsigned char test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz[] = {
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../drivers/gpu/drm/tests/drm_kunit_edid.h:498:28: warning: ‘test_edid_hdmi_1080p_rgb_max_340mhz’ defined but not used [-Wunused-const-variable=]
  498 | static const unsigned char test_edid_hdmi_1080p_rgb_max_340mhz[] = {
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../drivers/gpu/drm/tests/drm_kunit_edid.h:390:28: warning: ‘test_edid_hdmi_1080p_rgb_max_200mhz_hdr’ defined but not used [-Wunused-const-variable=]
  390 | static const unsigned char test_edid_hdmi_1080p_rgb_max_200mhz_hdr[] = {
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../drivers/gpu/drm/tests/drm_kunit_edid.h:271:28: warning: ‘test_edid_hdmi_1080p_rgb_max_200mhz’ defined but not used [-Wunused-const-variable=]
  271 | static const unsigned char test_edid_hdmi_1080p_rgb_max_200mhz[] = {
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../drivers/gpu/drm/tests/drm_kunit_edid.h:163:28: warning: ‘test_edid_hdmi_1080p_rgb_max_100mhz’ defined but not used [-Wunused-const-variable=]
  163 | static const unsigned char test_edid_hdmi_1080p_rgb_max_100mhz[] = {
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../drivers/gpu/drm/tests/drm_kunit_edid.h:57:28: warning: ‘test_edid_dvi_1080p’ defined but not used [-Wunused-const-variable=]
   57 | static const unsigned char test_edid_dvi_1080p[] = {
      |                            ^~~~~~~~~~~~~~~~~~~

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

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

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



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

* ✓ Xe.CI.BAT: success for drm/sched: Replace completion with a flush
  2026-06-11 12:34 [RFC] drm/sched: Replace completion with a flush Tvrtko Ursulin
  2026-06-11 12:45 ` ✗ CI.checkpatch: warning for " Patchwork
  2026-06-11 12:47 ` ✓ CI.KUnit: success " Patchwork
@ 2026-06-11 13:26 ` Patchwork
  2026-06-12  0:53 ` ✓ Xe.CI.FULL: " Patchwork
  2026-06-17  8:38 ` [RFC] " Philipp Stanner
  4 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2026-06-11 13:26 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

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

== Series Details ==

Series: drm/sched: Replace completion with a flush
URL   : https://patchwork.freedesktop.org/series/168353/
State : success

== Summary ==

CI Bug Log - changes from xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5_BAT -> xe-pw-168353v1_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (12 -> 12)
------------------------------

  No changes in participating hosts


Changes
-------

  No changes found


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

  * Linux: xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5 -> xe-pw-168353v1

  IGT_8958: 8958
  xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5: 4fdfaadba04dc0f2f2490dbc91922caa290463a5
  xe-pw-168353v1: 168353v1

== Logs ==

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

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

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

* ✓ Xe.CI.FULL: success for drm/sched: Replace completion with a flush
  2026-06-11 12:34 [RFC] drm/sched: Replace completion with a flush Tvrtko Ursulin
                   ` (2 preceding siblings ...)
  2026-06-11 13:26 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-06-12  0:53 ` Patchwork
  2026-06-17  8:38 ` [RFC] " Philipp Stanner
  4 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2026-06-12  0:53 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

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

== Series Details ==

Series: drm/sched: Replace completion with a flush
URL   : https://patchwork.freedesktop.org/series/168353/
State : success

== Summary ==

CI Bug Log - changes from xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5_FULL -> xe-pw-168353v1_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-168353v1_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_big_fb@4-tiled-64bpp-rotate-270:
    - shard-lnl:          NOTRUN -> [SKIP][1] ([Intel XE#1407])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip:
    - shard-lnl:          NOTRUN -> [SKIP][2] ([Intel XE#7059] / [Intel XE#7085])
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-lnl:          NOTRUN -> [SKIP][3] ([Intel XE#1124]) +2 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_bw@connected-linear-tiling-4-displays-target-2560x1440p:
    - shard-lnl:          NOTRUN -> [SKIP][4] ([Intel XE#7676])
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_bw@connected-linear-tiling-4-displays-target-2560x1440p.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc:
    - shard-lnl:          NOTRUN -> [SKIP][5] ([Intel XE#3432])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc:
    - shard-lnl:          NOTRUN -> [SKIP][6] ([Intel XE#2887]) +3 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode:
    - shard-lnl:          NOTRUN -> [SKIP][7] ([Intel XE#373]) +2 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html

  * igt@kms_content_protection@uevent-hdcp14:
    - shard-lnl:          NOTRUN -> [SKIP][8] ([Intel XE#7642]) +1 other test skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_content_protection@uevent-hdcp14.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x170:
    - shard-lnl:          NOTRUN -> [SKIP][9] ([Intel XE#2321] / [Intel XE#7355])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-varying-size:
    - shard-lnl:          NOTRUN -> [SKIP][10] ([Intel XE#309] / [Intel XE#7343]) +1 other test skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html

  * igt@kms_dsc@dsc-fractional-bpp-ultrajoiner:
    - shard-lnl:          NOTRUN -> [SKIP][11] ([Intel XE#8265])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_dsc@dsc-fractional-bpp-ultrajoiner.html

  * igt@kms_feature_discovery@display-4x:
    - shard-lnl:          NOTRUN -> [SKIP][12] ([Intel XE#1138] / [Intel XE#7344])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_feature_discovery@display-4x.html

  * igt@kms_flip@2x-plain-flip-fb-recreate:
    - shard-lnl:          NOTRUN -> [SKIP][13] ([Intel XE#1421])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_flip@2x-plain-flip-fb-recreate.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp2:
    - shard-bmg:          [PASS][14] -> [FAIL][15] ([Intel XE#3321])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp2.html
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-9/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp2.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][16] ([Intel XE#7178] / [Intel XE#7351])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yuv-linear-to-32bpp-yuv-linear-reflect-x:
    - shard-lnl:          NOTRUN -> [SKIP][17] ([Intel XE#7179])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_flip_scaled_crc@flip-32bpp-yuv-linear-to-32bpp-yuv-linear-reflect-x.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-msflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][18] ([Intel XE#6312] / [Intel XE#651]) +3 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-abgr161616f-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][19] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcdrrs-abgr161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-pri-indfb-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][20] ([Intel XE#6312]) +2 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbchdr-argb161616f-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][21] ([Intel XE#7061])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_frontbuffer_tracking@fbchdr-argb161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][22] ([Intel XE#656] / [Intel XE#7905]) +6 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-primscrn-spr-indfb-move:
    - shard-lnl:          NOTRUN -> [SKIP][23] ([Intel XE#7905]) +10 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-primscrn-spr-indfb-move.html

  * igt@kms_frontbuffer_tracking@hdr-1p-offscreen-pri-shrfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][24] ([Intel XE#7865]) +5 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_frontbuffer_tracking@hdr-1p-offscreen-pri-shrfb-draw-mmap-wc.html

  * igt@kms_hdr@invalid-hdr:
    - shard-bmg:          [PASS][25] -> [SKIP][26] ([Intel XE#1503])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-8/igt@kms_hdr@invalid-hdr.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-10/igt@kms_hdr@invalid-hdr.html

  * igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010:
    - shard-bmg:          [PASS][27] -> [SKIP][28] ([Intel XE#7922]) +1 other test skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-8/igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010.html
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-10/igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010.html

  * igt@kms_hdr@static-toggle-dpms:
    - shard-lnl:          NOTRUN -> [SKIP][29] ([Intel XE#1503] / [Intel XE#7915])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_hdr@static-toggle-dpms.html

  * igt@kms_hdr@static-toggle-dpms@pipe-a-edp-1-xrgb2101010:
    - shard-lnl:          NOTRUN -> [SKIP][30] ([Intel XE#7915]) +1 other test skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_hdr@static-toggle-dpms@pipe-a-edp-1-xrgb2101010.html

  * igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f:
    - shard-bmg:          [PASS][31] -> [SKIP][32] ([Intel XE#7915]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-5/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-8/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f.html

  * igt@kms_joiner@basic-force-big-joiner:
    - shard-lnl:          NOTRUN -> [SKIP][33] ([Intel XE#7086] / [Intel XE#7390])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_joiner@basic-force-big-joiner.html

  * igt@kms_plane@pixel-format-4-tiled-modifier@pipe-a-plane-5:
    - shard-lnl:          NOTRUN -> [SKIP][34] ([Intel XE#8303]) +1 other test skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_plane@pixel-format-4-tiled-modifier@pipe-a-plane-5.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping:
    - shard-lnl:          NOTRUN -> [SKIP][35] ([Intel XE#7283])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-lnl:          NOTRUN -> [SKIP][36] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#7383])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf:
    - shard-lnl:          NOTRUN -> [SKIP][37] ([Intel XE#2893] / [Intel XE#7304])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr@fbc-pr-basic:
    - shard-lnl:          NOTRUN -> [SKIP][38] ([Intel XE#1406])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_psr@fbc-pr-basic.html

  * igt@kms_psr@fbc-psr2-dpms:
    - shard-lnl:          NOTRUN -> [SKIP][39] ([Intel XE#1406] / [Intel XE#7345])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_psr@fbc-psr2-dpms.html

  * igt@kms_psr@fbc-psr2-dpms@edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][40] ([Intel XE#1406] / [Intel XE#4609])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_psr@fbc-psr2-dpms@edp-1.html

  * igt@kms_rotation_crc@primary-rotation-90:
    - shard-lnl:          NOTRUN -> [SKIP][41] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_rotation_crc@primary-rotation-90.html

  * igt@kms_setmode@invalid-clone-single-crtc-stealing:
    - shard-lnl:          NOTRUN -> [SKIP][42] ([Intel XE#1435])
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@kms_setmode@invalid-clone-single-crtc-stealing.html

  * igt@xe_eudebug@basic-vm-bind-ufence-delay-ack:
    - shard-lnl:          NOTRUN -> [SKIP][43] ([Intel XE#7636]) +3 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_eudebug@basic-vm-bind-ufence-delay-ack.html

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-bmg:          [PASS][44] -> [INCOMPLETE][45] ([Intel XE#6321])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-4/igt@xe_evict@evict-beng-mixed-many-threads-small.html
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-7/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * igt@xe_evict@evict-mixed-threads-small-multi-vm:
    - shard-lnl:          NOTRUN -> [SKIP][46] ([Intel XE#6540] / [Intel XE#688]) +2 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_evict@evict-mixed-threads-small-multi-vm.html

  * igt@xe_exec_balancer@twice-cm-virtual-basic:
    - shard-lnl:          NOTRUN -> [SKIP][47] ([Intel XE#7482]) +4 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_exec_balancer@twice-cm-virtual-basic.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap:
    - shard-lnl:          NOTRUN -> [SKIP][48] ([Intel XE#1392]) +2 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap.html

  * igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][49] ([Intel XE#7136]) +3 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-rebind.html

  * igt@xe_exec_multi_queue@exec-sanity:
    - shard-lnl:          NOTRUN -> [SKIP][50] ([Intel XE#6874]) +7 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_exec_multi_queue@exec-sanity.html

  * igt@xe_exec_threads@threads-multi-queue-userptr-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][51] ([Intel XE#7138]) +1 other test skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_exec_threads@threads-multi-queue-userptr-rebind.html

  * igt@xe_multigpu_svm@mgpu-pagefault-prefetch:
    - shard-lnl:          NOTRUN -> [SKIP][52] ([Intel XE#6964])
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_multigpu_svm@mgpu-pagefault-prefetch.html

  * igt@xe_pm@d3hot-mmap-vram:
    - shard-lnl:          NOTRUN -> [SKIP][53] ([Intel XE#1948])
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_pm@d3hot-mmap-vram.html

  * igt@xe_pm@s4-d3cold-basic-exec:
    - shard-lnl:          NOTRUN -> [SKIP][54] ([Intel XE#2284] / [Intel XE#366] / [Intel XE#7370])
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_pm@s4-d3cold-basic-exec.html

  * igt@xe_query@multigpu-query-config:
    - shard-lnl:          NOTRUN -> [SKIP][55] ([Intel XE#944])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_query@multigpu-query-config.html

  * igt@xe_survivability@runtime-survivability:
    - shard-lnl:          NOTRUN -> [SKIP][56] ([Intel XE#6529] / [Intel XE#7331] / [Intel XE#7388])
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_survivability@runtime-survivability.html

  * igt@xe_wedged@wedged-mode-toggle:
    - shard-bmg:          [PASS][57] -> [ABORT][58] ([Intel XE#8007])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-6/igt@xe_wedged@wedged-mode-toggle.html
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-3/igt@xe_wedged@wedged-mode-toggle.html

  
#### Possible fixes ####

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-dp2:
    - shard-bmg:          [FAIL][59] ([Intel XE#3321]) -> [PASS][60]
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-dp2.html
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-9/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-dp2.html

  * igt@xe_evict@evict-mixed-many-threads-small:
    - shard-bmg:          [INCOMPLETE][61] ([Intel XE#6321]) -> [PASS][62]
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-5/igt@xe_evict@evict-mixed-many-threads-small.html
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-8/igt@xe_evict@evict-mixed-many-threads-small.html

  * igt@xe_exec_reset@long-spin-comp-reuse-many-preempt-threads:
    - shard-bmg:          [FAIL][63] ([Intel XE#7850]) -> [PASS][64]
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-9/igt@xe_exec_reset@long-spin-comp-reuse-many-preempt-threads.html
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-1/igt@xe_exec_reset@long-spin-comp-reuse-many-preempt-threads.html

  * igt@xe_exec_system_allocator@many-execqueues-mmap-new-huge:
    - shard-lnl:          [ABORT][65] ([Intel XE#8007]) -> [PASS][66]
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-lnl-8/igt@xe_exec_system_allocator@many-execqueues-mmap-new-huge.html
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-lnl-7/igt@xe_exec_system_allocator@many-execqueues-mmap-new-huge.html

  
#### Warnings ####

  * igt@kms_hdr@brightness-with-hdr:
    - shard-bmg:          [SKIP][67] ([Intel XE#3544] / [Intel XE#7915] / [Intel XE#7916]) -> [SKIP][68] ([Intel XE#3544] / [Intel XE#7916])
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-7/igt@kms_hdr@brightness-with-hdr.html
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-3/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f:
    - shard-bmg:          [SKIP][69] ([Intel XE#7915]) -> [SKIP][70] ([Intel XE#7916]) +1 other test skip
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-7/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-3/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-bmg:          [FAIL][71] ([Intel XE#1729] / [Intel XE#7424]) -> [SKIP][72] ([Intel XE#2426] / [Intel XE#5848])
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-4/igt@kms_tiled_display@basic-test-pattern.html
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-7/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-bmg:          [SKIP][73] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][74] ([Intel XE#2426] / [Intel XE#5848])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168353v1/shard-bmg-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
  [Intel XE#1948]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1948
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
  [Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [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#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
  [Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
  [Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#6529]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6529
  [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#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [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#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085
  [Intel XE#7086]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7086
  [Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
  [Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7179]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7179
  [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#7331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7331
  [Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
  [Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
  [Intel XE#7344]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7344
  [Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345
  [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
  [Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
  [Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
  [Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
  [Intel XE#7383]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7383
  [Intel XE#7388]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7388
  [Intel XE#7390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7390
  [Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
  [Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
  [Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
  [Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
  [Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
  [Intel XE#7676]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7676
  [Intel XE#7850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7850
  [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#7915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7915
  [Intel XE#7916]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7916
  [Intel XE#7922]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7922
  [Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
  [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#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * Linux: xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5 -> xe-pw-168353v1

  IGT_8958: 8958
  xe-5239-4fdfaadba04dc0f2f2490dbc91922caa290463a5: 4fdfaadba04dc0f2f2490dbc91922caa290463a5
  xe-pw-168353v1: 168353v1

== Logs ==

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

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

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

* Re: [RFC] drm/sched: Replace completion with a flush
  2026-06-11 12:34 [RFC] drm/sched: Replace completion with a flush Tvrtko Ursulin
                   ` (3 preceding siblings ...)
  2026-06-12  0:53 ` ✓ Xe.CI.FULL: " Patchwork
@ 2026-06-17  8:38 ` Philipp Stanner
  2026-06-17  9:13   ` Christian König
  4 siblings, 1 reply; 7+ messages in thread
From: Philipp Stanner @ 2026-06-17  8:38 UTC (permalink / raw)
  To: Tvrtko Ursulin, dri-devel
  Cc: kernel-dev, Christian König, Danilo Krummrich, Matthew Brost,
	Philipp Stanner, amd-gfx, intel-xe

On Thu, 2026-06-11 at 13:34 +0100, Tvrtko Ursulin wrote:
> Due the scheduler locking design, and the inability to always lock both
> the entity and the run-queue in the consistent order, a completion exists
> which effectively marks the entity as in use from a call path which is not
> able to lock it.
> 
> When entity is selected from the run job worker, its completion is marked
> as non-idle all until the code is sure it will not be dereferencing it any
> more, at which point it signals it as idle, releasing the potential
> parallel cleanup path.
> 
> We can remove the need for this completion by implementing the identical
> guarantee by simply flushing the run job work from the cleanup path, after
> having removed the entity from the run queue.
> 
> We then know that the entity is no longer reachable by the run queue
> selection logic, so as soon as any pending work is done the cleanup can
> safely proceed. And because we have marked the entity as stopped, we also
> know that the entity cannot re-enter the run queue.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Danilo Krummrich <dakr@kernel.org>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Philipp Stanner <phasta@kernel.org>
> Cc: amd-gfx@lists.freedesktop.org
> Cc: intel-xe@lists.freedesktop.org
> ---
> "Perfection is achieved, not when there is nothing more to add, but when
>  there is nothing left to take away." - Antoine de Saint-Exupéry


Hmm, alright, so the basic trick just seems to be that the workqueue
implementation already can ensure the synchronization which we manually
implemented so far through the completion.


It's a bit more LOC, and doesn't solve a bug. However, I kind of like
the idea because it removes a redundant mechanism. Would be cool to
hear some other opinions, though.

A comment below

> 
> Lets see what Intel's CI says about this, not to mention our new AI
> overlords...
> ---
>  drivers/gpu/drm/scheduler/sched_entity.c   | 25 +++++++++++++++-------
>  drivers/gpu/drm/scheduler/sched_internal.h | 14 ++++++++++--
>  drivers/gpu/drm/scheduler/sched_main.c     |  2 --
>  drivers/gpu/drm/scheduler/sched_rq.c       | 14 +++++++-----
>  include/drm/gpu_scheduler.h                |  9 --------
>  5 files changed, 38 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/gpu/drm/scheduler/sched_entity.c b/drivers/gpu/drm/scheduler/sched_entity.c
> index c51101ec70c1..e6f7c2fbefce 100644
> --- a/drivers/gpu/drm/scheduler/sched_entity.c
> +++ b/drivers/gpu/drm/scheduler/sched_entity.c
> @@ -137,10 +137,6 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,
>  	entity->rq = &sched_list[0]->rq;
>  	RCU_INIT_POINTER(entity->last_scheduled, NULL);
>  	RB_CLEAR_NODE(&entity->rb_tree_node);
> -	init_completion(&entity->entity_idle);
> -
> -	/* We start in an idle state. */
> -	complete_all(&entity->entity_idle);
>  
>  	spin_lock_init(&entity->lock);
>  	spsc_queue_init(&entity->job_queue);
> @@ -276,18 +272,24 @@ static void drm_sched_entity_kill_jobs_cb(struct dma_fence *f,
>   */
>  void drm_sched_entity_kill(struct drm_sched_entity *entity)
>  {
> +	struct drm_gpu_scheduler *sched;
>  	struct drm_sched_job *job;
>  	struct dma_fence *prev;
>  
>  	spin_lock(&entity->lock);
>  	entity->stopped = true;
> -	drm_sched_rq_remove_entity(entity->rq, entity);
> +	sched = drm_sched_rq_remove_entity(entity->rq, entity);
>  	spin_unlock(&entity->lock);
>  
> -	/* Make sure this entity is not used by the scheduler at the moment */
> -	wait_for_completion(&entity->entity_idle);
> +	/*
> +	 * Make sure this entity is not used by the scheduler at the moment.
> +	 *
> +	 * Scheduler is guaranteed to be stable after the entity was stopped and
> +	 * removed from the run-queue.
> +	 */
> +	if (sched)
> +		drm_sched_flush_run_work(sched);
>  
> -	/* The entity is guaranteed to not be used by the scheduler */
>  	prev = rcu_dereference_check(entity->last_scheduled, true);
>  	dma_fence_get(prev);
>  	while ((job = drm_sched_entity_queue_pop(entity))) {
> @@ -576,6 +578,13 @@ void drm_sched_entity_select_rq(struct drm_sched_entity *entity)
>  		return;
>  
>  	spin_lock(&entity->lock);
> +
> +	if (entity->stopped) {
> +		spin_unlock(&entity->lock);
> +		return;
> +
> +	}

Seems unrelated? Why wasn't this needed semantically before?

> +
>  	sched = drm_sched_pick_best(entity->sched_list, entity->num_sched_list);
>  	rq = sched ? &sched->rq : NULL;
>  	if (rq != entity->rq) {
> diff --git a/drivers/gpu/drm/scheduler/sched_internal.h b/drivers/gpu/drm/scheduler/sched_internal.h
> index 13ecb771d7a2..80dece3be415 100644
> --- a/drivers/gpu/drm/scheduler/sched_internal.h
> +++ b/drivers/gpu/drm/scheduler/sched_internal.h
> @@ -35,12 +35,22 @@ bool drm_sched_can_queue(struct drm_gpu_scheduler *sched,
>  			 struct drm_sched_entity *entity);
>  void drm_sched_wakeup(struct drm_gpu_scheduler *sched);
>  
> +/**
> + * drm_sched_flush_run_work - flush the run-job work

In v1, you'd probably want to document what this function typically
will be used for :)


Greetings,
P.

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

* Re: [RFC] drm/sched: Replace completion with a flush
  2026-06-17  8:38 ` [RFC] " Philipp Stanner
@ 2026-06-17  9:13   ` Christian König
  0 siblings, 0 replies; 7+ messages in thread
From: Christian König @ 2026-06-17  9:13 UTC (permalink / raw)
  To: phasta, Tvrtko Ursulin, dri-devel
  Cc: kernel-dev, Danilo Krummrich, Matthew Brost, amd-gfx, intel-xe

On 6/17/26 10:38, Philipp Stanner wrote:
> On Thu, 2026-06-11 at 13:34 +0100, Tvrtko Ursulin wrote:
>> Due the scheduler locking design, and the inability to always lock both
>> the entity and the run-queue in the consistent order, a completion exists
>> which effectively marks the entity as in use from a call path which is not
>> able to lock it.
>>
>> When entity is selected from the run job worker, its completion is marked
>> as non-idle all until the code is sure it will not be dereferencing it any
>> more, at which point it signals it as idle, releasing the potential
>> parallel cleanup path.
>>
>> We can remove the need for this completion by implementing the identical
>> guarantee by simply flushing the run job work from the cleanup path, after
>> having removed the entity from the run queue.

Oh, yes please.

>> We then know that the entity is no longer reachable by the run queue
>> selection logic, so as soon as any pending work is done the cleanup can
>> safely proceed. And because we have marked the entity as stopped, we also
>> know that the entity cannot re-enter the run queue.
>>
>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
>> Cc: Christian König <christian.koenig@amd.com>
>> Cc: Danilo Krummrich <dakr@kernel.org>
>> Cc: Matthew Brost <matthew.brost@intel.com>
>> Cc: Philipp Stanner <phasta@kernel.org>
>> Cc: amd-gfx@lists.freedesktop.org
>> Cc: intel-xe@lists.freedesktop.org
>> ---
>> "Perfection is achieved, not when there is nothing more to add, but when
>>  there is nothing left to take away." - Antoine de Saint-Exupéry
> 
> 
> Hmm, alright, so the basic trick just seems to be that the workqueue
> implementation already can ensure the synchronization which we manually
> implemented so far through the completion.
> 
> 
> It's a bit more LOC, and doesn't solve a bug. However, I kind of like
> the idea because it removes a redundant mechanism. Would be cool to
> hear some other opinions, though.

At least of hand it looks cleaner to me.

And just for the record: This was also the original design the scheduler had before people started to "optimize" it.

Cheers,
Christian.

> 
> A comment below
> 
>>
>> Lets see what Intel's CI says about this, not to mention our new AI
>> overlords...
>> ---
>>  drivers/gpu/drm/scheduler/sched_entity.c   | 25 +++++++++++++++-------
>>  drivers/gpu/drm/scheduler/sched_internal.h | 14 ++++++++++--
>>  drivers/gpu/drm/scheduler/sched_main.c     |  2 --
>>  drivers/gpu/drm/scheduler/sched_rq.c       | 14 +++++++-----
>>  include/drm/gpu_scheduler.h                |  9 --------
>>  5 files changed, 38 insertions(+), 26 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/scheduler/sched_entity.c b/drivers/gpu/drm/scheduler/sched_entity.c
>> index c51101ec70c1..e6f7c2fbefce 100644
>> --- a/drivers/gpu/drm/scheduler/sched_entity.c
>> +++ b/drivers/gpu/drm/scheduler/sched_entity.c
>> @@ -137,10 +137,6 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,
>>  	entity->rq = &sched_list[0]->rq;
>>  	RCU_INIT_POINTER(entity->last_scheduled, NULL);
>>  	RB_CLEAR_NODE(&entity->rb_tree_node);
>> -	init_completion(&entity->entity_idle);
>> -
>> -	/* We start in an idle state. */
>> -	complete_all(&entity->entity_idle);
>>  
>>  	spin_lock_init(&entity->lock);
>>  	spsc_queue_init(&entity->job_queue);
>> @@ -276,18 +272,24 @@ static void drm_sched_entity_kill_jobs_cb(struct dma_fence *f,
>>   */
>>  void drm_sched_entity_kill(struct drm_sched_entity *entity)
>>  {
>> +	struct drm_gpu_scheduler *sched;
>>  	struct drm_sched_job *job;
>>  	struct dma_fence *prev;
>>  
>>  	spin_lock(&entity->lock);
>>  	entity->stopped = true;
>> -	drm_sched_rq_remove_entity(entity->rq, entity);
>> +	sched = drm_sched_rq_remove_entity(entity->rq, entity);
>>  	spin_unlock(&entity->lock);
>>  
>> -	/* Make sure this entity is not used by the scheduler at the moment */
>> -	wait_for_completion(&entity->entity_idle);
>> +	/*
>> +	 * Make sure this entity is not used by the scheduler at the moment.
>> +	 *
>> +	 * Scheduler is guaranteed to be stable after the entity was stopped and
>> +	 * removed from the run-queue.
>> +	 */
>> +	if (sched)
>> +		drm_sched_flush_run_work(sched);
>>  
>> -	/* The entity is guaranteed to not be used by the scheduler */
>>  	prev = rcu_dereference_check(entity->last_scheduled, true);
>>  	dma_fence_get(prev);
>>  	while ((job = drm_sched_entity_queue_pop(entity))) {
>> @@ -576,6 +578,13 @@ void drm_sched_entity_select_rq(struct drm_sched_entity *entity)
>>  		return;
>>  
>>  	spin_lock(&entity->lock);
>> +
>> +	if (entity->stopped) {
>> +		spin_unlock(&entity->lock);
>> +		return;
>> +
>> +	}
> 
> Seems unrelated? Why wasn't this needed semantically before?
> 
>> +
>>  	sched = drm_sched_pick_best(entity->sched_list, entity->num_sched_list);
>>  	rq = sched ? &sched->rq : NULL;
>>  	if (rq != entity->rq) {
>> diff --git a/drivers/gpu/drm/scheduler/sched_internal.h b/drivers/gpu/drm/scheduler/sched_internal.h
>> index 13ecb771d7a2..80dece3be415 100644
>> --- a/drivers/gpu/drm/scheduler/sched_internal.h
>> +++ b/drivers/gpu/drm/scheduler/sched_internal.h
>> @@ -35,12 +35,22 @@ bool drm_sched_can_queue(struct drm_gpu_scheduler *sched,
>>  			 struct drm_sched_entity *entity);
>>  void drm_sched_wakeup(struct drm_gpu_scheduler *sched);
>>  
>> +/**
>> + * drm_sched_flush_run_work - flush the run-job work
> 
> In v1, you'd probably want to document what this function typically
> will be used for :)
> 
> 
> Greetings,
> P.


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

end of thread, other threads:[~2026-06-17  9:13 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-11 12:34 [RFC] drm/sched: Replace completion with a flush Tvrtko Ursulin
2026-06-11 12:45 ` ✗ CI.checkpatch: warning for " Patchwork
2026-06-11 12:47 ` ✓ CI.KUnit: success " Patchwork
2026-06-11 13:26 ` ✓ Xe.CI.BAT: " Patchwork
2026-06-12  0:53 ` ✓ Xe.CI.FULL: " Patchwork
2026-06-17  8:38 ` [RFC] " Philipp Stanner
2026-06-17  9:13   ` Christian König

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.