Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues
@ 2025-05-15  9:49 Tvrtko Ursulin
  2025-05-15  9:49 ` [PATCH v4 1/9] dma-fence: Change signature of __dma_fence_is_later Tvrtko Ursulin
                   ` (17 more replies)
  0 siblings, 18 replies; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-05-15  9:49 UTC (permalink / raw)
  To: dri-devel
  Cc: Rob Clark, Sumit Semwal, Gustavo Padovan, Christian König,
	Matthew Brost, Lucas De Marchi, Rodrigo Vivi, amd-gfx, intel-xe,
	intel-gfx, linux-media, linaro-mm-sig, kernel-dev, Tvrtko Ursulin

Hi all,

tl;dr;
Xe and probably some other drivers can tear down the internal state referenced
by an exported sync_file fence which then causes a null pointer derefences on
accessing said fence.

IGT that exploits the problem:
https://patchwork.freedesktop.org/patch/642709/?series=146211&rev=2

It seems there is a consensus this is a known problem with the dma-fence design,
where internal state shouldn't really be accessed after the fence has been
signaled. However currently the code is mostly unaware of that hence the use-
after-free potential.

To fix it, between the option of adding more reference counting and trying to
"revoke" the fence, suggestion is to focus on the later.

Reference to the recent discussion:
https://lore.kernel.org/dri-devel/20250418164246.72426-1-tvrtko.ursulin@igalia.com/

This series therefore attempts to implement a solution along those lines.

Most of the description what and how can be found in:
 "dma-fence: Add safe access helpers and document the rules"

Other than that, the series starts with some cleanups, with the general goal of
hiding more of the dma-fence implementation details behind explicit API. This
means adding helpers for access to driver and timeline name, and also moving as
much as it is easily possible of driver allocated state into the fence object
itself. Because dma-fence is already reference counted, any state we can embed
automatically becomes safe.

Having said that, the series only addreses the runtime use-after-free scenarios,
such as the above explained situation with the xe driver. For now the module
unload problem is deliberately left for later. (Although again, some of the
early patches do make it safer, and will make future improvements easier due
fewer accesses to fence->ops.)

Final patch in the series is the one which makes xe compliant with the rules
and API proposed earlier in the series. It does so by ensuring there is at least
one RCU grace period between fences being signaled and driver allocated memory
accessible from xe fences getting freed. Which couples with the earlier (from
the series) refactors which added dma_fence_access_begin/end() protection to
the relevant call sites.

If this approach is acceptable the next steps will be to see if any other
drivers will need similar changes. And also to discuss whether we want to go a
step futher and later move to SRCU, so code would be protected against module
unload as well.

v2:
 * Dropped module unload handling.
 * Proposing real API instead of hacks.

v3:
 * Dropped the dma_fence_is_array|chain ops to flags conversion.
 * Dropped the i915 cleanup patch which is now independent.
 * Squashed dma-fence helpers with internal usage patches.
 * Restored missing hunk in "dma-fence: Use a flag for 64-bit seqnos".
 * Removed the AMDGPU_JOB_GET_TIMELINE_NAME macro.
 * Applied some r-b tags.

v4:
 * Tidied 64-bit seqno flags patch and fixed for amdgpu user queues which landed
   since.
 * Adjusted some dma-fence tracepoints to avoid asserts.
 * Protected tracepoints in dma_fence_wait_timeout() with the safe access
   annotations.
 * Dropped driver/timeline helper usage from amdgpu_trace.h.
 * Dropped signaled fence protection from i915 timeline name vfunc.

Tvrtko Ursulin (9):
  dma-fence: Change signature of __dma_fence_is_later
  dma-fence: Use a flag for 64-bit seqnos
  dma-fence: Add helpers for accessing driver and timeline name
  sync_file: Use dma-fence driver and timeline name helpers
  drm/i915: Use dma-fence driver and timeline name helpers
  dma-fence: Add safe access helpers and document the rules
  sync_file: Protect access to driver and timeline name
  drm/i915: Protect access to driver and timeline name
  drm/xe: Make dma-fences compliant with the safe access rules

 drivers/dma-buf/dma-fence-chain.c             |   7 +-
 drivers/dma-buf/dma-fence.c                   | 159 +++++++++++++++---
 drivers/dma-buf/sw_sync.c                     |   2 +-
 drivers/dma-buf/sync_file.c                   |  14 +-
 .../drm/amd/amdgpu/amdgpu_eviction_fence.c    |   7 +-
 .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c   |   5 +-
 .../gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c  |   5 +-
 drivers/gpu/drm/i915/gt/intel_gt_requests.c   |   6 +-
 drivers/gpu/drm/i915/i915_request.c           |  17 +-
 drivers/gpu/drm/i915/i915_sw_fence.c          |   6 +-
 drivers/gpu/drm/xe/xe_guc_exec_queue_types.h  |   2 +
 drivers/gpu/drm/xe/xe_guc_submit.c            |   7 +-
 drivers/gpu/drm/xe/xe_hw_fence.c              |   5 +-
 drivers/gpu/drm/xe/xe_sched_job.c             |  14 +-
 include/linux/dma-fence.h                     |  47 ++++--
 include/trace/events/dma_fence.h              |  38 ++++-
 16 files changed, 254 insertions(+), 87 deletions(-)

-- 
2.48.0


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

* [PATCH v4 1/9] dma-fence: Change signature of __dma_fence_is_later
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
@ 2025-05-15  9:49 ` Tvrtko Ursulin
  2025-05-15  9:49 ` [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos Tvrtko Ursulin
                   ` (16 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-05-15  9:49 UTC (permalink / raw)
  To: dri-devel
  Cc: Rob Clark, Sumit Semwal, Gustavo Padovan, Christian König,
	Matthew Brost, Lucas De Marchi, Rodrigo Vivi, amd-gfx, intel-xe,
	intel-gfx, linux-media, linaro-mm-sig, kernel-dev, Tvrtko Ursulin

With the goal of reducing the need for drivers to touch (and dereference)
fence->ops, we change the prototype of __dma_fence_is_later() to take
fence instead of fence->ops.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
---
 drivers/dma-buf/dma-fence-chain.c |  2 +-
 drivers/dma-buf/sw_sync.c         |  2 +-
 drivers/gpu/drm/xe/xe_hw_fence.c  |  2 +-
 drivers/gpu/drm/xe/xe_sched_job.c | 14 ++++++++------
 include/linux/dma-fence.h         |  9 ++++-----
 5 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c
index 9663ba1bb6ac..90424f23fd73 100644
--- a/drivers/dma-buf/dma-fence-chain.c
+++ b/drivers/dma-buf/dma-fence-chain.c
@@ -252,7 +252,7 @@ void dma_fence_chain_init(struct dma_fence_chain *chain,
 	chain->prev_seqno = 0;
 
 	/* Try to reuse the context of the previous chain node. */
-	if (prev_chain && __dma_fence_is_later(seqno, prev->seqno, prev->ops)) {
+	if (prev_chain && __dma_fence_is_later(prev, seqno, prev->seqno)) {
 		context = prev->context;
 		chain->prev_seqno = prev->seqno;
 	} else {
diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c
index 4f27ee93a00c..3c20f1d31cf5 100644
--- a/drivers/dma-buf/sw_sync.c
+++ b/drivers/dma-buf/sw_sync.c
@@ -170,7 +170,7 @@ static bool timeline_fence_signaled(struct dma_fence *fence)
 {
 	struct sync_timeline *parent = dma_fence_parent(fence);
 
-	return !__dma_fence_is_later(fence->seqno, parent->value, fence->ops);
+	return !__dma_fence_is_later(fence, fence->seqno, parent->value);
 }
 
 static void timeline_fence_set_deadline(struct dma_fence *fence, ktime_t deadline)
diff --git a/drivers/gpu/drm/xe/xe_hw_fence.c b/drivers/gpu/drm/xe/xe_hw_fence.c
index 0b4f12be3692..03eb8c6d1616 100644
--- a/drivers/gpu/drm/xe/xe_hw_fence.c
+++ b/drivers/gpu/drm/xe/xe_hw_fence.c
@@ -165,7 +165,7 @@ static bool xe_hw_fence_signaled(struct dma_fence *dma_fence)
 	u32 seqno = xe_map_rd(xe, &fence->seqno_map, 0, u32);
 
 	return dma_fence->error ||
-		!__dma_fence_is_later(dma_fence->seqno, seqno, dma_fence->ops);
+		!__dma_fence_is_later(dma_fence, dma_fence->seqno, seqno);
 }
 
 static bool xe_hw_fence_enable_signaling(struct dma_fence *dma_fence)
diff --git a/drivers/gpu/drm/xe/xe_sched_job.c b/drivers/gpu/drm/xe/xe_sched_job.c
index 1905ca590965..f0a6ce610948 100644
--- a/drivers/gpu/drm/xe/xe_sched_job.c
+++ b/drivers/gpu/drm/xe/xe_sched_job.c
@@ -216,15 +216,17 @@ void xe_sched_job_set_error(struct xe_sched_job *job, int error)
 
 bool xe_sched_job_started(struct xe_sched_job *job)
 {
+	struct dma_fence *fence = dma_fence_chain_contained(job->fence);
 	struct xe_lrc *lrc = job->q->lrc[0];
 
-	return !__dma_fence_is_later(xe_sched_job_lrc_seqno(job),
-				     xe_lrc_start_seqno(lrc),
-				     dma_fence_chain_contained(job->fence)->ops);
+	return !__dma_fence_is_later(fence,
+				     xe_sched_job_lrc_seqno(job),
+				     xe_lrc_start_seqno(lrc));
 }
 
 bool xe_sched_job_completed(struct xe_sched_job *job)
 {
+	struct dma_fence *fence = dma_fence_chain_contained(job->fence);
 	struct xe_lrc *lrc = job->q->lrc[0];
 
 	/*
@@ -232,9 +234,9 @@ bool xe_sched_job_completed(struct xe_sched_job *job)
 	 * parallel handshake is done.
 	 */
 
-	return !__dma_fence_is_later(xe_sched_job_lrc_seqno(job),
-				     xe_lrc_seqno(lrc),
-				     dma_fence_chain_contained(job->fence)->ops);
+	return !__dma_fence_is_later(fence,
+				     xe_sched_job_lrc_seqno(job),
+				     xe_lrc_seqno(lrc));
 }
 
 void xe_sched_job_arm(struct xe_sched_job *job)
diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
index b12776883d14..48b5202c531d 100644
--- a/include/linux/dma-fence.h
+++ b/include/linux/dma-fence.h
@@ -441,21 +441,20 @@ dma_fence_is_signaled(struct dma_fence *fence)
 
 /**
  * __dma_fence_is_later - return if f1 is chronologically later than f2
+ * @fence: fence in whose context to do the comparison
  * @f1: the first fence's seqno
  * @f2: the second fence's seqno from the same context
- * @ops: dma_fence_ops associated with the seqno
  *
  * Returns true if f1 is chronologically later than f2. Both fences must be
  * from the same context, since a seqno is not common across contexts.
  */
-static inline bool __dma_fence_is_later(u64 f1, u64 f2,
-					const struct dma_fence_ops *ops)
+static inline bool __dma_fence_is_later(struct dma_fence *fence, u64 f1, u64 f2)
 {
 	/* This is for backward compatibility with drivers which can only handle
 	 * 32bit sequence numbers. Use a 64bit compare when the driver says to
 	 * do so.
 	 */
-	if (ops->use_64bit_seqno)
+	if (fence->ops->use_64bit_seqno)
 		return f1 > f2;
 
 	return (int)(lower_32_bits(f1) - lower_32_bits(f2)) > 0;
@@ -475,7 +474,7 @@ static inline bool dma_fence_is_later(struct dma_fence *f1,
 	if (WARN_ON(f1->context != f2->context))
 		return false;
 
-	return __dma_fence_is_later(f1->seqno, f2->seqno, f1->ops);
+	return __dma_fence_is_later(f1, f1->seqno, f2->seqno);
 }
 
 /**
-- 
2.48.0


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

* [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
  2025-05-15  9:49 ` [PATCH v4 1/9] dma-fence: Change signature of __dma_fence_is_later Tvrtko Ursulin
@ 2025-05-15  9:49 ` Tvrtko Ursulin
  2025-05-15 13:15   ` Christian König
  2025-05-15  9:49 ` [PATCH v4 3/9] dma-fence: Add helpers for accessing driver and timeline name Tvrtko Ursulin
                   ` (15 subsequent siblings)
  17 siblings, 1 reply; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-05-15  9:49 UTC (permalink / raw)
  To: dri-devel
  Cc: Rob Clark, Sumit Semwal, Gustavo Padovan, Christian König,
	Matthew Brost, Lucas De Marchi, Rodrigo Vivi, amd-gfx, intel-xe,
	intel-gfx, linux-media, linaro-mm-sig, kernel-dev, Tvrtko Ursulin

With the goal of reducing the need for drivers to touch (and dereference)
fence->ops, we move the 64-bit seqnos flag from struct dma_fence_ops to
the fence->flags.

Drivers which were setting this flag are changed to use new
dma_fence_init64() instead of dma_fence_init().

v2:
 * Streamlined init and added kerneldoc.
 * Rebase for amdgpu userq which landed since.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: Christian König <christian.koenig@amd.com> # v1
---
 drivers/dma-buf/dma-fence-chain.c             |  5 +-
 drivers/dma-buf/dma-fence.c                   | 69 ++++++++++++++-----
 .../drm/amd/amdgpu/amdgpu_eviction_fence.c    |  7 +-
 .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c   |  5 +-
 .../gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c  |  5 +-
 include/linux/dma-fence.h                     | 14 ++--
 6 files changed, 64 insertions(+), 41 deletions(-)

diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c
index 90424f23fd73..a8a90acf4f34 100644
--- a/drivers/dma-buf/dma-fence-chain.c
+++ b/drivers/dma-buf/dma-fence-chain.c
@@ -218,7 +218,6 @@ static void dma_fence_chain_set_deadline(struct dma_fence *fence,
 }
 
 const struct dma_fence_ops dma_fence_chain_ops = {
-	.use_64bit_seqno = true,
 	.get_driver_name = dma_fence_chain_get_driver_name,
 	.get_timeline_name = dma_fence_chain_get_timeline_name,
 	.enable_signaling = dma_fence_chain_enable_signaling,
@@ -262,8 +261,8 @@ void dma_fence_chain_init(struct dma_fence_chain *chain,
 			seqno = max(prev->seqno, seqno);
 	}
 
-	dma_fence_init(&chain->base, &dma_fence_chain_ops,
-		       &chain->lock, context, seqno);
+	dma_fence_init64(&chain->base, &dma_fence_chain_ops, &chain->lock,
+			 context, seqno);
 
 	/*
 	 * Chaining dma_fence_chain container together is only allowed through
diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
index f0cdd3e99d36..705b59787731 100644
--- a/drivers/dma-buf/dma-fence.c
+++ b/drivers/dma-buf/dma-fence.c
@@ -989,24 +989,9 @@ void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
 }
 EXPORT_SYMBOL(dma_fence_describe);
 
-/**
- * dma_fence_init - Initialize a custom fence.
- * @fence: the fence to initialize
- * @ops: the dma_fence_ops for operations on this fence
- * @lock: the irqsafe spinlock to use for locking this fence
- * @context: the execution context this fence is run on
- * @seqno: a linear increasing sequence number for this context
- *
- * Initializes an allocated fence, the caller doesn't have to keep its
- * refcount after committing with this fence, but it will need to hold a
- * refcount again if &dma_fence_ops.enable_signaling gets called.
- *
- * context and seqno are used for easy comparison between fences, allowing
- * to check which fence is later by simply using dma_fence_later().
- */
-void
-dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
-	       spinlock_t *lock, u64 context, u64 seqno)
+static void
+__dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
+	         spinlock_t *lock, u64 context, u64 seqno, unsigned long flags)
 {
 	BUG_ON(!lock);
 	BUG_ON(!ops || !ops->get_driver_name || !ops->get_timeline_name);
@@ -1017,9 +1002,55 @@ dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
 	fence->lock = lock;
 	fence->context = context;
 	fence->seqno = seqno;
-	fence->flags = 0UL;
+	fence->flags = flags;
 	fence->error = 0;
 
 	trace_dma_fence_init(fence);
 }
+
+/**
+ * dma_fence_init - Initialize a custom fence.
+ * @fence: the fence to initialize
+ * @ops: the dma_fence_ops for operations on this fence
+ * @lock: the irqsafe spinlock to use for locking this fence
+ * @context: the execution context this fence is run on
+ * @seqno: a linear increasing sequence number for this context
+ *
+ * Initializes an allocated fence, the caller doesn't have to keep its
+ * refcount after committing with this fence, but it will need to hold a
+ * refcount again if &dma_fence_ops.enable_signaling gets called.
+ *
+ * context and seqno are used for easy comparison between fences, allowing
+ * to check which fence is later by simply using dma_fence_later().
+ */
+void
+dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
+	       spinlock_t *lock, u64 context, u64 seqno)
+{
+	__dma_fence_init(fence, ops, lock, context, seqno, 0UL);
+}
 EXPORT_SYMBOL(dma_fence_init);
+
+/**
+ * dma_fence_init64 - Initialize a custom fence with 64-bit seqno support.
+ * @fence: the fence to initialize
+ * @ops: the dma_fence_ops for operations on this fence
+ * @lock: the irqsafe spinlock to use for locking this fence
+ * @context: the execution context this fence is run on
+ * @seqno: a linear increasing sequence number for this context
+ *
+ * Initializes an allocated fence, the caller doesn't have to keep its
+ * refcount after committing with this fence, but it will need to hold a
+ * refcount again if &dma_fence_ops.enable_signaling gets called.
+ *
+ * Context and seqno are used for easy comparison between fences, allowing
+ * to check which fence is later by simply using dma_fence_later().
+ */
+void
+dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
+		 spinlock_t *lock, u64 context, u64 seqno)
+{
+	__dma_fence_init(fence, ops, lock, context, seqno,
+			 BIT(DMA_FENCE_FLAG_SEQNO64_BIT));
+}
+EXPORT_SYMBOL(dma_fence_init64);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
index 1a7469543db5..79713421bffe 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
@@ -134,7 +134,6 @@ static bool amdgpu_eviction_fence_enable_signaling(struct dma_fence *f)
 }
 
 static const struct dma_fence_ops amdgpu_eviction_fence_ops = {
-	.use_64bit_seqno = true,
 	.get_driver_name = amdgpu_eviction_fence_get_driver_name,
 	.get_timeline_name = amdgpu_eviction_fence_get_timeline_name,
 	.enable_signaling = amdgpu_eviction_fence_enable_signaling,
@@ -160,9 +159,9 @@ amdgpu_eviction_fence_create(struct amdgpu_eviction_fence_mgr *evf_mgr)
 	ev_fence->evf_mgr = evf_mgr;
 	get_task_comm(ev_fence->timeline_name, current);
 	spin_lock_init(&ev_fence->lock);
-	dma_fence_init(&ev_fence->base, &amdgpu_eviction_fence_ops,
-		       &ev_fence->lock, evf_mgr->ev_fence_ctx,
-		       atomic_inc_return(&evf_mgr->ev_fence_seq));
+	dma_fence_init64(&ev_fence->base, &amdgpu_eviction_fence_ops,
+			 &ev_fence->lock, evf_mgr->ev_fence_ctx,
+			 atomic_inc_return(&evf_mgr->ev_fence_seq));
 	return ev_fence;
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
index 029cb24c28b3..5e92d00a591f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
@@ -239,8 +239,8 @@ static int amdgpu_userq_fence_create(struct amdgpu_usermode_queue *userq,
 	fence = &userq_fence->base;
 	userq_fence->fence_drv = fence_drv;
 
-	dma_fence_init(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
-		       fence_drv->context, seq);
+	dma_fence_init64(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
+			 fence_drv->context, seq);
 
 	amdgpu_userq_fence_driver_get(fence_drv);
 	dma_fence_get(fence);
@@ -334,7 +334,6 @@ static void amdgpu_userq_fence_release(struct dma_fence *f)
 }
 
 static const struct dma_fence_ops amdgpu_userq_fence_ops = {
-	.use_64bit_seqno = true,
 	.get_driver_name = amdgpu_userq_fence_get_driver_name,
 	.get_timeline_name = amdgpu_userq_fence_get_timeline_name,
 	.signaled = amdgpu_userq_fence_signaled,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
index 51cddfa3f1e8..5d26797356a3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
@@ -71,7 +71,6 @@ static void amdgpu_tlb_fence_work(struct work_struct *work)
 }
 
 static const struct dma_fence_ops amdgpu_tlb_fence_ops = {
-	.use_64bit_seqno = true,
 	.get_driver_name = amdgpu_tlb_fence_get_driver_name,
 	.get_timeline_name = amdgpu_tlb_fence_get_timeline_name
 };
@@ -101,8 +100,8 @@ void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev, struct amdgpu_vm *vm
 	INIT_WORK(&f->work, amdgpu_tlb_fence_work);
 	spin_lock_init(&f->lock);
 
-	dma_fence_init(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
-		       vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
+	dma_fence_init64(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
+			 vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
 
 	/* TODO: We probably need a separate wq here */
 	dma_fence_get(&f->base);
diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
index 48b5202c531d..a34a0dcdc446 100644
--- a/include/linux/dma-fence.h
+++ b/include/linux/dma-fence.h
@@ -97,6 +97,7 @@ struct dma_fence {
 };
 
 enum dma_fence_flag_bits {
+	DMA_FENCE_FLAG_SEQNO64_BIT,
 	DMA_FENCE_FLAG_SIGNALED_BIT,
 	DMA_FENCE_FLAG_TIMESTAMP_BIT,
 	DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
@@ -124,14 +125,6 @@ struct dma_fence_cb {
  *
  */
 struct dma_fence_ops {
-	/**
-	 * @use_64bit_seqno:
-	 *
-	 * True if this dma_fence implementation uses 64bit seqno, false
-	 * otherwise.
-	 */
-	bool use_64bit_seqno;
-
 	/**
 	 * @get_driver_name:
 	 *
@@ -262,6 +255,9 @@ struct dma_fence_ops {
 void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
 		    spinlock_t *lock, u64 context, u64 seqno);
 
+void dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
+		      spinlock_t *lock, u64 context, u64 seqno);
+
 void dma_fence_release(struct kref *kref);
 void dma_fence_free(struct dma_fence *fence);
 void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq);
@@ -454,7 +450,7 @@ static inline bool __dma_fence_is_later(struct dma_fence *fence, u64 f1, u64 f2)
 	 * 32bit sequence numbers. Use a 64bit compare when the driver says to
 	 * do so.
 	 */
-	if (fence->ops->use_64bit_seqno)
+	if (test_bit(DMA_FENCE_FLAG_SEQNO64_BIT, &fence->flags))
 		return f1 > f2;
 
 	return (int)(lower_32_bits(f1) - lower_32_bits(f2)) > 0;
-- 
2.48.0


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

* [PATCH v4 3/9] dma-fence: Add helpers for accessing driver and timeline name
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
  2025-05-15  9:49 ` [PATCH v4 1/9] dma-fence: Change signature of __dma_fence_is_later Tvrtko Ursulin
  2025-05-15  9:49 ` [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos Tvrtko Ursulin
@ 2025-05-15  9:49 ` Tvrtko Ursulin
  2025-05-15  9:49 ` [PATCH v4 4/9] sync_file: Use dma-fence driver and timeline name helpers Tvrtko Ursulin
                   ` (14 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-05-15  9:49 UTC (permalink / raw)
  To: dri-devel
  Cc: Rob Clark, Sumit Semwal, Gustavo Padovan, Christian König,
	Matthew Brost, Lucas De Marchi, Rodrigo Vivi, amd-gfx, intel-xe,
	intel-gfx, linux-media, linaro-mm-sig, kernel-dev, Tvrtko Ursulin

Add some helpers in order to enable preventing dma-fence users accessing
the implementation details directly and make the implementation itself use
them.

This will also enable later adding some asserts to a consolidated
location.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
---
 drivers/dma-buf/dma-fence.c      |  9 +++++----
 include/linux/dma-fence.h        | 10 ++++++++++
 include/trace/events/dma_fence.h |  4 ++--
 3 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
index 705b59787731..74f9e4b665e3 100644
--- a/drivers/dma-buf/dma-fence.c
+++ b/drivers/dma-buf/dma-fence.c
@@ -538,8 +538,8 @@ void dma_fence_release(struct kref *kref)
 	if (WARN(!list_empty(&fence->cb_list) &&
 		 !test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags),
 		 "Fence %s:%s:%llx:%llx released with pending signals!\n",
-		 fence->ops->get_driver_name(fence),
-		 fence->ops->get_timeline_name(fence),
+		 dma_fence_driver_name(fence),
+		 dma_fence_timeline_name(fence),
 		 fence->context, fence->seqno)) {
 		unsigned long flags;
 
@@ -983,8 +983,9 @@ EXPORT_SYMBOL(dma_fence_set_deadline);
 void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
 {
 	seq_printf(seq, "%s %s seq %llu %ssignalled\n",
-		   fence->ops->get_driver_name(fence),
-		   fence->ops->get_timeline_name(fence), fence->seqno,
+		   dma_fence_driver_name(fence),
+		   dma_fence_timeline_name(fence),
+		   fence->seqno,
 		   dma_fence_is_signaled(fence) ? "" : "un");
 }
 EXPORT_SYMBOL(dma_fence_describe);
diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
index a34a0dcdc446..c5ac37e10d85 100644
--- a/include/linux/dma-fence.h
+++ b/include/linux/dma-fence.h
@@ -377,6 +377,16 @@ bool dma_fence_remove_callback(struct dma_fence *fence,
 			       struct dma_fence_cb *cb);
 void dma_fence_enable_sw_signaling(struct dma_fence *fence);
 
+static inline const char *dma_fence_driver_name(struct dma_fence *fence)
+{
+	return fence->ops->get_driver_name(fence);
+}
+
+static inline const char *dma_fence_timeline_name(struct dma_fence *fence)
+{
+	return fence->ops->get_timeline_name(fence);
+}
+
 /**
  * dma_fence_is_signaled_locked - Return an indication if the fence
  *                                is signaled yet.
diff --git a/include/trace/events/dma_fence.h b/include/trace/events/dma_fence.h
index a4de3df8500b..84c83074ee81 100644
--- a/include/trace/events/dma_fence.h
+++ b/include/trace/events/dma_fence.h
@@ -16,8 +16,8 @@ DECLARE_EVENT_CLASS(dma_fence,
 	TP_ARGS(fence),
 
 	TP_STRUCT__entry(
-		__string(driver, fence->ops->get_driver_name(fence))
-		__string(timeline, fence->ops->get_timeline_name(fence))
+		__string(driver, dma_fence_driver_name(fence))
+		__string(timeline, dma_fence_timeline_name(fence))
 		__field(unsigned int, context)
 		__field(unsigned int, seqno)
 	),
-- 
2.48.0


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

* [PATCH v4 4/9] sync_file: Use dma-fence driver and timeline name helpers
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (2 preceding siblings ...)
  2025-05-15  9:49 ` [PATCH v4 3/9] dma-fence: Add helpers for accessing driver and timeline name Tvrtko Ursulin
@ 2025-05-15  9:49 ` Tvrtko Ursulin
  2025-05-15  9:50 ` [PATCH v4 5/9] drm/i915: " Tvrtko Ursulin
                   ` (13 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-05-15  9:49 UTC (permalink / raw)
  To: dri-devel
  Cc: Rob Clark, Sumit Semwal, Gustavo Padovan, Christian König,
	Matthew Brost, Lucas De Marchi, Rodrigo Vivi, amd-gfx, intel-xe,
	intel-gfx, linux-media, linaro-mm-sig, kernel-dev, Tvrtko Ursulin

Access the dma-fence internals via the previously added helpers.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
---
 drivers/dma-buf/sync_file.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c
index d9b1c1b2a72b..212df4b849fe 100644
--- a/drivers/dma-buf/sync_file.c
+++ b/drivers/dma-buf/sync_file.c
@@ -137,8 +137,8 @@ char *sync_file_get_name(struct sync_file *sync_file, char *buf, int len)
 		struct dma_fence *fence = sync_file->fence;
 
 		snprintf(buf, len, "%s-%s%llu-%lld",
-			 fence->ops->get_driver_name(fence),
-			 fence->ops->get_timeline_name(fence),
+			 dma_fence_driver_name(fence),
+			 dma_fence_timeline_name(fence),
 			 fence->context,
 			 fence->seqno);
 	}
@@ -262,9 +262,9 @@ static long sync_file_ioctl_merge(struct sync_file *sync_file,
 static int sync_fill_fence_info(struct dma_fence *fence,
 				 struct sync_fence_info *info)
 {
-	strscpy(info->obj_name, fence->ops->get_timeline_name(fence),
+	strscpy(info->obj_name, dma_fence_timeline_name(fence),
 		sizeof(info->obj_name));
-	strscpy(info->driver_name, fence->ops->get_driver_name(fence),
+	strscpy(info->driver_name, dma_fence_driver_name(fence),
 		sizeof(info->driver_name));
 
 	info->status = dma_fence_get_status(fence);
-- 
2.48.0


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

* [PATCH v4 5/9] drm/i915: Use dma-fence driver and timeline name helpers
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (3 preceding siblings ...)
  2025-05-15  9:49 ` [PATCH v4 4/9] sync_file: Use dma-fence driver and timeline name helpers Tvrtko Ursulin
@ 2025-05-15  9:50 ` Tvrtko Ursulin
  2025-05-15 14:46   ` Andi Shyti
  2025-05-15  9:50 ` [PATCH v4 6/9] dma-fence: Add safe access helpers and document the rules Tvrtko Ursulin
                   ` (12 subsequent siblings)
  17 siblings, 1 reply; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-05-15  9:50 UTC (permalink / raw)
  To: dri-devel
  Cc: Rob Clark, Sumit Semwal, Gustavo Padovan, Christian König,
	Matthew Brost, Lucas De Marchi, Rodrigo Vivi, amd-gfx, intel-xe,
	intel-gfx, linux-media, linaro-mm-sig, kernel-dev, Tvrtko Ursulin

Access the dma-fence internals via the previously added helpers.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
---
 drivers/gpu/drm/i915/gt/intel_gt_requests.c | 4 ++--
 drivers/gpu/drm/i915/i915_request.c         | 2 +-
 drivers/gpu/drm/i915/i915_sw_fence.c        | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.c b/drivers/gpu/drm/i915/gt/intel_gt_requests.c
index d1a382dfaa1d..ae3557ed6c1e 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_requests.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.c
@@ -252,8 +252,8 @@ void intel_gt_watchdog_work(struct work_struct *work)
 			struct dma_fence *f = &rq->fence;
 
 			pr_notice("Fence expiration time out i915-%s:%s:%llx!\n",
-				  f->ops->get_driver_name(f),
-				  f->ops->get_timeline_name(f),
+				  dma_fence_driver_name(f),
+				  dma_fence_timeline_name(f),
 				  f->seqno);
 			i915_request_cancel(rq, -EINTR);
 		}
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index c3d27eadc0a7..4874c4f1e4ab 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -2184,7 +2184,7 @@ void i915_request_show(struct drm_printer *m,
 		       const char *prefix,
 		       int indent)
 {
-	const char *name = rq->fence.ops->get_timeline_name((struct dma_fence *)&rq->fence);
+	const char *name = dma_fence_timeline_name((struct dma_fence *)&rq->fence);
 	char buf[80] = "";
 	int x = 0;
 
diff --git a/drivers/gpu/drm/i915/i915_sw_fence.c b/drivers/gpu/drm/i915/i915_sw_fence.c
index 1d4cc91c0e40..e51ca7e50a4e 100644
--- a/drivers/gpu/drm/i915/i915_sw_fence.c
+++ b/drivers/gpu/drm/i915/i915_sw_fence.c
@@ -435,8 +435,8 @@ static void timer_i915_sw_fence_wake(struct timer_list *t)
 		return;
 
 	pr_notice("Asynchronous wait on fence %s:%s:%llx timed out (hint:%ps)\n",
-		  cb->dma->ops->get_driver_name(cb->dma),
-		  cb->dma->ops->get_timeline_name(cb->dma),
+		  dma_fence_driver_name(cb->dma),
+		  dma_fence_timeline_name(cb->dma),
 		  cb->dma->seqno,
 		  i915_sw_fence_debug_hint(fence));
 
-- 
2.48.0


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

* [PATCH v4 6/9] dma-fence: Add safe access helpers and document the rules
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (4 preceding siblings ...)
  2025-05-15  9:50 ` [PATCH v4 5/9] drm/i915: " Tvrtko Ursulin
@ 2025-05-15  9:50 ` Tvrtko Ursulin
  2025-05-15  9:50 ` [PATCH v4 7/9] sync_file: Protect access to driver and timeline name Tvrtko Ursulin
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-05-15  9:50 UTC (permalink / raw)
  To: dri-devel
  Cc: Rob Clark, Sumit Semwal, Gustavo Padovan, Christian König,
	Matthew Brost, Lucas De Marchi, Rodrigo Vivi, amd-gfx, intel-xe,
	intel-gfx, linux-media, linaro-mm-sig, kernel-dev, Tvrtko Ursulin

Dma-fence objects currently suffer from a potential use after free problem
where fences exported to userspace and other drivers can outlive the
exporting driver, or the associated data structures.

The discussion on how to address this concluded that adding reference
counting to all the involved objects is not desirable, since it would need
to be very wide reaching and could cause unloadable drivers if another
entity would be holding onto a signaled fence reference potentially
indefinitely.

This patch enables the safe access by introducing and documenting a
contract between fence exporters and users. It documents a set of
contraints and adds helpers which a) drivers with potential to suffer from
the use after free must use and b) users of the dma-fence API must use as
well.

Premise of the design has multiple sides:

1. Drivers (fence exporters) MUST ensure a RCU grace period between
signalling a fence and freeing the driver private data associated with it.

The grace period does not have to follow the signalling immediately but
HAS to happen before data is freed.

2. Users of the dma-fence API marked with such requirement MUST contain
the complete access to the data within a single code block guarded by the
new dma_fence_access_begin() and dma_fence_access_end() helpers.

The combination of the two ensures that whoever sees the
DMA_FENCE_FLAG_SIGNALED_BIT not set is guaranteed to have access to a
valid fence->lock and valid data potentially accessed by the fence->ops
virtual functions, until the call to dma_fence_access_end().

3. Module unload (fence->ops) disappearing is for now explicitly not
handled. That would required a more complex protection, possibly needing
SRCU instead of RCU to handle callers such as dma_fence_wait_timeout(),
where race between dma_fence_enable_sw_signaling, signalling, and
dereference of fence->ops->wait() would need a sleeping SRCU context.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
---
 drivers/dma-buf/dma-fence.c      | 81 +++++++++++++++++++++++++++++++-
 include/linux/dma-fence.h        | 32 +++++++++----
 include/trace/events/dma_fence.h | 38 +++++++++++++--
 3 files changed, 137 insertions(+), 14 deletions(-)

diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
index 74f9e4b665e3..c467e9c013d1 100644
--- a/drivers/dma-buf/dma-fence.c
+++ b/drivers/dma-buf/dma-fence.c
@@ -511,12 +511,20 @@ dma_fence_wait_timeout(struct dma_fence *fence, bool intr, signed long timeout)
 
 	dma_fence_enable_sw_signaling(fence);
 
-	trace_dma_fence_wait_start(fence);
+	if (trace_dma_fence_wait_start_enabled()) {
+		dma_fence_access_begin();
+		trace_dma_fence_wait_start(fence);
+		dma_fence_access_end();
+	}
 	if (fence->ops->wait)
 		ret = fence->ops->wait(fence, intr, timeout);
 	else
 		ret = dma_fence_default_wait(fence, intr, timeout);
-	trace_dma_fence_wait_end(fence);
+	if (trace_dma_fence_wait_end_enabled()) {
+		dma_fence_access_begin();
+		trace_dma_fence_wait_end(fence);
+		dma_fence_access_end();
+	}
 	return ret;
 }
 EXPORT_SYMBOL(dma_fence_wait_timeout);
@@ -533,6 +541,7 @@ void dma_fence_release(struct kref *kref)
 	struct dma_fence *fence =
 		container_of(kref, struct dma_fence, refcount);
 
+	dma_fence_access_begin();
 	trace_dma_fence_destroy(fence);
 
 	if (WARN(!list_empty(&fence->cb_list) &&
@@ -560,6 +569,8 @@ void dma_fence_release(struct kref *kref)
 		fence->ops->release(fence);
 	else
 		dma_fence_free(fence);
+
+	dma_fence_access_end();
 }
 EXPORT_SYMBOL(dma_fence_release);
 
@@ -982,11 +993,13 @@ EXPORT_SYMBOL(dma_fence_set_deadline);
  */
 void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
 {
+	dma_fence_access_begin();
 	seq_printf(seq, "%s %s seq %llu %ssignalled\n",
 		   dma_fence_driver_name(fence),
 		   dma_fence_timeline_name(fence),
 		   fence->seqno,
 		   dma_fence_is_signaled(fence) ? "" : "un");
+	dma_fence_access_end();
 }
 EXPORT_SYMBOL(dma_fence_describe);
 
@@ -1055,3 +1068,67 @@ dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
 			 BIT(DMA_FENCE_FLAG_SEQNO64_BIT));
 }
 EXPORT_SYMBOL(dma_fence_init64);
+
+/**
+ * dma_fence_driver_name - Access the driver name
+ * @fence: the fence to query
+ *
+ * Returns a driver name backing the dma-fence implementation.
+ *
+ * IMPORTANT CONSIDERATION:
+ * Dma-fence contract stipulates that access to driver provided data (data not
+ * directly embedded into the object itself), such as the &dma_fence.lock and
+ * memory potentially accessed by the &dma_fence.ops functions, is forbidden
+ * after the fence has been signalled. Drivers are allowed to free that data,
+ * and some do.
+ *
+ * To allow safe access drivers are mandated to guarantee a RCU grace period
+ * between signalling the fence and freeing said data.
+ *
+ * As such access to the driver name is only valid inside a RCU locked section.
+ * The pointer MUST be both queried and USED ONLY WITHIN a SINGLE block guarded
+ * by the &dma_fence_access_being and &dma_fence_access_end pair.
+ */
+const char *dma_fence_driver_name(struct dma_fence *fence)
+{
+	RCU_LOCKDEP_WARN(!rcu_read_lock_held(),
+			 "dma_fence_access_begin/end() are required for safe access to returned string");
+
+	if (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags))
+		return fence->ops->get_driver_name(fence);
+	else
+		return "detached-driver";
+}
+EXPORT_SYMBOL(dma_fence_driver_name);
+
+/**
+ * dma_fence_timeline_name - Access the timeline name
+ * @fence: the fence to query
+ *
+ * Returns a timeline name provided by the dma-fence implementation.
+ *
+ * IMPORTANT CONSIDERATION:
+ * Dma-fence contract stipulates that access to driver provided data (data not
+ * directly embedded into the object itself), such as the &dma_fence.lock and
+ * memory potentially accessed by the &dma_fence.ops functions, is forbidden
+ * after the fence has been signalled. Drivers are allowed to free that data,
+ * and some do.
+ *
+ * To allow safe access drivers are mandated to guarantee a RCU grace period
+ * between signalling the fence and freeing said data.
+ *
+ * As such access to the driver name is only valid inside a RCU locked section.
+ * The pointer MUST be both queried and USED ONLY WITHIN a SINGLE block guarded
+ * by the &dma_fence_access_being and &dma_fence_access_end pair.
+ */
+const char *dma_fence_timeline_name(struct dma_fence *fence)
+{
+	RCU_LOCKDEP_WARN(!rcu_read_lock_held(),
+			 "dma_fence_access_begin/end() are required for safe access to returned string");
+
+	if (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags))
+		return fence->ops->get_driver_name(fence);
+	else
+		return "signaled-timeline";
+}
+EXPORT_SYMBOL(dma_fence_timeline_name);
diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
index c5ac37e10d85..b39e430142ea 100644
--- a/include/linux/dma-fence.h
+++ b/include/linux/dma-fence.h
@@ -377,15 +377,31 @@ bool dma_fence_remove_callback(struct dma_fence *fence,
 			       struct dma_fence_cb *cb);
 void dma_fence_enable_sw_signaling(struct dma_fence *fence);
 
-static inline const char *dma_fence_driver_name(struct dma_fence *fence)
-{
-	return fence->ops->get_driver_name(fence);
-}
+/**
+ * DOC: Safe external access to driver provided object members
+ *
+ * All data not stored directly in the dma-fence object, such as the
+ * &dma_fence.lock and memory potentially accessed by functions in the
+ * &dma_fence.ops table, MUST NOT be accessed after the fence has been signalled
+ * because after that point drivers are allowed to free it.
+ *
+ * All code accessing that data via the dma-fence API (or directly, which is
+ * discouraged), MUST make sure to contain the complete access within a
+ * &dma_fence_access_begin and &dma_fence_access_end pair.
+ *
+ * Some dma-fence API handles this automatically, while other, as for example
+ * &dma_fence_driver_name and &dma_fence_timeline_name, leave that
+ * responsibility to the caller.
+ *
+ * To enable this scheme to work drivers MUST ensure a RCU grace period elapses
+ * between signalling the fence and freeing the said data.
+ *
+ */
+#define dma_fence_access_begin	rcu_read_lock
+#define dma_fence_access_end	rcu_read_unlock
 
-static inline const char *dma_fence_timeline_name(struct dma_fence *fence)
-{
-	return fence->ops->get_timeline_name(fence);
-}
+const char *dma_fence_driver_name(struct dma_fence *fence);
+const char *dma_fence_timeline_name(struct dma_fence *fence);
 
 /**
  * dma_fence_is_signaled_locked - Return an indication if the fence
diff --git a/include/trace/events/dma_fence.h b/include/trace/events/dma_fence.h
index 84c83074ee81..4814a65b68dc 100644
--- a/include/trace/events/dma_fence.h
+++ b/include/trace/events/dma_fence.h
@@ -34,14 +34,44 @@ DECLARE_EVENT_CLASS(dma_fence,
 		  __entry->seqno)
 );
 
-DEFINE_EVENT(dma_fence, dma_fence_emit,
+/*
+ * Safe only for call sites which are guaranteed to not race with fence
+ * signaling,holding the fence->lock and having checked for not signaled, or the
+ * signaling path itself.
+ */
+DECLARE_EVENT_CLASS(dma_fence_unsignaled,
+
+	TP_PROTO(struct dma_fence *fence),
+
+	TP_ARGS(fence),
+
+	TP_STRUCT__entry(
+		__string(driver, fence->ops->get_driver_name(fence))
+		__string(timeline, fence->ops->get_timeline_name(fence))
+		__field(unsigned int, context)
+		__field(unsigned int, seqno)
+	),
+
+	TP_fast_assign(
+		__assign_str(driver);
+		__assign_str(timeline);
+		__entry->context = fence->context;
+		__entry->seqno = fence->seqno;
+	),
+
+	TP_printk("driver=%s timeline=%s context=%u seqno=%u",
+		  __get_str(driver), __get_str(timeline), __entry->context,
+		  __entry->seqno)
+);
+
+DEFINE_EVENT(dma_fence_unsignaled, dma_fence_emit,
 
 	TP_PROTO(struct dma_fence *fence),
 
 	TP_ARGS(fence)
 );
 
-DEFINE_EVENT(dma_fence, dma_fence_init,
+DEFINE_EVENT(dma_fence_unsignaled, dma_fence_init,
 
 	TP_PROTO(struct dma_fence *fence),
 
@@ -55,14 +85,14 @@ DEFINE_EVENT(dma_fence, dma_fence_destroy,
 	TP_ARGS(fence)
 );
 
-DEFINE_EVENT(dma_fence, dma_fence_enable_signal,
+DEFINE_EVENT(dma_fence_unsignaled, dma_fence_enable_signal,
 
 	TP_PROTO(struct dma_fence *fence),
 
 	TP_ARGS(fence)
 );
 
-DEFINE_EVENT(dma_fence, dma_fence_signaled,
+DEFINE_EVENT(dma_fence_unsignaled, dma_fence_signaled,
 
 	TP_PROTO(struct dma_fence *fence),
 
-- 
2.48.0


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

* [PATCH v4 7/9] sync_file: Protect access to driver and timeline name
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (5 preceding siblings ...)
  2025-05-15  9:50 ` [PATCH v4 6/9] dma-fence: Add safe access helpers and document the rules Tvrtko Ursulin
@ 2025-05-15  9:50 ` Tvrtko Ursulin
  2025-05-15  9:50 ` [PATCH v4 8/9] drm/i915: " Tvrtko Ursulin
                   ` (10 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-05-15  9:50 UTC (permalink / raw)
  To: dri-devel
  Cc: Rob Clark, Sumit Semwal, Gustavo Padovan, Christian König,
	Matthew Brost, Lucas De Marchi, Rodrigo Vivi, amd-gfx, intel-xe,
	intel-gfx, linux-media, linaro-mm-sig, kernel-dev, Tvrtko Ursulin

Protect the access to driver and timeline name which otherwise could be
freed as dma-fence exported is signalling fences.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
---
 drivers/dma-buf/sync_file.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c
index 212df4b849fe..ad87116baa24 100644
--- a/drivers/dma-buf/sync_file.c
+++ b/drivers/dma-buf/sync_file.c
@@ -136,11 +136,13 @@ char *sync_file_get_name(struct sync_file *sync_file, char *buf, int len)
 	} else {
 		struct dma_fence *fence = sync_file->fence;
 
+		dma_fence_access_begin();
 		snprintf(buf, len, "%s-%s%llu-%lld",
 			 dma_fence_driver_name(fence),
 			 dma_fence_timeline_name(fence),
 			 fence->context,
 			 fence->seqno);
+		dma_fence_access_end();
 	}
 
 	return buf;
@@ -262,6 +264,8 @@ static long sync_file_ioctl_merge(struct sync_file *sync_file,
 static int sync_fill_fence_info(struct dma_fence *fence,
 				 struct sync_fence_info *info)
 {
+	dma_fence_access_begin();
+
 	strscpy(info->obj_name, dma_fence_timeline_name(fence),
 		sizeof(info->obj_name));
 	strscpy(info->driver_name, dma_fence_driver_name(fence),
@@ -273,6 +277,8 @@ static int sync_fill_fence_info(struct dma_fence *fence,
 			ktime_to_ns(dma_fence_timestamp(fence)) :
 			ktime_set(0, 0);
 
+	dma_fence_access_end();
+
 	return info->status;
 }
 
-- 
2.48.0


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

* [PATCH v4 8/9] drm/i915: Protect access to driver and timeline name
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (6 preceding siblings ...)
  2025-05-15  9:50 ` [PATCH v4 7/9] sync_file: Protect access to driver and timeline name Tvrtko Ursulin
@ 2025-05-15  9:50 ` Tvrtko Ursulin
  2025-05-15 15:08   ` Andi Shyti
  2025-05-15  9:50 ` [PATCH v4 9/9] drm/xe: Make dma-fences compliant with the safe access rules Tvrtko Ursulin
                   ` (9 subsequent siblings)
  17 siblings, 1 reply; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-05-15  9:50 UTC (permalink / raw)
  To: dri-devel
  Cc: Rob Clark, Sumit Semwal, Gustavo Padovan, Christian König,
	Matthew Brost, Lucas De Marchi, Rodrigo Vivi, amd-gfx, intel-xe,
	intel-gfx, linux-media, linaro-mm-sig, kernel-dev, Tvrtko Ursulin

Protect the access to driver and timeline name which otherwise could be
freed as dma-fence exported is signalling fences.

Now that the safe access is handled in the dma-fence API, the external
callers such as sync_file, and our internal code paths, we can drop the
similar protection from i915_fence_get_timeline_name().

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
---
 drivers/gpu/drm/i915/gt/intel_gt_requests.c |  2 ++
 drivers/gpu/drm/i915/i915_request.c         | 17 +++--------------
 drivers/gpu/drm/i915/i915_sw_fence.c        |  2 ++
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.c b/drivers/gpu/drm/i915/gt/intel_gt_requests.c
index ae3557ed6c1e..11fca24c8b5b 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_requests.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.c
@@ -251,10 +251,12 @@ void intel_gt_watchdog_work(struct work_struct *work)
 		if (!i915_request_completed(rq)) {
 			struct dma_fence *f = &rq->fence;
 
+			dma_fence_access_begin();
 			pr_notice("Fence expiration time out i915-%s:%s:%llx!\n",
 				  dma_fence_driver_name(f),
 				  dma_fence_timeline_name(f),
 				  f->seqno);
+			dma_fence_access_end();
 			i915_request_cancel(rq, -EINTR);
 		}
 		i915_request_put(rq);
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index 4874c4f1e4ab..a8de736ff556 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -66,18 +66,6 @@ static const char *i915_fence_get_timeline_name(struct dma_fence *fence)
 {
 	const struct i915_gem_context *ctx;
 
-	/*
-	 * The timeline struct (as part of the ppgtt underneath a context)
-	 * may be freed when the request is no longer in use by the GPU.
-	 * We could extend the life of a context to beyond that of all
-	 * fences, possibly keeping the hw resource around indefinitely,
-	 * or we just give them a false name. Since
-	 * dma_fence_ops.get_timeline_name is a debug feature, the occasional
-	 * lie seems justifiable.
-	 */
-	if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags))
-		return "signaled";
-
 	ctx = i915_request_gem_context(to_request(fence));
 	if (!ctx)
 		return "[" DRIVER_NAME "]";
@@ -2184,7 +2172,6 @@ void i915_request_show(struct drm_printer *m,
 		       const char *prefix,
 		       int indent)
 {
-	const char *name = dma_fence_timeline_name((struct dma_fence *)&rq->fence);
 	char buf[80] = "";
 	int x = 0;
 
@@ -2220,6 +2207,7 @@ void i915_request_show(struct drm_printer *m,
 
 	x = print_sched_attr(&rq->sched.attr, buf, x, sizeof(buf));
 
+	dma_fence_access_begin();
 	drm_printf(m, "%s%.*s%c %llx:%lld%s%s %s @ %dms: %s\n",
 		   prefix, indent, "                ",
 		   queue_status(rq),
@@ -2228,7 +2216,8 @@ void i915_request_show(struct drm_printer *m,
 		   fence_status(rq),
 		   buf,
 		   jiffies_to_msecs(jiffies - rq->emitted_jiffies),
-		   name);
+		   dma_fence_timeline_name((struct dma_fence *)&rq->fence));
+	dma_fence_access_end();
 }
 
 static bool engine_match_ring(struct intel_engine_cs *engine, struct i915_request *rq)
diff --git a/drivers/gpu/drm/i915/i915_sw_fence.c b/drivers/gpu/drm/i915/i915_sw_fence.c
index e51ca7e50a4e..e7bdc1165b90 100644
--- a/drivers/gpu/drm/i915/i915_sw_fence.c
+++ b/drivers/gpu/drm/i915/i915_sw_fence.c
@@ -434,11 +434,13 @@ static void timer_i915_sw_fence_wake(struct timer_list *t)
 	if (!fence)
 		return;
 
+	dma_fence_access_begin();
 	pr_notice("Asynchronous wait on fence %s:%s:%llx timed out (hint:%ps)\n",
 		  dma_fence_driver_name(cb->dma),
 		  dma_fence_timeline_name(cb->dma),
 		  cb->dma->seqno,
 		  i915_sw_fence_debug_hint(fence));
+	dma_fence_access_end();
 
 	i915_sw_fence_set_error_once(fence, -ETIMEDOUT);
 	i915_sw_fence_complete(fence);
-- 
2.48.0


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

* [PATCH v4 9/9] drm/xe: Make dma-fences compliant with the safe access rules
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (7 preceding siblings ...)
  2025-05-15  9:50 ` [PATCH v4 8/9] drm/i915: " Tvrtko Ursulin
@ 2025-05-15  9:50 ` Tvrtko Ursulin
  2025-05-15 10:47 ` ✓ CI.Patch_applied: success for Some (drm_sched_|dma_)fence lifetime issues (rev3) Patchwork
                   ` (8 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-05-15  9:50 UTC (permalink / raw)
  To: dri-devel
  Cc: Rob Clark, Sumit Semwal, Gustavo Padovan, Christian König,
	Matthew Brost, Lucas De Marchi, Rodrigo Vivi, amd-gfx, intel-xe,
	intel-gfx, linux-media, linaro-mm-sig, kernel-dev, Tvrtko Ursulin

Xe can free some of the data pointed to by the dma-fences it exports. Most
notably the timeline name can get freed if userspace closes the associated
submit queue. At the same time the fence could have been exported to a
third party (for example a sync_fence fd) which will then cause an use-
after-free on subsequent access.

To make this safe we need to make the driver compliant with the newly
documented dma-fence rules. Driver has to ensure a RCU grace period
between signalling a fence and freeing any data pointed to by said fence.

For the timeline name we simply make the queue be freed via kfree_rcu and
for the shared lock associated with multiple queues we add a RCU grace
period before freeing the per GT structure holding the lock.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_guc_exec_queue_types.h | 2 ++
 drivers/gpu/drm/xe/xe_guc_submit.c           | 7 ++++++-
 drivers/gpu/drm/xe/xe_hw_fence.c             | 3 +++
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_exec_queue_types.h b/drivers/gpu/drm/xe/xe_guc_exec_queue_types.h
index 4c39f01e4f52..a3f421e2adc0 100644
--- a/drivers/gpu/drm/xe/xe_guc_exec_queue_types.h
+++ b/drivers/gpu/drm/xe/xe_guc_exec_queue_types.h
@@ -20,6 +20,8 @@ struct xe_exec_queue;
 struct xe_guc_exec_queue {
 	/** @q: Backpointer to parent xe_exec_queue */
 	struct xe_exec_queue *q;
+	/** @rcu: For safe freeing of exported dma fences */
+	struct rcu_head rcu;
 	/** @sched: GPU scheduler for this xe_exec_queue */
 	struct xe_gpu_scheduler sched;
 	/** @entity: Scheduler entity for this xe_exec_queue */
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index fb125f940de8..879a4474bf51 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -1291,7 +1291,11 @@ static void __guc_exec_queue_fini_async(struct work_struct *w)
 	xe_sched_entity_fini(&ge->entity);
 	xe_sched_fini(&ge->sched);
 
-	kfree(ge);
+	/*
+	 * RCU free due sched being exported via DRM scheduler fences
+	 * (timeline name).
+	 */
+	kfree_rcu(ge, rcu);
 	xe_exec_queue_fini(q);
 	xe_pm_runtime_put(guc_to_xe(guc));
 }
@@ -1474,6 +1478,7 @@ static int guc_exec_queue_init(struct xe_exec_queue *q)
 
 	q->guc = ge;
 	ge->q = q;
+	init_rcu_head(&ge->rcu);
 	init_waitqueue_head(&ge->suspend_wait);
 
 	for (i = 0; i < MAX_STATIC_MSG_TYPE; ++i)
diff --git a/drivers/gpu/drm/xe/xe_hw_fence.c b/drivers/gpu/drm/xe/xe_hw_fence.c
index 03eb8c6d1616..b2a0c46dfcd4 100644
--- a/drivers/gpu/drm/xe/xe_hw_fence.c
+++ b/drivers/gpu/drm/xe/xe_hw_fence.c
@@ -100,6 +100,9 @@ void xe_hw_fence_irq_finish(struct xe_hw_fence_irq *irq)
 		spin_unlock_irqrestore(&irq->lock, flags);
 		dma_fence_end_signalling(tmp);
 	}
+
+	/* Safe release of the irq->lock used in dma_fence_init. */
+	synchronize_rcu();
 }
 
 void xe_hw_fence_irq_run(struct xe_hw_fence_irq *irq)
-- 
2.48.0


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

* ✓ CI.Patch_applied: success for Some (drm_sched_|dma_)fence lifetime issues (rev3)
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (8 preceding siblings ...)
  2025-05-15  9:50 ` [PATCH v4 9/9] drm/xe: Make dma-fences compliant with the safe access rules Tvrtko Ursulin
@ 2025-05-15 10:47 ` Patchwork
  2025-05-15 10:48 ` ✗ CI.checkpatch: warning " Patchwork
                   ` (7 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2025-05-15 10:47 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

== Series Details ==

Series: Some (drm_sched_|dma_)fence lifetime issues (rev3)
URL   : https://patchwork.freedesktop.org/series/148825/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: fbf1cb830ae7 drm-tip: 2025y-05m-15d-10h-33m-27s UTC integration manifest
=== git am output follows ===
Applying: dma-fence: Change signature of __dma_fence_is_later
Applying: dma-fence: Use a flag for 64-bit seqnos
Applying: dma-fence: Add helpers for accessing driver and timeline name
Applying: sync_file: Use dma-fence driver and timeline name helpers
Applying: drm/i915: Use dma-fence driver and timeline name helpers
Applying: dma-fence: Add safe access helpers and document the rules
Applying: sync_file: Protect access to driver and timeline name
Applying: drm/i915: Protect access to driver and timeline name
Applying: drm/xe: Make dma-fences compliant with the safe access rules



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

* ✗ CI.checkpatch: warning for Some (drm_sched_|dma_)fence lifetime issues (rev3)
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (9 preceding siblings ...)
  2025-05-15 10:47 ` ✓ CI.Patch_applied: success for Some (drm_sched_|dma_)fence lifetime issues (rev3) Patchwork
@ 2025-05-15 10:48 ` Patchwork
  2025-05-15 10:49 ` ✓ CI.KUnit: success " Patchwork
                   ` (6 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2025-05-15 10:48 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

== Series Details ==

Series: Some (drm_sched_|dma_)fence lifetime issues (rev3)
URL   : https://patchwork.freedesktop.org/series/148825/
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
202708c00696422fd217223bb679a353a5936e23
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 6b1ffa111678313d9014631a8b4ddc1d9b637716
Author: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Date:   Thu May 15 10:50:04 2025 +0100

    drm/xe: Make dma-fences compliant with the safe access rules
    
    Xe can free some of the data pointed to by the dma-fences it exports. Most
    notably the timeline name can get freed if userspace closes the associated
    submit queue. At the same time the fence could have been exported to a
    third party (for example a sync_fence fd) which will then cause an use-
    after-free on subsequent access.
    
    To make this safe we need to make the driver compliant with the newly
    documented dma-fence rules. Driver has to ensure a RCU grace period
    between signalling a fence and freeing any data pointed to by said fence.
    
    For the timeline name we simply make the queue be freed via kfree_rcu and
    for the shared lock associated with multiple queues we add a RCU grace
    period before freeing the per GT structure holding the lock.
    
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
    Reviewed-by: Matthew Brost <matthew.brost@intel.com>
+ /mt/dim checkpatch fbf1cb830ae7cca1f6094630da357a8418596a5b drm-intel
a02caf874c03 dma-fence: Change signature of __dma_fence_is_later
bf8f01a172bf dma-fence: Use a flag for 64-bit seqnos
-:56: ERROR:CODE_INDENT: code indent should use tabs where possible
#56: FILE: drivers/dma-buf/dma-fence.c:994:
+^I         spinlock_t *lock, u64 context, u64 seqno, unsigned long flags)$

-:56: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#56: FILE: drivers/dma-buf/dma-fence.c:994:
+__dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
+	         spinlock_t *lock, u64 context, u64 seqno, unsigned long flags)

-:58: WARNING:AVOID_BUG: Do not crash the kernel unless it is absolutely unavoidable--use WARN_ON_ONCE() plus recovery code (if feasible) instead of BUG() or variants
#58: FILE: drivers/dma-buf/dma-fence.c:996:
+	BUG_ON(!lock);

-:59: WARNING:AVOID_BUG: Do not crash the kernel unless it is absolutely unavoidable--use WARN_ON_ONCE() plus recovery code (if feasible) instead of BUG() or variants
#59: FILE: drivers/dma-buf/dma-fence.c:997:
+	BUG_ON(!ops || !ops->get_driver_name || !ops->get_timeline_name);

total: 1 errors, 2 warnings, 1 checks, 176 lines checked
577c404ffa86 dma-fence: Add helpers for accessing driver and timeline name
0feb5d5bbff0 sync_file: Use dma-fence driver and timeline name helpers
cec34290a3cd drm/i915: Use dma-fence driver and timeline name helpers
847ac0aea662 dma-fence: Add safe access helpers and document the rules
-:18: WARNING:TYPO_SPELLING: 'contraints' may be misspelled - perhaps 'constraints'?
#18: 
contraints and adds helpers which a) drivers with potential to suffer from
^^^^^^^^^^

-:232: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#232: FILE: include/trace/events/dma_fence.h:43:
+DECLARE_EVENT_CLASS(dma_fence_unsignaled,
+

-:237: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#237: FILE: include/trace/events/dma_fence.h:48:
+	TP_STRUCT__entry(

-:244: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#244: FILE: include/trace/events/dma_fence.h:55:
+	TP_fast_assign(

-:257: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#257: FILE: include/trace/events/dma_fence.h:68:
+DEFINE_EVENT(dma_fence_unsignaled, dma_fence_emit,
 

-:265: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#265: FILE: include/trace/events/dma_fence.h:75:
+DEFINE_EVENT(dma_fence_unsignaled, dma_fence_init,
 

-:274: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#274: FILE: include/trace/events/dma_fence.h:89:
+DEFINE_EVENT(dma_fence_unsignaled, dma_fence_enable_signal,
 

-:282: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#282: FILE: include/trace/events/dma_fence.h:96:
+DEFINE_EVENT(dma_fence_unsignaled, dma_fence_signaled,
 

total: 0 errors, 1 warnings, 7 checks, 218 lines checked
52d641f3807b sync_file: Protect access to driver and timeline name
727517d78f40 drm/i915: Protect access to driver and timeline name
6b1ffa111678 drm/xe: Make dma-fences compliant with the safe access rules



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

* ✓ CI.KUnit: success for Some (drm_sched_|dma_)fence lifetime issues (rev3)
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (10 preceding siblings ...)
  2025-05-15 10:48 ` ✗ CI.checkpatch: warning " Patchwork
@ 2025-05-15 10:49 ` Patchwork
  2025-05-15 10:59 ` ✓ CI.Build: " Patchwork
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2025-05-15 10:49 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

== Series Details ==

Series: Some (drm_sched_|dma_)fence lifetime issues (rev3)
URL   : https://patchwork.freedesktop.org/series/148825/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[10:48:15] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:48:19] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[10:48:46] Starting KUnit Kernel (1/1)...
[10:48:46] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:48:46] ================== guc_buf (11 subtests) ===================
[10:48:46] [PASSED] test_smallest
[10:48:46] [PASSED] test_largest
[10:48:46] [PASSED] test_granular
[10:48:46] [PASSED] test_unique
[10:48:46] [PASSED] test_overlap
[10:48:46] [PASSED] test_reusable
[10:48:46] [PASSED] test_too_big
[10:48:46] [PASSED] test_flush
[10:48:46] [PASSED] test_lookup
[10:48:46] [PASSED] test_data
[10:48:46] [PASSED] test_class
[10:48:46] ===================== [PASSED] guc_buf =====================
[10:48:46] =================== guc_dbm (7 subtests) ===================
[10:48:46] [PASSED] test_empty
[10:48:46] [PASSED] test_default
[10:48:46] ======================== test_size  ========================
[10:48:46] [PASSED] 4
[10:48:46] [PASSED] 8
[10:48:46] [PASSED] 32
[10:48:46] [PASSED] 256
[10:48:46] ==================== [PASSED] test_size ====================
[10:48:46] ======================= test_reuse  ========================
[10:48:46] [PASSED] 4
[10:48:46] [PASSED] 8
[10:48:46] [PASSED] 32
[10:48:46] [PASSED] 256
[10:48:46] =================== [PASSED] test_reuse ====================
[10:48:46] =================== test_range_overlap  ====================
[10:48:46] [PASSED] 4
[10:48:46] [PASSED] 8
[10:48:46] [PASSED] 32
[10:48:46] [PASSED] 256
[10:48:46] =============== [PASSED] test_range_overlap ================
[10:48:46] =================== test_range_compact  ====================
[10:48:46] [PASSED] 4
[10:48:46] [PASSED] 8
[10:48:46] [PASSED] 32
[10:48:46] [PASSED] 256
[10:48:46] =============== [PASSED] test_range_compact ================
[10:48:46] ==================== test_range_spare  =====================
[10:48:46] [PASSED] 4
[10:48:46] [PASSED] 8
[10:48:46] [PASSED] 32
[10:48:46] [PASSED] 256
[10:48:46] ================ [PASSED] test_range_spare =================
[10:48:46] ===================== [PASSED] guc_dbm =====================
[10:48:46] =================== guc_idm (6 subtests) ===================
[10:48:46] [PASSED] bad_init
[10:48:46] [PASSED] no_init
[10:48:46] [PASSED] init_fini
[10:48:46] [PASSED] check_used
[10:48:46] [PASSED] check_quota
[10:48:46] [PASSED] check_all
[10:48:46] ===================== [PASSED] guc_idm =====================
[10:48:46] ================== no_relay (3 subtests) ===================
[10:48:46] [PASSED] xe_drops_guc2pf_if_not_ready
[10:48:46] [PASSED] xe_drops_guc2vf_if_not_ready
[10:48:46] [PASSED] xe_rejects_send_if_not_ready
[10:48:46] ==================== [PASSED] no_relay =====================
[10:48:46] ================== pf_relay (14 subtests) ==================
[10:48:46] [PASSED] pf_rejects_guc2pf_too_short
[10:48:46] [PASSED] pf_rejects_guc2pf_too_long
[10:48:46] [PASSED] pf_rejects_guc2pf_no_payload
[10:48:46] [PASSED] pf_fails_no_payload
[10:48:46] [PASSED] pf_fails_bad_origin
[10:48:46] [PASSED] pf_fails_bad_type
[10:48:46] [PASSED] pf_txn_reports_error
[10:48:46] [PASSED] pf_txn_sends_pf2guc
[10:48:46] [PASSED] pf_sends_pf2guc
[10:48:46] [SKIPPED] pf_loopback_nop
[10:48:46] [SKIPPED] pf_loopback_echo
[10:48:46] [SKIPPED] pf_loopback_fail
[10:48:46] [SKIPPED] pf_loopback_busy
[10:48:46] [SKIPPED] pf_loopback_retry
[10:48:46] ==================== [PASSED] pf_relay =====================
[10:48:46] ================== vf_relay (3 subtests) ===================
[10:48:46] [PASSED] vf_rejects_guc2vf_too_short
[10:48:46] [PASSED] vf_rejects_guc2vf_too_long
[10:48:46] [PASSED] vf_rejects_guc2vf_no_payload
[10:48:46] ==================== [PASSED] vf_relay =====================
[10:48:46] ================= pf_service (11 subtests) =================
[10:48:46] [PASSED] pf_negotiate_any
[10:48:46] [PASSED] pf_negotiate_base_match
[10:48:46] [PASSED] pf_negotiate_base_newer
[10:48:46] [PASSED] pf_negotiate_base_next
[10:48:46] [SKIPPED] pf_negotiate_base_older
[10:48:46] [PASSED] pf_negotiate_base_prev
[10:48:46] [PASSED] pf_negotiate_latest_match
[10:48:46] [PASSED] pf_negotiate_latest_newer
[10:48:46] [PASSED] pf_negotiate_latest_next
[10:48:46] [SKIPPED] pf_negotiate_latest_older
[10:48:46] [SKIPPED] pf_negotiate_latest_prev
[10:48:46] =================== [PASSED] pf_service ====================
[10:48:46] ===================== lmtt (1 subtest) =====================
[10:48:46] ======================== test_ops  =========================
[10:48:46] [PASSED] 2-level
[10:48:46] [PASSED] multi-level
[10:48:46] ==================== [PASSED] test_ops =====================
[10:48:46] ====================== [PASSED] lmtt =======================
[10:48:46] =================== xe_mocs (2 subtests) ===================
[10:48:46] ================ xe_live_mocs_kernel_kunit  ================
[10:48:46] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[10:48:46] ================ xe_live_mocs_reset_kunit  =================
[10:48:46] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[10:48:46] ==================== [SKIPPED] xe_mocs =====================
[10:48:46] ================= xe_migrate (2 subtests) ==================
[10:48:46] ================= xe_migrate_sanity_kunit  =================
[10:48:46] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[10:48:46] ================== xe_validate_ccs_kunit  ==================
[10:48:46] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[10:48:46] =================== [SKIPPED] xe_migrate ===================
[10:48:46] ================== xe_dma_buf (1 subtest) ==================
[10:48:46] ==================== xe_dma_buf_kunit  =====================
[10:48:46] ================ [SKIPPED] xe_dma_buf_kunit ================
[10:48:46] =================== [SKIPPED] xe_dma_buf ===================
[10:48:46] ================= xe_bo_shrink (1 subtest) =================
[10:48:46] =================== xe_bo_shrink_kunit  ====================
[10:48:46] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[10:48:46] ================== [SKIPPED] xe_bo_shrink ==================
[10:48:46] ==================== xe_bo (2 subtests) ====================
[10:48:46] ================== xe_ccs_migrate_kunit  ===================
[10:48:46] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[10:48:46] ==================== xe_bo_evict_kunit  ====================
[10:48:46] =============== [SKIPPED] xe_bo_evict_kunit ================
[10:48:46] ===================== [SKIPPED] xe_bo ======================
[10:48:46] ==================== args (11 subtests) ====================
[10:48:46] [PASSED] count_args_test
[10:48:46] [PASSED] call_args_example
[10:48:46] [PASSED] call_args_test
[10:48:46] [PASSED] drop_first_arg_example
[10:48:46] [PASSED] drop_first_arg_test
[10:48:46] [PASSED] first_arg_example
[10:48:46] [PASSED] first_arg_test
[10:48:46] [PASSED] last_arg_example
[10:48:46] [PASSED] last_arg_test
[10:48:46] [PASSED] pick_arg_example
[10:48:46] [PASSED] sep_comma_example
[10:48:46] ====================== [PASSED] args =======================
[10:48:46] =================== xe_pci (2 subtests) ====================
[10:48:46] [PASSED] xe_gmdid_graphics_ip
[10:48:46] [PASSED] xe_gmdid_media_ip
[10:48:46] ===================== [PASSED] xe_pci ======================
[10:48:46] =================== xe_rtp (2 subtests) ====================
[10:48:46] =============== xe_rtp_process_to_sr_tests  ================
[10:48:46] [PASSED] coalesce-same-reg
[10:48:46] [PASSED] no-match-no-add
[10:48:46] [PASSED] match-or
[10:48:46] [PASSED] match-or-xfail
[10:48:46] [PASSED] no-match-no-add-multiple-rules
[10:48:46] [PASSED] two-regs-two-entries
[10:48:46] [PASSED] clr-one-set-other
[10:48:46] [PASSED] set-field
[10:48:46] [PASSED] conflict-duplicate
[10:48:46] [PASSED] conflict-not-disjoint
stty: 'standard input': Inappropriate ioctl for device
[10:48:46] [PASSED] conflict-reg-type
[10:48:46] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[10:48:46] ================== xe_rtp_process_tests  ===================
[10:48:46] [PASSED] active1
[10:48:46] [PASSED] active2
[10:48:46] [PASSED] active-inactive
[10:48:46] [PASSED] inactive-active
[10:48:46] [PASSED] inactive-1st_or_active-inactive
[10:48:46] [PASSED] inactive-2nd_or_active-inactive
[10:48:46] [PASSED] inactive-last_or_active-inactive
[10:48:46] [PASSED] inactive-no_or_active-inactive
[10:48:46] ============== [PASSED] xe_rtp_process_tests ===============
[10:48:46] ===================== [PASSED] xe_rtp ======================
[10:48:46] ==================== xe_wa (1 subtest) =====================
[10:48:46] ======================== xe_wa_gt  =========================
[10:48:46] [PASSED] TIGERLAKE (B0)
[10:48:46] [PASSED] DG1 (A0)
[10:48:46] [PASSED] DG1 (B0)
[10:48:46] [PASSED] ALDERLAKE_S (A0)
[10:48:46] [PASSED] ALDERLAKE_S (B0)
[10:48:46] [PASSED] ALDERLAKE_S (C0)
[10:48:46] [PASSED] ALDERLAKE_S (D0)
[10:48:46] [PASSED] ALDERLAKE_P (A0)
[10:48:46] [PASSED] ALDERLAKE_P (B0)
[10:48:46] [PASSED] ALDERLAKE_P (C0)
[10:48:46] [PASSED] ALDERLAKE_S_RPLS (D0)
[10:48:46] [PASSED] ALDERLAKE_P_RPLU (E0)
[10:48:46] [PASSED] DG2_G10 (C0)
[10:48:46] [PASSED] DG2_G11 (B1)
[10:48:46] [PASSED] DG2_G12 (A1)
[10:48:46] [PASSED] METEORLAKE (g:A0, m:A0)
[10:48:46] [PASSED] METEORLAKE (g:A0, m:A0)
[10:48:46] [PASSED] METEORLAKE (g:A0, m:A0)
[10:48:46] [PASSED] LUNARLAKE (g:A0, m:A0)
[10:48:46] [PASSED] LUNARLAKE (g:B0, m:A0)
[10:48:46] [PASSED] BATTLEMAGE (g:A0, m:A1)
[10:48:46] ==================== [PASSED] xe_wa_gt =====================
[10:48:46] ====================== [PASSED] xe_wa ======================
[10:48:46] ============================================================
[10:48:46] Testing complete. Ran 133 tests: passed: 117, skipped: 16
[10:48:46] Elapsed time: 31.042s total, 4.236s configuring, 26.490s building, 0.294s running

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

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

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



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

* ✓ CI.Build: success for Some (drm_sched_|dma_)fence lifetime issues (rev3)
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (11 preceding siblings ...)
  2025-05-15 10:49 ` ✓ CI.KUnit: success " Patchwork
@ 2025-05-15 10:59 ` Patchwork
  2025-05-15 11:02 ` ✓ CI.Hooks: " Patchwork
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2025-05-15 10:59 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

== Series Details ==

Series: Some (drm_sched_|dma_)fence lifetime issues (rev3)
URL   : https://patchwork.freedesktop.org/series/148825/
State : success



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

* ✓ CI.Hooks: success for Some (drm_sched_|dma_)fence lifetime issues (rev3)
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (12 preceding siblings ...)
  2025-05-15 10:59 ` ✓ CI.Build: " Patchwork
@ 2025-05-15 11:02 ` Patchwork
  2025-05-15 11:03 ` ✗ CI.checksparse: warning " Patchwork
                   ` (3 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2025-05-15 11:02 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

== Series Details ==

Series: Some (drm_sched_|dma_)fence lifetime issues (rev3)
URL   : https://patchwork.freedesktop.org/series/148825/
State : success

== Summary ==

run-parts: executing /workspace/ci/hooks/00-showenv
+ export
+ grep -Ei '(^|\W)CI_'
declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-debug"
declare -x CI_KERNEL_SRC_DIR="/workspace/kernel"
declare -x CI_TOOLS_SRC_DIR="/workspace/ci"
declare -x CI_WORKSPACE_DIR="/workspace"
run-parts: executing /workspace/ci/hooks/10-build-W1
+ SRC_DIR=/workspace/kernel
+ RESTORE_DISPLAY_CONFIG=0
+ '[' -n /workspace/kernel/build64-debug ']'
+ BUILD_DIR=/workspace/kernel/build64-debug
+ cd /workspace/kernel
++ nproc
+ make -j48 O=/workspace/kernel/build64-debug modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-debug'
  GEN     Makefile
  DESCEND objtool
  CALL    ../scripts/checksyscalls.sh
  INSTALL libsubcmd_headers
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/exec-cmd.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/help.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/pager.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/parse-options.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/run-command.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/sigchain.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/subcmd-config.o
  LD      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/libsubcmd-in.o
  AR      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/libsubcmd.a
  CC      /workspace/kernel/build64-debug/tools/objtool/weak.o
  CC      /workspace/kernel/build64-debug/tools/objtool/check.o
  CC      /workspace/kernel/build64-debug/tools/objtool/special.o
  CC      /workspace/kernel/build64-debug/tools/objtool/builtin-check.o
  CC      /workspace/kernel/build64-debug/tools/objtool/arch/x86/special.o
  CC      /workspace/kernel/build64-debug/tools/objtool/elf.o
  CC      /workspace/kernel/build64-debug/tools/objtool/objtool.o
  CC      /workspace/kernel/build64-debug/tools/objtool/arch/x86/decode.o
  CC      /workspace/kernel/build64-debug/tools/objtool/orc_gen.o
  CC      /workspace/kernel/build64-debug/tools/objtool/arch/x86/orc.o
  CC      /workspace/kernel/build64-debug/tools/objtool/orc_dump.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libstring.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libctype.o
  CC      /workspace/kernel/build64-debug/tools/objtool/str_error_r.o
  CC      /workspace/kernel/build64-debug/tools/objtool/librbtree.o
  LD      /workspace/kernel/build64-debug/tools/objtool/arch/x86/objtool-in.o
  LD      /workspace/kernel/build64-debug/tools/objtool/objtool-in.o
  LINK    /workspace/kernel/build64-debug/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64-debug'
++ nproc
+ make -j48 O=/workspace/kernel/build64-debug W=1 drivers/gpu/drm/xe
make[1]: Entering directory '/workspace/kernel/build64-debug'
make[2]: Nothing to be done for 'drivers/gpu/drm/xe'.
make[1]: Leaving directory '/workspace/kernel/build64-debug'
run-parts: executing /workspace/ci/hooks/11-build-32b
+++ realpath /workspace/ci/hooks/11-build-32b
++ dirname /workspace/ci/hooks/11-build-32b
+ THIS_SCRIPT_DIR=/workspace/ci/hooks
+ SRC_DIR=/workspace/kernel
+ TOOLS_SRC_DIR=/workspace/ci
+ '[' -n /workspace/kernel/build64-debug ']'
+ BUILD_DIR=/workspace/kernel/build64-debug
+ BUILD_DIR=/workspace/kernel/build64-debug/build32
+ cd /workspace/kernel
+ mkdir -p /workspace/kernel/build64-debug/build32
++ nproc
+ make -j48 ARCH=i386 O=/workspace/kernel/build64-debug/build32 defconfig
make[1]: Entering directory '/workspace/kernel/build64-debug/build32'
  GEN     Makefile
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/menu.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTLD  scripts/kconfig/conf
*** Default configuration is based on 'i386_defconfig'
#
# configuration written to .config
#
make[1]: Leaving directory '/workspace/kernel/build64-debug/build32'
+ cd /workspace/kernel/build64-debug/build32
+ /workspace/kernel/scripts/kconfig/merge_config.sh .config /workspace/ci/kernel/fragments/10-xe.fragment
Using .config as base
Merging /workspace/ci/kernel/fragments/10-xe.fragment
Value of CONFIG_DRM_XE is redefined by fragment /workspace/ci/kernel/fragments/10-xe.fragment:
Previous value: # CONFIG_DRM_XE is not set
New value: CONFIG_DRM_XE=m

  GEN     Makefile
#
# configuration written to .config
#
Value requested for CONFIG_HAVE_UID16 not in final .config
Requested value:  CONFIG_HAVE_UID16=y
Actual value:     

Value requested for CONFIG_UID16 not in final .config
Requested value:  CONFIG_UID16=y
Actual value:     

Value requested for CONFIG_X86_32 not in final .config
Requested value:  CONFIG_X86_32=y
Actual value:     

Value requested for CONFIG_OUTPUT_FORMAT not in final .config
Requested value:  CONFIG_OUTPUT_FORMAT="elf32-i386"
Actual value:     CONFIG_OUTPUT_FORMAT="elf64-x86-64"

Value requested for CONFIG_ARCH_MMAP_RND_BITS_MIN not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS_MIN=8
Actual value:     CONFIG_ARCH_MMAP_RND_BITS_MIN=28

Value requested for CONFIG_ARCH_MMAP_RND_BITS_MAX not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS_MAX=16
Actual value:     CONFIG_ARCH_MMAP_RND_BITS_MAX=32

Value requested for CONFIG_PGTABLE_LEVELS not in final .config
Requested value:  CONFIG_PGTABLE_LEVELS=2
Actual value:     CONFIG_PGTABLE_LEVELS=5

Value requested for CONFIG_X86_INTEL_QUARK not in final .config
Requested value:  # CONFIG_X86_INTEL_QUARK is not set
Actual value:     

Value requested for CONFIG_X86_RDC321X not in final .config
Requested value:  # CONFIG_X86_RDC321X is not set
Actual value:     

Value requested for CONFIG_X86_32_IRIS not in final .config
Requested value:  # CONFIG_X86_32_IRIS is not set
Actual value:     

Value requested for CONFIG_M486SX not in final .config
Requested value:  # CONFIG_M486SX is not set
Actual value:     

Value requested for CONFIG_M486 not in final .config
Requested value:  # CONFIG_M486 is not set
Actual value:     

Value requested for CONFIG_M586 not in final .config
Requested value:  # CONFIG_M586 is not set
Actual value:     

Value requested for CONFIG_M586TSC not in final .config
Requested value:  # CONFIG_M586TSC is not set
Actual value:     

Value requested for CONFIG_M586MMX not in final .config
Requested value:  # CONFIG_M586MMX is not set
Actual value:     

Value requested for CONFIG_M686 not in final .config
Requested value:  CONFIG_M686=y
Actual value:     

Value requested for CONFIG_MPENTIUMII not in final .config
Requested value:  # CONFIG_MPENTIUMII is not set
Actual value:     

Value requested for CONFIG_MPENTIUMIII not in final .config
Requested value:  # CONFIG_MPENTIUMIII is not set
Actual value:     

Value requested for CONFIG_MPENTIUMM not in final .config
Requested value:  # CONFIG_MPENTIUMM is not set
Actual value:     

Value requested for CONFIG_MPENTIUM4 not in final .config
Requested value:  # CONFIG_MPENTIUM4 is not set
Actual value:     

Value requested for CONFIG_MK6 not in final .config
Requested value:  # CONFIG_MK6 is not set
Actual value:     

Value requested for CONFIG_MK7 not in final .config
Requested value:  # CONFIG_MK7 is not set
Actual value:     

Value requested for CONFIG_MCRUSOE not in final .config
Requested value:  # CONFIG_MCRUSOE is not set
Actual value:     

Value requested for CONFIG_MEFFICEON not in final .config
Requested value:  # CONFIG_MEFFICEON is not set
Actual value:     

Value requested for CONFIG_MWINCHIPC6 not in final .config
Requested value:  # CONFIG_MWINCHIPC6 is not set
Actual value:     

Value requested for CONFIG_MWINCHIP3D not in final .config
Requested value:  # CONFIG_MWINCHIP3D is not set
Actual value:     

Value requested for CONFIG_MELAN not in final .config
Requested value:  # CONFIG_MELAN is not set
Actual value:     

Value requested for CONFIG_MGEODEGX1 not in final .config
Requested value:  # CONFIG_MGEODEGX1 is not set
Actual value:     

Value requested for CONFIG_MGEODE_LX not in final .config
Requested value:  # CONFIG_MGEODE_LX is not set
Actual value:     

Value requested for CONFIG_MCYRIXIII not in final .config
Requested value:  # CONFIG_MCYRIXIII is not set
Actual value:     

Value requested for CONFIG_MVIAC3_2 not in final .config
Requested value:  # CONFIG_MVIAC3_2 is not set
Actual value:     

Value requested for CONFIG_MVIAC7 not in final .config
Requested value:  # CONFIG_MVIAC7 is not set
Actual value:     

Value requested for CONFIG_MATOM not in final .config
Requested value:  # CONFIG_MATOM is not set
Actual value:     

Value requested for CONFIG_X86_GENERIC not in final .config
Requested value:  # CONFIG_X86_GENERIC is not set
Actual value:     

Value requested for CONFIG_X86_INTERNODE_CACHE_SHIFT not in final .config
Requested value:  CONFIG_X86_INTERNODE_CACHE_SHIFT=5
Actual value:     CONFIG_X86_INTERNODE_CACHE_SHIFT=6

Value requested for CONFIG_X86_L1_CACHE_SHIFT not in final .config
Requested value:  CONFIG_X86_L1_CACHE_SHIFT=5
Actual value:     CONFIG_X86_L1_CACHE_SHIFT=6

Value requested for CONFIG_X86_USE_PPRO_CHECKSUM not in final .config
Requested value:  CONFIG_X86_USE_PPRO_CHECKSUM=y
Actual value:     

Value requested for CONFIG_X86_MINIMUM_CPU_FAMILY not in final .config
Requested value:  CONFIG_X86_MINIMUM_CPU_FAMILY=6
Actual value:     CONFIG_X86_MINIMUM_CPU_FAMILY=64

Value requested for CONFIG_CPU_SUP_TRANSMETA_32 not in final .config
Requested value:  CONFIG_CPU_SUP_TRANSMETA_32=y
Actual value:     

Value requested for CONFIG_CPU_SUP_VORTEX_32 not in final .config
Requested value:  CONFIG_CPU_SUP_VORTEX_32=y
Actual value:     

Value requested for CONFIG_HPET_TIMER not in final .config
Requested value:  # CONFIG_HPET_TIMER is not set
Actual value:     CONFIG_HPET_TIMER=y

Value requested for CONFIG_NR_CPUS_RANGE_END not in final .config
Requested value:  CONFIG_NR_CPUS_RANGE_END=8
Actual value:     CONFIG_NR_CPUS_RANGE_END=512

Value requested for CONFIG_NR_CPUS_DEFAULT not in final .config
Requested value:  CONFIG_NR_CPUS_DEFAULT=8
Actual value:     CONFIG_NR_CPUS_DEFAULT=64

Value requested for CONFIG_X86_ANCIENT_MCE not in final .config
Requested value:  # CONFIG_X86_ANCIENT_MCE is not set
Actual value:     

Value requested for CONFIG_X86_LEGACY_VM86 not in final .config
Requested value:  # CONFIG_X86_LEGACY_VM86 is not set
Actual value:     

Value requested for CONFIG_X86_ESPFIX32 not in final .config
Requested value:  CONFIG_X86_ESPFIX32=y
Actual value:     

Value requested for CONFIG_TOSHIBA not in final .config
Requested value:  # CONFIG_TOSHIBA is not set
Actual value:     

Value requested for CONFIG_X86_REBOOTFIXUPS not in final .config
Requested value:  # CONFIG_X86_REBOOTFIXUPS is not set
Actual value:     

Value requested for CONFIG_MICROCODE_INITRD32 not in final .config
Requested value:  CONFIG_MICROCODE_INITRD32=y
Actual value:     

Value requested for CONFIG_HIGHMEM4G not in final .config
Requested value:  # CONFIG_HIGHMEM4G is not set
Actual value:     

Value requested for CONFIG_VMSPLIT_3G not in final .config
Requested value:  CONFIG_VMSPLIT_3G=y
Actual value:     

Value requested for CONFIG_VMSPLIT_3G_OPT not in final .config
Requested value:  # CONFIG_VMSPLIT_3G_OPT is not set
Actual value:     

Value requested for CONFIG_VMSPLIT_2G not in final .config
Requested value:  # CONFIG_VMSPLIT_2G is not set
Actual value:     

Value requested for CONFIG_VMSPLIT_2G_OPT not in final .config
Requested value:  # CONFIG_VMSPLIT_2G_OPT is not set
Actual value:     

Value requested for CONFIG_VMSPLIT_1G not in final .config
Requested value:  # CONFIG_VMSPLIT_1G is not set
Actual value:     

Value requested for CONFIG_PAGE_OFFSET not in final .config
Requested value:  CONFIG_PAGE_OFFSET=0xC0000000
Actual value:     

Value requested for CONFIG_X86_PAE not in final .config
Requested value:  # CONFIG_X86_PAE is not set
Actual value:     

Value requested for CONFIG_ARCH_FLATMEM_ENABLE not in final .config
Requested value:  CONFIG_ARCH_FLATMEM_ENABLE=y
Actual value:     

Value requested for CONFIG_ARCH_SELECT_MEMORY_MODEL not in final .config
Requested value:  CONFIG_ARCH_SELECT_MEMORY_MODEL=y
Actual value:     

Value requested for CONFIG_ILLEGAL_POINTER_VALUE not in final .config
Requested value:  CONFIG_ILLEGAL_POINTER_VALUE=0
Actual value:     CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000

Value requested for CONFIG_COMPAT_VDSO not in final .config
Requested value:  # CONFIG_COMPAT_VDSO is not set
Actual value:     

Value requested for CONFIG_FUNCTION_PADDING_CFI not in final .config
Requested value:  CONFIG_FUNCTION_PADDING_CFI=0
Actual value:     CONFIG_FUNCTION_PADDING_CFI=11

Value requested for CONFIG_FUNCTION_PADDING_BYTES not in final .config
Requested value:  CONFIG_FUNCTION_PADDING_BYTES=4
Actual value:     CONFIG_FUNCTION_PADDING_BYTES=16

Value requested for CONFIG_APM not in final .config
Requested value:  # CONFIG_APM is not set
Actual value:     

Value requested for CONFIG_X86_POWERNOW_K6 not in final .config
Requested value:  # CONFIG_X86_POWERNOW_K6 is not set
Actual value:     

Value requested for CONFIG_X86_POWERNOW_K7 not in final .config
Requested value:  # CONFIG_X86_POWERNOW_K7 is not set
Actual value:     

Value requested for CONFIG_X86_GX_SUSPMOD not in final .config
Requested value:  # CONFIG_X86_GX_SUSPMOD is not set
Actual value:     

Value requested for CONFIG_X86_SPEEDSTEP_ICH not in final .config
Requested value:  # CONFIG_X86_SPEEDSTEP_ICH is not set
Actual value:     

Value requested for CONFIG_X86_SPEEDSTEP_SMI not in final .config
Requested value:  # CONFIG_X86_SPEEDSTEP_SMI is not set
Actual value:     

Value requested for CONFIG_X86_CPUFREQ_NFORCE2 not in final .config
Requested value:  # CONFIG_X86_CPUFREQ_NFORCE2 is not set
Actual value:     

Value requested for CONFIG_X86_LONGRUN not in final .config
Requested value:  # CONFIG_X86_LONGRUN is not set
Actual value:     

Value requested for CONFIG_X86_LONGHAUL not in final .config
Requested value:  # CONFIG_X86_LONGHAUL is not set
Actual value:     

Value requested for CONFIG_X86_E_POWERSAVER not in final .config
Requested value:  # CONFIG_X86_E_POWERSAVER is not set
Actual value:     

Value requested for CONFIG_PCI_GOBIOS not in final .config
Requested value:  # CONFIG_PCI_GOBIOS is not set
Actual value:     

Value requested for CONFIG_PCI_GOMMCONFIG not in final .config
Requested value:  # CONFIG_PCI_GOMMCONFIG is not set
Actual value:     

Value requested for CONFIG_PCI_GODIRECT not in final .config
Requested value:  # CONFIG_PCI_GODIRECT is not set
Actual value:     

Value requested for CONFIG_PCI_GOANY not in final .config
Requested value:  CONFIG_PCI_GOANY=y
Actual value:     

Value requested for CONFIG_PCI_BIOS not in final .config
Requested value:  CONFIG_PCI_BIOS=y
Actual value:     

Value requested for CONFIG_ISA not in final .config
Requested value:  # CONFIG_ISA is not set
Actual value:     

Value requested for CONFIG_SCx200 not in final .config
Requested value:  # CONFIG_SCx200 is not set
Actual value:     

Value requested for CONFIG_OLPC not in final .config
Requested value:  # CONFIG_OLPC is not set
Actual value:     

Value requested for CONFIG_ALIX not in final .config
Requested value:  # CONFIG_ALIX is not set
Actual value:     

Value requested for CONFIG_NET5501 not in final .config
Requested value:  # CONFIG_NET5501 is not set
Actual value:     

Value requested for CONFIG_GEOS not in final .config
Requested value:  # CONFIG_GEOS is not set
Actual value:     

Value requested for CONFIG_COMPAT_32 not in final .config
Requested value:  CONFIG_COMPAT_32=y
Actual value:     

Value requested for CONFIG_HAVE_ATOMIC_IOMAP not in final .config
Requested value:  CONFIG_HAVE_ATOMIC_IOMAP=y
Actual value:     

Value requested for CONFIG_X86_DISABLED_FEATURE_PCID not in final .config
Requested value:  CONFIG_X86_DISABLED_FEATURE_PCID=y
Actual value:     

Value requested for CONFIG_X86_DISABLED_FEATURE_PKU not in final .config
Requested value:  CONFIG_X86_DISABLED_FEATURE_PKU=y
Actual value:     

Value requested for CONFIG_X86_DISABLED_FEATURE_OSPKE not in final .config
Requested value:  CONFIG_X86_DISABLED_FEATURE_OSPKE=y
Actual value:     

Value requested for CONFIG_X86_DISABLED_FEATURE_LA57 not in final .config
Requested value:  CONFIG_X86_DISABLED_FEATURE_LA57=y
Actual value:     

Value requested for CONFIG_X86_DISABLED_FEATURE_PTI not in final .config
Requested value:  CONFIG_X86_DISABLED_FEATURE_PTI=y
Actual value:     

Value requested for CONFIG_X86_DISABLED_FEATURE_IBT not in final .config
Requested value:  CONFIG_X86_DISABLED_FEATURE_IBT=y
Actual value:     

Value requested for CONFIG_X86_DISABLED_FEATURE_INVLPGB not in final .config
Requested value:  CONFIG_X86_DISABLED_FEATURE_INVLPGB=y
Actual value:     

Value requested for CONFIG_ARCH_32BIT_OFF_T not in final .config
Requested value:  CONFIG_ARCH_32BIT_OFF_T=y
Actual value:     

Value requested for CONFIG_ARCH_WANT_IPC_PARSE_VERSION not in final .config
Requested value:  CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
Actual value:     

Value requested for CONFIG_MODULES_USE_ELF_REL not in final .config
Requested value:  CONFIG_MODULES_USE_ELF_REL=y
Actual value:     

Value requested for CONFIG_ARCH_MMAP_RND_BITS not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS=8
Actual value:     CONFIG_ARCH_MMAP_RND_BITS=28

Value requested for CONFIG_CLONE_BACKWARDS not in final .config
Requested value:  CONFIG_CLONE_BACKWARDS=y
Actual value:     

Value requested for CONFIG_OLD_SIGSUSPEND3 not in final .config
Requested value:  CONFIG_OLD_SIGSUSPEND3=y
Actual value:     

Value requested for CONFIG_OLD_SIGACTION not in final .config
Requested value:  CONFIG_OLD_SIGACTION=y
Actual value:     

Value requested for CONFIG_ARCH_SPLIT_ARG64 not in final .config
Requested value:  CONFIG_ARCH_SPLIT_ARG64=y
Actual value:     

Value requested for CONFIG_FUNCTION_ALIGNMENT not in final .config
Requested value:  CONFIG_FUNCTION_ALIGNMENT=4
Actual value:     CONFIG_FUNCTION_ALIGNMENT=16

Value requested for CONFIG_SELECT_MEMORY_MODEL not in final .config
Requested value:  CONFIG_SELECT_MEMORY_MODEL=y
Actual value:     

Value requested for CONFIG_FLATMEM_MANUAL not in final .config
Requested value:  CONFIG_FLATMEM_MANUAL=y
Actual value:     

Value requested for CONFIG_SPARSEMEM_MANUAL not in final .config
Requested value:  # CONFIG_SPARSEMEM_MANUAL is not set
Actual value:     

Value requested for CONFIG_FLATMEM not in final .config
Requested value:  CONFIG_FLATMEM=y
Actual value:     

Value requested for CONFIG_SPARSEMEM_STATIC not in final .config
Requested value:  CONFIG_SPARSEMEM_STATIC=y
Actual value:     

Value requested for CONFIG_KMAP_LOCAL not in final .config
Requested value:  CONFIG_KMAP_LOCAL=y
Actual value:     

Value requested for CONFIG_HAVE_EISA not in final .config
Requested value:  CONFIG_HAVE_EISA=y
Actual value:     

Value requested for CONFIG_EISA not in final .config
Requested value:  # CONFIG_EISA is not set
Actual value:     

Value requested for CONFIG_HOTPLUG_PCI_COMPAQ not in final .config
Requested value:  # CONFIG_HOTPLUG_PCI_COMPAQ is not set
Actual value:     

Value requested for CONFIG_HOTPLUG_PCI_IBM not in final .config
Requested value:  # CONFIG_HOTPLUG_PCI_IBM is not set
Actual value:     

Value requested for CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH not in final .config
Requested value:  CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH=y
Actual value:     

Value requested for CONFIG_PCH_PHUB not in final .config
Requested value:  # CONFIG_PCH_PHUB is not set
Actual value:     

Value requested for CONFIG_SCSI_NSP32 not in final .config
Requested value:  # CONFIG_SCSI_NSP32 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5520 not in final .config
Requested value:  # CONFIG_PATA_CS5520 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5530 not in final .config
Requested value:  # CONFIG_PATA_CS5530 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5535 not in final .config
Requested value:  # CONFIG_PATA_CS5535 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5536 not in final .config
Requested value:  # CONFIG_PATA_CS5536 is not set
Actual value:     

Value requested for CONFIG_PATA_SC1200 not in final .config
Requested value:  # CONFIG_PATA_SC1200 is not set
Actual value:     

Value requested for CONFIG_PCH_GBE not in final .config
Requested value:  # CONFIG_PCH_GBE is not set
Actual value:     

Value requested for CONFIG_INPUT_WISTRON_BTNS not in final .config
Requested value:  # CONFIG_INPUT_WISTRON_BTNS is not set
Actual value:     

Value requested for CONFIG_SERIAL_TIMBERDALE not in final .config
Requested value:  # CONFIG_SERIAL_TIMBERDALE is not set
Actual value:     

Value requested for CONFIG_SERIAL_PCH_UART not in final .config
Requested value:  # CONFIG_SERIAL_PCH_UART is not set
Actual value:     

Value requested for CONFIG_HW_RANDOM_GEODE not in final .config
Requested value:  CONFIG_HW_RANDOM_GEODE=y
Actual value:     

Value requested for CONFIG_SONYPI not in final .config
Requested value:  # CONFIG_SONYPI is not set
Actual value:     

Value requested for CONFIG_PC8736x_GPIO not in final .config
Requested value:  # CONFIG_PC8736x_GPIO is not set
Actual value:     

Value requested for CONFIG_NSC_GPIO not in final .config
Requested value:  # CONFIG_NSC_GPIO is not set
Actual value:     

Value requested for CONFIG_I2C_EG20T not in final .config
Requested value:  # CONFIG_I2C_EG20T is not set
Actual value:     

Value requested for CONFIG_SCx200_ACB not in final .config
Requested value:  # CONFIG_SCx200_ACB is not set
Actual value:     

Value requested for CONFIG_PTP_1588_CLOCK_PCH not in final .config
Requested value:  # CONFIG_PTP_1588_CLOCK_PCH is not set
Actual value:     

Value requested for CONFIG_SBC8360_WDT not in final .config
Requested value:  # CONFIG_SBC8360_WDT is not set
Actual value:     

Value requested for CONFIG_SBC7240_WDT not in final .config
Requested value:  # CONFIG_SBC7240_WDT is not set
Actual value:     

Value requested for CONFIG_MFD_CS5535 not in final .config
Requested value:  # CONFIG_MFD_CS5535 is not set
Actual value:     

Value requested for CONFIG_AGP_ALI not in final .config
Requested value:  # CONFIG_AGP_ALI is not set
Actual value:     

Value requested for CONFIG_AGP_ATI not in final .config
Requested value:  # CONFIG_AGP_ATI is not set
Actual value:     

Value requested for CONFIG_AGP_AMD not in final .config
Requested value:  # CONFIG_AGP_AMD is not set
Actual value:     

Value requested for CONFIG_AGP_NVIDIA not in final .config
Requested value:  # CONFIG_AGP_NVIDIA is not set
Actual value:     

Value requested for CONFIG_AGP_SWORKS not in final .config
Requested value:  # CONFIG_AGP_SWORKS is not set
Actual value:     

Value requested for CONFIG_AGP_EFFICEON not in final .config
Requested value:  # CONFIG_AGP_EFFICEON is not set
Actual value:     

Value requested for CONFIG_SND_CS5530 not in final .config
Requested value:  # CONFIG_SND_CS5530 is not set
Actual value:     

Value requested for CONFIG_SND_CS5535AUDIO not in final .config
Requested value:  # CONFIG_SND_CS5535AUDIO is not set
Actual value:     

Value requested for CONFIG_SND_SIS7019 not in final .config
Requested value:  # CONFIG_SND_SIS7019 is not set
Actual value:     

Value requested for CONFIG_LEDS_OT200 not in final .config
Requested value:  # CONFIG_LEDS_OT200 is not set
Actual value:     

Value requested for CONFIG_PCH_DMA not in final .config
Requested value:  # CONFIG_PCH_DMA is not set
Actual value:     

Value requested for CONFIG_CLKSRC_I8253 not in final .config
Requested value:  CONFIG_CLKSRC_I8253=y
Actual value:     

Value requested for CONFIG_MAILBOX not in final .config
Requested value:  # CONFIG_MAILBOX is not set
Actual value:     CONFIG_MAILBOX=y

Value requested for CONFIG_CRYPTO_SERPENT_SSE2_586 not in final .config
Requested value:  # CONFIG_CRYPTO_SERPENT_SSE2_586 is not set
Actual value:     

Value requested for CONFIG_CRYPTO_TWOFISH_586 not in final .config
Requested value:  # CONFIG_CRYPTO_TWOFISH_586 is not set
Actual value:     

Value requested for CONFIG_CRYPTO_DEV_GEODE not in final .config
Requested value:  # CONFIG_CRYPTO_DEV_GEODE is not set
Actual value:     

Value requested for CONFIG_CRYPTO_DEV_HIFN_795X not in final .config
Requested value:  # CONFIG_CRYPTO_DEV_HIFN_795X is not set
Actual value:     

Value requested for CONFIG_CRYPTO_LIB_POLY1305_RSIZE not in final .config
Requested value:  CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
Actual value:     CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11

Value requested for CONFIG_AUDIT_GENERIC not in final .config
Requested value:  CONFIG_AUDIT_GENERIC=y
Actual value:     

Value requested for CONFIG_GENERIC_VDSO_32 not in final .config
Requested value:  CONFIG_GENERIC_VDSO_32=y
Actual value:     

Value requested for CONFIG_DEBUG_KMAP_LOCAL not in final .config
Requested value:  # CONFIG_DEBUG_KMAP_LOCAL is not set
Actual value:     

Value requested for CONFIG_HAVE_DEBUG_STACKOVERFLOW not in final .config
Requested value:  CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
Actual value:     

Value requested for CONFIG_DEBUG_STACKOVERFLOW not in final .config
Requested value:  # CONFIG_DEBUG_STACKOVERFLOW is not set
Actual value:     

Value requested for CONFIG_HAVE_FUNCTION_GRAPH_TRACER not in final .config
Requested value:  CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
Actual value:     

Value requested for CONFIG_HAVE_FUNCTION_GRAPH_FREGS not in final .config
Requested value:  CONFIG_HAVE_FUNCTION_GRAPH_FREGS=y
Actual value:     

Value requested for CONFIG_HAVE_FTRACE_GRAPH_FUNC not in final .config
Requested value:  CONFIG_HAVE_FTRACE_GRAPH_FUNC=y
Actual value:     

Value requested for CONFIG_DRM_KUNIT_TEST not in final .config
Requested value:  CONFIG_DRM_KUNIT_TEST=m
Actual value:     

Value requested for CONFIG_DRM_XE_WERROR not in final .config
Requested value:  CONFIG_DRM_XE_WERROR=y
Actual value:     

Value requested for CONFIG_DRM_XE_DEBUG not in final .config
Requested value:  CONFIG_DRM_XE_DEBUG=y
Actual value:     

Value requested for CONFIG_DRM_XE_DEBUG_MEM not in final .config
Requested value:  CONFIG_DRM_XE_DEBUG_MEM=y
Actual value:     

Value requested for CONFIG_DRM_XE_KUNIT_TEST not in final .config
Requested value:  CONFIG_DRM_XE_KUNIT_TEST=m
Actual value:     

++ nproc
+ make -j48 ARCH=i386 olddefconfig
  GEN     Makefile
#
# configuration written to .config
#
++ nproc
+ make -j48 ARCH=i386
  SYNC    include/config/auto.conf.cmd
  GEN     Makefile
  GEN     Makefile
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctl.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_32.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctls.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_64.h
  WRAP    arch/x86/include/generated/uapi/asm/ipcbuf.h
  WRAP    arch/x86/include/generated/uapi/asm/param.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  UPD     include/generated/uapi/linux/version.h
  WRAP    arch/x86/include/generated/uapi/asm/poll.h
  WRAP    arch/x86/include/generated/uapi/asm/resource.h
  UPD     arch/x86/include/generated/asm/cpufeaturemasks.h
  WRAP    arch/x86/include/generated/uapi/asm/socket.h
  WRAP    arch/x86/include/generated/uapi/asm/sockios.h
  WRAP    arch/x86/include/generated/uapi/asm/termbits.h
  WRAP    arch/x86/include/generated/uapi/asm/termios.h
  WRAP    arch/x86/include/generated/uapi/asm/types.h
  HOSTCC  arch/x86/tools/relocs_32.o
  HOSTCC  arch/x86/tools/relocs_64.o
  HOSTCC  arch/x86/tools/relocs_common.o
  UPD     include/generated/compile.h
  WRAP    arch/x86/include/generated/asm/early_ioremap.h
  WRAP    arch/x86/include/generated/asm/fprobe.h
  WRAP    arch/x86/include/generated/asm/mcs_spinlock.h
  WRAP    arch/x86/include/generated/asm/mmzone.h
  WRAP    arch/x86/include/generated/asm/irq_regs.h
  WRAP    arch/x86/include/generated/asm/kmap_size.h
  WRAP    arch/x86/include/generated/asm/local64.h
  HOSTCC  scripts/kallsyms
  WRAP    arch/x86/include/generated/asm/mmiowb.h
  HOSTCC  scripts/sorttable
  WRAP    arch/x86/include/generated/asm/module.lds.h
  HOSTCC  scripts/asn1_compiler
  WRAP    arch/x86/include/generated/asm/rwonce.h
  HOSTCC  scripts/selinux/mdp/mdp
  HOSTLD  arch/x86/tools/relocs
  UPD     include/config/kernel.release
  UPD     include/generated/utsrelease.h
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  CC      scripts/mod/devicetable-offsets.s
  UPD     scripts/mod/devicetable-offsets.h
  MKELF   scripts/mod/elfconfig.h
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/file2alias.o
  HOSTCC  scripts/mod/sumversion.o
  HOSTCC  scripts/mod/symsearch.o
  HOSTLD  scripts/mod/modpost
  CC      kernel/bounds.s
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-arch-fallback.h
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-instrumented.h
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-long.h
  UPD     include/generated/timeconst.h
  UPD     include/generated/bounds.h
  CC      arch/x86/kernel/asm-offsets.s
  UPD     include/generated/asm-offsets.h
  CALL    /workspace/kernel/scripts/checksyscalls.sh
  LDS     scripts/module.lds
  CC      init/main.o
  HOSTCC  usr/gen_init_cpio
  CC      init/do_mounts.o
  CC      certs/system_keyring.o
  CC      init/do_mounts_initrd.o
  UPD     init/utsversion-tmp.h
  CC      ipc/util.o
  CC      init/initramfs.o
  CC      ipc/msgutil.o
  CC      security/commoncap.o
  CC      ipc/msg.o
  CC      init/calibrate.o
  CC      io_uring/io_uring.o
  CC      mm/filemap.o
  CC      security/lsm_syscalls.o
  CC      ipc/sem.o
  CC      init/init_task.o
  CC      io_uring/opdef.o
  CC      mm/mempool.o
  CC      block/bdev.o
  AS      arch/x86/lib/atomic64_cx8_32.o
  CC      security/min_addr.o
  CC      arch/x86/power/cpu.o
  CC      arch/x86/video/video-common.o
  CC      arch/x86/pci/i386.o
  CC      arch/x86/realmode/init.o
  AR      arch/x86/crypto/built-in.a
  CC      security/keys/gc.o
  HOSTCC  security/selinux/genheaders
  CC      security/integrity/iint.o
  AR      arch/x86/net/built-in.a
  AR      virt/lib/built-in.a
  CC      block/partitions/core.o
  CC      fs/nfs_common/nfsacl.o
  AR      drivers/cache/built-in.a
  CC      block/partitions/msdos.o
  CC      arch/x86/events/amd/core.o
  CC      arch/x86/mm/pat/set_memory.o
  AR      arch/x86/platform/atom/built-in.a
  AR      virt/built-in.a
  AR      sound/i2c/other/built-in.a
  CC      arch/x86/virt/svm/cmdline.o
  CC      net/core/sock.o
  CC      arch/x86/kernel/fpu/init.o
  CC      fs/notify/dnotify/dnotify.o
  CC      sound/core/seq/seq.o
  AR      sound/drivers/opl3/built-in.a
  AR      lib/math/tests/built-in.a
  AS      arch/x86/realmode/rm/header.o
  AR      drivers/irqchip/built-in.a
  AR      sound/i2c/built-in.a
  AS      arch/x86/lib/checksum_32.o
  CC      lib/math/div64.o
  AR      arch/x86/platform/ce4100/built-in.a
  CC      arch/x86/entry/vdso/vma.o
  AR      sound/drivers/opl4/built-in.a
  CC      fs/notify/inotify/inotify_fsnotify.o
  CC      fs/iomap/trace.o
  CC      arch/x86/platform/efi/memmap.o
  AR      drivers/bus/mhi/built-in.a
  AS      arch/x86/realmode/rm/trampoline_32.o
  CC      kernel/sched/core.o
  AR      drivers/bus/built-in.a
  CC      arch/x86/lib/cmdline.o
  AR      sound/drivers/mpu401/built-in.a
  AS      arch/x86/realmode/rm/stack.o
  AR      drivers/pwm/built-in.a
  AR      sound/drivers/vx/built-in.a
  CC      crypto/asymmetric_keys/asymmetric_type.o
  AS      arch/x86/realmode/rm/reboot.o
  AR      sound/drivers/pcsp/built-in.a
  AR      drivers/leds/trigger/built-in.a
  AR      sound/drivers/built-in.a
  AR      arch/x86/virt/svm/built-in.a
  AR      drivers/leds/blink/built-in.a
  AS      arch/x86/realmode/rm/wakeup_asm.o
  CC      fs/quota/dquot.o
  AR      drivers/leds/simatic/built-in.a
  AR      arch/x86/virt/vmx/built-in.a
  CC      drivers/leds/led-core.o
  AR      arch/x86/virt/built-in.a
  CC      arch/x86/realmode/rm/wakemain.o
  CC      kernel/locking/mutex.o
  AS      arch/x86/lib/cmpxchg8b_emu.o
  CC      lib/math/gcd.o
  GEN     security/selinux/flask.h security/selinux/av_permissions.h
  CC      security/selinux/avc.o
  CC      arch/x86/lib/cpu.o
  CC      arch/x86/realmode/rm/video-mode.o
  CC      lib/math/lcm.o
  AS      arch/x86/realmode/rm/copy.o
  CC      lib/math/int_log.o
  CC      kernel/locking/semaphore.o
  AS      arch/x86/realmode/rm/bioscall.o
  GEN     usr/initramfs_data.cpio
  CC      arch/x86/kernel/fpu/bugs.o
  CC      arch/x86/realmode/rm/regs.o
  COPY    usr/initramfs_inc_data
  AS      usr/initramfs_data.o
  HOSTCC  certs/extract-cert
  CC      lib/math/int_pow.o
  AR      usr/built-in.a
  CC      fs/proc/task_mmu.o
  CC      arch/x86/realmode/rm/video-vga.o
  CC      lib/math/int_sqrt.o
  CC      arch/x86/kernel/fpu/core.o
  CC      arch/x86/realmode/rm/video-vesa.o
  CC      lib/math/reciprocal_div.o
  CC      fs/notify/inotify/inotify_user.o
  CC      sound/core/seq/seq_lock.o
  CC      arch/x86/lib/delay.o
  CC      arch/x86/realmode/rm/video-bios.o
  CC      drivers/pci/msi/pcidev_msi.o
  AR      arch/x86/video/built-in.a
  CC      lib/math/rational.o
  CC      drivers/video/console/dummycon.o
  PASYMS  arch/x86/realmode/rm/pasyms.h
  CERT    certs/x509_certificate_list
  AR      drivers/idle/built-in.a
  CERT    certs/signing_key.x509
  AS      certs/system_certificates.o
  AR      drivers/char/ipmi/built-in.a
  CC      fs/kernfs/mount.o
  LDS     arch/x86/realmode/rm/realmode.lds
  CC      security/integrity/integrity_audit.o
  CC      fs/kernfs/inode.o
  AR      certs/built-in.a
  CC      fs/kernfs/dir.o
  CC      fs/nfs_common/grace.o
  LD      arch/x86/realmode/rm/realmode.elf
  RELOCS  arch/x86/realmode/rm/realmode.relocs
  CC      drivers/leds/led-class.o
  OBJCOPY arch/x86/realmode/rm/realmode.bin
  AS      arch/x86/realmode/rmpiggy.o
  CC      lib/crypto/mpi/generic_mpih-lshift.o
  CC      arch/x86/mm/pat/memtype.o
  CC      mm/oom_kill.o
  AR      arch/x86/realmode/built-in.a
  CC      sound/core/seq/seq_clientmgr.o
  CC      arch/x86/pci/init.o
  CC      crypto/asymmetric_keys/restrict.o
  CC      arch/x86/entry/vdso/extable.o
  CC      sound/core/seq/seq_memory.o
  AR      fs/notify/dnotify/built-in.a
  CC      arch/x86/mm/init.o
  CC      security/keys/key.o
  CC      arch/x86/platform/efi/quirks.o
  CC      arch/x86/power/hibernate_32.o
  CC      net/core/request_sock.o
  CC      net/core/skbuff.o
  AS      arch/x86/lib/getuser.o
  CC      block/partitions/efi.o
  GEN     arch/x86/lib/inat-tables.c
  CC      arch/x86/lib/insn-eval.o
  CC      arch/x86/pci/pcbios.o
  AR      lib/math/built-in.a
  CC      net/ethernet/eth.o
  AR      fs/notify/fanotify/built-in.a
  CC      fs/notify/fsnotify.o
  CC      arch/x86/events/intel/core.o
  CC      arch/x86/events/zhaoxin/core.o
  CC      arch/x86/events/core.o
  CC      ipc/shm.o
  CC      crypto/asymmetric_keys/signature.o
  CC      drivers/video/console/vgacon.o
  CC      fs/iomap/iter.o
  CC      crypto/asymmetric_keys/public_key.o
  ASN.1   crypto/asymmetric_keys/x509.asn1.[ch]
  CC      kernel/sched/fair.o
  CC      drivers/pci/msi/api.o
  CC      drivers/leds/led-triggers.o
  CC      arch/x86/events/amd/lbr.o
  CC      lib/crypto/mpi/generic_mpih-mul1.o
  CC      arch/x86/mm/init_32.o
  CC      fs/nfs_common/common.o
  AR      security/integrity/built-in.a
  CC      drivers/acpi/acpica/dsargs.o
  CC      io_uring/kbuf.o
  CC      init/version.o
  CC      kernel/locking/rwsem.o
  AS      arch/x86/power/hibernate_asm_32.o
  AR      fs/notify/inotify/built-in.a
  CC      drivers/video/backlight/backlight.o
  ASN.1   crypto/asymmetric_keys/x509_akid.asn1.[ch]
  CC      security/keys/keyring.o
  CC      drivers/pci/msi/msi.o
  LDS     arch/x86/entry/vdso/vdso32/vdso32.lds
  CC      arch/x86/power/hibernate.o
  AS      arch/x86/entry/vdso/vdso32/note.o
  AS      arch/x86/entry/vdso/vdso32/system_call.o
  CC      crypto/api.o
  AS      arch/x86/entry/vdso/vdso32/sigreturn.o
  CC      arch/x86/mm/pat/memtype_interval.o
  CC      arch/x86/kernel/fpu/regset.o
  CC      arch/x86/pci/mmconfig_32.o
  CC      arch/x86/entry/vdso/vdso32/vclock_gettime.o
  AR      init/built-in.a
  CC      sound/core/seq/seq_queue.o
  CC      arch/x86/entry/vdso/vdso32/vgetcpu.o
  CC      arch/x86/platform/efi/efi.o
  HOSTCC  arch/x86/entry/vdso/vdso2c
  CC      arch/x86/kernel/cpu/mce/core.o
  CC      arch/x86/lib/insn.o
  CC      kernel/sched/build_policy.o
  CC      arch/x86/kernel/cpu/mtrr/mtrr.o
  CC      security/selinux/hooks.o
  CC      arch/x86/kernel/cpu/microcode/core.o
  AR      block/partitions/built-in.a
  CC      drivers/acpi/acpica/dscontrol.o
  CC      block/fops.o
  CC      crypto/asymmetric_keys/x509_loader.o
  CC      fs/notify/notification.o
  CC      lib/crypto/mpi/generic_mpih-mul2.o
  AR      arch/x86/events/zhaoxin/built-in.a
  CC      security/selinux/selinuxfs.o
  AR      drivers/leds/built-in.a
  CC      fs/iomap/buffered-io.o
  CC      fs/iomap/direct-io.o
  CC      fs/kernfs/file.o
  CC      arch/x86/kernel/cpu/mtrr/if.o
  CC      arch/x86/kernel/cpu/microcode/intel.o
  AR      fs/nfs_common/built-in.a
  CC      arch/x86/kernel/cpu/microcode/amd.o
  CC      crypto/asymmetric_keys/x509_public_key.o
  CC      arch/x86/lib/kaslr.o
  CC      fs/quota/quota_v2.o
  ASN.1   crypto/asymmetric_keys/pkcs7.asn1.[ch]
  CC      arch/x86/kernel/acpi/boot.o
  CC      fs/proc/inode.o
  CC      arch/x86/events/amd/ibs.o
  AR      drivers/video/console/built-in.a
  AR      arch/x86/power/built-in.a
  CC      lib/crypto/mpi/generic_mpih-mul3.o
  CC      lib/crypto/mpi/generic_mpih-rshift.o
  CC      drivers/acpi/acpica/dsdebug.o
  AR      arch/x86/mm/pat/built-in.a
  CC      arch/x86/kernel/apic/apic.o
  CC      arch/x86/mm/fault.o
  AR      net/ethernet/built-in.a
  CC      arch/x86/entry/vdso/vdso32-setup.o
  CC      arch/x86/pci/direct.o
  CC      kernel/locking/percpu-rwsem.o
  CC      arch/x86/kernel/kprobes/core.o
  CC      arch/x86/lib/memcpy_32.o
  AR      drivers/video/backlight/built-in.a
  CC      arch/x86/mm/ioremap.o
  AR      drivers/video/fbdev/core/built-in.a
  AR      drivers/video/fbdev/omap/built-in.a
  CC      arch/x86/kernel/fpu/signal.o
  AS      arch/x86/lib/memmove_32.o
  AR      drivers/video/fbdev/omap2/omapfb/dss/built-in.a
  CC      arch/x86/lib/misc.o
  AR      drivers/video/fbdev/omap2/omapfb/displays/built-in.a
  CC      arch/x86/lib/pc-conf-reg.o
  AR      drivers/video/fbdev/omap2/omapfb/built-in.a
  AR      drivers/video/fbdev/omap2/built-in.a
  AR      drivers/video/fbdev/built-in.a
  CC      arch/x86/kernel/kprobes/opt.o
  CC      drivers/video/aperture.o
  LDS     arch/x86/kernel/vmlinux.lds
  CC      ipc/syscall.o
  CC      arch/x86/mm/extable.o
  CC      arch/x86/kernel/apic/apic_common.o
  CC      fs/notify/group.o
  CC      drivers/pci/msi/irqdomain.o
  CC      sound/core/seq/seq_fifo.o
  CC      lib/crypto/memneq.o
  CC      crypto/asymmetric_keys/pkcs7_trust.o
  VDSO    arch/x86/entry/vdso/vdso32.so.dbg
  CC      drivers/acpi/acpica/dsfield.o
  OBJCOPY arch/x86/entry/vdso/vdso32.so
  VDSO2C  arch/x86/entry/vdso/vdso-image-32.c
  CC      arch/x86/entry/vdso/vdso-image-32.o
  AS      arch/x86/lib/putuser.o
  AS      arch/x86/lib/retpoline.o
  CC      arch/x86/lib/string_32.o
  CC      kernel/sched/build_utility.o
  CC      arch/x86/platform/efi/efi_32.o
  CC      arch/x86/kernel/cpu/mtrr/generic.o
  CC      arch/x86/lib/strstr_32.o
  CC      security/keys/keyctl.o
  CC      arch/x86/lib/usercopy.o
  AS      arch/x86/platform/efi/efi_stub_32.o
  CC      fs/quota/quota_tree.o
  CC      fs/quota/quota.o
  CC      lib/crypto/mpi/generic_mpih-sub1.o
  CC      net/core/datagram.o
  AR      arch/x86/entry/vdso/built-in.a
  AR      arch/x86/entry/vsyscall/built-in.a
  CC      block/bio.o
  AS      arch/x86/entry/entry.o
  CC      kernel/locking/spinlock.o
  AS      arch/x86/entry/entry_32.o
  CC      block/elevator.o
  CC      crypto/asymmetric_keys/pkcs7_verify.o
  CC      arch/x86/kernel/fpu/xstate.o
  CC      arch/x86/entry/syscall_32.o
  CC      fs/proc/root.o
  CC      fs/kernfs/symlink.o
  CC      drivers/acpi/acpica/dsinit.o
  CC      arch/x86/pci/mmconfig-shared.o
  CC      fs/proc/base.o
  CC      drivers/video/cmdline.o
  CC      arch/x86/lib/usercopy_32.o
  CC      arch/x86/events/amd/uncore.o
  AR      arch/x86/kernel/cpu/microcode/built-in.a
  CC      lib/crypto/mpi/generic_mpih-add1.o
  CC      arch/x86/kernel/cpu/mce/severity.o
  CC      sound/core/seq/seq_prioq.o
  CC      mm/fadvise.o
  CC      arch/x86/events/intel/bts.o
  CC      fs/notify/mark.o
  CC      ipc/ipc_sysctl.o
  CC      arch/x86/kernel/acpi/sleep.o
  CC      kernel/power/qos.o
  AR      drivers/pci/msi/built-in.a
  CC      kernel/locking/osq_lock.o
  CC      drivers/pci/pcie/portdrv.o
  CC      kernel/locking/qspinlock.o
  AR      arch/x86/kernel/kprobes/built-in.a
  AR      drivers/acpi/pmic/built-in.a
  CC      kernel/power/main.o
  CC      crypto/asymmetric_keys/x509.asn1.o
  CC      fs/quota/kqid.o
  CC      arch/x86/events/probe.o
  CC      crypto/asymmetric_keys/x509_akid.asn1.o
  CC      arch/x86/platform/efi/runtime-map.o
  CC      arch/x86/lib/msr-smp.o
  CC      crypto/asymmetric_keys/x509_cert_parser.o
  CC      drivers/acpi/acpica/dsmethod.o
  CC      arch/x86/pci/fixup.o
  CC      security/selinux/netlink.o
  CC      arch/x86/mm/mmap.o
  CC      lib/crypto/mpi/mpicoder.o
  CC      arch/x86/lib/cache-smp.o
  CC      io_uring/rsrc.o
  CC      ipc/mqueue.o
  CC      security/security.o
  AR      fs/kernfs/built-in.a
  AS      arch/x86/lib/crc32-pclmul.o
  CC      arch/x86/lib/crc32-glue.o
  CC      ipc/namespace.o
  CC      security/selinux/nlmsgtab.o
  CC      sound/core/seq/seq_timer.o
  CC      kernel/locking/rtmutex_api.o
  CC      arch/x86/kernel/cpu/mtrr/cleanup.o
  CC      io_uring/notif.o
  CC      drivers/video/nomodeset.o
  CC      fs/notify/fdinfo.o
  CC      drivers/video/hdmi.o
  CC      drivers/acpi/acpica/dsmthdat.o
  CC      fs/sysfs/file.o
  CC      arch/x86/kernel/apic/apic_noop.o
  CC      fs/iomap/ioend.o
  CC      security/keys/permission.o
  CC      crypto/asymmetric_keys/pkcs7.asn1.o
  AS      arch/x86/kernel/acpi/wakeup_32.o
  CC      fs/quota/netlink.o
  CC      crypto/asymmetric_keys/pkcs7_parser.o
  AR      arch/x86/kernel/fpu/built-in.a
  CC      mm/maccess.o
  CC      arch/x86/kernel/acpi/cstate.o
  CC      sound/core/sound.o
  CC      security/keys/process_keys.o
  AR      lib/tests/built-in.a
  CC      fs/proc/generic.o
  CC      drivers/pci/pcie/rcec.o
  CC      arch/x86/kernel/cpu/mce/genpool.o
  AR      arch/x86/platform/efi/built-in.a
  AS      arch/x86/entry/thunk.o
  AR      arch/x86/platform/geode/built-in.a
  CC      arch/x86/mm/pgtable.o
  AR      arch/x86/platform/iris/built-in.a
  CC      arch/x86/platform/intel/iosf_mbi.o
  AR      arch/x86/entry/built-in.a
  AR      sound/isa/ad1816a/built-in.a
  CC      arch/x86/events/utils.o
  CC      arch/x86/kernel/cpu/mtrr/amd.o
  AR      arch/x86/events/amd/built-in.a
  AR      sound/isa/ad1848/built-in.a
  AR      sound/isa/cs423x/built-in.a
  AR      sound/ppc/built-in.a
  CC      arch/x86/lib/msr.o
  AR      sound/pci/ac97/built-in.a
  AR      sound/isa/es1688/built-in.a
  CC      fs/proc/array.o
  AR      sound/pci/ali5451/built-in.a
  AR      sound/isa/galaxy/built-in.a
  AR      sound/pci/asihpi/built-in.a
  AR      sound/isa/gus/built-in.a
  AR      sound/pci/au88x0/built-in.a
  AR      sound/isa/msnd/built-in.a
  AR      sound/pci/aw2/built-in.a
  CC      drivers/acpi/acpica/dsobject.o
  AR      sound/isa/opti9xx/built-in.a
  CC      arch/x86/kernel/apic/ipi.o
  AR      sound/pci/ctxfi/built-in.a
  AR      sound/isa/sb/built-in.a
  AR      sound/pci/ca0106/built-in.a
  AR      sound/isa/wavefront/built-in.a
  CC      fs/proc/fd.o
  AR      sound/pci/cs46xx/built-in.a
  CC      fs/proc/proc_tty.o
  AR      sound/isa/wss/built-in.a
  AR      sound/isa/built-in.a
  AR      sound/pci/cs5535audio/built-in.a
  CC      kernel/power/console.o
  AR      sound/pci/lola/built-in.a
  CC      arch/x86/events/intel/ds.o
  CC      fs/iomap/fiemap.o
  CC      arch/x86/pci/acpi.o
  AR      sound/pci/lx6464es/built-in.a
  CC      lib/crypto/mpi/mpi-add.o
  AR      net/802/built-in.a
  AR      sound/pci/echoaudio/built-in.a
  CC      arch/x86/events/intel/knc.o
  AR      sound/pci/emu10k1/built-in.a
  CC      sound/pci/hda/hda_bind.o
  CC      block/blk-core.o
  AR      fs/notify/built-in.a
  CC      ipc/mq_sysctl.o
  CC      arch/x86/events/intel/lbr.o
  CC      mm/page-writeback.o
  CC      sound/core/seq/seq_system.o
  AR      crypto/asymmetric_keys/built-in.a
  AR      arch/x86/kernel/acpi/built-in.a
  CC      crypto/cipher.o
  CC      sound/core/seq/seq_ports.o
  CC      net/core/stream.o
  AR      drivers/video/built-in.a
  CC      fs/sysfs/dir.o
  CC      net/core/scm.o
  CC      sound/pci/hda/hda_codec.o
  CC      block/blk-sysfs.o
  AR      sound/arm/built-in.a
  CC      mm/folio-compat.o
  CC      security/lsm_audit.o
  CC      arch/x86/kernel/cpu/mce/intel.o
  CC      drivers/acpi/acpica/dsopcode.o
  CC      kernel/locking/qrwlock.o
  CC      drivers/pci/pcie/bwctrl.o
  CC      arch/x86/kernel/cpu/mtrr/cyrix.o
  AR      fs/quota/built-in.a
  CC      lib/crypto/utils.o
  CC      security/selinux/netif.o
  CC      arch/x86/mm/physaddr.o
  CC      arch/x86/kernel/apic/vector.o
  CC      arch/x86/pci/legacy.o
  AR      arch/x86/platform/intel/built-in.a
  AR      arch/x86/platform/intel-mid/built-in.a
  AR      arch/x86/platform/intel-quark/built-in.a
  CC      arch/x86/pci/irq.o
  CC      drivers/pci/pcie/aspm.o
  AR      arch/x86/platform/olpc/built-in.a
  AR      arch/x86/platform/scx200/built-in.a
  AR      arch/x86/platform/ts5500/built-in.a
  CC      arch/x86/events/intel/p4.o
  CC      fs/devpts/inode.o
  AR      arch/x86/platform/uv/built-in.a
  AR      arch/x86/platform/built-in.a
  CC      lib/crypto/mpi/mpi-bit.o
  CC      fs/netfs/buffered_read.o
  CC      fs/ext4/balloc.o
  CC      kernel/power/process.o
  CC      fs/iomap/seek.o
  CC      security/keys/request_key.o
  CC      mm/readahead.o
  AS      arch/x86/lib/msr-reg.o
  CC      arch/x86/lib/msr-reg-export.o
  CC      arch/x86/events/rapl.o
  CC      fs/jbd2/transaction.o
  CC      fs/sysfs/symlink.o
  CC      crypto/algapi.o
  CC      arch/x86/kernel/cpu/cacheinfo.o
  CC      drivers/acpi/acpica/dspkginit.o
  CC      net/core/gen_stats.o
  CC      fs/proc/cmdline.o
  AR      kernel/locking/built-in.a
  CC      net/sched/sch_generic.o
  AR      ipc/built-in.a
  CC      arch/x86/kernel/cpu/mce/amd.o
  CC      io_uring/tctx.o
  CC      lib/crypto/mpi/mpi-cmp.o
  CC      arch/x86/pci/common.o
  AS      arch/x86/lib/hweight.o
  CC      arch/x86/lib/iomem.o
  CC      sound/core/seq/seq_info.o
  CC      arch/x86/kernel/cpu/mtrr/centaur.o
  CC      arch/x86/mm/tlb.o
  AS      arch/x86/kernel/head_32.o
  CC      block/blk-flush.o
  AR      drivers/pci/pwrctrl/built-in.a
  CC      security/keys/request_key_auth.o
  CC      fs/ext4/bitmap.o
  CC      drivers/acpi/acpica/dsutils.o
  CC      drivers/acpi/acpica/dswexec.o
  CC      security/device_cgroup.o
  CC      lib/crypto/mpi/mpi-sub-ui.o
  CC      fs/iomap/swapfile.o
  CC      arch/x86/lib/atomic64_32.o
  CC      security/keys/user_defined.o
  CC      fs/proc/consoles.o
  CC      net/core/gen_estimator.o
  CC      arch/x86/lib/inat.o
  AR      fs/devpts/built-in.a
  CC      block/blk-settings.o
  CC      arch/x86/events/msr.o
  CC      sound/core/init.o
  CC      fs/sysfs/mount.o
  CC      lib/crypto/chacha.o
  AR      sound/pci/ice1712/built-in.a
  CC      lib/vdso/datastore.o
  AR      arch/x86/lib/built-in.a
  AR      arch/x86/lib/lib.a
  CC      sound/core/seq/seq_dummy.o
  CC      security/selinux/netnode.o
  CC      block/blk-ioc.o
  CC      arch/x86/kernel/cpu/mtrr/legacy.o
  AR      sound/pci/korg1212/built-in.a
  CC      fs/sysfs/group.o
  CC      fs/jbd2/commit.o
  CC      net/sched/sch_mq.o
  CC      net/netlink/af_netlink.o
  CC      kernel/power/suspend.o
  CC      kernel/power/hibernate.o
  CC      drivers/acpi/acpica/dswload.o
  CC      drivers/acpi/acpica/dswload2.o
  AR      net/bpf/built-in.a
  CC      fs/netfs/buffered_write.o
  CC      arch/x86/kernel/head32.o
  CC      arch/x86/pci/early.o
  CC      net/netlink/genetlink.o
  CC      net/core/net_namespace.o
  CC      sound/core/memory.o
  CC      arch/x86/events/intel/p6.o
  CC      io_uring/filetable.o
  CC      drivers/pci/pcie/pme.o
  CC      lib/crypto/mpi/mpi-div.o
  CC      sound/pci/hda/hda_jack.o
  CC      block/blk-map.o
  CC      fs/proc/cpuinfo.o
  CC      mm/swap.o
  CC      crypto/scatterwalk.o
  CC      arch/x86/kernel/apic/init.o
  AR      arch/x86/kernel/cpu/mtrr/built-in.a
  CC      net/ethtool/ioctl.o
  CC      security/keys/proc.o
  CC      net/netfilter/core.o
  AR      fs/iomap/built-in.a
  CC      kernel/printk/printk.o
  CC      net/ipv4/netfilter/nf_defrag_ipv4.o
  CC      lib/crypto/mpi/mpi-mod.o
  CC      kernel/printk/printk_safe.o
  CC      lib/crypto/aes.o
  AR      lib/vdso/built-in.a
  CC      net/ipv4/route.o
  AR      sound/core/seq/built-in.a
  CC      net/ipv4/inetpeer.o
  CC      drivers/acpi/acpica/dswscope.o
  CC      net/ipv4/protocol.o
  CC      arch/x86/mm/cpu_entry_area.o
  CC      arch/x86/kernel/apic/hw_nmi.o
  CC      drivers/acpi/acpica/dswstate.o
  CC      arch/x86/kernel/cpu/mce/threshold.o
  AR      fs/sysfs/built-in.a
  CC      fs/ext4/block_validity.o
  CC      fs/netfs/direct_read.o
  CC      fs/proc/devices.o
  CC      net/ipv4/ip_input.o
  CC      io_uring/rw.o
  CC      arch/x86/pci/bus_numa.o
  CC      net/netfilter/nf_log.o
  CC      fs/jbd2/recovery.o
  CC      kernel/printk/nbcon.o
  CC      kernel/irq/irqdesc.o
  CC      sound/core/control.o
  CC      net/xfrm/xfrm_policy.o
  CC      crypto/proc.o
  CC      net/netlink/policy.o
  CC      fs/ext4/dir.o
  AR      drivers/pci/pcie/built-in.a
  CC      drivers/pci/hotplug/pci_hotplug_core.o
  CC      arch/x86/events/intel/pt.o
  CC      block/blk-merge.o
  CC      arch/x86/pci/amd_bus.o
  CC      lib/crypto/mpi/mpi-mul.o
  CC      security/keys/sysctl.o
  CC      mm/truncate.o
  CC      security/selinux/netport.o
  CC      drivers/acpi/acpica/evevent.o
  CC      security/keys/keyctl_pkey.o
  CC      arch/x86/kernel/ebda.o
  CC      sound/core/misc.o
  CC      lib/crypto/mpi/mpih-cmp.o
  CC      net/core/secure_seq.o
  CC      net/sched/sch_frag.o
  CC      arch/x86/mm/maccess.o
  CC      arch/x86/kernel/apic/io_apic.o
  CC      sound/pci/hda/hda_auto_parser.o
  CC      sound/pci/hda/hda_sysfs.o
  CC      kernel/power/snapshot.o
  CC      fs/proc/interrupts.o
  CC      kernel/rcu/update.o
  CC      drivers/acpi/acpica/evgpe.o
  CC      crypto/aead.o
  CC      arch/x86/mm/pgprot.o
  CC      kernel/irq/handle.o
  CC      lib/zlib_inflate/inffast.o
  CC      net/ipv4/netfilter/nf_reject_ipv4.o
  CC      net/netfilter/nf_queue.o
  CC      fs/netfs/direct_write.o
  CC      io_uring/net.o
  CC      drivers/acpi/acpica/evgpeblk.o
  CC      lib/crypto/arc4.o
  AR      sound/pci/mixart/built-in.a
  CC      net/core/flow_dissector.o
  CC      mm/vmscan.o
  AR      arch/x86/kernel/cpu/mce/built-in.a
  CC      drivers/pnp/pnpacpi/core.o
  CC      arch/x86/kernel/cpu/scattered.o
  CC      lib/crypto/mpi/mpih-div.o
  CC      lib/zlib_inflate/inflate.o
  CC      fs/jbd2/checkpoint.o
  CC      lib/crypto/gf128mul.o
  AR      security/keys/built-in.a
  CC      drivers/pci/hotplug/acpi_pcihp.o
  AR      drivers/amba/built-in.a
  CC      drivers/pnp/core.o
  AR      drivers/clk/actions/built-in.a
  CC      drivers/pnp/pnpacpi/rsparser.o
  AR      drivers/clk/analogbits/built-in.a
  AR      arch/x86/pci/built-in.a
  AR      drivers/clk/bcm/built-in.a
  CC      fs/proc/loadavg.o
  AR      drivers/clk/imgtec/built-in.a
  AR      sound/pci/nm256/built-in.a
  CC      drivers/acpi/acpica/evgpeinit.o
  AR      drivers/clk/imx/built-in.a
  AR      sound/sh/built-in.a
  CC      arch/x86/mm/pgtable_32.o
  AR      drivers/clk/ingenic/built-in.a
  CC      net/unix/af_unix.o
  AR      drivers/clk/mediatek/built-in.a
  CC      fs/ext4/ext4_jbd2.o
  AR      drivers/clk/microchip/built-in.a
  CC      fs/ramfs/inode.o
  AR      drivers/clk/mstar/built-in.a
  AR      drivers/clk/mvebu/built-in.a
  AR      kernel/sched/built-in.a
  CC      fs/hugetlbfs/inode.o
  AR      drivers/clk/ralink/built-in.a
  AR      drivers/clk/renesas/built-in.a
  CC      fs/fat/cache.o
  AR      drivers/clk/socfpga/built-in.a
  AR      drivers/clk/sophgo/built-in.a
  CC      security/selinux/status.o
  CC      arch/x86/events/intel/uncore.o
  AR      drivers/clk/sprd/built-in.a
  AR      drivers/clk/starfive/built-in.a
  AR      drivers/clk/sunxi-ng/built-in.a
  AR      drivers/clk/ti/built-in.a
  AR      drivers/clk/versatile/built-in.a
  CC      net/xfrm/xfrm_state.o
  AR      drivers/clk/xilinx/built-in.a
  CC      arch/x86/kernel/cpu/topology_common.o
  AR      drivers/clk/built-in.a
  CC      kernel/irq/manage.o
  CC      block/blk-timeout.o
  CC      security/selinux/ss/ebitmap.o
  CC      net/xfrm/xfrm_hash.o
  CC      net/netfilter/nf_sockopt.o
  CC      lib/crypto/mpi/mpih-mul.o
  CC      lib/zlib_inflate/infutil.o
  CC      drivers/acpi/acpica/evgpeutil.o
  CC      lib/zlib_deflate/deflate.o
  CC      sound/pci/hda/hda_controller.o
  CC      sound/core/device.o
  AR      sound/synth/emux/built-in.a
  CC      crypto/geniv.o
  AR      sound/synth/built-in.a
  CC      net/netfilter/utils.o
  CC      kernel/rcu/sync.o
  CC      arch/x86/kernel/platform-quirks.o
  CC      fs/proc/meminfo.o
  CC      net/sched/sch_api.o
  CC      kernel/printk/printk_ringbuffer.o
  CC      fs/netfs/iterator.o
  CC      kernel/power/swap.o
  CC      sound/core/info.o
  AR      net/netlink/built-in.a
  AR      drivers/pci/controller/dwc/built-in.a
  AR      drivers/pci/controller/mobiveil/built-in.a
  AR      drivers/pci/controller/plda/built-in.a
  AR      drivers/pci/controller/built-in.a
  AR      drivers/pci/hotplug/built-in.a
  CC      fs/ext4/extents.o
  AR      drivers/pci/switch/built-in.a
  CC      drivers/pci/access.o
  CC      arch/x86/mm/iomap_32.o
  CC      arch/x86/kernel/cpu/topology_ext.o
  CC      arch/x86/kernel/process_32.o
  CC      lib/zlib_inflate/inftrees.o
  CC      fs/isofs/namei.o
  CC      drivers/acpi/acpica/evglock.o
  CC      fs/jbd2/revoke.o
  CC      net/ipv4/netfilter/ip_tables.o
  CC      fs/ramfs/file-mmu.o
  CC      drivers/acpi/acpica/evhandler.o
  AR      drivers/pnp/pnpacpi/built-in.a
  CC      block/blk-lib.o
  CC      drivers/pnp/card.o
  CC      lib/zlib_inflate/inflate_syms.o
  CC      fs/isofs/inode.o
  CC      security/selinux/ss/hashtab.o
  CC      arch/x86/kernel/apic/msi.o
  CC      fs/fat/dir.o
  CC      fs/proc/stat.o
  CC      arch/x86/events/intel/uncore_nhmex.o
  CC      net/ethtool/common.o
  CC      lib/crypto/blake2s.o
  CC      arch/x86/kernel/cpu/topology_amd.o
  CC      lib/crypto/mpi/mpi-pow.o
  CC      crypto/lskcipher.o
  AR      lib/zlib_inflate/built-in.a
  CC      arch/x86/mm/hugetlbpage.o
  CC      lib/zlib_deflate/deftree.o
  CC      drivers/acpi/acpica/evmisc.o
  CC      mm/shrinker.o
  CC      arch/x86/kernel/signal.o
  CC      fs/fat/fatent.o
  CC      fs/jbd2/journal.o
  CC      kernel/printk/sysctl.o
  CC      net/ipv4/netfilter/iptable_filter.o
  CC      lib/crypto/blake2s-generic.o
  CC      sound/pci/hda/hda_proc.o
  CC      security/selinux/ss/symtab.o
  CC      security/selinux/ss/sidtab.o
  CC      sound/core/isadma.o
  CC      fs/netfs/locking.o
  CC      net/ipv4/ip_fragment.o
  CC      fs/nfs/client.o
  AR      fs/ramfs/built-in.a
  CC      arch/x86/kernel/apic/probe_32.o
  CC      arch/x86/kernel/cpu/common.o
  CC      drivers/pci/bus.o
  CC      net/ethtool/netlink.o
  CC      drivers/pnp/driver.o
  CC      io_uring/poll.o
  CC      kernel/irq/spurious.o
  AR      kernel/printk/built-in.a
  CC      lib/zlib_deflate/deflate_syms.o
  CC      drivers/acpi/acpica/evregion.o
  AR      fs/hugetlbfs/built-in.a
  CC      fs/ext4/extents_status.o
  CC      fs/proc/uptime.o
  CC      arch/x86/events/intel/uncore_snb.o
  CC      net/core/sysctl_net_core.o
  CC      block/blk-mq.o
  CC      net/netfilter/nfnetlink.o
  CC      fs/proc/util.o
  CC      net/core/dev.o
  CC      sound/pci/hda/hda_hwdep.o
  CC      drivers/acpi/dptf/int340x_thermal.o
  CC      drivers/dma/dw/core.o
  CC      arch/x86/events/intel/uncore_snbep.o
  CC      lib/crypto/mpi/mpiutil.o
  CC      kernel/power/user.o
  CC      sound/core/vmaster.o
  AR      arch/x86/mm/built-in.a
  CC      lib/crypto/sha1.o
  AR      arch/x86/kernel/apic/built-in.a
  AR      lib/zlib_deflate/built-in.a
  AR      drivers/soc/apple/built-in.a
  CC      drivers/virtio/virtio.o
  AR      drivers/soc/aspeed/built-in.a
  AR      drivers/soc/bcm/built-in.a
  AR      drivers/soc/fsl/built-in.a
  AR      drivers/soc/fujitsu/built-in.a
  AR      drivers/soc/hisilicon/built-in.a
  CC      kernel/rcu/srcutree.o
  AR      drivers/soc/imx/built-in.a
  AR      drivers/soc/ixp4xx/built-in.a
  AR      drivers/soc/loongson/built-in.a
  CC      drivers/acpi/acpica/evrgnini.o
  AR      drivers/soc/mediatek/built-in.a
  CC      drivers/virtio/virtio_ring.o
  AR      drivers/soc/microchip/built-in.a
  CC      kernel/irq/resend.o
  AR      drivers/soc/nuvoton/built-in.a
  CC      kernel/rcu/tree.o
  AR      drivers/soc/pxa/built-in.a
  CC      drivers/pnp/resource.o
  AR      drivers/soc/amlogic/built-in.a
  CC      crypto/skcipher.o
  AR      drivers/soc/qcom/built-in.a
  CC      fs/isofs/dir.o
  AR      drivers/soc/renesas/built-in.a
  AR      drivers/soc/rockchip/built-in.a
  AR      drivers/soc/sunxi/built-in.a
  AR      drivers/soc/ti/built-in.a
  CC      fs/ext4/file.o
  CC      fs/netfs/main.o
  AR      drivers/soc/versatile/built-in.a
  AR      drivers/soc/xilinx/built-in.a
  CC      net/ethtool/bitset.o
  AR      drivers/soc/built-in.a
  CC      fs/proc/version.o
  AR      drivers/acpi/dptf/built-in.a
  CC      io_uring/eventfd.o
  CC      block/blk-mq-tag.o
  CC      drivers/pci/probe.o
  CC      drivers/acpi/acpica/evsci.o
  CC      security/selinux/ss/avtab.o
  CC      net/ipv4/ip_forward.o
  CC      fs/fat/file.o
  CC      net/unix/garbage.o
  CC      net/ipv4/netfilter/iptable_mangle.o
  CC      fs/proc/softirqs.o
  AR      lib/crypto/mpi/built-in.a
  CC      lib/crypto/sha256.o
  CC      sound/core/ctljack.o
  CC      drivers/virtio/virtio_anchor.o
  CC      kernel/irq/chip.o
  CC      sound/pci/hda/hda_intel.o
  CC      net/sched/sch_blackhole.o
  CC      block/blk-stat.o
  CC      drivers/acpi/x86/apple.o
  CC      kernel/power/poweroff.o
  CC      drivers/acpi/acpica/evxface.o
  CC      drivers/pnp/manager.o
  CC      mm/shmem.o
  CC      net/unix/sysctl_net_unix.o
  CC      io_uring/uring_cmd.o
  AR      kernel/livepatch/built-in.a
  CC      fs/isofs/util.o
  CC      arch/x86/kernel/signal_32.o
  CC      lib/lzo/lzo1x_compress.o
  AR      kernel/power/built-in.a
  CC      drivers/dma/dw/dw.o
  AR      sound/usb/misc/built-in.a
  AR      sound/usb/usx2y/built-in.a
  CC      net/netfilter/nfnetlink_log.o
  CC      sound/core/jack.o
  AR      sound/usb/caiaq/built-in.a
  AR      sound/usb/6fire/built-in.a
  AR      sound/usb/hiface/built-in.a
  CC      arch/x86/kernel/cpu/rdrand.o
  CC      fs/ext4/fsmap.o
  AR      sound/usb/bcd2000/built-in.a
  AR      sound/usb/built-in.a
  CC      fs/ext4/fsync.o
  CC      fs/proc/namespaces.o
  CC      drivers/acpi/x86/cmos_rtc.o
  CC      net/sched/cls_api.o
  CC      arch/x86/kernel/cpu/match.o
  AR      lib/crypto/built-in.a
  CC      arch/x86/kernel/cpu/bugs.o
  CC      fs/nfs/dir.o
  CC      fs/exportfs/expfs.o
  CC      fs/lockd/clntlock.o
  CC      net/xfrm/xfrm_input.o
  CC      lib/lzo/lzo1x_compress_safe.o
  CC      net/xfrm/xfrm_output.o
  CC      drivers/acpi/acpica/evxfevnt.o
  AR      sound/firewire/built-in.a
  CC      crypto/seqiv.o
  CC      security/selinux/ss/policydb.o
  CC      arch/x86/kernel/cpu/aperfmperf.o
  CC      drivers/acpi/tables.o
  CC      drivers/pnp/support.o
  CC      fs/fat/inode.o
  CC      net/xfrm/xfrm_sysctl.o
  CC      kernel/irq/dummychip.o
  CC      fs/isofs/rock.o
  CC      net/ipv4/netfilter/ipt_REJECT.o
  CC      drivers/tty/vt/vt_ioctl.o
  CC      fs/netfs/misc.o
  CC      drivers/tty/hvc/hvc_console.o
  CC      net/ethtool/strset.o
  CC      lib/lzo/lzo1x_decompress_safe.o
  CC      fs/fat/misc.o
  CC      drivers/dma/dw/idma32.o
  CC      fs/nls/nls_base.o
  CC      drivers/acpi/acpica/evxfgpe.o
  CC      sound/core/hwdep.o
  AR      net/unix/built-in.a
  CC      drivers/acpi/x86/lpss.o
  CC      fs/nls/nls_cp437.o
  CC      drivers/acpi/acpica/evxfregn.o
  CC      net/xfrm/xfrm_replay.o
  AR      fs/jbd2/built-in.a
  CC      drivers/tty/vt/vc_screen.o
  CC      drivers/acpi/x86/s2idle.o
  CC      fs/proc/self.o
  AR      fs/exportfs/built-in.a
  CC      drivers/dma/dw/acpi.o
  AR      sound/sparc/built-in.a
  CC      net/ipv4/ip_options.o
  CC      drivers/virtio/virtio_pci_modern_dev.o
  CC      drivers/pnp/interface.o
  CC      kernel/irq/devres.o
  CC      crypto/echainiv.o
  CC      arch/x86/kernel/cpu/cpuid-deps.o
  CC      io_uring/openclose.o
  CC      arch/x86/events/intel/uncore_discovery.o
  CC      drivers/pci/host-bridge.o
  AR      lib/lzo/built-in.a
  CC      kernel/dma/mapping.o
  CC      lib/lz4/lz4_decompress.o
  CC      drivers/acpi/osi.o
  CC      fs/nls/nls_ascii.o
  AR      sound/pci/hda/built-in.a
  CC      drivers/acpi/acpica/exconcat.o
  AR      sound/pci/oxygen/built-in.a
  AR      sound/pci/pcxhr/built-in.a
  AR      sound/pci/riptide/built-in.a
  AR      sound/pci/rme9652/built-in.a
  AR      sound/pci/trident/built-in.a
  AR      sound/pci/ymfpci/built-in.a
  AR      sound/pci/vx222/built-in.a
  AR      sound/pci/built-in.a
  CC      net/ipv4/ip_output.o
  CC      drivers/tty/serial/8250/8250_core.o
  CC      fs/nls/nls_iso8859-1.o
  CC      drivers/tty/serial/serial_core.o
  CC      fs/isofs/export.o
  CC      fs/lockd/clntproc.o
  AR      drivers/tty/hvc/built-in.a
  CC      sound/core/timer.o
  CC      drivers/pci/remove.o
  CC      net/netfilter/nf_conntrack_core.o
  CC      lib/zstd/zstd_decompress_module.o
  CC      fs/proc/thread_self.o
  CC      kernel/entry/common.o
  CC      kernel/irq/kexec.o
  CC      kernel/module/main.o
  CC      lib/xz/xz_dec_syms.o
  CC      fs/netfs/objects.o
  CC [M]  net/ipv4/netfilter/iptable_nat.o
  AR      drivers/dma/dw/built-in.a
  CC      net/core/dev_api.o
  CC      drivers/dma/hsu/hsu.o
  CC      drivers/pnp/quirks.o
  AR      fs/unicode/built-in.a
  CC      drivers/acpi/acpica/exconfig.o
  CC      lib/dim/dim.o
  CC      lib/fonts/fonts.o
  CC      fs/ext4/hash.o
  CC      drivers/pnp/system.o
  CC      crypto/ahash.o
  CC      arch/x86/kernel/cpu/umwait.o
  CC      drivers/tty/vt/selection.o
  CC      drivers/acpi/x86/utils.o
  CC      net/ipv4/ip_sockglue.o
  CC      drivers/virtio/virtio_pci_legacy_dev.o
  CC      fs/nls/nls_utf8.o
  CC      net/ethtool/linkinfo.o
  CC      fs/nfs/file.o
  CC      drivers/char/hw_random/core.o
  CC      fs/fat/nfs.o
  CC      lib/zstd/decompress/huf_decompress.o
  CC      lib/xz/xz_dec_stream.o
  CC      kernel/irq/autoprobe.o
  CC      io_uring/sqpoll.o
  CC      lib/fonts/font_8x16.o
  CC      lib/dim/net_dim.o
  CC      net/xfrm/xfrm_device.o
  CC      drivers/acpi/acpica/exconvrt.o
  CC      fs/isofs/joliet.o
  CC      fs/proc/proc_sysctl.o
  CC      block/blk-mq-sysfs.o
  CC      arch/x86/events/intel/cstate.o
  AR      fs/nls/built-in.a
  CC      drivers/pci/pci.o
  CC      drivers/char/agp/backend.o
  CC      kernel/rcu/rcu_segcblist.o
  CC      security/selinux/ss/services.o
  CC      drivers/tty/serial/8250/8250_platform.o
  CC      mm/util.o
  AR      lib/fonts/built-in.a
  AR      drivers/pnp/built-in.a
  CC      net/core/dev_addr_lists.o
  CC      net/core/dst.o
  MKCAP   arch/x86/kernel/cpu/capflags.c
  CC      kernel/irq/irqdomain.o
  AR      drivers/dma/hsu/built-in.a
  CC      lib/xz/xz_dec_lzma2.o
  CC      drivers/acpi/x86/blacklist.o
  AR      drivers/dma/idxd/built-in.a
  CC      drivers/virtio/virtio_pci_modern.o
  AR      drivers/dma/amd/built-in.a
  CC      fs/ext4/ialloc.o
  AR      drivers/dma/mediatek/built-in.a
  AR      lib/lz4/built-in.a
  CC      drivers/acpi/acpica/excreate.o
  AR      drivers/dma/qcom/built-in.a
  CC      drivers/tty/vt/keyboard.o
  CC      fs/autofs/init.o
  AR      drivers/dma/stm32/built-in.a
  CC      fs/netfs/read_collect.o
  AR      drivers/dma/ti/built-in.a
  AR      drivers/dma/xilinx/built-in.a
  CC      drivers/dma/dmaengine.o
  CC      kernel/entry/syscall_user_dispatch.o
  CC      drivers/acpi/acpica/exdebug.o
  CC      drivers/char/hw_random/intel-rng.o
  CC      fs/isofs/compress.o
  AR      net/ipv4/netfilter/built-in.a
  CC      fs/autofs/inode.o
  CC      drivers/pci/pci-driver.o
  CC      fs/fat/namei_vfat.o
  CC      net/ethtool/linkmodes.o
  CC      net/sched/act_api.o
  CC      crypto/shash.o
  CC      fs/lockd/clntxdr.o
  CC      block/blk-mq-cpumap.o
  CC      drivers/tty/serial/serial_base_bus.o
  CC      drivers/char/agp/generic.o
  AR      drivers/acpi/x86/built-in.a
  CC      net/netfilter/nf_conntrack_standalone.o
  CC      arch/x86/kernel/cpu/powerflags.o
  CC      sound/core/hrtimer.o
  AR      arch/x86/events/intel/built-in.a
  AR      arch/x86/events/built-in.a
  AR      kernel/rcu/built-in.a
  CC      io_uring/xattr.o
  CC      fs/lockd/host.o
  CC      lib/dim/rdma_dim.o
  CC      fs/proc/proc_net.o
  CC      drivers/acpi/acpica/exdump.o
  CC      net/xfrm/xfrm_nat_keepalive.o
  CC      drivers/tty/serial/8250/8250_pnp.o
  AR      kernel/entry/built-in.a
  CC      lib/xz/xz_dec_bcj.o
  CC      kernel/time/time.o
  CC      fs/ext4/indirect.o
  CC      fs/lockd/svc.o
  CC      drivers/char/hw_random/amd-rng.o
  CC      kernel/dma/direct.o
  CC      drivers/acpi/acpica/exfield.o
  AR      lib/dim/built-in.a
  CC      drivers/virtio/virtio_pci_common.o
  CC      lib/argv_split.o
  CC      mm/mmzone.o
  CC      sound/core/pcm.o
  CC      net/ipv4/inet_hashtables.o
  CC      drivers/dma/virt-dma.o
  CC      net/core/netevent.o
  AR      fs/isofs/built-in.a
  CC      drivers/char/mem.o
  CC      fs/autofs/root.o
  CC      kernel/irq/proc.o
  CC      block/blk-mq-sched.o
  CC      arch/x86/kernel/traps.o
  AR      drivers/tty/ipwireless/built-in.a
  CC      sound/core/pcm_native.o
  CC      drivers/tty/serial/serial_ctrl.o
  CC      fs/nfs/getroot.o
  CC      drivers/char/hw_random/geode-rng.o
  CC      fs/lockd/svclock.o
  CC      kernel/module/strict_rwx.o
  CC      crypto/akcipher.o
  AR      lib/xz/built-in.a
  CC      net/ethtool/rss.o
  CC      drivers/tty/tty_io.o
  CC      fs/proc/kcore.o
  CC      fs/netfs/read_pgpriv2.o
  CC      drivers/acpi/acpica/exfldio.o
  CC      kernel/dma/ops_helpers.o
  CC      net/xfrm/xfrm_algo.o
  CC      drivers/tty/serial/8250/8250_rsa.o
  CC      io_uring/nop.o
  CC      drivers/tty/vt/vt.o
  CC      kernel/irq/migration.o
  CC      mm/vmstat.o
  AR      sound/spi/built-in.a
  CC      lib/zstd/decompress/zstd_ddict.o
  CC      drivers/char/agp/isoch.o
  CC      drivers/acpi/osl.o
  CC      drivers/acpi/utils.o
  CC      fs/fat/namei_msdos.o
  CC      net/netfilter/nf_conntrack_expect.o
  CC      drivers/virtio/virtio_pci_legacy.o
  CC      net/netfilter/nf_conntrack_helper.o
  CC      drivers/dma/acpi-dma.o
  CC      net/core/neighbour.o
  CC      net/ipv4/inet_timewait_sock.o
  CC      kernel/time/timer.o
  CC      mm/backing-dev.o
  CC      net/ipv4/inet_connection_sock.o
  CC      drivers/acpi/acpica/exmisc.o
  CC      kernel/irq/cpuhotplug.o
  CC      kernel/module/kmod.o
  CC      fs/netfs/read_retry.o
  CC      drivers/char/hw_random/via-rng.o
  CC      lib/zstd/decompress/zstd_decompress.o
  COPY    drivers/tty/vt/defkeymap.c
  AR      drivers/iommu/amd/built-in.a
  CC      crypto/sig.o
  AR      drivers/iommu/intel/built-in.a
  AR      drivers/iommu/arm/arm-smmu/built-in.a
  AR      drivers/iommu/arm/arm-smmu-v3/built-in.a
  CC      kernel/dma/remap.o
  AR      drivers/iommu/arm/built-in.a
  AR      drivers/iommu/iommufd/built-in.a
  AR      drivers/iommu/riscv/built-in.a
  CC      fs/autofs/symlink.o
  CC      drivers/iommu/iommu.o
  CC      arch/x86/kernel/idt.o
  CC      drivers/iommu/iommu-traces.o
  CC      drivers/tty/serial/8250/8250_port.o
  CC      drivers/tty/serial/8250/8250_dma.o
  CC      block/ioctl.o
  CC      lib/zstd/decompress/zstd_decompress_block.o
  CC      io_uring/fs.o
  CC      drivers/pci/search.o
  CC      net/sched/sch_fifo.o
  CC      net/sched/cls_cgroup.o
  CC      fs/proc/kmsg.o
  CC      drivers/acpi/acpica/exmutex.o
  AR      drivers/char/hw_random/built-in.a
  CC      drivers/char/agp/amd64-agp.o
  CC      fs/ext4/inline.o
  CC      fs/nfs/inode.o
  CC      drivers/iommu/iommu-sysfs.o
  CC      drivers/virtio/virtio_pci_admin_legacy_io.o
  CC      net/ethtool/linkstate.o
  CC      security/selinux/ss/conditional.o
  AR      drivers/dma/built-in.a
  CC      arch/x86/kernel/irq.o
  CC      kernel/module/tree_lookup.o
  CC      drivers/tty/n_tty.o
  CC      net/xfrm/xfrm_user.o
  CC      kernel/irq/pm.o
  AR      kernel/dma/built-in.a
  CC      arch/x86/kernel/cpu/topology.o
  AR      fs/fat/built-in.a
  CC      fs/ext4/inode.o
  CC      drivers/acpi/acpica/exnames.o
  CC      drivers/acpi/acpica/exoparg1.o
  CC      fs/lockd/svcshare.o
  CC      fs/autofs/waitq.o
  CC      kernel/irq/msi.o
  CC      fs/proc/page.o
  CC      crypto/kpp.o
  CC      drivers/tty/vt/consolemap.o
  CC      mm/mm_init.o
  CC      fs/netfs/read_single.o
  CC      fs/netfs/rolling_buffer.o
  CC      drivers/pci/rom.o
  CC      fs/netfs/write_collect.o
  CC      kernel/futex/core.o
  CC      fs/ext4/ioctl.o
  CC      fs/9p/vfs_super.o
  CC      security/selinux/ss/mls.o
  CC      kernel/futex/syscalls.o
  CC      io_uring/splice.o
  CC      block/genhd.o
  CC      drivers/virtio/virtio_input.o
  CC      fs/netfs/write_issue.o
  CC      net/netfilter/nf_conntrack_proto.o
  CC      net/ipv4/tcp.o
  CC      fs/ext4/mballoc.o
  CC      kernel/module/kallsyms.o
  CC      drivers/char/agp/intel-agp.o
  CC      drivers/acpi/acpica/exoparg2.o
  CC      drivers/tty/serial/serial_port.o
  CC      net/ethtool/debug.o
  CC      net/sched/ematch.o
  AR      sound/parisc/built-in.a
  CC      net/ethtool/wol.o
  CC      drivers/iommu/dma-iommu.o
  CC      sound/core/pcm_lib.o
  AR      fs/proc/built-in.a
  CC      drivers/pci/setup-res.o
  ASN.1   crypto/rsapubkey.asn1.[ch]
  ASN.1   crypto/rsaprivkey.asn1.[ch]
  CC      crypto/rsa.o
  CC      fs/autofs/expire.o
  CC      kernel/time/hrtimer.o
  CC      fs/lockd/svcproc.o
  CC      fs/lockd/svcsubs.o
  CC      fs/nfs/super.o
  CC      fs/9p/vfs_inode.o
  CC      drivers/acpi/acpica/exoparg3.o
  HOSTCC  drivers/tty/vt/conmakehash
  CC      drivers/acpi/reboot.o
  CC      lib/bug.o
  CC      net/ethtool/features.o
  CC      drivers/pci/irq.o
  CC      arch/x86/kernel/irq_32.o
  CC      kernel/irq/affinity.o
  CC      io_uring/sync.o
  CC      kernel/module/procfs.o
  CC      drivers/virtio/virtio_dma_buf.o
  CC      drivers/tty/serial/earlycon.o
  AR      fs/hostfs/built-in.a
  CC      kernel/futex/pi.o
  CC      drivers/char/agp/intel-gtt.o
  CC      block/ioprio.o
  AR      drivers/gpu/host1x/built-in.a
  CC      drivers/tty/vt/defkeymap.o
  CC      mm/percpu.o
  CC      security/selinux/ss/context.o
  CC      drivers/tty/serial/8250/8250_dwlib.o
  AR      sound/pcmcia/vx/built-in.a
  AR      sound/pcmcia/pdaudiocf/built-in.a
  AR      sound/pcmcia/built-in.a
  CC      mm/slab_common.o
  CC      drivers/acpi/acpica/exoparg6.o
  AR      drivers/gpu/drm/tests/built-in.a
  AR      drivers/gpu/drm/arm/built-in.a
  AR      drivers/gpu/drm/clients/built-in.a
  CONMK   drivers/tty/vt/consolemap_deftbl.c
  CC      drivers/tty/vt/consolemap_deftbl.o
  CC      drivers/gpu/drm/display/drm_display_helper_mod.o
  CC      arch/x86/kernel/cpu/proc.o
  AR      drivers/tty/vt/built-in.a
  CC      block/badblocks.o
  CC      mm/compaction.o
  CC      kernel/cgroup/cgroup.o
  CC      net/ethtool/privflags.o
  CC      crypto/rsa_helper.o
  CC      kernel/futex/requeue.o
  CC      kernel/cgroup/rstat.o
  CC      fs/netfs/write_retry.o
  CC      drivers/tty/tty_ioctl.o
  CC      kernel/irq/matrix.o
  CC      fs/9p/vfs_inode_dotl.o
  AR      net/sched/built-in.a
  CC      fs/autofs/dev-ioctl.o
  CC      fs/lockd/mon.o
  CC      fs/lockd/trace.o
  AR      drivers/virtio/built-in.a
  CC      fs/nfs/io.o
  CC      drivers/pci/vpd.o
  CC      drivers/acpi/acpica/exprep.o
  CC      kernel/module/sysfs.o
  CC      drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
  CC      net/netfilter/nf_conntrack_proto_generic.o
  AR      drivers/gpu/vga/built-in.a
  CC      drivers/connector/cn_queue.o
  CC      fs/debugfs/inode.o
  CC      crypto/rsa-pkcs1pad.o
  CC      net/core/rtnetlink.o
  CC      sound/core/pcm_misc.o
  CC      io_uring/msg_ring.o
  CC      drivers/tty/serial/8250/8250_pcilib.o
  CC      drivers/tty/serial/8250/8250_early.o
  CC      fs/ext4/migrate.o
  CC      drivers/iommu/iova.o
  CC      fs/lockd/xdr.o
  CC      drivers/char/random.o
  CC      lib/buildid.o
  CC      mm/show_mem.o
  CC      arch/x86/kernel/cpu/feat_ctl.o
  CC      mm/interval_tree.o
  CC      drivers/acpi/acpica/exregion.o
  AR      drivers/char/agp/built-in.a
  CC      drivers/acpi/nvs.o
  CC      kernel/trace/trace_clock.o
  CC      security/selinux/netlabel.o
  CC      kernel/futex/waitwake.o
  CC      block/blk-rq-qos.o
  CC      kernel/time/sleep_timeout.o
  CC      fs/ext4/mmp.o
  AR      net/xfrm/built-in.a
  AR      sound/mips/built-in.a
  CC      fs/lockd/netlink.o
  CC      kernel/bpf/core.o
  CC      net/ethtool/rings.o
  CC      lib/zstd/zstd_common_module.o
  AR      fs/netfs/built-in.a
  CC      kernel/events/core.o
  AR      kernel/module/built-in.a
  CC      kernel/cgroup/namespace.o
  CC      drivers/acpi/acpica/exresnte.o
  AR      fs/autofs/built-in.a
  CC      arch/x86/kernel/cpu/intel.o
  CC      kernel/time/timekeeping.o
  CC      crypto/rsassa-pkcs1.o
  CC      kernel/trace/ring_buffer.o
  CC      sound/core/pcm_memory.o
  CC      drivers/gpu/drm/display/drm_dp_helper.o
  CC      arch/x86/kernel/cpu/tsx.o
  CC      fs/9p/vfs_addr.o
  CC      drivers/pci/setup-bus.o
  CC      drivers/gpu/drm/ttm/ttm_tt.o
  CC      drivers/tty/serial/8250/8250_exar.o
  CC      fs/nfs/direct.o
  CC      net/core/utils.o
  CC      drivers/connector/connector.o
  CC      io_uring/advise.o
  CC      fs/debugfs/file.o
  AR      kernel/irq/built-in.a
  CC      drivers/base/power/sysfs.o
  CC      fs/nfs/pagelist.o
  CC      drivers/base/firmware_loader/builtin/main.o
  CC      net/netfilter/nf_conntrack_proto_tcp.o
  CC      drivers/base/regmap/regmap.o
  CC      kernel/trace/trace.o
  AR      drivers/base/test/built-in.a
  CC      drivers/base/firmware_loader/main.o
  CC      drivers/acpi/acpica/exresolv.o
  AR      drivers/iommu/built-in.a
  CC      drivers/acpi/acpica/exresop.o
  CC      drivers/tty/tty_ldisc.o
  AR      kernel/futex/built-in.a
  CC      fs/lockd/clnt4xdr.o
  CC      arch/x86/kernel/cpu/intel_epb.o
  CC      sound/core/memalloc.o
  CC      arch/x86/kernel/cpu/amd.o
  CC      block/disk-events.o
  CC      lib/zstd/common/debug.o
  CC      fs/tracefs/inode.o
  CC      lib/zstd/common/entropy_common.o
  CC      drivers/block/loop.o
  AR      drivers/base/firmware_loader/builtin/built-in.a
  CC      drivers/acpi/acpica/exserial.o
  CC      drivers/misc/eeprom/eeprom_93cx6.o
  CC      fs/ext4/move_extent.o
  CC      crypto/acompress.o
  CC      fs/nfs/read.o
  CC      net/core/link_watch.o
  CC      drivers/tty/tty_buffer.o
  CC      arch/x86/kernel/dumpstack_32.o
  CC      drivers/base/power/generic_ops.o
  CC      drivers/char/misc.o
  CC      fs/9p/vfs_file.o
  CC      lib/zstd/common/error_private.o
  CC      net/ethtool/channels.o
  CC      drivers/gpu/drm/i915/i915_config.o
  CC      lib/zstd/common/fse_decompress.o
  AR      security/selinux/built-in.a
  AR      security/built-in.a
  AR      drivers/gpu/drm/renesas/rcar-du/built-in.a
  AR      drivers/gpu/drm/renesas/rz-du/built-in.a
  AR      drivers/gpu/drm/renesas/built-in.a
  AR      drivers/gpu/drm/omapdrm/built-in.a
  CC      drivers/tty/serial/8250/8250_lpss.o
  AR      drivers/misc/cb710/built-in.a
  AR      drivers/misc/lis3lv02d/built-in.a
  CC      drivers/tty/serial/8250/8250_mid.o
  CC      lib/clz_tab.o
  CC      drivers/acpi/acpica/exstore.o
  CC      kernel/time/ntp.o
  CC      drivers/gpu/drm/ttm/ttm_bo.o
  CC      io_uring/statx.o
  AR      drivers/misc/eeprom/built-in.a
  AR      drivers/misc/cardreader/built-in.a
  AR      drivers/misc/keba/built-in.a
  AR      drivers/misc/built-in.a
  CC [M]  fs/efivarfs/inode.o
  CC      drivers/acpi/acpica/exstoren.o
  CC      drivers/gpu/drm/i915/i915_driver.o
  CC      arch/x86/kernel/cpu/hygon.o
  CC      drivers/connector/cn_proc.o
  CC      block/blk-ia-ranges.o
  AR      drivers/base/firmware_loader/built-in.a
  CC      drivers/base/power/common.o
  CC      fs/tracefs/event_inode.o
  CC      sound/core/pcm_timer.o
  CC      drivers/tty/serial/8250/8250_pci.o
  AR      fs/debugfs/built-in.a
  CC      net/netfilter/nf_conntrack_proto_udp.o
  CC      kernel/time/clocksource.o
  CC      mm/list_lru.o
  CC      drivers/gpu/drm/ttm/ttm_bo_util.o
  CC      io_uring/timeout.o
  CC      drivers/char/virtio_console.o
  CC      fs/lockd/xdr4.o
  CC      block/early-lookup.o
  CC [M]  fs/efivarfs/file.o
  CC      drivers/acpi/acpica/exstorob.o
  CC      drivers/block/virtio_blk.o
  CC      drivers/base/regmap/regcache.o
  CC      lib/zstd/common/zstd_common.o
  CC      net/ipv4/tcp_input.o
  AR      lib/zstd/built-in.a
  CC      lib/cmdline.o
  CC      crypto/scompress.o
  CC      fs/9p/vfs_dir.o
  CC      arch/x86/kernel/cpu/centaur.o
  CC      drivers/gpu/drm/display/drm_dp_mst_topology.o
  CC      kernel/fork.o
  CC      lib/cpumask.o
  CC      arch/x86/kernel/time.o
  CC      net/ethtool/coalesce.o
  CC      drivers/pci/vc.o
  CC      drivers/base/component.o
  CC      fs/open.o
  CC      drivers/base/power/qos.o
  CC      drivers/tty/tty_port.o
  CC      drivers/acpi/acpica/exsystem.o
  CC      block/bsg.o
  CC      sound/core/seq_device.o
  CC      fs/9p/vfs_dentry.o
  CC      fs/9p/v9fs.o
  CC      fs/9p/fid.o
  CC      fs/ext4/namei.o
  CC      arch/x86/kernel/cpu/transmeta.o
  CC [M]  fs/efivarfs/super.o
  AR      sound/soc/built-in.a
  CC      drivers/tty/serial/8250/8250_pericom.o
  CC      crypto/algboss.o
  CC      net/core/filter.o
  CC      mm/workingset.o
  CC      kernel/cgroup/cgroup-v1.o
  CC      drivers/base/power/runtime.o
  AR      fs/tracefs/built-in.a
  CC      drivers/tty/tty_mutex.o
  CC      drivers/acpi/acpica/extrace.o
  CC      net/ipv4/tcp_output.o
  CC      lib/ctype.o
  AR      drivers/connector/built-in.a
  CC      kernel/cgroup/freezer.o
  CC      drivers/gpu/drm/display/drm_dsc_helper.o
  CC      kernel/time/jiffies.o
  CC      lib/dec_and_lock.o
  CC      fs/nfs/symlink.o
  CC      net/netfilter/nf_conntrack_proto_icmp.o
  CC      drivers/gpu/drm/ttm/ttm_bo_vm.o
  CC      drivers/pci/mmap.o
  CC      io_uring/fdinfo.o
  AR      sound/core/built-in.a
  CC      lib/decompress.o
  CC      drivers/gpu/drm/ttm/ttm_module.o
  AR      sound/atmel/built-in.a
  CC      drivers/char/hpet.o
  CC      sound/hda/hda_bus_type.o
  CC [M]  fs/efivarfs/vars.o
  CC      lib/decompress_bunzip2.o
  CC      lib/decompress_inflate.o
  CC      block/blk-cgroup.o
  CC      drivers/acpi/acpica/exutils.o
  CC      arch/x86/kernel/cpu/zhaoxin.o
  CC      fs/lockd/svc4proc.o
  AR      kernel/bpf/built-in.a
  CC      mm/debug.o
  CC      net/ipv4/tcp_timer.o
  CC      io_uring/cancel.o
  AR      drivers/block/built-in.a
  CC      drivers/gpu/drm/i915/i915_drm_client.o
  CC      sound/hda/hdac_bus.o
  CC      kernel/trace/trace_output.o
  CC      kernel/time/timer_list.o
  CC      fs/9p/xattr.o
  CC      crypto/testmgr.o
  CC      fs/nfs/unlink.o
  CC      drivers/base/regmap/regcache-rbtree.o
  AR      drivers/tty/serial/8250/built-in.a
  AR      drivers/tty/serial/built-in.a
  AR      drivers/gpu/drm/tilcdc/built-in.a
  CC      kernel/events/ring_buffer.o
  CC      drivers/tty/tty_ldsem.o
  CC      net/ethtool/pause.o
  CC      lib/decompress_unlz4.o
  CC      arch/x86/kernel/cpu/vortex.o
  AR      drivers/mfd/built-in.a
  CC      drivers/acpi/acpica/hwacpi.o
  CC      fs/ext4/page-io.o
  CC      fs/ext4/readpage.o
  CC      drivers/pci/devres.o
  AR      drivers/nfc/built-in.a
  CC      mm/gup.o
  CC      drivers/gpu/drm/display/drm_hdcp_helper.o
  CC      arch/x86/kernel/cpu/perfctr-watchdog.o
  CC      drivers/base/power/wakeirq.o
  CC      drivers/gpu/drm/ttm/ttm_execbuf_util.o
  CC      drivers/acpi/acpica/hwesleep.o
  CC      arch/x86/kernel/ioport.o
  CC      mm/mmap_lock.o
  CC      kernel/exec_domain.o
  CC      drivers/char/nvram.o
  CC      fs/ext4/resize.o
  CC      drivers/acpi/wakeup.o
  CC      block/blk-ioprio.o
  LD [M]  fs/efivarfs/efivarfs.o
  CC      drivers/acpi/sleep.o
  CC      crypto/cmac.o
  CC      net/ethtool/eee.o
  CC      net/core/sock_diag.o
  AR      sound/x86/built-in.a
  AR      fs/9p/built-in.a
  CC      kernel/time/timeconv.o
  CC      drivers/gpu/drm/i915/i915_getparam.o
  CC      kernel/cgroup/legacy_freezer.o
  CC      drivers/base/power/main.o
  CC      lib/decompress_unlzma.o
  CC      kernel/events/callchain.o
  CC      sound/hda/hdac_device.o
  CC      arch/x86/kernel/dumpstack.o
  CC      drivers/tty/tty_baudrate.o
  CC      drivers/base/regmap/regcache-flat.o
  CC      drivers/acpi/acpica/hwgpe.o
  CC      io_uring/waitid.o
  CC      net/netfilter/nf_conntrack_extend.o
  CC      net/ipv4/tcp_ipv4.o
  CC      arch/x86/kernel/cpu/vmware.o
  CC      kernel/events/hw_breakpoint.o
  CC      fs/lockd/procfs.o
  CC      kernel/time/timecounter.o
  CC      fs/nfs/write.o
  CC      crypto/hmac.o
  CC      kernel/events/uprobes.o
  CC      drivers/gpu/drm/ttm/ttm_range_manager.o
  CC      drivers/pci/proc.o
  CC      drivers/tty/tty_jobctrl.o
  CC      kernel/time/alarmtimer.o
  CC      sound/hda/hdac_sysfs.o
  CC      drivers/pci/pci-sysfs.o
  CC      block/blk-iolatency.o
  CC      net/ipv6/netfilter/ip6_tables.o
  CC      net/packet/af_packet.o
  AR      drivers/char/built-in.a
  CC      drivers/acpi/acpica/hwregs.o
  CC      kernel/trace/trace_seq.o
  AR      net/dsa/built-in.a
  CC      drivers/gpu/drm/virtio/virtgpu_drv.o
  CC      drivers/gpu/drm/display/drm_hdmi_helper.o
  CC      kernel/time/posix-timers.o
  CC      net/ethtool/tsinfo.o
  CC      drivers/base/regmap/regcache-maple.o
  CC      kernel/cgroup/pids.o
  CC      drivers/gpu/drm/ttm/ttm_resource.o
  CC      drivers/gpu/drm/i915/i915_ioctl.o
  CC      drivers/gpu/drm/display/drm_scdc_helper.o
  CC      kernel/panic.o
  CC      kernel/time/posix-cpu-timers.o
  CC      lib/decompress_unlzo.o
  CC      drivers/base/regmap/regmap-debugfs.o
  CC      net/ipv6/af_inet6.o
  CC      sound/hda/hdac_regmap.o
  CC      fs/read_write.o
  CC      fs/ext4/super.o
  CC      drivers/base/power/wakeup.o
  CC      crypto/crypto_null.o
  AR      fs/lockd/built-in.a
  CC      drivers/acpi/acpica/hwsleep.o
  AR      drivers/dax/hmem/built-in.a
  CC      drivers/dma-buf/dma-buf.o
  AR      drivers/dax/built-in.a
  CC      io_uring/register.o
  CC      kernel/cpu.o
  CC      drivers/tty/n_null.o
  CC      arch/x86/kernel/cpu/hypervisor.o
  CC      fs/file_table.o
  CC      kernel/trace/trace_stat.o
  CC      net/sunrpc/auth_gss/auth_gss.o
  CC      net/netfilter/nf_conntrack_acct.o
  CC      net/sunrpc/clnt.o
  CC      drivers/acpi/acpica/hwvalid.o
  CC      kernel/cgroup/rdma.o
  AR      drivers/cxl/core/built-in.a
  AR      drivers/cxl/built-in.a
  CC      net/sunrpc/xprt.o
  CC      fs/ext4/symlink.o
  CC      drivers/gpu/drm/virtio/virtgpu_kms.o
  CC      arch/x86/kernel/cpu/mshyperv.o
  CC      lib/decompress_unxz.o
  CC      mm/highmem.o
  CC      crypto/md5.o
  CC      net/ipv4/tcp_minisocks.o
  CC      drivers/base/core.o
  AR      drivers/gpu/drm/display/built-in.a
  CC      net/sunrpc/auth_gss/gss_mech_switch.o
  CC      net/netfilter/nf_conntrack_seqadj.o
  CC      arch/x86/kernel/cpu/debugfs.o
  AR      drivers/base/regmap/built-in.a
  CC      drivers/tty/pty.o
  CC      net/ipv6/netfilter/ip6table_filter.o
  CC      net/ipv4/tcp_cong.o
  CC      drivers/macintosh/mac_hid.o
  CC      drivers/gpu/drm/ttm/ttm_pool.o
  CC      drivers/gpu/drm/i915/i915_irq.o
  CC      sound/hda/hdac_controller.o
  CC      drivers/pci/slot.o
  CC      drivers/acpi/acpica/hwxface.o
  AR      net/wireless/tests/built-in.a
  CC      net/wireless/core.o
  CC      block/blk-iocost.o
  CC      net/ethtool/cabletest.o
  CC      kernel/time/posix-clock.o
  CC      drivers/acpi/device_sysfs.o
  CC      lib/decompress_unzstd.o
  CC      crypto/sha256_generic.o
  CC      kernel/trace/trace_printk.o
  CC      kernel/cgroup/cpuset.o
  CC      net/sunrpc/socklib.o
  AR      drivers/scsi/pcmcia/built-in.a
  CC      drivers/scsi/scsi.o
  CC      net/ipv6/anycast.o
  CC      drivers/acpi/acpica/hwxfsleep.o
  CC      drivers/pci/pci-acpi.o
  CC      drivers/dma-buf/dma-fence.o
  CC      drivers/gpu/drm/virtio/virtgpu_gem.o
  CC      kernel/time/itimer.o
  CC      mm/memory.o
  AR      drivers/macintosh/built-in.a
  CC      mm/mincore.o
  CC      drivers/base/power/wakeup_stats.o
  CC      net/ethtool/tunnels.o
  CC      arch/x86/kernel/cpu/bus_lock.o
  CC      io_uring/truncate.o
  CC      drivers/base/bus.o
  CC      drivers/tty/tty_audit.o
  CC      lib/dump_stack.o
  CC      drivers/acpi/acpica/hwpci.o
  CC      drivers/gpu/drm/ttm/ttm_device.o
  CC      drivers/dma-buf/dma-fence-array.o
  CC      crypto/sha512_generic.o
  CC      drivers/acpi/device_pm.o
  CC      sound/hda/hdac_stream.o
  CC      kernel/trace/pid_list.o
  CC      net/sunrpc/xprtsock.o
  CC      fs/nfs/namespace.o
  CC      drivers/base/power/trace.o
  CC      net/wireless/sysfs.o
  CC      net/ipv6/netfilter/ip6table_mangle.o
  CC      arch/x86/kernel/nmi.o
  CC      kernel/exit.o
  CC      net/netfilter/nf_conntrack_proto_icmpv6.o
  CC      drivers/acpi/acpica/nsaccess.o
  CC      sound/hda/array.o
  CC      mm/mlock.o
  CC      drivers/gpu/drm/virtio/virtgpu_vram.o
  CC      drivers/gpu/drm/i915/i915_mitigations.o
  CC      net/ipv6/ip6_output.o
  AR      drivers/gpu/drm/imx/built-in.a
  CC      kernel/cgroup/misc.o
  CC      drivers/tty/sysrq.o
  CC      kernel/softirq.o
  AR      kernel/events/built-in.a
  CC      drivers/base/dd.o
  CC      drivers/acpi/proc.o
  CC      io_uring/memmap.o
  CC      fs/nfs/mount_clnt.o
  CC      lib/earlycpio.o
  CC      kernel/time/clockevents.o
  CC      net/ethtool/fec.o
  CC      drivers/acpi/acpica/nsalloc.o
  CC      net/ipv4/tcp_metrics.o
  CC      arch/x86/kernel/cpu/capflags.o
  CC      drivers/pci/iomap.o
  CC      drivers/gpu/drm/ttm/ttm_sys_manager.o
  AR      arch/x86/kernel/cpu/built-in.a
  CC      lib/extable.o
  CC      drivers/pci/quirks.o
  CC      net/sunrpc/auth_gss/svcauth_gss.o
  CC      fs/super.o
  CC      crypto/sha3_generic.o
  AR      net/mac80211/tests/built-in.a
  CC      drivers/dma-buf/dma-fence-chain.o
  CC      net/mac80211/main.o
  CC      drivers/scsi/hosts.o
  AR      drivers/base/power/built-in.a
  AR      drivers/gpu/drm/panel/built-in.a
  CC      drivers/acpi/bus.o
  AR      drivers/gpu/drm/bridge/analogix/built-in.a
  AR      drivers/gpu/drm/bridge/cadence/built-in.a
  AR      drivers/gpu/drm/bridge/imx/built-in.a
  CC      kernel/trace/trace_sched_switch.o
  AR      drivers/gpu/drm/bridge/synopsys/built-in.a
  AR      drivers/gpu/drm/bridge/built-in.a
  CC      drivers/acpi/acpica/nsarguments.o
  CC      drivers/acpi/acpica/nsconvert.o
  CC      fs/ext4/sysfs.o
  CC      sound/hda/hdmi_chmap.o
  CC      fs/char_dev.o
  CC      lib/flex_proportions.o
  CC      net/wireless/radiotap.o
  CC      drivers/gpu/drm/ttm/ttm_backup.o
  CC      drivers/gpu/drm/virtio/virtgpu_display.o
  CC      kernel/cgroup/debug.o
  AR      net/packet/built-in.a
  CC      kernel/resource.o
  CC      kernel/time/tick-common.o
  CC      arch/x86/kernel/ldt.o
  CC      crypto/ecb.o
  CC      drivers/acpi/acpica/nsdump.o
  CC      net/ethtool/eeprom.o
  CC      drivers/scsi/scsi_ioctl.o
  CC      drivers/gpu/drm/i915/i915_module.o
  CC      io_uring/alloc_cache.o
  CC      io_uring/io-wq.o
  CC      drivers/dma-buf/dma-fence-unwrap.o
  CC      net/ethtool/stats.o
  CC      fs/nfs/nfstrace.o
  CC      net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
  CC      block/mq-deadline.o
  CC      net/ipv6/ip6_input.o
  CC      lib/idr.o
  CC      drivers/base/syscore.o
  AR      drivers/tty/built-in.a
  CC      drivers/gpu/drm/virtio/virtgpu_vq.o
  CC      drivers/dma-buf/dma-resv.o
  CC      net/netfilter/nf_conntrack_netlink.o
  CC      drivers/acpi/acpica/nseval.o
  CC      fs/stat.o
  AR      sound/xen/built-in.a
  CC      net/sunrpc/auth_gss/gss_rpc_upcall.o
  CC      arch/x86/kernel/setup.o
  CC      crypto/cbc.o
  CC      net/core/dev_ioctl.o
  CC      net/ipv6/addrconf.o
  CC      net/netlabel/netlabel_user.o
  CC      drivers/gpu/drm/ttm/ttm_agp_backend.o
  CC      net/sunrpc/sched.o
  CC      crypto/ctr.o
  CC      sound/hda/trace.o
  CC      sound/hda/hdac_component.o
  AR      drivers/gpu/drm/hisilicon/built-in.a
  CC      net/ipv4/tcp_fastopen.o
  CC      net/ipv6/netfilter/nf_conntrack_reasm.o
  AR      kernel/cgroup/built-in.a
  CC      lib/iomem_copy.o
  CC      drivers/acpi/acpica/nsinit.o
  CC      net/rfkill/core.o
  CC      net/9p/mod.o
  CC      io_uring/futex.o
  CC      crypto/gcm.o
  CC      kernel/trace/trace_nop.o
  CC      lib/irq_regs.o
  CC      drivers/dma-buf/sync_file.o
  CC      net/wireless/util.o
  CC      kernel/trace/blktrace.o
  CC      drivers/acpi/acpica/nsload.o
  CC      drivers/scsi/scsicam.o
  CC      drivers/gpu/drm/virtio/virtgpu_fence.o
  CC      kernel/time/tick-broadcast.o
  CC      net/dns_resolver/dns_key.o
  CC      lib/is_single_threaded.o
  CC      drivers/gpu/drm/i915/i915_params.o
  CC      net/handshake/alert.o
  CC      net/dns_resolver/dns_query.o
  CC      net/mac80211/status.o
  CC      mm/mmap.o
  CC      drivers/base/driver.o
  AR      drivers/gpu/drm/ttm/built-in.a
  CC      net/9p/client.o
  CC      drivers/acpi/acpica/nsnames.o
  CC      net/handshake/genl.o
  CC      net/ethtool/phc_vclocks.o
  CC      net/ipv6/netfilter/nf_reject_ipv6.o
  CC      kernel/sysctl.o
  CC      block/kyber-iosched.o
  CC      mm/mmu_gather.o
  CC      lib/klist.o
  AR      drivers/gpu/drm/mxsfb/built-in.a
  CC      lib/kobject.o
  CC      drivers/pci/pci-label.o
  CC      net/sunrpc/auth_gss/gss_rpc_xdr.o
  AR      drivers/dma-buf/built-in.a
  CC      net/ipv6/addrlabel.o
  CC      arch/x86/kernel/x86_init.o
  CC      net/netlabel/netlabel_kapi.o
  CC      crypto/ccm.o
  CC      drivers/base/class.o
  CC      mm/mprotect.o
  CC      drivers/scsi/scsi_error.o
  CC      sound/hda/hdac_i915.o
  CC      io_uring/epoll.o
  CC      fs/ext4/xattr.o
  CC      kernel/time/tick-broadcast-hrtimer.o
  CC      net/core/tso.o
  CC      net/rfkill/input.o
  CC      drivers/gpu/drm/virtio/virtgpu_object.o
  CC      drivers/acpi/acpica/nsobject.o
  CC      fs/exec.o
  CC      net/sunrpc/auth.o
  CC      crypto/aes_generic.o
  CC      kernel/trace/trace_events.o
  CC      net/9p/error.o
  CC      net/netlabel/netlabel_domainhash.o
  CC      drivers/gpu/drm/virtio/virtgpu_debugfs.o
  AR      net/dns_resolver/built-in.a
  CC      net/ipv6/netfilter/ip6t_ipv6header.o
  AR      drivers/gpu/drm/sysfb/built-in.a
  CC      drivers/pci/vgaarb.o
  CC      drivers/gpu/drm/i915/i915_pci.o
  CC      lib/kobject_uevent.o
  CC      kernel/time/tick-oneshot.o
  CC      net/handshake/netlink.o
  CC      kernel/capability.o
  CC      net/ipv4/tcp_rate.o
  CC      net/wireless/reg.o
  CC      drivers/base/platform.o
  CC      drivers/acpi/acpica/nsparse.o
  CC      arch/x86/kernel/i8259.o
  CC      net/sunrpc/auth_gss/trace.o
  CC      crypto/authenc.o
  CC      net/ethtool/mm.o
  CC      sound/hda/intel-dsp-config.o
  AR      net/rfkill/built-in.a
  CC      drivers/scsi/scsi_lib.o
  CC      fs/ext4/xattr_hurd.o
  CC      io_uring/napi.o
  AR      sound/virtio/built-in.a
  CC      fs/pipe.o
  CC      fs/nfs/export.o
  CC      net/core/sock_reuseport.o
  CC      net/netfilter/nf_conntrack_ftp.o
  CC      net/9p/protocol.o
  CC      kernel/time/tick-sched.o
  CC      drivers/acpi/acpica/nspredef.o
  CC      drivers/gpu/drm/virtio/virtgpu_plane.o
  CC      net/netlabel/netlabel_addrlist.o
  AR      drivers/gpu/drm/tiny/built-in.a
  CC      net/ipv6/netfilter/ip6t_REJECT.o
  AR      drivers/nvme/common/built-in.a
  AR      drivers/nvme/host/built-in.a
  AR      drivers/nvme/target/built-in.a
  AR      drivers/nvme/built-in.a
  CC      net/mac80211/driver-ops.o
  CC      net/ethtool/module.o
  CC      drivers/acpi/glue.o
  CC      mm/mremap.o
  CC      sound/sound_core.o
  CC      arch/x86/kernel/irqinit.o
  CC      block/blk-mq-debugfs.o
  CC      sound/hda/intel-nhlt.o
  CC      drivers/acpi/acpica/nsprepkg.o
  CC      drivers/ata/libata-core.o
  AR      drivers/pci/built-in.a
  CC      drivers/scsi/constants.o
  CC      drivers/gpu/drm/i915/i915_scatterlist.o
  CC      kernel/trace/trace_export.o
  CC      drivers/gpu/drm/virtio/virtgpu_ioctl.o
  CC      arch/x86/kernel/jump_label.o
  CC      kernel/time/timer_migration.o
  CC      fs/nfs/sysfs.o
  AR      drivers/net/phy/mediatek/built-in.a
  AR      drivers/net/phy/qcom/built-in.a
  CC      drivers/net/phy/realtek/realtek_main.o
  CC      drivers/ata/libata-scsi.o
  CC      fs/namei.o
  CC      lib/logic_pio.o
  CC      net/handshake/request.o
  CC      crypto/authencesn.o
  CC      drivers/base/cpu.o
  CC      net/ipv4/tcp_recovery.o
  CC      block/blk-pm.o
  CC      net/9p/trans_common.o
  CC      drivers/acpi/acpica/nsrepair.o
  CC      net/devres.o
  CC      net/mac80211/sta_info.o
  CC      sound/hda/intel-sdw-acpi.o
  CC      drivers/scsi/scsi_lib_dma.o
  CC      kernel/time/vsyscall.o
  CC      drivers/ata/libata-eh.o
  CC      mm/msync.o
  CC      arch/x86/kernel/irq_work.o
  CC      lib/maple_tree.o
  CC      net/mac80211/wep.o
  CC      arch/x86/kernel/probe_roms.o
  CC      drivers/gpu/drm/i915/i915_switcheroo.o
  CC      net/netlabel/netlabel_mgmt.o
  AR      drivers/gpu/drm/xlnx/built-in.a
  CC      net/sunrpc/auth_gss/gss_krb5_mech.o
  CC      mm/page_vma_mapped.o
  CC      net/ipv4/tcp_ulp.o
  AR      io_uring/built-in.a
  CC      net/handshake/tlshd.o
  CC      net/core/fib_notifier.o
  CC      drivers/base/firmware.o
  CC      drivers/acpi/acpica/nsrepair2.o
  AR      net/ipv6/netfilter/built-in.a
  CC      net/wireless/scan.o
  CC      net/ethtool/cmis_fw_update.o
  CC      net/9p/trans_fd.o
  CC      net/netfilter/nf_conntrack_irc.o
  CC      drivers/net/phy/mdio-boardinfo.o
  CC      drivers/gpu/drm/virtio/virtgpu_prime.o
  AR      sound/hda/built-in.a
  CC      kernel/ptrace.o
  CC      block/holder.o
  CC      sound/last.o
  CC      drivers/acpi/scan.o
  CC      drivers/ata/libata-transport.o
  CC      net/ipv4/tcp_offload.o
  AR      drivers/net/pse-pd/built-in.a
  CC      kernel/user.o
  CC      drivers/scsi/scsi_scan.o
  CC      kernel/trace/trace_event_perf.o
  CC      drivers/base/init.o
  CC      drivers/base/map.o
  CC      crypto/lzo.o
  CC      net/netlabel/netlabel_unlabeled.o
  CC      fs/nfs/fs_context.o
  CC      drivers/acpi/acpica/nssearch.o
  AR      drivers/net/phy/realtek/built-in.a
  CC      net/sunrpc/auth_gss/gss_krb5_seal.o
  CC      net/ipv4/tcp_plb.o
  AR      sound/built-in.a
  CC      drivers/gpu/drm/i915/i915_sysfs.o
  CC      drivers/net/mdio/acpi_mdio.o
  CC      kernel/trace/trace_events_filter.o
  CC      mm/pagewalk.o
  CC      mm/pgtable-generic.o
  CC      kernel/time/timekeeping_debug.o
  CC      net/ipv6/route.o
  CC      net/mac80211/aead_api.o
  AR      block/built-in.a
  CC      arch/x86/kernel/sys_ia32.o
  CC      drivers/net/mdio/fwnode_mdio.o
  CC      net/sunrpc/auth_null.o
  CC      drivers/net/phy/stubs.o
  CC      drivers/acpi/acpica/nsutils.o
  CC      drivers/acpi/acpica/nswalk.o
  CC      drivers/gpu/drm/virtio/virtgpu_trace_points.o
  CC      net/core/xdp.o
  CC      net/mac80211/wpa.o
  CC      drivers/base/devres.o
  CC      net/handshake/trace.o
  CC      crypto/lzo-rle.o
  GEN     drivers/scsi/scsi_devinfo_tbl.c
  CC      drivers/acpi/mipi-disco-img.o
  CC      drivers/gpu/drm/i915/i915_utils.o
  CC      net/ethtool/cmis_cdb.o
  CC      mm/rmap.o
  CC      fs/fcntl.o
  CC      net/wireless/nl80211.o
  CC      net/netfilter/nf_conntrack_sip.o
  CC      fs/ext4/xattr_trusted.o
  CC      fs/ioctl.o
  CC      fs/nfs/nfsroot.o
  CC      drivers/ata/libata-trace.o
  CC      drivers/acpi/acpica/nsxfeval.o
  AR      drivers/net/pcs/built-in.a
  CC      net/core/flow_offload.o
  CC      net/9p/trans_virtio.o
  CC      arch/x86/kernel/ksysfs.o
  CC      kernel/time/namespace.o
  CC      drivers/net/phy/mdio_devres.o
  CC      arch/x86/kernel/bootflag.o
  CC      arch/x86/kernel/e820.o
  CC      drivers/scsi/scsi_devinfo.o
  CC      arch/x86/kernel/pci-dma.o
  CC      net/sunrpc/auth_gss/gss_krb5_unseal.o
  CC      drivers/firewire/init_ohci1394_dma.o
  CC      crypto/rng.o
  CC      drivers/cdrom/cdrom.o
  CC      drivers/base/attribute_container.o
  CC      drivers/acpi/resource.o
  AR      drivers/gpu/drm/gud/built-in.a
  AR      drivers/net/mdio/built-in.a
  CC      crypto/drbg.o
  CC      arch/x86/kernel/quirks.o
  CC      drivers/gpu/drm/virtio/virtgpu_submit.o
  AR      drivers/gpu/drm/sitronix/built-in.a
  CC      kernel/signal.o
  CC      kernel/sys.o
  CC      net/ipv4/datagram.o
  CC      net/ipv4/raw.o
  CC      net/ethtool/pse-pd.o
  CC      drivers/acpi/acpica/nsxfname.o
  CC      net/netlabel/netlabel_cipso_v4.o
  CC      fs/ext4/xattr_user.o
  CC      drivers/gpu/drm/i915/intel_clock_gating.o
  CC      drivers/scsi/scsi_sysctl.o
  CC      net/ipv6/ip6_fib.o
  CC      kernel/trace/trace_events_trigger.o
  CC      net/core/gro.o
  CC      drivers/base/transport_class.o
  AR      kernel/time/built-in.a
  CC      mm/vmalloc.o
  CC      net/socket.o
  CC      arch/x86/kernel/kdebugfs.o
  AR      drivers/firewire/built-in.a
  AR      drivers/auxdisplay/built-in.a
  CC      drivers/pcmcia/cs.o
  CC      drivers/net/phy/phy.o
  AR      drivers/gpu/drm/solomon/built-in.a
  CC      fs/nfs/sysctl.o
  CC      drivers/acpi/acpica/nsxfobj.o
  CC      net/ipv6/ipv6_sockglue.o
  CC      drivers/acpi/acpi_processor.o
  CC      drivers/gpu/drm/i915/intel_cpu_info.o
  CC      fs/nfs/nfs3super.o
  CC      kernel/umh.o
  AR      drivers/net/ethernet/3com/built-in.a
  CC      drivers/net/ethernet/8390/ne2k-pci.o
  CC      drivers/net/phy/phy-c45.o
  AR      drivers/net/ethernet/adaptec/built-in.a
  AR      net/handshake/built-in.a
  CC      net/sysctl_net.o
  CC      drivers/gpu/drm/i915/intel_device_info.o
  CC      net/mac80211/scan.o
  CC      drivers/base/topology.o
  CC      net/sunrpc/auth_gss/gss_krb5_wrap.o
  CC      mm/vma.o
  CC      drivers/net/ethernet/8390/8390.o
  AR      drivers/net/wireless/admtek/built-in.a
  AR      drivers/gpu/drm/virtio/built-in.a
  CC      drivers/acpi/acpica/psargs.o
  AR      drivers/net/wireless/ath/built-in.a
  CC      crypto/jitterentropy.o
  AR      drivers/net/wireless/atmel/built-in.a
  CC      net/ipv6/ndisc.o
  AR      drivers/net/wireless/broadcom/built-in.a
  AR      drivers/net/wireless/intel/built-in.a
  AR      drivers/net/wireless/intersil/built-in.a
  AR      drivers/net/wireless/marvell/built-in.a
  CC      drivers/scsi/scsi_proc.o
  CC      crypto/jitterentropy-kcapi.o
  AR      net/9p/built-in.a
  CC      crypto/ghash-generic.o
  AR      drivers/net/wireless/mediatek/built-in.a
  CC      fs/ext4/fast_commit.o
  CC      net/ipv6/udp.o
  AR      drivers/net/wireless/microchip/built-in.a
  AR      drivers/net/wireless/purelifi/built-in.a
  CC      crypto/hash_info.o
  AR      drivers/net/wireless/quantenna/built-in.a
  AR      drivers/net/wireless/ralink/built-in.a
  CC      drivers/base/container.o
  AR      drivers/net/wireless/realtek/built-in.a
  AR      drivers/net/wireless/rsi/built-in.a
  AR      drivers/net/wireless/silabs/built-in.a
  AR      drivers/net/wireless/st/built-in.a
  AR      drivers/net/wireless/ti/built-in.a
  AR      drivers/net/wireless/zydas/built-in.a
  AR      drivers/net/wireless/virtual/built-in.a
  AR      drivers/net/wireless/built-in.a
  CC      arch/x86/kernel/alternative.o
  CC      arch/x86/kernel/i8253.o
  CC      net/ethtool/plca.o
  CC      drivers/base/property.o
  CC      drivers/acpi/processor_core.o
  CC      kernel/trace/trace_eprobe.o
  CC      fs/readdir.o
  CC      drivers/acpi/acpica/psloop.o
  CC      drivers/scsi/scsi_debugfs.o
  CC      net/netlabel/netlabel_calipso.o
  CC      drivers/ata/libata-sata.o
  CC      fs/ext4/orphan.o
  CC      crypto/rsapubkey.asn1.o
  CC      net/netfilter/nf_nat_core.o
  CC      net/ipv6/udplite.o
  CC      crypto/rsaprivkey.asn1.o
  CC      drivers/pcmcia/socket_sysfs.o
  AR      crypto/built-in.a
  CC      arch/x86/kernel/hw_breakpoint.o
  CC      drivers/acpi/acpica/psobject.o
  CC      fs/select.o
  CC      mm/process_vm_access.o
  CC      net/sunrpc/auth_tls.o
  CC      net/ethtool/phy.o
  CC      kernel/workqueue.o
  AR      drivers/cdrom/built-in.a
  CC      net/ipv4/udp.o
  CC      fs/nfs/nfs3client.o
  CC      net/ipv6/raw.o
  CC      mm/page_alloc.o
  CC      net/netfilter/nf_nat_proto.o
  CC [M]  drivers/gpu/drm/scheduler/sched_main.o
  CC      drivers/gpu/drm/i915/intel_memory_region.o
  CC      drivers/gpu/drm/i915/intel_pcode.o
  CC      net/sunrpc/auth_gss/gss_krb5_crypto.o
  CC      fs/nfs/nfs3proc.o
  CC      net/core/netdev-genl.o
  CC      drivers/acpi/acpica/psopcode.o
  AR      drivers/net/ethernet/8390/built-in.a
  AR      drivers/net/ethernet/agere/built-in.a
  CC      net/ethtool/tsconfig.o
  AR      drivers/net/ethernet/alacritech/built-in.a
  AR      drivers/net/ethernet/alteon/built-in.a
  AR      drivers/net/ethernet/amazon/built-in.a
  AR      drivers/net/ethernet/amd/built-in.a
  AR      drivers/net/ethernet/aquantia/built-in.a
  AR      drivers/net/ethernet/arc/built-in.a
  CC      drivers/scsi/scsi_trace.o
  AR      drivers/net/ethernet/asix/built-in.a
  CC      fs/dcache.o
  AR      drivers/net/ethernet/atheros/built-in.a
  AR      drivers/net/ethernet/cadence/built-in.a
  CC      drivers/net/phy/phy-core.o
  CC      drivers/net/ethernet/broadcom/bnx2.o
  CC      net/mac80211/offchannel.o
  CC      drivers/pcmcia/cardbus.o
  AR      drivers/net/usb/built-in.a
  CC      drivers/acpi/acpica/psopinfo.o
  CC      fs/nfs/nfs3xdr.o
  CC [M]  drivers/gpu/drm/scheduler/sched_fence.o
  CC      net/ipv4/udplite.o
  CC      net/sunrpc/auth_unix.o
  CC      net/netfilter/nf_nat_helper.o
  CC      lib/memcat_p.o
  CC      arch/x86/kernel/tsc.o
  AR      net/netlabel/built-in.a
  CC      arch/x86/kernel/tsc_msr.o
  CC      drivers/gpu/drm/i915/intel_region_ttm.o
  CC      mm/page_frag_cache.o
  CC      drivers/ata/libata-sff.o
  CC      fs/inode.o
  AR      drivers/net/ethernet/brocade/built-in.a
  CC      net/mac80211/ht.o
  CC      drivers/base/cacheinfo.o
  CC      net/core/netdev-genl-gen.o
  CC      drivers/acpi/acpica/psparse.o
  CC      kernel/trace/trace_kprobe.o
  CC      drivers/acpi/acpica/psscope.o
  CC      net/wireless/mlme.o
  CC      net/mac80211/agg-tx.o
  CC      drivers/pcmcia/ds.o
  CC      drivers/scsi/scsi_logging.o
  CC      drivers/net/ethernet/broadcom/tg3.o
  CC      net/sunrpc/svc.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  CC      fs/nfs/nfs3acl.o
  CC      net/wireless/ibss.o
  GEN     xe_wa_oob.c xe_wa_oob.h
  CC [M]  drivers/gpu/drm/xe/xe_bb.o
  AR      net/ethtool/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_bo.o
  CC      fs/ext4/acl.o
  CC      drivers/pcmcia/pcmcia_resource.o
  CC      drivers/ata/libata-pmp.o
  AR      drivers/net/ethernet/cavium/common/built-in.a
  AR      drivers/net/ethernet/cavium/thunder/built-in.a
  CC      net/sunrpc/svcsock.o
  AR      drivers/net/ethernet/cavium/liquidio/built-in.a
  CC      drivers/acpi/acpica/pstree.o
  AR      drivers/net/ethernet/cavium/octeon/built-in.a
  AR      drivers/net/ethernet/cavium/built-in.a
  CC      net/sunrpc/auth_gss/gss_krb5_keys.o
  CC      drivers/net/phy/phy_device.o
  CC      fs/nfs/nfs4proc.o
  CC      fs/nfs/nfs4xdr.o
  CC [M]  drivers/gpu/drm/scheduler/sched_entity.o
  CC      drivers/scsi/scsi_pm.o
  CC      lib/nmi_backtrace.o
  CC      fs/ext4/xattr_security.o
  CC      drivers/net/mii.o
  CC      drivers/base/swnode.o
  CC      net/netfilter/nf_nat_masquerade.o
  CC      net/core/gso.o
  AR      drivers/net/ethernet/chelsio/built-in.a
  CC      drivers/acpi/processor_pdc.o
  CC      net/mac80211/agg-rx.o
  CC      drivers/gpu/drm/i915/intel_runtime_pm.o
  CC      drivers/usb/common/common.o
  CC      drivers/input/serio/serio.o
  CC      arch/x86/kernel/io_delay.o
  CC      drivers/acpi/acpica/psutils.o
  CC      net/ipv6/icmp.o
  CC      drivers/net/loopback.o
  CC      drivers/net/phy/linkmode.o
  CC      drivers/pcmcia/cistpl.o
  CC      kernel/trace/error_report-traces.o
  CC      fs/nfs/nfs4state.o
  CC      drivers/usb/common/debug.o
  CC      net/sunrpc/svcauth.o
  CC      lib/objpool.o
  CC      arch/x86/kernel/rtc.o
  LD [M]  drivers/gpu/drm/scheduler/gpu-sched.o
  CC      drivers/pcmcia/pcmcia_cis.o
  CC      drivers/acpi/acpica/pswalk.o
  CC      drivers/scsi/scsi_bsg.o
  CC      drivers/ata/libata-acpi.o
  CC      net/ipv6/mcast.o
  AR      fs/ext4/built-in.a
  CC      drivers/input/keyboard/atkbd.o
  CC      drivers/input/mouse/psmouse-base.o
  AR      drivers/input/joystick/built-in.a
  AR      drivers/usb/common/built-in.a
  CC      drivers/base/faux.o
  CC      drivers/usb/core/usb.o
  CC      net/mac80211/vht.o
  CC      drivers/input/serio/i8042.o
  CC      drivers/acpi/acpica/psxface.o
  CC      mm/init-mm.o
  CC      drivers/ata/libata-pata-timings.o
  AR      net/sunrpc/auth_gss/built-in.a
  CC      kernel/trace/power-traces.o
  CC      net/core/net-sysfs.o
  CC      lib/plist.o
  CC      drivers/net/phy/phy_link_topology.o
  CC      drivers/net/phy/phy_package.o
  CC      drivers/acpi/acpica/rsaddr.o
  CC      lib/radix-tree.o
  CC      arch/x86/kernel/resource.o
  CC      drivers/gpu/drm/i915/intel_sbi.o
  CC [M]  drivers/gpu/drm/xe/xe_bo_evict.o
  AR      drivers/usb/phy/built-in.a
  CC      drivers/scsi/scsi_common.o
  CC      fs/nfs/nfs4renewd.o
  CC      drivers/base/auxiliary.o
  CC      drivers/acpi/ec.o
  CC      drivers/input/serio/serport.o
  CC [M]  drivers/gpu/drm/xe/xe_devcoredump.o
  CC      net/ipv4/udp_offload.o
  CC      net/netfilter/nf_nat_ftp.o
  AS      arch/x86/kernel/irqflags.o
  CC      arch/x86/kernel/static_call.o
  CC      net/ipv6/reassembly.o
  CC      mm/memblock.o
  CC      drivers/acpi/acpica/rscalc.o
  CC      drivers/rtc/lib.o
  CC      net/core/hotdata.o
  CC [M]  drivers/gpu/drm/xe/xe_device.o
  CC      drivers/pcmcia/rsrc_mgr.o
  CC      net/ipv6/tcp_ipv6.o
  CC      lib/ratelimit.o
  CC      drivers/gpu/drm/drm_atomic.o
  AR      drivers/net/ethernet/cisco/built-in.a
  CC      drivers/scsi/scsi_transport_spi.o
  CC      net/sunrpc/svcauth_unix.o
  CC      kernel/trace/rpm-traces.o
  CC      drivers/ata/ahci.o
  CC      drivers/base/devtmpfs.o
  AR      drivers/input/keyboard/built-in.a
  CC      drivers/gpu/drm/drm_atomic_uapi.o
  CC      arch/x86/kernel/process.o
  CC      drivers/input/mouse/synaptics.o
  CC      arch/x86/kernel/ptrace.o
  CC      net/ipv4/arp.o
  CC      drivers/usb/core/hub.o
  CC      drivers/input/mouse/focaltech.o
  CC      drivers/acpi/acpica/rscreate.o
  CC      drivers/usb/mon/mon_main.o
  CC      drivers/net/phy/phy_caps.o
  CC      net/wireless/sme.o
  CC      drivers/usb/host/pci-quirks.o
  CC      lib/rbtree.o
  CC      drivers/usb/host/ehci-hcd.o
  CC      drivers/gpu/drm/i915/intel_step.o
  CC      drivers/rtc/class.o
  CC      drivers/input/serio/libps2.o
  CC      drivers/input/mouse/alps.o
  CC      drivers/usb/mon/mon_stat.o
  CC      drivers/usb/mon/mon_text.o
  CC      drivers/pcmcia/rsrc_nonstatic.o
  CC      drivers/usb/core/hcd.o
  CC      drivers/acpi/acpica/rsdumpinfo.o
  CC      drivers/usb/mon/mon_bin.o
  CC      fs/attr.o
  CC      lib/seq_buf.o
  CC      net/netfilter/nf_nat_irc.o
  CC      kernel/pid.o
  CC      net/mac80211/he.o
  CC      net/wireless/chan.o
  CC      drivers/base/module.o
  CC      drivers/usb/host/ehci-pci.o
  CC      drivers/acpi/acpica/rsinfo.o
  CC      drivers/scsi/virtio_scsi.o
  CC      kernel/trace/trace_dynevent.o
  CC      kernel/trace/trace_probe.o
  CC      drivers/usb/host/ohci-hcd.o
  CC      mm/slub.o
  CC      kernel/task_work.o
  CC      drivers/rtc/interface.o
  CC      drivers/acpi/dock.o
  CC [M]  drivers/gpu/drm/xe/xe_device_sysfs.o
  CC      drivers/ata/libahci.o
  CC      net/sunrpc/addr.o
  CC      drivers/net/phy/mdio_bus.o
  AR      drivers/input/serio/built-in.a
  CC      net/wireless/ethtool.o
  CC      kernel/extable.o
  CC [M]  drivers/gpu/drm/xe/xe_dma_buf.o
  CC      net/core/netdev_rx_queue.o
  CC      drivers/usb/class/usblp.o
  CC      drivers/acpi/acpica/rsio.o
  CC      drivers/usb/storage/scsiglue.o
  CC      lib/siphash.o
  CC      drivers/base/auxiliary_sysfs.o
  CC      drivers/pcmcia/yenta_socket.o
  CC      drivers/acpi/acpica/rsirq.o
  AR      drivers/net/ethernet/cortina/built-in.a
  CC      drivers/gpu/drm/drm_auth.o
  CC      drivers/gpu/drm/i915/intel_uncore.o
  CC      drivers/net/netconsole.o
  CC      net/mac80211/s1g.o
  CC      drivers/acpi/acpica/rslist.o
  CC      arch/x86/kernel/tls.o
  AR      drivers/usb/misc/built-in.a
  CC      net/sunrpc/rpcb_clnt.o
  CC      net/wireless/mesh.o
  CC      net/wireless/ap.o
  AR      drivers/usb/mon/built-in.a
  CC      net/wireless/trace.o
  AR      drivers/input/tablet/built-in.a
  CC      drivers/scsi/sd.o
  CC      drivers/net/phy/mdio_device.o
  CC      net/mac80211/ibss.o
  CC      drivers/base/devcoredump.o
  CC      drivers/usb/host/ohci-pci.o
  CC      lib/string.o
  CC      drivers/rtc/nvmem.o
  CC      net/netfilter/nf_nat_sip.o
  CC      drivers/acpi/acpica/rsmemory.o
  CC      net/ipv4/icmp.o
  CC      net/ipv6/ping.o
  CC      net/sunrpc/timer.o
  CC      drivers/net/virtio_net.o
  CC      lib/timerqueue.o
  CC      drivers/gpu/drm/i915/intel_uncore_trace.o
  CC      drivers/input/mouse/byd.o
  CC [M]  drivers/gpu/drm/xe/xe_drm_client.o
  CC      drivers/input/mouse/logips2pp.o
  CC      arch/x86/kernel/step.o
  AR      drivers/usb/class/built-in.a
  CC      drivers/scsi/sr.o
  CC      mm/madvise.o
  CC      lib/union_find.o
  CC      drivers/acpi/acpica/rsmisc.o
  CC      drivers/acpi/acpica/rsserial.o
  CC      drivers/usb/storage/protocol.o
  CC      lib/vsprintf.o
  CC      net/core/net-procfs.o
  AR      drivers/net/ethernet/dec/tulip/built-in.a
  AR      drivers/net/ethernet/dec/built-in.a
  CC      drivers/gpu/drm/drm_blend.o
  AR      drivers/input/touchscreen/built-in.a
  CC      fs/nfs/nfs4super.o
  CC      drivers/base/platform-msi.o
  CC      drivers/net/net_failover.o
  CC      drivers/acpi/acpica/rsutils.o
  CC      drivers/input/mouse/lifebook.o
  CC      drivers/rtc/dev.o
  CC      net/ipv4/devinet.o
  CC      kernel/trace/trace_uprobe.o
  CC      drivers/net/phy/swphy.o
  CC      drivers/scsi/sr_ioctl.o
  CC      drivers/usb/host/uhci-hcd.o
  AR      drivers/pcmcia/built-in.a
  CC      drivers/net/phy/fixed_phy.o
  CC      net/netfilter/x_tables.o
  CC      drivers/usb/storage/transport.o
  CC      drivers/usb/core/urb.o
  AR      drivers/net/ethernet/dlink/built-in.a
  CC      net/mac80211/iface.o
  CC      arch/x86/kernel/i8237.o
  CC      drivers/ata/ata_piix.o
  CC [M]  drivers/gpu/drm/xe/xe_eu_stall.o
  CC      drivers/base/physical_location.o
  CC      drivers/acpi/acpica/rsxface.o
  CC      kernel/params.o
  CC      drivers/usb/early/ehci-dbgp.o
  CC      net/ipv4/af_inet.o
  CC      drivers/ata/pata_amd.o
  CC      net/sunrpc/xdr.o
  CC      lib/win_minmax.o
  CC      drivers/gpu/drm/drm_bridge.o
  CC      drivers/input/mouse/trackpoint.o
  CC      net/ipv6/exthdrs.o
  CC      kernel/trace/rethook.o
  CC      drivers/rtc/proc.o
  CC      arch/x86/kernel/stacktrace.o
  CC      fs/nfs/nfs4file.o
  CC      drivers/acpi/acpica/tbdata.o
  CC      drivers/acpi/pci_root.o
  CC      kernel/kthread.o
  CC      drivers/base/trace.o
  CC      net/core/netpoll.o
  CC      drivers/gpu/drm/drm_cache.o
  CC      drivers/usb/storage/usb.o
  CC      drivers/gpu/drm/i915/intel_wakeref.o
  CC      drivers/scsi/sr_vendor.o
  CC      drivers/ata/pata_oldpiix.o
  CC      fs/bad_inode.o
  CC      arch/x86/kernel/reboot.o
  CC      drivers/usb/core/message.o
  CC      net/ipv4/igmp.o
  CC      net/sunrpc/sunrpc_syms.o
  CC      drivers/gpu/drm/drm_color_mgmt.o
  AR      drivers/net/phy/built-in.a
  CC      net/ipv4/fib_frontend.o
  CC      drivers/i2c/algos/i2c-algo-bit.o
  AR      drivers/i3c/built-in.a
  CC      drivers/i2c/busses/i2c-i801.o
  AR      drivers/i2c/muxes/built-in.a
  CC      drivers/input/mouse/cypress_ps2.o
  CC      drivers/rtc/sysfs.o
  CC      drivers/usb/core/driver.o
  CC      drivers/gpu/drm/drm_connector.o
  CC      lib/xarray.o
  CC      drivers/usb/host/xhci.o
  AR      drivers/usb/early/built-in.a
  CC      fs/nfs/delegation.o
  CC      drivers/acpi/acpica/tbfadt.o
  CC      drivers/acpi/pci_link.o
  CC      net/mac80211/link.o
  AR      drivers/media/i2c/built-in.a
  AR      drivers/media/tuners/built-in.a
  CC      fs/nfs/nfs4idmap.o
  AR      drivers/media/rc/keymaps/built-in.a
  AR      drivers/media/rc/built-in.a
  CC      drivers/gpu/drm/drm_crtc.o
  AR      drivers/media/common/b2c2/built-in.a
  AR      drivers/media/platform/allegro-dvt/built-in.a
  CC      drivers/gpu/drm/i915/vlv_iosf_sb.o
  AR      drivers/media/common/saa7146/built-in.a
  AR      drivers/media/platform/amlogic/meson-ge2d/built-in.a
  AR      drivers/media/common/siano/built-in.a
  AR      drivers/media/platform/amlogic/built-in.a
  AR      drivers/media/common/v4l2-tpg/built-in.a
  AR      drivers/media/platform/amphion/built-in.a
  CC      drivers/scsi/sg.o
  AR      drivers/media/common/videobuf2/built-in.a
  AR      drivers/media/platform/aspeed/built-in.a
  AR      drivers/media/common/built-in.a
  AR      drivers/base/built-in.a
  AR      drivers/media/platform/atmel/built-in.a
  CC      net/ipv4/fib_semantics.o
  AR      drivers/media/platform/broadcom/built-in.a
  CC      lib/lockref.o
  AR      drivers/media/platform/cadence/built-in.a
  CC      drivers/ata/pata_sch.o
  AR      drivers/media/platform/chips-media/coda/built-in.a
  CC      drivers/input/mouse/psmouse-smbus.o
  AR      drivers/media/platform/chips-media/wave5/built-in.a
  AR      drivers/media/platform/chips-media/built-in.a
  AR      drivers/media/platform/imagination/built-in.a
  AR      drivers/media/platform/intel/built-in.a
  AR      drivers/media/platform/marvell/built-in.a
  AR      drivers/media/platform/mediatek/jpeg/built-in.a
  AR      drivers/media/platform/mediatek/mdp/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/common/built-in.a
  CC      drivers/acpi/acpica/tbfind.o
  AR      drivers/media/platform/mediatek/vcodec/encoder/built-in.a
  AR      kernel/trace/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/decoder/built-in.a
  CC      net/netfilter/xt_tcpudp.o
  AR      drivers/media/platform/mediatek/vcodec/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_exec.o
  CC      mm/page_io.o
  AR      drivers/media/platform/mediatek/vpu/built-in.a
  CC      drivers/usb/storage/initializers.o
  CC      arch/x86/kernel/msr.o
  AR      drivers/media/platform/mediatek/mdp3/built-in.a
  AR      drivers/media/platform/mediatek/built-in.a
  AR      drivers/media/platform/microchip/built-in.a
  CC      drivers/gpu/drm/drm_displayid.o
  CC      fs/nfs/callback.o
  CC      drivers/rtc/rtc-mc146818-lib.o
  AR      drivers/media/platform/nuvoton/built-in.a
  AR      drivers/media/platform/nvidia/tegra-vde/built-in.a
  AR      drivers/net/ethernet/emulex/built-in.a
  AR      drivers/media/platform/nvidia/built-in.a
  CC      drivers/usb/core/config.o
  AR      drivers/media/platform/nxp/dw100/built-in.a
  CC      net/ipv4/fib_trie.o
  AR      drivers/media/platform/nxp/imx-jpeg/built-in.a
  CC      kernel/sys_ni.o
  AR      drivers/media/platform/nxp/imx8-isi/built-in.a
  AR      drivers/media/platform/nxp/built-in.a
  CC      net/ipv6/datagram.o
  AR      drivers/media/platform/qcom/camss/built-in.a
  AR      drivers/media/platform/qcom/iris/built-in.a
  CC      drivers/acpi/pci_irq.o
  AR      drivers/media/platform/qcom/venus/built-in.a
  AR      drivers/media/platform/qcom/built-in.a
  AR      drivers/media/platform/raspberrypi/pisp_be/built-in.a
  AR      drivers/media/platform/raspberrypi/rp1-cfe/built-in.a
  AR      drivers/media/platform/raspberrypi/built-in.a
  AR      drivers/i2c/algos/built-in.a
  CC      drivers/gpu/drm/i915/vlv_suspend.o
  CC      net/core/fib_rules.o
  AR      drivers/media/platform/renesas/rcar-vin/built-in.a
  AR      drivers/media/platform/renesas/rzg2l-cru/built-in.a
  AR      drivers/media/platform/renesas/vsp1/built-in.a
  AR      drivers/media/platform/renesas/built-in.a
  CC      net/wireless/ocb.o
  CC      drivers/acpi/acpica/tbinstal.o
  AR      drivers/media/platform/rockchip/rga/built-in.a
  AR      drivers/media/platform/rockchip/rkisp1/built-in.a
  AR      drivers/media/platform/rockchip/built-in.a
  AR      drivers/media/platform/samsung/exynos-gsc/built-in.a
  CC      mm/swap_state.o
  AR      drivers/media/platform/samsung/exynos4-is/built-in.a
  AR      drivers/media/platform/samsung/s3c-camif/built-in.a
  CC      drivers/ata/pata_mpiix.o
  AR      drivers/net/ethernet/engleder/built-in.a
  AR      drivers/media/platform/samsung/s5p-g2d/built-in.a
  CC      fs/file.o
  AR      drivers/media/platform/samsung/s5p-jpeg/built-in.a
  AR      drivers/media/platform/samsung/s5p-mfc/built-in.a
  AR      drivers/media/platform/samsung/built-in.a
  AR      drivers/media/platform/st/sti/bdisp/built-in.a
  CC      fs/nfs/callback_xdr.o
  CC      kernel/nsproxy.o
  AR      drivers/media/platform/st/sti/c8sectpfe/built-in.a
  CC      drivers/acpi/acpi_apd.o
  AR      drivers/media/platform/st/sti/delta/built-in.a
  AR      drivers/media/platform/st/sti/hva/built-in.a
  AR      drivers/media/platform/st/stm32/built-in.a
  AR      drivers/media/platform/st/built-in.a
  CC      drivers/ata/ata_generic.o
  AR      drivers/i2c/busses/built-in.a
  CC      net/ipv6/ip6_flowlabel.o
  CC      drivers/i2c/i2c-boardinfo.o
  AR      drivers/media/platform/sunxi/sun4i-csi/built-in.a
  CC      net/wireless/pmsr.o
  AR      drivers/media/platform/sunxi/sun6i-csi/built-in.a
  CC      net/ipv6/inet6_connection_sock.o
  AR      drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-di/built-in.a
  CC      drivers/i2c/i2c-core-base.o
  AR      drivers/media/platform/sunxi/sun8i-rotate/built-in.a
  AR      drivers/media/platform/sunxi/built-in.a
  AR      drivers/input/mouse/built-in.a
  CC      mm/swapfile.o
  AR      drivers/input/misc/built-in.a
  CC      drivers/input/input.o
  AR      drivers/media/platform/synopsys/hdmirx/built-in.a
  CC      drivers/usb/storage/sierra_ms.o
  AR      drivers/media/platform/synopsys/built-in.a
  AR      drivers/media/platform/ti/am437x/built-in.a
  CC      kernel/notifier.o
  AR      drivers/media/pci/ttpci/built-in.a
  AR      drivers/media/platform/ti/cal/built-in.a
  CC      drivers/acpi/acpica/tbprint.o
  CC      drivers/rtc/rtc-cmos.o
  AR      drivers/media/pci/b2c2/built-in.a
  AR      drivers/media/platform/ti/vpe/built-in.a
  AR      drivers/media/pci/pluto2/built-in.a
  AR      drivers/media/platform/ti/davinci/built-in.a
  AR      drivers/media/pci/dm1105/built-in.a
  AR      drivers/media/platform/ti/j721e-csi2rx/built-in.a
  CC      arch/x86/kernel/cpuid.o
  AR      drivers/media/pci/pt1/built-in.a
  AR      drivers/media/platform/ti/omap/built-in.a
  AR      drivers/media/pci/pt3/built-in.a
  AR      drivers/media/platform/ti/omap3isp/built-in.a
  AR      drivers/media/platform/ti/built-in.a
  CC      lib/bcd.o
  AR      drivers/media/pci/mantis/built-in.a
  AR      drivers/media/pci/ngene/built-in.a
  AR      drivers/media/platform/verisilicon/built-in.a
  AR      drivers/media/platform/via/built-in.a
  AR      drivers/media/pci/ddbridge/built-in.a
  CC      lib/sort.o
  CC      drivers/acpi/acpica/tbutils.o
  AR      drivers/media/platform/xilinx/built-in.a
  AR      drivers/media/pci/saa7146/built-in.a
  AR      drivers/media/platform/built-in.a
  AR      drivers/media/pci/smipcie/built-in.a
  AR      drivers/media/pci/netup_unidvb/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_exec_queue.o
  AR      drivers/media/pci/intel/ipu3/built-in.a
  AR      drivers/media/pci/intel/ivsc/built-in.a
  AR      drivers/media/pci/intel/built-in.a
  AR      drivers/media/pci/built-in.a
  CC      net/sunrpc/cache.o
  AR      drivers/media/usb/b2c2/built-in.a
  AR      drivers/media/usb/dvb-usb/built-in.a
  CC      drivers/gpu/drm/drm_drv.o
  AR      drivers/media/usb/dvb-usb-v2/built-in.a
  AR      drivers/media/usb/s2255/built-in.a
  CC      drivers/usb/core/file.o
  AR      drivers/media/usb/siano/built-in.a
  AR      drivers/media/usb/ttusb-budget/built-in.a
  CC      net/ipv6/udp_offload.o
  AR      drivers/media/usb/ttusb-dec/built-in.a
  AR      drivers/media/usb/built-in.a
  AR      drivers/media/mmc/siano/built-in.a
  AR      drivers/media/mmc/built-in.a
  CC      drivers/usb/host/xhci-mem.o
  AR      drivers/media/firewire/built-in.a
  CC      lib/parser.o
  AR      drivers/media/spi/built-in.a
  AR      drivers/media/test-drivers/built-in.a
  AR      drivers/media/built-in.a
  CC      drivers/input/input-compat.o
  CC      drivers/usb/storage/option_ms.o
  AR      drivers/net/ethernet/ezchip/built-in.a
  CC      drivers/scsi/scsi_sysfs.o
  CC      drivers/usb/core/buffer.o
  CC      fs/filesystems.o
  CC      net/ipv4/fib_notifier.o
  CC      drivers/acpi/acpica/tbxface.o
  CC      drivers/usb/core/sysfs.o
  CC      drivers/usb/host/xhci-ext-caps.o
  CC      fs/namespace.o
  CC      net/netfilter/xt_CONNSECMARK.o
  GEN     net/wireless/shipped-certs.c
  AR      drivers/ata/built-in.a
  CC      drivers/acpi/acpi_platform.o
  AR      drivers/pps/clients/built-in.a
  CC      drivers/pps/pps.o
  CC      arch/x86/kernel/early-quirks.o
  CC      arch/x86/kernel/smp.o
  CC [M]  drivers/gpu/drm/xe/xe_execlist.o
  CC      drivers/gpu/drm/i915/soc/intel_dram.o
  CC      drivers/usb/host/xhci-ring.o
  CC      drivers/ptp/ptp_clock.o
  CC      lib/debug_locks.o
  CC      drivers/gpu/drm/i915/soc/intel_gmch.o
  CC      kernel/ksysfs.o
  AR      drivers/net/ethernet/fujitsu/built-in.a
  CC      net/sunrpc/rpc_pipe.o
  CC      drivers/input/input-mt.o
  CC [M]  drivers/gpu/drm/xe/xe_force_wake.o
  CC      drivers/acpi/acpica/tbxfload.o
  CC      lib/random32.o
  AR      drivers/rtc/built-in.a
  CC      drivers/usb/storage/usual-tables.o
  CC      drivers/ptp/ptp_chardev.o
  CC      drivers/usb/host/xhci-hub.o
  CC      net/mac80211/rate.o
  CC      drivers/gpu/drm/drm_dumb_buffers.o
  CC      drivers/usb/core/endpoint.o
  CC      net/core/net-traces.o
  CC      drivers/acpi/acpica/tbxfroot.o
  CC      mm/dmapool.o
  CC      fs/nfs/callback_proc.o
  CC      drivers/pps/kapi.o
  CC      drivers/i2c/i2c-core-smbus.o
  CC      drivers/power/supply/power_supply_core.o
  CC      net/netfilter/xt_NFLOG.o
  CC      net/netfilter/xt_SECMARK.o
  CC      net/core/selftests.o
  CC      lib/bust_spinlocks.o
  CC      drivers/usb/core/devio.o
  CC      net/ipv6/seg6.o
  CC      drivers/gpu/drm/i915/soc/intel_rom.o
  CC      arch/x86/kernel/smpboot.o
  CC      net/netfilter/xt_TCPMSS.o
  CC      kernel/cred.o
  CC      drivers/gpu/drm/drm_edid.o
  AR      drivers/usb/storage/built-in.a
  CC      mm/hugetlb.o
  CC      drivers/input/input-poller.o
  CC      drivers/pps/sysfs.o
  CC      drivers/acpi/acpica/utaddress.o
  CC      drivers/usb/core/notify.o
  CC      net/ipv4/inet_fragment.o
  AR      drivers/scsi/built-in.a
  CC      net/sunrpc/sysfs.o
  CC      drivers/gpu/drm/i915/i915_memcpy.o
  CC      drivers/acpi/acpi_pnp.o
  CC      drivers/usb/host/xhci-dbg.o
  CC      drivers/usb/host/xhci-trace.o
  CC      net/ipv6/fib6_notifier.o
  CC      drivers/power/supply/power_supply_sysfs.o
  CC      net/ipv4/ping.o
  CC      fs/seq_file.o
  CC      fs/nfs/nfs4namespace.o
  AR      drivers/net/ethernet/broadcom/built-in.a
  CC      net/core/ptp_classifier.o
  AR      drivers/net/ethernet/fungible/built-in.a
  AR      drivers/net/ethernet/google/built-in.a
  AR      drivers/net/ethernet/hisilicon/built-in.a
  CC      drivers/hwmon/hwmon.o
  AR      drivers/net/ethernet/huawei/built-in.a
  CC      net/sunrpc/svc_xprt.o
  CC      drivers/net/ethernet/intel/e1000/e1000_main.o
  CC [M]  drivers/gpu/drm/xe/xe_ggtt.o
  AR      drivers/net/ethernet/i825xx/built-in.a
  CC      drivers/net/ethernet/intel/e1000e/82571.o
  CC      drivers/ptp/ptp_sysfs.o
  CC      lib/kasprintf.o
  AR      drivers/pps/built-in.a
  CC      drivers/acpi/acpica/utalloc.o
  CC      drivers/net/ethernet/intel/e100.o
  CC      net/mac80211/michael.o
  AR      drivers/net/ethernet/microsoft/built-in.a
  CC      drivers/power/supply/power_supply_leds.o
  CC      drivers/i2c/i2c-core-acpi.o
  CC      fs/xattr.o
  CC      drivers/input/ff-core.o
  CC      kernel/reboot.o
  CC      net/core/netprio_cgroup.o
  CC      arch/x86/kernel/tsc_sync.o
  CC      drivers/net/ethernet/intel/e1000e/ich8lan.o
  CC      net/sunrpc/xprtmultipath.o
  CC      lib/bitmap.o
  CC      drivers/acpi/acpica/utascii.o
  CC      drivers/gpu/drm/i915/i915_mm.o
  CC      net/sunrpc/stats.o
  AR      drivers/thermal/broadcom/built-in.a
  AR      drivers/thermal/renesas/built-in.a
  AR      drivers/watchdog/built-in.a
  CC      drivers/usb/host/xhci-debugfs.o
  AR      drivers/thermal/samsung/built-in.a
  CC      drivers/thermal/intel/intel_tcc.o
  AR      drivers/thermal/st/built-in.a
  CC      drivers/gpu/drm/i915/i915_sw_fence.o
  CC      drivers/ptp/ptp_vclock.o
  CC      net/ipv4/ip_tunnel_core.o
  CC      drivers/power/supply/power_supply_hwmon.o
  CC      arch/x86/kernel/setup_percpu.o
  CC      fs/libfs.o
  CC      net/netfilter/xt_conntrack.o
  AR      drivers/net/ethernet/litex/built-in.a
  CC      net/ipv6/rpl.o
  CC      drivers/gpu/drm/drm_eld.o
  CC      drivers/gpu/drm/i915/i915_sw_fence_work.o
  CC      drivers/acpi/acpica/utbuffer.o
  CC      net/ipv6/ioam6.o
  CC      lib/scatterlist.o
  CC      drivers/thermal/intel/therm_throt.o
  CC      drivers/input/touchscreen.o
  AR      drivers/thermal/qcom/built-in.a
  CC      drivers/usb/core/generic.o
  CC      drivers/gpu/drm/drm_encoder.o
  CC      drivers/net/ethernet/intel/e1000e/80003es2lan.o
  CC      kernel/async.o
  CC [M]  drivers/thermal/intel/x86_pkg_temp_thermal.o
  AR      drivers/net/ethernet/marvell/octeon_ep/built-in.a
  AR      drivers/net/ethernet/marvell/octeon_ep_vf/built-in.a
  AR      drivers/net/ethernet/marvell/octeontx2/built-in.a
  AR      drivers/net/ethernet/marvell/prestera/built-in.a
  CC      fs/nfs/nfs4getroot.o
  CC      drivers/net/ethernet/marvell/sky2.o
  CC [M]  drivers/gpu/drm/xe/xe_gpu_scheduler.o
  CC      drivers/i2c/i2c-smbus.o
  AR      drivers/power/supply/built-in.a
  CC      drivers/input/ff-memless.o
  AR      drivers/power/built-in.a
  CC      net/mac80211/tkip.o
  CC      drivers/acpi/acpica/utcksum.o
  CC      drivers/gpu/drm/drm_file.o
  CC      net/mac80211/aes_cmac.o
  AR      drivers/hwmon/built-in.a
  CC      net/ipv4/gre_offload.o
  CC      drivers/net/ethernet/intel/e1000e/mac.o
  CC      net/ipv6/sysctl_net_ipv6.o
  CC      drivers/usb/core/quirks.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc.o
  CC      drivers/input/sparse-keymap.o
  AR      drivers/thermal/tegra/built-in.a
  CC      drivers/acpi/acpica/utcopy.o
  CC      drivers/net/ethernet/intel/e1000e/manage.o
  CC      arch/x86/kernel/mpparse.o
  CC      drivers/gpu/drm/i915/i915_syncmap.o
  CC      drivers/acpi/power.o
  CC      drivers/ptp/ptp_kvm_x86.o
  AR      drivers/thermal/mediatek/built-in.a
  CC      mm/mmu_notifier.o
  CC      kernel/range.o
  CC      fs/fs-writeback.o
  CC      net/wireless/shipped-certs.o
  CC      lib/list_sort.o
  CC      drivers/usb/host/xhci-pci.o
  CC      drivers/gpu/drm/drm_fourcc.o
  CC      kernel/smpboot.o
  CC      net/netfilter/xt_policy.o
  CC      fs/nfs/nfs4client.o
  CC      net/mac80211/aes_gmac.o
  CC      drivers/net/ethernet/intel/e1000e/nvm.o
  CC      drivers/acpi/acpica/utexcep.o
  CC      net/mac80211/fils_aead.o
  CC      drivers/usb/core/devices.o
  CC      drivers/gpu/drm/i915/i915_user_extensions.o
  CC      kernel/ucount.o
  AR      drivers/i2c/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_gsc_debugfs.o
  CC      drivers/thermal/thermal_core.o
  AR      drivers/thermal/intel/built-in.a
  CC      lib/uuid.o
  CC      drivers/net/ethernet/intel/e1000e/phy.o
  CC      drivers/input/vivaldi-fmap.o
  CC      mm/migrate.o
  CC      drivers/acpi/acpica/utdebug.o
  CC      kernel/regset.o
  CC      lib/iov_iter.o
  CC      drivers/ptp/ptp_kvm_common.o
  AR      drivers/net/ethernet/mellanox/built-in.a
  CC      kernel/ksyms_common.o
  CC      drivers/thermal/thermal_sysfs.o
  CC      drivers/thermal/thermal_trip.o
  CC      drivers/net/ethernet/intel/e1000/e1000_hw.o
  CC      drivers/acpi/acpica/utdecode.o
  CC      drivers/usb/core/phy.o
  CC      fs/nfs/nfs4session.o
  CC      drivers/acpi/event.o
  CC      mm/page_counter.o
  CC      drivers/gpu/drm/i915/i915_debugfs.o
  CC      drivers/usb/core/port.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc_proxy.o
  CC      net/sunrpc/sysctl.o
  CC      net/ipv6/xfrm6_policy.o
  CC      net/ipv4/metrics.o
  CC      arch/x86/kernel/trace_clock.o
  CC      drivers/input/input-leds.o
  CC      drivers/input/evdev.o
  CC      drivers/acpi/evged.o
  CC      drivers/thermal/thermal_helpers.o
  CC      drivers/thermal/thermal_thresholds.o
  CC      drivers/gpu/drm/i915/i915_debugfs_params.o
  CC      drivers/usb/core/hcd-pci.o
  CC      arch/x86/kernel/trace.o
  AR      drivers/net/ethernet/meta/built-in.a
  CC      net/ipv6/xfrm6_state.o
  CC      net/ipv6/xfrm6_input.o
  CC      fs/pnode.o
  CC      drivers/acpi/acpica/utdelete.o
  CC      drivers/gpu/drm/drm_framebuffer.o
  CC      drivers/gpu/drm/i915/i915_pmu.o
  CC      drivers/net/ethernet/intel/e1000/e1000_ethtool.o
  CC      drivers/usb/core/usb-acpi.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc_submit.o
  CC      net/netfilter/xt_state.o
  AR      drivers/net/ethernet/micrel/built-in.a
  CC      drivers/net/ethernet/intel/e1000/e1000_param.o
  CC      drivers/cpufreq/cpufreq.o
  CC      drivers/md/md.o
  AR      drivers/ptp/built-in.a
  CC      mm/hugetlb_cgroup.o
  CC      kernel/groups.o
  CC      lib/clz_ctz.o
  CC [M]  net/netfilter/nf_log_syslog.o
  CC      fs/nfs/dns_resolve.o
  AR      drivers/usb/host/built-in.a
  CC      fs/nfs/nfs4trace.o
  CC      drivers/cpuidle/cpuidle.o
  CC      net/ipv6/xfrm6_output.o
  CC      drivers/cpuidle/governors/menu.o
  CC      mm/early_ioremap.o
  CC      mm/secretmem.o
  CC [M]  drivers/gpu/drm/xe/xe_gt.o
  CC      drivers/acpi/acpica/uterror.o
  CC      drivers/cpuidle/driver.o
  CC      arch/x86/kernel/rethook.o
  CC      net/ipv6/xfrm6_protocol.o
  CC      drivers/gpu/drm/i915/gt/gen2_engine_cs.o
  CC      net/mac80211/cfg.o
  CC      drivers/gpu/drm/drm_gem.o
  AR      drivers/net/ethernet/microchip/built-in.a
  CC      fs/splice.o
  AR      drivers/net/ethernet/mscc/built-in.a
  AR      net/sunrpc/built-in.a
  AR      drivers/net/ethernet/myricom/built-in.a
  CC      fs/sync.o
  CC      arch/x86/kernel/vmcore_info_32.o
  AR      drivers/mmc/built-in.a
  CC      drivers/gpu/drm/i915/gt/gen6_engine_cs.o
  AR      drivers/usb/core/built-in.a
  CC      arch/x86/kernel/machine_kexec_32.o
  AR      drivers/usb/built-in.a
  CC      drivers/acpi/acpica/uteval.o
  AS      arch/x86/kernel/relocate_kernel_32.o
  CC      drivers/net/ethernet/intel/e1000e/param.o
  CC      lib/bsearch.o
  AR      drivers/input/built-in.a
  CC [M]  net/netfilter/xt_mark.o
  CC      drivers/gpu/drm/drm_ioctl.o
  CC      drivers/cpuidle/governors/haltpoll.o
  CC      drivers/thermal/thermal_netlink.o
  CC      net/core/netclassid_cgroup.o
  AR      drivers/net/ethernet/natsemi/built-in.a
  CC      drivers/gpu/drm/drm_lease.o
  CC      net/ipv4/netlink.o
  AR      drivers/ufs/built-in.a
  CC      kernel/kcmp.o
  AR      drivers/firmware/arm_ffa/built-in.a
  AR      drivers/firmware/arm_scmi/built-in.a
  AR      drivers/crypto/stm32/built-in.a
  AR      drivers/firmware/broadcom/built-in.a
  AR      drivers/crypto/inside-secure/eip93/built-in.a
  AR      drivers/crypto/xilinx/built-in.a
  AR      drivers/crypto/inside-secure/built-in.a
  CC      drivers/acpi/sysfs.o
  AR      drivers/crypto/hisilicon/built-in.a
  AR      drivers/firmware/cirrus/test/built-in.a
  CC      fs/nfs/nfs4sysctl.o
  AR      drivers/firmware/cirrus/built-in.a
  CC      drivers/clocksource/acpi_pm.o
  AR      drivers/crypto/intel/keembay/built-in.a
  AR      drivers/firmware/meson/built-in.a
  AR      drivers/firmware/microchip/built-in.a
  CC      fs/utimes.o
  AR      drivers/crypto/intel/ixp4xx/built-in.a
  CC      drivers/cpuidle/governor.o
  AR      drivers/crypto/intel/built-in.a
  CC      kernel/freezer.o
  AR      drivers/crypto/starfive/built-in.a
  AR      drivers/crypto/built-in.a
  CC      drivers/cpuidle/sysfs.o
  CC      drivers/acpi/acpica/utglobal.o
  CC      drivers/md/md-bitmap.o
  CC      drivers/firmware/efi/libstub/efi-stub-helper.o
  CC      drivers/cpufreq/freq_table.o
  CC      mm/hmm.o
  AR      drivers/net/ethernet/neterion/built-in.a
  CC      drivers/clocksource/i8253.o
  CC      lib/find_bit.o
  CC      drivers/firmware/efi/libstub/gop.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_ccs_mode.o
  CC      drivers/md/md-autodetect.o
  CC      arch/x86/kernel/module.o
  CC      fs/d_path.o
  CC      net/mac80211/ethtool.o
  AR      drivers/net/ethernet/marvell/built-in.a
  CC      net/ipv4/nexthop.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_clock.o
  CC      net/core/dst_cache.o
  CC      drivers/acpi/acpica/uthex.o
  CC      drivers/acpi/acpica/utids.o
  CC      net/ipv6/netfilter.o
  CC      fs/stack.o
  CC      lib/llist.o
  CC      drivers/gpu/drm/i915/gt/gen6_ppgtt.o
  CC      drivers/net/ethernet/intel/e1000e/ethtool.o
  CC [M]  net/netfilter/xt_nat.o
  CC      drivers/cpufreq/cpufreq_performance.o
  CC      kernel/profile.o
  CC      lib/lwq.o
  CC      fs/fs_struct.o
  CC      drivers/firmware/efi/efi-bgrt.o
  CC      drivers/hid/usbhid/hid-core.o
  AR      drivers/cpuidle/governors/built-in.a
  CC      drivers/cpuidle/poll_state.o
  CC      drivers/acpi/acpica/utinit.o
  AR      drivers/clocksource/built-in.a
  CC      drivers/hid/hid-core.o
  AR      drivers/firmware/imx/built-in.a
  CC      net/mac80211/rx.o
  CC      net/mac80211/spectmgmt.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_freq.o
  CC      drivers/firmware/efi/libstub/secureboot.o
  AR      drivers/net/ethernet/intel/e1000/built-in.a
  CC      net/ipv6/proc.o
  CC      fs/statfs.o
  CC      drivers/hid/usbhid/hiddev.o
  CC      drivers/thermal/thermal_hwmon.o
  CC      drivers/cpuidle/cpuidle-haltpoll.o
  CC      kernel/stacktrace.o
  CC      lib/memweight.o
  CC      mm/memfd.o
  CC      arch/x86/kernel/doublefault_32.o
  CC      arch/x86/kernel/early_printk.o
  CC      drivers/md/dm.o
  CC      drivers/firmware/efi/efi.o
  CC      drivers/hid/usbhid/hid-pidff.o
  CC      lib/kfifo.o
  CC      net/ipv4/udp_tunnel_stub.o
  CC      net/mac80211/tx.o
  CC      net/core/gro_cells.o
  CC      drivers/cpufreq/cpufreq_userspace.o
  CC [M]  net/netfilter/xt_LOG.o
  CC      drivers/thermal/gov_step_wise.o
  CC      drivers/acpi/acpica/utlock.o
  CC      drivers/net/ethernet/intel/e1000e/netdev.o
  CC      drivers/gpu/drm/drm_managed.o
  CC      mm/execmem.o
  CC      fs/fs_pin.o
  CC      drivers/cpufreq/cpufreq_ondemand.o
  CC      net/ipv6/syncookies.o
  AR      net/wireless/built-in.a
  CC      drivers/hid/hid-input.o
  AR      drivers/cpuidle/built-in.a
  CC [M]  net/netfilter/xt_MASQUERADE.o
  CC      net/ipv4/ip_tunnel.o
  CC      net/ipv6/calipso.o
  CC      net/core/failover.o
  CC      drivers/gpu/drm/drm_mm.o
  CC      drivers/gpu/drm/i915/gt/gen7_renderclear.o
  CC      drivers/firmware/efi/libstub/tpm.o
  CC      drivers/acpi/acpica/utmath.o
  CC      kernel/dma.o
  CC      drivers/acpi/property.o
  CC      net/mac80211/key.o
  AR      drivers/net/ethernet/netronome/built-in.a
  CC      drivers/hid/hid-quirks.o
  AR      drivers/thermal/built-in.a
  CC      drivers/hid/hid-debug.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_idle.o
  CC      drivers/firmware/efi/libstub/file.o
  CC      drivers/gpu/drm/i915/gt/gen8_engine_cs.o
  CC      drivers/firmware/efi/vars.o
  CC      lib/percpu-refcount.o
  CC      drivers/gpu/drm/i915/gt/gen8_ppgtt.o
  CC      arch/x86/kernel/hpet.o
  CC [M]  net/netfilter/xt_addrtype.o
  CC      drivers/md/dm-table.o
  CC      drivers/acpi/acpica/utmisc.o
  AR      drivers/platform/x86/amd/built-in.a
  AR      drivers/platform/x86/intel/built-in.a
  CC      drivers/platform/x86/wmi.o
  AR      mm/built-in.a
  AR      drivers/platform/surface/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_gt_mcr.o
  CC      drivers/cpufreq/cpufreq_governor.o
  CC      drivers/mailbox/mailbox.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_pagefault.o
  CC      kernel/smp.o
  CC      net/ipv6/ah6.o
  CC      drivers/firmware/efi/reboot.o
  AR      drivers/perf/built-in.a
  CC      drivers/firmware/efi/memattr.o
  CC      drivers/firmware/efi/tpm.o
  CC      drivers/platform/x86/wmi-bmof.o
  AR      drivers/hid/usbhid/built-in.a
  CC      lib/rhashtable.o
  CC      net/mac80211/util.o
  CC      drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
  CC      drivers/acpi/acpica/utmutex.o
  AR      net/core/built-in.a
  CC      arch/x86/kernel/amd_nb.o
  CC      drivers/net/ethernet/intel/e1000e/ptp.o
  CC      fs/nsfs.o
  AR      drivers/hwtracing/intel_th/built-in.a
  CC      drivers/platform/x86/eeepc-laptop.o
  CC      drivers/hid/hidraw.o
  CC      drivers/firmware/efi/libstub/mem.o
  CC      net/ipv4/sysctl_net_ipv4.o
  CC      fs/fs_types.o
  AR      fs/nfs/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_context.o
  CC      net/ipv6/esp6.o
  AR      drivers/android/built-in.a
  CC      arch/x86/kernel/amd_node.o
  AR      drivers/firmware/psci/built-in.a
  CC      drivers/mailbox/pcc.o
  CC      drivers/platform/x86/p2sb.o
  CC      drivers/gpu/drm/drm_mode_config.o
  CC      drivers/cpufreq/cpufreq_governor_attr_set.o
  CC      net/mac80211/parse.o
  AR      drivers/firmware/qcom/built-in.a
  CC      fs/fs_context.o
  CC      drivers/gpu/drm/i915/gt/intel_context_sseu.o
  AR      drivers/net/ethernet/ni/built-in.a
  CC      drivers/acpi/acpica/utnonansi.o
  AR      drivers/nvmem/layouts/built-in.a
  CC      drivers/nvmem/core.o
  CC      drivers/net/ethernet/nvidia/forcedeth.o
  CC      fs/fs_parser.o
  AR      drivers/firmware/samsung/built-in.a
  CC      kernel/uid16.o
  CC      net/ipv4/proc.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_cs.o
  CC      lib/base64.o
  CC      net/ipv6/sit.o
  CC      drivers/acpi/debugfs.o
  CC      arch/x86/kernel/kvm.o
  CC      net/mac80211/wme.o
  CC      drivers/firmware/efi/libstub/random.o
  CC      drivers/hid/hid-generic.o
  CC      net/ipv4/fib_rules.o
  CC      drivers/cpufreq/acpi-cpufreq.o
  AR      drivers/firmware/smccc/built-in.a
  CC      drivers/gpu/drm/drm_mode_object.o
  CC      drivers/acpi/acpica/utobject.o
  CC      net/ipv4/ipmr.o
  AR      drivers/mailbox/built-in.a
  CC      drivers/md/dm-target.o
  CC      drivers/acpi/acpica/utosi.o
  AR      net/netfilter/built-in.a
  CC      kernel/kallsyms.o
  CC      net/ipv6/addrconf_core.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
  CC      drivers/acpi/acpi_lpat.o
  CC      lib/once.o
  CC      drivers/hid/hid-a4tech.o
  CC      drivers/firmware/efi/libstub/randomalloc.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_throttle.o
  CC      fs/fsopen.o
  CC      drivers/hid/hid-apple.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
  CC      drivers/hid/hid-belkin.o
  CC      drivers/acpi/acpica/utownerid.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_pm.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_user.o
  CC      arch/x86/kernel/kvmclock.o
  AR      drivers/platform/x86/built-in.a
  AR      drivers/platform/built-in.a
  CC      drivers/firmware/efi/memmap.o
  CC      drivers/gpu/drm/i915/gt/intel_execlists_submission.o
  CC      drivers/hid/hid-cherry.o
  CC      lib/refcount.o
  CC      net/mac80211/chan.o
  CC      drivers/acpi/acpi_pcc.o
  AR      drivers/net/ethernet/oki-semi/built-in.a
  CC      drivers/cpufreq/amd-pstate.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  CC      fs/init.o
  AR      drivers/net/ethernet/packetengines/built-in.a
  AR      drivers/net/ethernet/qlogic/built-in.a
  CC      net/ipv4/ipmr_base.o
  CC      drivers/md/dm-linear.o
  CC      drivers/acpi/ac.o
  CC      drivers/acpi/acpica/utpredef.o
  CC      net/mac80211/trace.o
  AR      drivers/nvmem/built-in.a
  CC      arch/x86/kernel/paravirt.o
  CC      lib/rcuref.o
  CC      kernel/acct.o
  CC      arch/x86/kernel/pvclock.o
  CC      drivers/firmware/efi/capsule.o
  CC      drivers/firmware/efi/libstub/pci.o
  AR      drivers/firmware/tegra/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc.o
  CC      fs/kernel_read_file.o
  CC      lib/usercopy.o
  CC      drivers/acpi/button.o
  CC      drivers/cpufreq/amd-pstate-trace.o
  AR      drivers/net/ethernet/qualcomm/emac/built-in.a
  CC      drivers/acpi/acpica/utresdecode.o
  AR      drivers/net/ethernet/qualcomm/built-in.a
  CC      drivers/gpu/drm/drm_modes.o
  CC      drivers/net/ethernet/realtek/8139too.o
  CC      net/ipv4/syncookies.o
  CC      net/mac80211/mlme.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt.o
  CC      drivers/acpi/fan_core.o
  CC      drivers/cpufreq/intel_pstate.o
  CC      drivers/net/ethernet/realtek/r8169_main.o
  CC      lib/errseq.o
  CC      drivers/hid/hid-chicony.o
  CC      arch/x86/kernel/pcspeaker.o
  CC      drivers/md/dm-stripe.o
  CC      kernel/vmcore_info.o
  AR      drivers/firmware/xilinx/built-in.a
  CC      drivers/net/ethernet/realtek/r8169_firmware.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ads.o
  CC      lib/bucket_locks.o
  CC      net/ipv4/tunnel4.o
  CC      drivers/acpi/fan_attr.o
  CC      drivers/firmware/efi/esrt.o
  AR      drivers/net/ethernet/renesas/built-in.a
  CC      lib/generic-radix-tree.o
  CC      net/mac80211/tdls.o
  CC      drivers/acpi/acpica/utresrc.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
  CC      arch/x86/kernel/check.o
  CC      net/ipv4/ipconfig.o
  CC      net/ipv4/netfilter.o
  CC      drivers/firmware/efi/libstub/skip_spaces.o
  CC      drivers/firmware/efi/runtime-wrappers.o
  CC      drivers/firmware/efi/libstub/lib-cmdline.o
  CC      drivers/firmware/dmi_scan.o
  CC      net/ipv6/exthdrs_core.o
  CC      drivers/firmware/dmi-id.o
  CC      fs/mnt_idmapping.o
  CC      fs/remap_range.o
  CC      drivers/firmware/efi/libstub/lib-ctype.o
  CC      drivers/gpu/drm/i915/gt/intel_gt.o
  CC      drivers/firmware/efi/libstub/alignedmem.o
  CC      kernel/elfcorehdr.o
  CC      drivers/hid/hid-cypress.o
  CC      drivers/acpi/fan_hwmon.o
  CC      drivers/acpi/acpica/utstate.o
  AR      drivers/net/ethernet/rdc/built-in.a
  CC      drivers/acpi/acpica/utstring.o
  CC      drivers/hid/hid-ezkey.o
  CC      drivers/md/dm-ioctl.o
  CC      drivers/firmware/memmap.o
  CC      lib/bitmap-str.o
  CC      drivers/acpi/acpica/utstrsuppt.o
  CC      kernel/kexec_core.o
  CC      drivers/hid/hid-gyration.o
  CC      drivers/firmware/efi/libstub/relocate.o
  CC      drivers/firmware/efi/capsule-loader.o
  CC      net/ipv6/ip6_checksum.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
  CC      lib/string_helpers.o
  CC      arch/x86/kernel/uprobes.o
  CC      drivers/acpi/acpica/utstrtoul64.o
  CC      drivers/gpu/drm/drm_modeset_lock.o
  CC      drivers/acpi/acpica/utxface.o
  CC      fs/pidfs.o
  CC      drivers/net/ethernet/realtek/r8169_phy_config.o
  AR      drivers/net/ethernet/rocker/built-in.a
  CC      drivers/firmware/efi/earlycon.o
  CC      drivers/md/dm-io.o
  CC      drivers/acpi/acpica/utxfinit.o
  CC      drivers/hid/hid-ite.o
  CC      drivers/md/dm-kcopyd.o
  CC      net/ipv4/tcp_cubic.o
  CC      net/mac80211/ocb.o
  CC      drivers/gpu/drm/drm_plane.o
  CC      drivers/hid/hid-kensington.o
  CC      lib/hexdump.o
  CC      kernel/kexec.o
  AR      drivers/net/ethernet/samsung/built-in.a
  AR      drivers/net/ethernet/intel/e1000e/built-in.a
  CC      drivers/acpi/acpi_video.o
  AR      drivers/net/ethernet/intel/built-in.a
  CC      net/mac80211/airtime.o
  AR      drivers/net/ethernet/seeq/built-in.a
  CC      net/mac80211/eht.o
  CC      drivers/hid/hid-microsoft.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.o
  CC      drivers/firmware/efi/libstub/printk.o
  CC      drivers/hid/hid-monterey.o
  CC      lib/kstrtox.o
  CC      net/mac80211/led.o
  AR      drivers/net/ethernet/silan/built-in.a
  CC      drivers/hid/hid-ntrig.o
  CC      drivers/gpu/drm/drm_prime.o
  CC      drivers/hid/hid-pl.o
  AR      drivers/net/ethernet/nvidia/built-in.a
  CC      drivers/acpi/video_detect.o
  CC      drivers/md/dm-sysfs.o
  CC      fs/buffer.o
  CC      drivers/acpi/acpica/utxferror.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
  CC      fs/mpage.o
  CC      net/ipv4/tcp_sigpool.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_buf.o
  CC      net/ipv4/cipso_ipv4.o
  CC      drivers/acpi/processor_driver.o
  CC      drivers/gpu/drm/drm_print.o
  CC      drivers/acpi/acpica/utxfmutex.o
  CC      net/ipv6/ip6_icmp.o
  CC      fs/proc_namespace.o
  CC      arch/x86/kernel/perf_regs.o
  CC      drivers/firmware/efi/libstub/vsprintf.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_capture.o
  CC      drivers/gpu/drm/drm_property.o
  CC      net/ipv4/xfrm4_policy.o
  CC      kernel/utsname.o
  CC      lib/iomap.o
  CC      drivers/firmware/efi/libstub/x86-stub.o
  AR      drivers/cpufreq/built-in.a
  CC      drivers/hid/hid-petalynx.o
  CC      net/ipv4/xfrm4_state.o
  CC      drivers/md/dm-stats.o
  CC      drivers/gpu/drm/drm_rect.o
  AR      drivers/firmware/efi/built-in.a
  CC      net/ipv6/output_core.o
  AR      drivers/net/ethernet/sis/built-in.a
  CC      net/ipv4/xfrm4_input.o
  CC      drivers/acpi/processor_thermal.o
  CC      drivers/firmware/efi/libstub/smbios.o
  CC      net/ipv4/xfrm4_output.o
  AR      drivers/acpi/acpica/built-in.a
  CC      kernel/pid_namespace.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ct.o
  AR      drivers/net/ethernet/sfc/built-in.a
  CC      arch/x86/kernel/tracepoint.o
  CC      fs/direct-io.o
  CC      drivers/gpu/drm/drm_syncobj.o
  CC      drivers/gpu/drm/drm_sysfs.o
  CC      net/ipv4/xfrm4_protocol.o
  CC      lib/iomap_copy.o
  STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
  CC      lib/devres.o
  CC      arch/x86/kernel/itmt.o
  AR      drivers/net/ethernet/smsc/built-in.a
  CC      net/mac80211/pm.o
  CC      drivers/acpi/processor_idle.o
  CC      fs/eventpoll.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_db_mgr.o
  CC      drivers/gpu/drm/drm_trace_points.o
  CC      drivers/md/dm-rq.o
  CC      net/mac80211/rc80211_minstrel_ht.o
  CC      net/ipv6/protocol.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
  AR      drivers/net/ethernet/socionext/built-in.a
  CC      drivers/md/dm-io-rewind.o
  CC      kernel/stop_machine.o
  CC      lib/check_signature.o
  CC      arch/x86/kernel/umip.o
  CC      net/ipv6/ip6_offload.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_engine_activity.o
  CC      net/mac80211/wbrf.o
  CC      drivers/md/dm-builtin.o
  CC      arch/x86/kernel/unwind_frame.o
  CC      drivers/hid/hid-redragon.o
  CC      drivers/gpu/drm/drm_vblank.o
  CC      kernel/audit.o
  CC      fs/anon_inodes.o
  CC      net/ipv6/tcpv6_offload.o
  STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
  STUBCPY drivers/firmware/efi/libstub/file.stub.o
  CC      lib/interval_tree.o
  STUBCPY drivers/firmware/efi/libstub/gop.stub.o
  STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o
  STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
  STUBCPY drivers/firmware/efi/libstub/mem.stub.o
  CC      drivers/md/dm-raid1.o
  STUBCPY drivers/firmware/efi/libstub/pci.stub.o
  CC      drivers/hid/hid-samsung.o
  STUBCPY drivers/firmware/efi/libstub/printk.stub.o
  STUBCPY drivers/firmware/efi/libstub/random.stub.o
  STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
  STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
  STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
  STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
  STUBCPY drivers/firmware/efi/libstub/smbios.stub.o
  STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
  CC      drivers/acpi/processor_throttling.o
  STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
  STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
  AR      drivers/firmware/efi/libstub/lib.a
  CC      drivers/hid/hid-sony.o
  CC      fs/signalfd.o
  AR      drivers/firmware/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
  AR      drivers/net/ethernet/realtek/built-in.a
  AR      drivers/net/ethernet/stmicro/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_hwconfig.o
  AR      drivers/net/ethernet/sun/built-in.a
  CC      lib/assoc_array.o
  CC      drivers/md/dm-log.o
  AR      drivers/net/ethernet/tehuti/built-in.a
  AR      drivers/net/ethernet/ti/built-in.a
  CC      net/ipv6/exthdrs_offload.o
  AR      drivers/net/ethernet/vertexcom/built-in.a
  AR      drivers/net/ethernet/via/built-in.a
  AR      drivers/net/ethernet/wangxun/built-in.a
  AR      drivers/net/ethernet/wiznet/built-in.a
  AR      drivers/net/ethernet/xilinx/built-in.a
  AR      drivers/net/ethernet/xircom/built-in.a
  AR      drivers/net/ethernet/synopsys/built-in.a
  AR      drivers/net/ethernet/pensando/built-in.a
  CC      drivers/gpu/drm/drm_vblank_work.o
  AR      drivers/net/ethernet/built-in.a
  CC      drivers/acpi/processor_perflib.o
  CC      lib/bitrev.o
  AR      drivers/net/built-in.a
  CC      drivers/hid/hid-sunplus.o
  CC      fs/timerfd.o
  CC      drivers/md/dm-region-hash.o
  CC      drivers/gpu/drm/drm_vma_manager.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_irq.o
  CC      net/ipv6/inet6_hashtables.o
  CC      fs/eventfd.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_id_mgr.o
  CC      lib/crc-ccitt.o
  CC      drivers/gpu/drm/drm_writeback.o
  CC      drivers/md/dm-zero.o
  AR      arch/x86/kernel/built-in.a
  CC      drivers/hid/hid-topseed.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_klv_helpers.o
  AR      arch/x86/built-in.a
  AR      net/ipv4/built-in.a
  CC      kernel/auditfilter.o
  CC      net/ipv6/mcast_snoop.o
  CC      drivers/acpi/container.o
  CC      lib/crc16.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_mcr.o
  CC      drivers/gpu/drm/drm_panel.o
  HOSTCC  lib/gen_crc32table
  CC      fs/aio.o
  CC      kernel/auditsc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_log.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_pc.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm.o
  CC      lib/xxhash.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
  CC      drivers/acpi/thermal_lib.o
  CC      kernel/audit_watch.o
  CC      drivers/gpu/drm/drm_pci.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_submit.o
  CC      lib/genalloc.o
  CC      drivers/acpi/thermal.o
  CC      lib/percpu_counter.o
  CC      drivers/gpu/drm/drm_debugfs.o
  CC      drivers/acpi/nhlt.o
  CC [M]  drivers/gpu/drm/xe/xe_heci_gsc.o
  CC      drivers/gpu/drm/drm_debugfs_crc.o
  CC      drivers/acpi/acpi_memhotplug.o
  CC      kernel/audit_fsnotify.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
  CC      fs/locks.o
  CC      lib/audit.o
  CC [M]  drivers/gpu/drm/xe/xe_huc.o
  CC      drivers/acpi/ioapic.o
  CC      drivers/gpu/drm/drm_panel_orientation_quirks.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_requests.o
  CC      drivers/gpu/drm/drm_buddy.o
  CC      kernel/audit_tree.o
  AR      drivers/md/built-in.a
  CC      lib/syscall.o
  CC      drivers/acpi/battery.o
  CC      drivers/acpi/bgrt.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine.o
  AR      drivers/hid/built-in.a
  CC      drivers/acpi/spcr.o
  CC      kernel/kprobes.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
  CC      lib/errname.o
  CC      drivers/gpu/drm/drm_gem_shmem_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine_group.o
  CC      fs/binfmt_misc.o
  CC      kernel/seccomp.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_fence.o
  CC      kernel/relay.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
  CC      fs/binfmt_script.o
  CC      drivers/gpu/drm/i915/gt/intel_gtt.o
  CC      kernel/utsname_sysctl.o
  CC [M]  drivers/gpu/drm/xe/xe_irq.o
  CC [M]  drivers/gpu/drm/xe/xe_lrc.o
  CC      drivers/gpu/drm/i915/gt/intel_llc.o
  CC      drivers/gpu/drm/i915/gt/intel_lrc.o
  CC      drivers/gpu/drm/drm_atomic_helper.o
  CC      kernel/delayacct.o
  CC      fs/binfmt_elf.o
  CC      lib/nlattr.o
  CC [M]  drivers/gpu/drm/xe/xe_migrate.o
  CC      drivers/gpu/drm/i915/gt/intel_migrate.o
  CC      lib/cpu_rmap.o
  CC      kernel/taskstats.o
  CC      lib/dynamic_queue_limits.o
  AR      net/ipv6/built-in.a
  CC      drivers/gpu/drm/drm_atomic_state_helper.o
  CC      fs/mbcache.o
  CC [M]  drivers/gpu/drm/xe/xe_mmio.o
  CC      kernel/tsacct.o
  CC      drivers/gpu/drm/i915/gt/intel_mocs.o
  CC      kernel/tracepoint.o
  CC      drivers/gpu/drm/i915/gt/intel_ppgtt.o
  CC      kernel/irq_work.o
  CC      drivers/gpu/drm/drm_bridge_helper.o
  CC      lib/glob.o
  CC      fs/posix_acl.o
  CC [M]  drivers/gpu/drm/xe/xe_mocs.o
  CC      drivers/gpu/drm/drm_crtc_helper.o
  CC      drivers/gpu/drm/i915/gt/intel_rc6.o
  CC      drivers/gpu/drm/i915/gt/intel_region_lmem.o
  AR      drivers/acpi/built-in.a
  CC      kernel/static_call.o
  CC      fs/coredump.o
  CC [M]  drivers/gpu/drm/xe/xe_module.o
  CC      drivers/gpu/drm/i915/gt/intel_renderstate.o
  CC      drivers/gpu/drm/i915/gt/intel_reset.o
  CC      lib/strncpy_from_user.o
  CC      drivers/gpu/drm/drm_damage_helper.o
  CC      kernel/padata.o
  CC [M]  drivers/gpu/drm/xe/xe_oa.o
  CC      drivers/gpu/drm/i915/gt/intel_ring.o
  CC      kernel/jump_label.o
  CC      drivers/gpu/drm/drm_flip_work.o
  CC      kernel/context_tracking.o
  CC      fs/drop_caches.o
  CC      kernel/iomem.o
  CC      fs/sysctls.o
  CC      kernel/rseq.o
  CC      drivers/gpu/drm/drm_format_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_observation.o
  CC      lib/strnlen_user.o
  CC      fs/fhandle.o
  CC      drivers/gpu/drm/i915/gt/intel_ring_submission.o
  CC      drivers/gpu/drm/i915/gt/intel_rps.o
  CC [M]  drivers/gpu/drm/xe/xe_pat.o
  CC      drivers/gpu/drm/drm_gem_atomic_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_pci.o
  CC      drivers/gpu/drm/i915/gt/intel_sa_media.o
  CC      lib/net_utils.o
  CC      drivers/gpu/drm/drm_gem_framebuffer_helper.o
  CC      drivers/gpu/drm/drm_kms_helper_common.o
  CC      drivers/gpu/drm/i915/gt/intel_sseu.o
  CC      lib/sg_pool.o
  CC [M]  drivers/gpu/drm/xe/xe_pcode.o
  CC      drivers/gpu/drm/drm_modeset_helper.o
  CC      drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
  CC      drivers/gpu/drm/drm_plane_helper.o
  CC      lib/stackdepot.o
  CC [M]  drivers/gpu/drm/xe/xe_pm.o
  CC [M]  drivers/gpu/drm/xe/xe_preempt_fence.o
  CC      drivers/gpu/drm/i915/gt/intel_timeline.o
  CC      drivers/gpu/drm/i915/gt/intel_tlb.o
  CC      lib/asn1_decoder.o
  CC [M]  drivers/gpu/drm/xe/xe_pt.o
  CC [M]  drivers/gpu/drm/xe/xe_pt_walk.o
  CC      drivers/gpu/drm/drm_probe_helper.o
  GEN     lib/oid_registry_data.c
  CC [M]  drivers/gpu/drm/xe/xe_pxp.o
  CC      lib/ucs2_string.o
  CC      lib/sbitmap.o
  CC      drivers/gpu/drm/i915/gt/intel_wopcm.o
  CC      drivers/gpu/drm/drm_self_refresh_helper.o
  CC      lib/group_cpus.o
  CC      lib/fw_table.o
  CC [M]  drivers/gpu/drm/xe/xe_pxp_debugfs.o
  CC      drivers/gpu/drm/drm_simple_kms_helper.o
  CC      drivers/gpu/drm/i915/gt/intel_workarounds.o
  CC [M]  drivers/gpu/drm/xe/xe_pxp_submit.o
  CC      drivers/gpu/drm/i915/gt/shmem_utils.o
  CC      drivers/gpu/drm/i915/gt/sysfs_engines.o
  CC      drivers/gpu/drm/bridge/panel.o
  CC      drivers/gpu/drm/drm_mipi_dsi.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
  CC [M]  drivers/gpu/drm/xe/xe_query.o
  AR      lib/lib.a
  AR      kernel/built-in.a
  GEN     lib/crc32table.h
  CC      drivers/gpu/drm/i915/gt/gen6_renderstate.o
  CC      drivers/gpu/drm/i915/gt/gen7_renderstate.o
  CC      lib/oid_registry.o
  CC [M]  drivers/gpu/drm/xe/xe_range_fence.o
  CC      lib/crc32.o
  CC      drivers/gpu/drm/i915/gt/gen8_renderstate.o
  CC [M]  drivers/gpu/drm/drm_exec.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_sr.o
  CC      drivers/gpu/drm/i915/gt/gen9_renderstate.o
  CC [M]  drivers/gpu/drm/drm_gpuvm.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_whitelist.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_busy.o
  CC [M]  drivers/gpu/drm/drm_suballoc.o
  CC [M]  drivers/gpu/drm/xe/xe_ring_ops.o
  AR      fs/built-in.a
  CC      drivers/gpu/drm/i915/gem/i915_gem_clflush.o
  CC [M]  drivers/gpu/drm/xe/xe_rtp.o
  CC [M]  drivers/gpu/drm/drm_gem_ttm_helper.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_context.o
  CC [M]  drivers/gpu/drm/xe/xe_sa.o
  CC [M]  drivers/gpu/drm/xe/xe_sched_job.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_create.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_domain.o
  CC [M]  drivers/gpu/drm/xe/xe_shrinker.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_internal.o
  CC [M]  drivers/gpu/drm/xe/xe_step.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_lmem.o
  CC [M]  drivers/gpu/drm/xe/xe_survivability_mode.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_mman.o
  AR      lib/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_sync.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_object.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_pages.o
  CC [M]  drivers/gpu/drm/xe/xe_tile.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_phys.o
  CC [M]  drivers/gpu/drm/xe/xe_tile_sysfs.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_pm.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_region.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_shmem.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
  CC [M]  drivers/gpu/drm/xe/xe_trace.o
  LD [M]  drivers/gpu/drm/drm_suballoc_helper.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_stolen.o
  CC [M]  drivers/gpu/drm/xe/xe_trace_bo.o
  CC [M]  drivers/gpu/drm/xe/xe_trace_guc.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_throttle.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_tiling.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm.o
  AR      net/mac80211/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_trace_lrc.o
  AR      net/built-in.a
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
  LD [M]  drivers/gpu/drm/drm_ttm_helper.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_sys_mgr.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_vram_mgr.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_userptr.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_wait.o
  CC      drivers/gpu/drm/i915/gem/i915_gemfs.o
  CC      drivers/gpu/drm/i915/i915_active.o
  CC      drivers/gpu/drm/i915/i915_cmd_parser.o
  CC [M]  drivers/gpu/drm/xe/xe_tuning.o
  CC      drivers/gpu/drm/i915/i915_deps.o
  CC [M]  drivers/gpu/drm/xe/xe_uc.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_fw.o
  CC [M]  drivers/gpu/drm/xe/xe_vm.o
  CC      drivers/gpu/drm/i915/i915_gem.o
  CC [M]  drivers/gpu/drm/xe/xe_vram.o
  CC      drivers/gpu/drm/i915/i915_gem_evict.o
  CC [M]  drivers/gpu/drm/xe/xe_vram_freq.o
  CC      drivers/gpu/drm/i915/i915_gem_gtt.o
  CC      drivers/gpu/drm/i915/i915_gem_ww.o
  CC [M]  drivers/gpu/drm/xe/xe_vsec.o
  CC      drivers/gpu/drm/i915/i915_query.o
  CC      drivers/gpu/drm/i915/i915_request.o
  CC [M]  drivers/gpu/drm/xe/xe_wa.o
  CC [M]  drivers/gpu/drm/xe/xe_wait_user_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_wopcm.o
  CC [M]  drivers/gpu/drm/xe/xe_hmm.o
  CC      drivers/gpu/drm/i915/i915_scheduler.o
  CC      drivers/gpu/drm/i915/i915_trace_points.o
  CC [M]  drivers/gpu/drm/xe/xe_hwmon.o
  CC      drivers/gpu/drm/i915/i915_ttm_buddy_manager.o
  CC      drivers/gpu/drm/i915/i915_vma.o
  CC [M]  drivers/gpu/drm/xe/xe_pmu.o
  CC      drivers/gpu/drm/i915/i915_vma_resource.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_vf.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_relay.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o
  CC [M]  drivers/gpu/drm/xe/xe_memirq.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_sriov.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc.o
  CC [M]  drivers/gpu/drm/xe/xe_sriov_vf.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_irq.o
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_utils.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o
  CC [M]  drivers/gpu/drm/xe/display/intel_bo.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o
  CC [M]  drivers/gpu/drm/xe/display/intel_fb_bo.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o
  CC [M]  drivers/gpu/drm/xe/display/intel_fbdev_fb.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_log.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_misc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_rpm.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_wa.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_rc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_dsb_buffer.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_fb_pin.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_huc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_hdcp_gsc.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/display/xe_plane_initial.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_huc_fw.o
  CC [M]  drivers/gpu/drm/xe/display/xe_tdf.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_dram.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_rom.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_uc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/icl_dsi.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_alpm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_uc_fw.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_audio.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_backlight.o
  CC      drivers/gpu/drm/i915/gt/intel_gsc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bios.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bw.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cdclk.o
  CC      drivers/gpu/drm/i915/i915_hwmon.o
  CC      drivers/gpu/drm/i915/display/hsw_ips.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cmtg.o
  CC      drivers/gpu/drm/i915/display/i9xx_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_color.o
  CC      drivers/gpu/drm/i915/display/i9xx_display_sr.o
  CC      drivers/gpu/drm/i915/display/i9xx_wm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
  CC      drivers/gpu/drm/i915/display/intel_alpm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_connector.o
  CC      drivers/gpu/drm/i915/display/intel_atomic.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc.o
  CC      drivers/gpu/drm/i915/display/intel_atomic_plane.o
  CC      drivers/gpu/drm/i915/display/intel_audio.o
  CC      drivers/gpu/drm/i915/display/intel_bios.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc_state_dump.o
  CC      drivers/gpu/drm/i915/display/intel_bo.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cursor.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cx0_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi.o
  CC      drivers/gpu/drm/i915/display/intel_bw.o
  CC      drivers/gpu/drm/i915/display/intel_cdclk.o
  CC      drivers/gpu/drm/i915/display/intel_cmtg.o
  CC      drivers/gpu/drm/i915/display/intel_color.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi_buf_trans.o
  CC      drivers/gpu/drm/i915/display/intel_combo_phy.o
  CC      drivers/gpu/drm/i915/display/intel_connector.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display.o
  CC      drivers/gpu/drm/i915/display/intel_crtc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_conversion.o
  CC      drivers/gpu/drm/i915/display/intel_crtc_state_dump.o
  CC      drivers/gpu/drm/i915/display/intel_cursor.o
  CC      drivers/gpu/drm/i915/display/intel_display.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_device.o
  CC      drivers/gpu/drm/i915/display/intel_display_conversion.o
  CC      drivers/gpu/drm/i915/display/intel_display_driver.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_driver.o
  CC      drivers/gpu/drm/i915/display/intel_display_irq.o
  CC      drivers/gpu/drm/i915/display/intel_display_params.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_irq.o
  CC      drivers/gpu/drm/i915/display/intel_display_power.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_params.o
  CC      drivers/gpu/drm/i915/display/intel_display_power_map.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power.o
  CC      drivers/gpu/drm/i915/display/intel_display_power_well.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_map.o
  CC      drivers/gpu/drm/i915/display/intel_display_reset.o
  CC      drivers/gpu/drm/i915/display/intel_display_rpm.o
  CC      drivers/gpu/drm/i915/display/intel_display_rps.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_well.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_trace.o
  CC      drivers/gpu/drm/i915/display/intel_display_snapshot.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_wa.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o
  CC      drivers/gpu/drm/i915/display/intel_display_wa.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc_wl.o
  CC      drivers/gpu/drm/i915/display/intel_dmc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux.o
  CC      drivers/gpu/drm/i915/display/intel_dmc_wl.o
  CC      drivers/gpu/drm/i915/display/intel_dpio_phy.o
  CC      drivers/gpu/drm/i915/display/intel_dpll.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.o
  CC      drivers/gpu/drm/i915/display/intel_dpll_mgr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_hdcp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_link_training.o
  CC      drivers/gpu/drm/i915/display/intel_dpt.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_mst.o
  CC      drivers/gpu/drm/i915/display/intel_dpt_common.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_test.o
  CC      drivers/gpu/drm/i915/display/intel_drrs.o
  CC      drivers/gpu/drm/i915/display/intel_dsb.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll.o
  CC      drivers/gpu/drm/i915/display/intel_dsb_buffer.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpt_common.o
  CC      drivers/gpu/drm/i915/display/intel_fb.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_drrs.o
  CC      drivers/gpu/drm/i915/display/intel_fb_bo.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsb.o
  CC      drivers/gpu/drm/i915/display/intel_fb_pin.o
  CC      drivers/gpu/drm/i915/display/intel_fbc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi_dcs_backlight.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi_vbt.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_encoder.o
  CC      drivers/gpu/drm/i915/display/intel_fdi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fb.o
  CC      drivers/gpu/drm/i915/display/intel_fifo_underrun.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fbc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fdi.o
  CC      drivers/gpu/drm/i915/display/intel_frontbuffer.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_global_state.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_gmbus.o
  CC      drivers/gpu/drm/i915/display/intel_global_state.o
  CC      drivers/gpu/drm/i915/display/intel_hdcp.o
  CC      drivers/gpu/drm/i915/display/intel_hdcp_gsc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp.o
  CC      drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.o
  CC      drivers/gpu/drm/i915/display/intel_hotplug.o
  CC      drivers/gpu/drm/i915/display/intel_hotplug_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp_gsc_message.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdmi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug.o
  CC      drivers/gpu/drm/i915/display/intel_hti.o
  CC      drivers/gpu/drm/i915/display/intel_link_bw.o
  CC      drivers/gpu/drm/i915/display/intel_load_detect.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hti.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_link_bw.o
  CC      drivers/gpu/drm/i915/display/intel_lpe_audio.o
  CC      drivers/gpu/drm/i915/display/intel_modeset_lock.o
  CC      drivers/gpu/drm/i915/display/intel_modeset_setup.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_lspcon.o
  CC      drivers/gpu/drm/i915/display/intel_modeset_verify.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_lock.o
  CC      drivers/gpu/drm/i915/display/intel_overlay.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_setup.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_verify.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_panel.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pfit.o
  CC      drivers/gpu/drm/i915/display/intel_pch.o
  CC      drivers/gpu/drm/i915/display/intel_pch_display.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pmdemand.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pch.o
  CC      drivers/gpu/drm/i915/display/intel_pch_refclk.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pps.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_psr.o
  CC      drivers/gpu/drm/i915/display/intel_plane_initial.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_qp_tables.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_quirks.o
  CC      drivers/gpu/drm/i915/display/intel_pmdemand.o
  CC      drivers/gpu/drm/i915/display/intel_psr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_snps_hdmi_pll.o
  CC      drivers/gpu/drm/i915/display/intel_quirks.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_snps_phy.o
  CC      drivers/gpu/drm/i915/display/intel_sprite.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_tc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vblank.o
  CC      drivers/gpu/drm/i915/display/intel_sprite_uapi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vdsc.o
  CC      drivers/gpu/drm/i915/display/intel_tc.o
  CC      drivers/gpu/drm/i915/display/intel_vblank.o
  CC      drivers/gpu/drm/i915/display/intel_vga.o
  CC      drivers/gpu/drm/i915/display/intel_wm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vga.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vrr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_wm.o
  CC      drivers/gpu/drm/i915/display/skl_scaler.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_scaler.o
  CC      drivers/gpu/drm/i915/display/skl_universal_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
  CC      drivers/gpu/drm/i915/display/skl_watermark.o
  CC      drivers/gpu/drm/i915/display/vlv_sideband.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_watermark.o
  CC      drivers/gpu/drm/i915/display/intel_acpi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_acpi.o
  CC      drivers/gpu/drm/i915/display/intel_opregion.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_opregion.o
  CC [M]  drivers/gpu/drm/xe/xe_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_stats.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_huc_debugfs.o
  CC      drivers/gpu/drm/i915/display/intel_display_debugfs.o
  CC      drivers/gpu/drm/i915/display/intel_display_debugfs_params.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_debugfs.o
  CC      drivers/gpu/drm/i915/display/intel_pipe_crc.o
  CC      drivers/gpu/drm/i915/display/dvo_ch7017.o
  CC      drivers/gpu/drm/i915/display/dvo_ch7xxx.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs_params.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o
  CC      drivers/gpu/drm/i915/display/dvo_ivch.o
  CC      drivers/gpu/drm/i915/display/dvo_ns2501.o
  CC      drivers/gpu/drm/i915/display/dvo_sil164.o
  CC      drivers/gpu/drm/i915/display/dvo_tfp410.o
  CC      drivers/gpu/drm/i915/display/g4x_dp.o
  CC      drivers/gpu/drm/i915/display/g4x_hdmi.o
  CC      drivers/gpu/drm/i915/display/icl_dsi.o
  CC      drivers/gpu/drm/i915/display/intel_backlight.o
  CC      drivers/gpu/drm/i915/display/intel_crt.o
  CC      drivers/gpu/drm/i915/display/intel_cx0_phy.o
  CC      drivers/gpu/drm/i915/display/intel_ddi.o
  CC      drivers/gpu/drm/i915/display/intel_ddi_buf_trans.o
  CC      drivers/gpu/drm/i915/display/intel_display_device.o
  CC      drivers/gpu/drm/i915/display/intel_display_trace.o
  CC      drivers/gpu/drm/i915/display/intel_dkl_phy.o
  CC      drivers/gpu/drm/i915/display/intel_dp.o
  CC      drivers/gpu/drm/i915/display/intel_dp_aux.o
  CC      drivers/gpu/drm/i915/display/intel_dp_aux_backlight.o
  CC      drivers/gpu/drm/i915/display/intel_dp_hdcp.o
  CC      drivers/gpu/drm/i915/display/intel_dp_link_training.o
  CC      drivers/gpu/drm/i915/display/intel_dp_mst.o
  CC      drivers/gpu/drm/i915/display/intel_dp_test.o
  CC      drivers/gpu/drm/i915/display/intel_dsi.o
  CC      drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.o
  CC      drivers/gpu/drm/i915/display/intel_dsi_vbt.o
  CC      drivers/gpu/drm/i915/display/intel_dvo.o
  CC      drivers/gpu/drm/i915/display/intel_encoder.o
  CC      drivers/gpu/drm/i915/display/intel_gmbus.o
  CC      drivers/gpu/drm/i915/display/intel_hdmi.o
  CC      drivers/gpu/drm/i915/display/intel_lspcon.o
  CC      drivers/gpu/drm/i915/display/intel_lvds.o
  CC      drivers/gpu/drm/i915/display/intel_panel.o
  CC      drivers/gpu/drm/i915/display/intel_pfit.o
  CC      drivers/gpu/drm/i915/display/intel_pps.o
  CC      drivers/gpu/drm/i915/display/intel_qp_tables.o
  CC      drivers/gpu/drm/i915/display/intel_sdvo.o
  CC      drivers/gpu/drm/i915/display/intel_snps_hdmi_pll.o
  CC      drivers/gpu/drm/i915/display/intel_snps_phy.o
  CC      drivers/gpu/drm/i915/display/intel_tv.o
  CC      drivers/gpu/drm/i915/display/intel_vdsc.o
  CC      drivers/gpu/drm/i915/display/intel_vrr.o
  CC      drivers/gpu/drm/i915/display/vlv_dsi.o
  CC      drivers/gpu/drm/i915/display/vlv_dsi_pll.o
  CC      drivers/gpu/drm/i915/i915_perf.o
  CC      drivers/gpu/drm/i915/pxp/intel_pxp.o
  CC      drivers/gpu/drm/i915/pxp/intel_pxp_huc.o
  CC      drivers/gpu/drm/i915/pxp/intel_pxp_tee.o
  CC      drivers/gpu/drm/i915/i915_gpu_error.o
  CC      drivers/gpu/drm/i915/i915_vgpu.o
  LD [M]  drivers/gpu/drm/xe/xe.o
  AR      drivers/gpu/drm/i915/built-in.a
  AR      drivers/gpu/drm/built-in.a
  AR      drivers/gpu/built-in.a
  AR      drivers/built-in.a
  AR      built-in.a
  AR      vmlinux.a
  LD      vmlinux.o
  OBJCOPY modules.builtin.modinfo
  GEN     modules.builtin
  MODPOST Module.symvers
  CC      .vmlinux.export.o
  CC [M]  fs/efivarfs/efivarfs.mod.o
  CC [M]  .module-common.o
  CC [M]  drivers/gpu/drm/drm_exec.mod.o
  CC [M]  drivers/gpu/drm/drm_gpuvm.mod.o
  CC [M]  drivers/gpu/drm/drm_suballoc_helper.mod.o
  CC [M]  drivers/gpu/drm/drm_ttm_helper.mod.o
  CC [M]  drivers/gpu/drm/scheduler/gpu-sched.mod.o
  CC [M]  drivers/gpu/drm/xe/xe.mod.o
  CC [M]  drivers/thermal/intel/x86_pkg_temp_thermal.mod.o
  CC [M]  net/netfilter/nf_log_syslog.mod.o
  CC [M]  net/netfilter/xt_mark.mod.o
  CC [M]  net/netfilter/xt_nat.mod.o
  CC [M]  net/netfilter/xt_LOG.mod.o
  CC [M]  net/netfilter/xt_MASQUERADE.mod.o
  CC [M]  net/netfilter/xt_addrtype.mod.o
  CC [M]  net/ipv4/netfilter/iptable_nat.mod.o
  LD [M]  drivers/gpu/drm/drm_gpuvm.ko
  LD [M]  net/netfilter/xt_LOG.ko
  LD [M]  drivers/thermal/intel/x86_pkg_temp_thermal.ko
  LD [M]  drivers/gpu/drm/drm_suballoc_helper.ko
  LD [M]  fs/efivarfs/efivarfs.ko
  LD [M]  drivers/gpu/drm/drm_ttm_helper.ko
  LD [M]  drivers/gpu/drm/scheduler/gpu-sched.ko
  LD [M]  drivers/gpu/drm/xe/xe.ko
  LD [M]  net/netfilter/xt_mark.ko
  LD [M]  net/netfilter/xt_MASQUERADE.ko
  LD [M]  net/netfilter/nf_log_syslog.ko
  LD [M]  drivers/gpu/drm/drm_exec.ko
  LD [M]  net/ipv4/netfilter/iptable_nat.ko
  LD [M]  net/netfilter/xt_addrtype.ko
  LD [M]  net/netfilter/xt_nat.ko
  UPD     include/generated/utsversion.h
  CC      init/version-timestamp.o
  KSYMS   .tmp_vmlinux0.kallsyms.S
  AS      .tmp_vmlinux0.kallsyms.o
  LD      .tmp_vmlinux1
  NM      .tmp_vmlinux1.syms
  KSYMS   .tmp_vmlinux1.kallsyms.S
  AS      .tmp_vmlinux1.kallsyms.o
  LD      .tmp_vmlinux2
  NM      .tmp_vmlinux2.syms
  KSYMS   .tmp_vmlinux2.kallsyms.S
  AS      .tmp_vmlinux2.kallsyms.o
  LD      vmlinux.unstripped
  NM      System.map
  SORTTAB vmlinux.unstripped
  RSTRIP  vmlinux
  CC      arch/x86/boot/a20.o
  AS      arch/x86/boot/bioscall.o
  CC      arch/x86/boot/cmdline.o
  HOSTCC  arch/x86/boot/mkcpustr
  AS      arch/x86/boot/copy.o
  CC      arch/x86/boot/cpuflags.o
  CC      arch/x86/boot/cpucheck.o
  CC      arch/x86/boot/early_serial_console.o
  CC      arch/x86/boot/edd.o
  CC      arch/x86/boot/main.o
  CC      arch/x86/boot/memory.o
  CC      arch/x86/boot/pm.o
  AS      arch/x86/boot/pmjump.o
  CC      arch/x86/boot/printf.o
  CC      arch/x86/boot/regs.o
  CC      arch/x86/boot/string.o
  CC      arch/x86/boot/tty.o
  CC      arch/x86/boot/video.o
  CC      arch/x86/boot/video-mode.o
  CC      arch/x86/boot/version.o
  CC      arch/x86/boot/video-vga.o
  CC      arch/x86/boot/video-vesa.o
  CC      arch/x86/boot/video-bios.o
  LDS     arch/x86/boot/compressed/vmlinux.lds
  AS      arch/x86/boot/compressed/kernel_info.o
  AS      arch/x86/boot/compressed/head_32.o
  VOFFSET arch/x86/boot/compressed/../voffset.h
  CC      arch/x86/boot/compressed/string.o
  CC      arch/x86/boot/compressed/cmdline.o
  CC      arch/x86/boot/compressed/error.o
  OBJCOPY arch/x86/boot/compressed/vmlinux.bin
  RELOCS  arch/x86/boot/compressed/vmlinux.relocs
  HOSTCC  arch/x86/boot/compressed/mkpiggy
  CC      arch/x86/boot/compressed/cpuflags.o
  CC      arch/x86/boot/compressed/early_serial_console.o
  CC      arch/x86/boot/compressed/kaslr.o
  CC      arch/x86/boot/compressed/acpi.o
  CC      arch/x86/boot/compressed/efi.o
  CPUSTR  arch/x86/boot/cpustr.h
  CC      arch/x86/boot/cpu.o
  GZIP    arch/x86/boot/compressed/vmlinux.bin.gz
  CC      arch/x86/boot/compressed/misc.o
  MKPIGGY arch/x86/boot/compressed/piggy.S
  AS      arch/x86/boot/compressed/piggy.o
  LD      arch/x86/boot/compressed/vmlinux
  ZOFFSET arch/x86/boot/zoffset.h
  OBJCOPY arch/x86/boot/vmlinux.bin
  AS      arch/x86/boot/header.o
  LD      arch/x86/boot/setup.elf
  OBJCOPY arch/x86/boot/setup.bin
  BUILD   arch/x86/boot/bzImage
Kernel: arch/x86/boot/bzImage is ready  (#1)
run-parts: executing /workspace/ci/hooks/20-kernel-doc
+ SRC_DIR=/workspace/kernel
+ cd /workspace/kernel
+ xargs ./scripts/kernel-doc -Werror -none include/uapi/drm/xe_drm.h
+ find drivers/gpu/drm/xe/ -name '*.[ch]' -not -path 'drivers/gpu/drm/xe/display/*'
All hooks done



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

* ✗ CI.checksparse: warning for Some (drm_sched_|dma_)fence lifetime issues (rev3)
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (13 preceding siblings ...)
  2025-05-15 11:02 ` ✓ CI.Hooks: " Patchwork
@ 2025-05-15 11:03 ` Patchwork
  2025-05-15 11:27 ` ✓ Xe.CI.BAT: success " Patchwork
                   ` (2 subsequent siblings)
  17 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2025-05-15 11:03 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

== Series Details ==

Series: Some (drm_sched_|dma_)fence lifetime issues (rev3)
URL   : https://patchwork.freedesktop.org/series/148825/
State : warning

== Summary ==

+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast fbf1cb830ae7cca1f6094630da357a8418596a5b
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_display_types.h:1989:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1989:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1989:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1989:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1989:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1989:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1989:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1989:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1989:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2002:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_hdcp.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_pps.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file:
+drivers/gpu/drm/i915/gt/intel_reset.c:1571:12: warning: context imbalance in '_intel_gt_reset_lock' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_active.c:1063:16: warning: context imbalance in '__i915_active_fence_set' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    expected struct list_head const *list
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    got struct list_head [noderef] __rcu *pos
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/i915/i915_irq.c:491:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:491:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:499:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:499:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:504:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:504:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:504:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:542:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:542:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:550:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:550:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:555:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:555:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:555:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:599:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:599:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:602:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:602:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:606:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:606:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:613:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:613:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:613:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:613:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/intel_uncore.c:1925:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1926:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1927:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1928:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1993:1: warning: context imbalance in 'gen6_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1994:1: warning: context imbalance in 'gen6_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1995:1: warning: context imbalance in 'gen6_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2015:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2016:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2017:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_wakeref.c:145:19: warning: context imbalance in 'wakeref_auto_timeout' - unexpected unlock
+drivers/gpu/drm/ttm/ttm_bo.c:1195:31: warning: symbol 'ttm_swap_ops' was not declared. Should it be static?
+drivers/gpu/drm/ttm/ttm_bo_util.c:324:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:324:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:324:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:327:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:327:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:327:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:330:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:330:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:330:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:436:28:    expected void volatile [noderef] __iomem *addr
+drivers/gpu/drm/ttm/ttm_bo_util.c:436:28:    got void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:436:28: warning: incorrect type in argument 1 (different address spaces)

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



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

* ✓ Xe.CI.BAT: success for Some (drm_sched_|dma_)fence lifetime issues (rev3)
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (14 preceding siblings ...)
  2025-05-15 11:03 ` ✗ CI.checksparse: warning " Patchwork
@ 2025-05-15 11:27 ` Patchwork
  2025-05-15 20:53 ` ✗ Xe.CI.Full: failure " Patchwork
  2025-05-27  2:02 ` ✗ CI.Patch_applied: " Patchwork
  17 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2025-05-15 11:27 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

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

== Series Details ==

Series: Some (drm_sched_|dma_)fence lifetime issues (rev3)
URL   : https://patchwork.freedesktop.org/series/148825/
State : success

== Summary ==

CI Bug Log - changes from xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1_BAT -> xe-pw-148825v3_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (10 -> 9)
------------------------------

  Missing    (1): bat-adlp-vm 

Known issues
------------

  Here are the changes found in xe-pw-148825v3_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@xe_vm@shared-pte-page:
    - bat-adlp-vf:        [PASS][1] -> [ABORT][2] ([Intel XE#3970])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/bat-adlp-vf/igt@xe_vm@shared-pte-page.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/bat-adlp-vf/igt@xe_vm@shared-pte-page.html

  
  [Intel XE#3970]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3970


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

  * Linux: xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1 -> xe-pw-148825v3

  IGT_8364: 8364
  xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1: 3d6670fab64cb00b5e6ed80d2517147db533faf1
  xe-pw-148825v3: 148825v3

== Logs ==

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

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

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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-05-15  9:49 ` [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos Tvrtko Ursulin
@ 2025-05-15 13:15   ` Christian König
  2025-06-02 13:05     ` Tvrtko Ursulin
  0 siblings, 1 reply; 34+ messages in thread
From: Christian König @ 2025-05-15 13:15 UTC (permalink / raw)
  To: dri-devel, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann
  Cc: amd-gfx, intel-xe, intel-gfx, linux-media, linaro-mm-sig,
	kernel-dev, Tvrtko Ursulin

Hey drm-misc maintainers,

can you guys please backmerge drm-next into drm-misc-next?

I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.

Thanks in advance,
Christian.

On 5/15/25 11:49, Tvrtko Ursulin wrote:
> With the goal of reducing the need for drivers to touch (and dereference)
> fence->ops, we move the 64-bit seqnos flag from struct dma_fence_ops to
> the fence->flags.
> 
> Drivers which were setting this flag are changed to use new
> dma_fence_init64() instead of dma_fence_init().
> 
> v2:
>  * Streamlined init and added kerneldoc.
>  * Rebase for amdgpu userq which landed since.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
> Reviewed-by: Christian König <christian.koenig@amd.com> # v1
> ---
>  drivers/dma-buf/dma-fence-chain.c             |  5 +-
>  drivers/dma-buf/dma-fence.c                   | 69 ++++++++++++++-----
>  .../drm/amd/amdgpu/amdgpu_eviction_fence.c    |  7 +-
>  .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c   |  5 +-
>  .../gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c  |  5 +-
>  include/linux/dma-fence.h                     | 14 ++--
>  6 files changed, 64 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c
> index 90424f23fd73..a8a90acf4f34 100644
> --- a/drivers/dma-buf/dma-fence-chain.c
> +++ b/drivers/dma-buf/dma-fence-chain.c
> @@ -218,7 +218,6 @@ static void dma_fence_chain_set_deadline(struct dma_fence *fence,
>  }
>  
>  const struct dma_fence_ops dma_fence_chain_ops = {
> -	.use_64bit_seqno = true,
>  	.get_driver_name = dma_fence_chain_get_driver_name,
>  	.get_timeline_name = dma_fence_chain_get_timeline_name,
>  	.enable_signaling = dma_fence_chain_enable_signaling,
> @@ -262,8 +261,8 @@ void dma_fence_chain_init(struct dma_fence_chain *chain,
>  			seqno = max(prev->seqno, seqno);
>  	}
>  
> -	dma_fence_init(&chain->base, &dma_fence_chain_ops,
> -		       &chain->lock, context, seqno);
> +	dma_fence_init64(&chain->base, &dma_fence_chain_ops, &chain->lock,
> +			 context, seqno);
>  
>  	/*
>  	 * Chaining dma_fence_chain container together is only allowed through
> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
> index f0cdd3e99d36..705b59787731 100644
> --- a/drivers/dma-buf/dma-fence.c
> +++ b/drivers/dma-buf/dma-fence.c
> @@ -989,24 +989,9 @@ void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
>  }
>  EXPORT_SYMBOL(dma_fence_describe);
>  
> -/**
> - * dma_fence_init - Initialize a custom fence.
> - * @fence: the fence to initialize
> - * @ops: the dma_fence_ops for operations on this fence
> - * @lock: the irqsafe spinlock to use for locking this fence
> - * @context: the execution context this fence is run on
> - * @seqno: a linear increasing sequence number for this context
> - *
> - * Initializes an allocated fence, the caller doesn't have to keep its
> - * refcount after committing with this fence, but it will need to hold a
> - * refcount again if &dma_fence_ops.enable_signaling gets called.
> - *
> - * context and seqno are used for easy comparison between fences, allowing
> - * to check which fence is later by simply using dma_fence_later().
> - */
> -void
> -dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
> -	       spinlock_t *lock, u64 context, u64 seqno)
> +static void
> +__dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
> +	         spinlock_t *lock, u64 context, u64 seqno, unsigned long flags)
>  {
>  	BUG_ON(!lock);
>  	BUG_ON(!ops || !ops->get_driver_name || !ops->get_timeline_name);
> @@ -1017,9 +1002,55 @@ dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>  	fence->lock = lock;
>  	fence->context = context;
>  	fence->seqno = seqno;
> -	fence->flags = 0UL;
> +	fence->flags = flags;
>  	fence->error = 0;
>  
>  	trace_dma_fence_init(fence);
>  }
> +
> +/**
> + * dma_fence_init - Initialize a custom fence.
> + * @fence: the fence to initialize
> + * @ops: the dma_fence_ops for operations on this fence
> + * @lock: the irqsafe spinlock to use for locking this fence
> + * @context: the execution context this fence is run on
> + * @seqno: a linear increasing sequence number for this context
> + *
> + * Initializes an allocated fence, the caller doesn't have to keep its
> + * refcount after committing with this fence, but it will need to hold a
> + * refcount again if &dma_fence_ops.enable_signaling gets called.
> + *
> + * context and seqno are used for easy comparison between fences, allowing
> + * to check which fence is later by simply using dma_fence_later().
> + */
> +void
> +dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
> +	       spinlock_t *lock, u64 context, u64 seqno)
> +{
> +	__dma_fence_init(fence, ops, lock, context, seqno, 0UL);
> +}
>  EXPORT_SYMBOL(dma_fence_init);
> +
> +/**
> + * dma_fence_init64 - Initialize a custom fence with 64-bit seqno support.
> + * @fence: the fence to initialize
> + * @ops: the dma_fence_ops for operations on this fence
> + * @lock: the irqsafe spinlock to use for locking this fence
> + * @context: the execution context this fence is run on
> + * @seqno: a linear increasing sequence number for this context
> + *
> + * Initializes an allocated fence, the caller doesn't have to keep its
> + * refcount after committing with this fence, but it will need to hold a
> + * refcount again if &dma_fence_ops.enable_signaling gets called.
> + *
> + * Context and seqno are used for easy comparison between fences, allowing
> + * to check which fence is later by simply using dma_fence_later().
> + */
> +void
> +dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
> +		 spinlock_t *lock, u64 context, u64 seqno)
> +{
> +	__dma_fence_init(fence, ops, lock, context, seqno,
> +			 BIT(DMA_FENCE_FLAG_SEQNO64_BIT));
> +}
> +EXPORT_SYMBOL(dma_fence_init64);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
> index 1a7469543db5..79713421bffe 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
> @@ -134,7 +134,6 @@ static bool amdgpu_eviction_fence_enable_signaling(struct dma_fence *f)
>  }
>  
>  static const struct dma_fence_ops amdgpu_eviction_fence_ops = {
> -	.use_64bit_seqno = true,
>  	.get_driver_name = amdgpu_eviction_fence_get_driver_name,
>  	.get_timeline_name = amdgpu_eviction_fence_get_timeline_name,
>  	.enable_signaling = amdgpu_eviction_fence_enable_signaling,
> @@ -160,9 +159,9 @@ amdgpu_eviction_fence_create(struct amdgpu_eviction_fence_mgr *evf_mgr)
>  	ev_fence->evf_mgr = evf_mgr;
>  	get_task_comm(ev_fence->timeline_name, current);
>  	spin_lock_init(&ev_fence->lock);
> -	dma_fence_init(&ev_fence->base, &amdgpu_eviction_fence_ops,
> -		       &ev_fence->lock, evf_mgr->ev_fence_ctx,
> -		       atomic_inc_return(&evf_mgr->ev_fence_seq));
> +	dma_fence_init64(&ev_fence->base, &amdgpu_eviction_fence_ops,
> +			 &ev_fence->lock, evf_mgr->ev_fence_ctx,
> +			 atomic_inc_return(&evf_mgr->ev_fence_seq));
>  	return ev_fence;
>  }
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> index 029cb24c28b3..5e92d00a591f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
> @@ -239,8 +239,8 @@ static int amdgpu_userq_fence_create(struct amdgpu_usermode_queue *userq,
>  	fence = &userq_fence->base;
>  	userq_fence->fence_drv = fence_drv;
>  
> -	dma_fence_init(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
> -		       fence_drv->context, seq);
> +	dma_fence_init64(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
> +			 fence_drv->context, seq);
>  
>  	amdgpu_userq_fence_driver_get(fence_drv);
>  	dma_fence_get(fence);
> @@ -334,7 +334,6 @@ static void amdgpu_userq_fence_release(struct dma_fence *f)
>  }
>  
>  static const struct dma_fence_ops amdgpu_userq_fence_ops = {
> -	.use_64bit_seqno = true,
>  	.get_driver_name = amdgpu_userq_fence_get_driver_name,
>  	.get_timeline_name = amdgpu_userq_fence_get_timeline_name,
>  	.signaled = amdgpu_userq_fence_signaled,
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
> index 51cddfa3f1e8..5d26797356a3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
> @@ -71,7 +71,6 @@ static void amdgpu_tlb_fence_work(struct work_struct *work)
>  }
>  
>  static const struct dma_fence_ops amdgpu_tlb_fence_ops = {
> -	.use_64bit_seqno = true,
>  	.get_driver_name = amdgpu_tlb_fence_get_driver_name,
>  	.get_timeline_name = amdgpu_tlb_fence_get_timeline_name
>  };
> @@ -101,8 +100,8 @@ void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev, struct amdgpu_vm *vm
>  	INIT_WORK(&f->work, amdgpu_tlb_fence_work);
>  	spin_lock_init(&f->lock);
>  
> -	dma_fence_init(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
> -		       vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
> +	dma_fence_init64(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
> +			 vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>  
>  	/* TODO: We probably need a separate wq here */
>  	dma_fence_get(&f->base);
> diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
> index 48b5202c531d..a34a0dcdc446 100644
> --- a/include/linux/dma-fence.h
> +++ b/include/linux/dma-fence.h
> @@ -97,6 +97,7 @@ struct dma_fence {
>  };
>  
>  enum dma_fence_flag_bits {
> +	DMA_FENCE_FLAG_SEQNO64_BIT,
>  	DMA_FENCE_FLAG_SIGNALED_BIT,
>  	DMA_FENCE_FLAG_TIMESTAMP_BIT,
>  	DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
> @@ -124,14 +125,6 @@ struct dma_fence_cb {
>   *
>   */
>  struct dma_fence_ops {
> -	/**
> -	 * @use_64bit_seqno:
> -	 *
> -	 * True if this dma_fence implementation uses 64bit seqno, false
> -	 * otherwise.
> -	 */
> -	bool use_64bit_seqno;
> -
>  	/**
>  	 * @get_driver_name:
>  	 *
> @@ -262,6 +255,9 @@ struct dma_fence_ops {
>  void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>  		    spinlock_t *lock, u64 context, u64 seqno);
>  
> +void dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
> +		      spinlock_t *lock, u64 context, u64 seqno);
> +
>  void dma_fence_release(struct kref *kref);
>  void dma_fence_free(struct dma_fence *fence);
>  void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq);
> @@ -454,7 +450,7 @@ static inline bool __dma_fence_is_later(struct dma_fence *fence, u64 f1, u64 f2)
>  	 * 32bit sequence numbers. Use a 64bit compare when the driver says to
>  	 * do so.
>  	 */
> -	if (fence->ops->use_64bit_seqno)
> +	if (test_bit(DMA_FENCE_FLAG_SEQNO64_BIT, &fence->flags))
>  		return f1 > f2;
>  
>  	return (int)(lower_32_bits(f1) - lower_32_bits(f2)) > 0;


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

* Re: [PATCH v4 5/9] drm/i915: Use dma-fence driver and timeline name helpers
  2025-05-15  9:50 ` [PATCH v4 5/9] drm/i915: " Tvrtko Ursulin
@ 2025-05-15 14:46   ` Andi Shyti
  0 siblings, 0 replies; 34+ messages in thread
From: Andi Shyti @ 2025-05-15 14:46 UTC (permalink / raw)
  To: Tvrtko Ursulin
  Cc: dri-devel, Rob Clark, Sumit Semwal, Gustavo Padovan,
	Christian König, Matthew Brost, Lucas De Marchi,
	Rodrigo Vivi, amd-gfx, intel-xe, intel-gfx, linux-media,
	linaro-mm-sig, kernel-dev

Hi Tvrtko,

On Thu, May 15, 2025 at 10:50:00AM +0100, Tvrtko Ursulin wrote:
> Access the dma-fence internals via the previously added helpers.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
> Reviewed-by: Christian König <christian.koenig@amd.com>

Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>

Thanks,
Andi

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

* Re: [PATCH v4 8/9] drm/i915: Protect access to driver and timeline name
  2025-05-15  9:50 ` [PATCH v4 8/9] drm/i915: " Tvrtko Ursulin
@ 2025-05-15 15:08   ` Andi Shyti
  0 siblings, 0 replies; 34+ messages in thread
From: Andi Shyti @ 2025-05-15 15:08 UTC (permalink / raw)
  To: Tvrtko Ursulin
  Cc: dri-devel, Rob Clark, Sumit Semwal, Gustavo Padovan,
	Christian König, Matthew Brost, Lucas De Marchi,
	Rodrigo Vivi, amd-gfx, intel-xe, intel-gfx, linux-media,
	linaro-mm-sig, kernel-dev

Hi Tvrtko,

On Thu, May 15, 2025 at 10:50:03AM +0100, Tvrtko Ursulin wrote:
> Protect the access to driver and timeline name which otherwise could be
> freed as dma-fence exported is signalling fences.
> 
> Now that the safe access is handled in the dma-fence API, the external
> callers such as sync_file, and our internal code paths, we can drop the
> similar protection from i915_fence_get_timeline_name().
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>

Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>

Thanks,
Andi

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

* ✗ Xe.CI.Full: failure for Some (drm_sched_|dma_)fence lifetime issues (rev3)
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (15 preceding siblings ...)
  2025-05-15 11:27 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2025-05-15 20:53 ` Patchwork
  2025-05-27  2:02 ` ✗ CI.Patch_applied: " Patchwork
  17 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2025-05-15 20:53 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

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

== Series Details ==

Series: Some (drm_sched_|dma_)fence lifetime issues (rev3)
URL   : https://patchwork.freedesktop.org/series/148825/
State : failure

== Summary ==

CI Bug Log - changes from xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1_FULL -> xe-pw-148825v3_FULL
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-148825v3_FULL absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-148825v3_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (4 -> 4)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in xe-pw-148825v3_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@runner@aborted:
    - shard-bmg:          NOTRUN -> ([FAIL][1], [FAIL][2], [FAIL][3], [FAIL][4], [FAIL][5], [FAIL][6], [FAIL][7], [FAIL][8], [FAIL][9], [FAIL][10], [FAIL][11], [FAIL][12], [FAIL][13], [FAIL][14], [FAIL][15], [FAIL][16], [FAIL][17], [FAIL][18], [FAIL][19], [FAIL][20], [FAIL][21], [FAIL][22], [FAIL][23], [FAIL][24], [FAIL][25])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-1/igt@runner@aborted.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-3/igt@runner@aborted.html
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-4/igt@runner@aborted.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-4/igt@runner@aborted.html
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-8/igt@runner@aborted.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-6/igt@runner@aborted.html
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-8/igt@runner@aborted.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-1/igt@runner@aborted.html
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-7/igt@runner@aborted.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-7/igt@runner@aborted.html
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-7/igt@runner@aborted.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-8/igt@runner@aborted.html
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-2/igt@runner@aborted.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-5/igt@runner@aborted.html
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-3/igt@runner@aborted.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-1/igt@runner@aborted.html
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-5/igt@runner@aborted.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-6/igt@runner@aborted.html
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-2/igt@runner@aborted.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-6/igt@runner@aborted.html
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-4/igt@runner@aborted.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-5/igt@runner@aborted.html
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-4/igt@runner@aborted.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-2/igt@runner@aborted.html
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-3/igt@runner@aborted.html

  
Known issues
------------

  Here are the changes found in xe-pw-148825v3_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@fbdev@unaligned-write:
    - shard-dg2-set2:     [PASS][26] -> [SKIP][27] ([Intel XE#2134])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@fbdev@unaligned-write.html
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@fbdev@unaligned-write.html

  * igt@kms_addfb_basic@addfb25-modifier-no-flag:
    - shard-dg2-set2:     [PASS][28] -> [SKIP][29] ([Intel XE#4208] / [i915#2575]) +15 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_addfb_basic@addfb25-modifier-no-flag.html
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_addfb_basic@addfb25-modifier-no-flag.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-lnl:          NOTRUN -> [SKIP][30] ([Intel XE#1466])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_async_flips@async-flip-with-page-flip-events-tiled@pipe-d-hdmi-a-6-4-mc-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][31] ([Intel XE#3767]) +7 other tests skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_async_flips@async-flip-with-page-flip-events-tiled@pipe-d-hdmi-a-6-4-mc-ccs.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-90:
    - shard-adlp:         NOTRUN -> [SKIP][32] ([Intel XE#1124]) +1 other test skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-0:
    - shard-adlp:         [PASS][33] -> [DMESG-WARN][34] ([Intel XE#4173]) +5 other tests dmesg-warn
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-adlp-3/igt@kms_big_fb@x-tiled-32bpp-rotate-0.html
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-6/igt@kms_big_fb@x-tiled-32bpp-rotate-0.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-dg2-set2:     [PASS][35] -> [SKIP][36] ([Intel XE#2351] / [Intel XE#4208])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-180:
    - shard-lnl:          NOTRUN -> [SKIP][37] ([Intel XE#1124])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-dg2-set2:     NOTRUN -> [SKIP][38] ([Intel XE#1124]) +1 other test skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p:
    - shard-lnl:          NOTRUN -> [SKIP][39] ([Intel XE#1512])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html

  * igt@kms_bw@linear-tiling-2-displays-2560x1440p:
    - shard-adlp:         NOTRUN -> [SKIP][40] ([Intel XE#367])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_bw@linear-tiling-2-displays-2560x1440p.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc:
    - shard-adlp:         NOTRUN -> [SKIP][41] ([Intel XE#455] / [Intel XE#787]) +7 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-mc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][42] ([Intel XE#2887])
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-mc-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-b-dp-2:
    - shard-dg2-set2:     NOTRUN -> [SKIP][43] ([Intel XE#787]) +321 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-432/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-b-dp-2.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs-cc@pipe-d-dp-2:
    - shard-dg2-set2:     NOTRUN -> [SKIP][44] ([Intel XE#455] / [Intel XE#787]) +47 other tests skip
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-432/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs-cc@pipe-d-dp-2.html

  * igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc@pipe-a-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][45] ([Intel XE#787]) +11 other tests skip
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-dp-4:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][46] ([Intel XE#3124])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][47] ([Intel XE#1727] / [Intel XE#3113])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-6.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][48] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][49] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-6.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-adlp:         NOTRUN -> [SKIP][50] ([Intel XE#4418])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_cdclk@mode-transition@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][51] ([Intel XE#4417]) +3 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_cdclk@mode-transition@pipe-d-dp-4.html

  * igt@kms_chamelium_hpd@hdmi-hpd:
    - shard-dg2-set2:     NOTRUN -> [SKIP][52] ([Intel XE#373])
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_chamelium_hpd@hdmi-hpd.html

  * igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate:
    - shard-adlp:         NOTRUN -> [SKIP][53] ([Intel XE#373]) +2 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate.html

  * igt@kms_content_protection@lic-type-0@pipe-a-dp-4:
    - shard-dg2-set2:     NOTRUN -> [FAIL][54] ([Intel XE#3304])
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_content_protection@lic-type-0@pipe-a-dp-4.html

  * igt@kms_content_protection@srm@pipe-a-dp-4:
    - shard-dg2-set2:     NOTRUN -> [FAIL][55] ([Intel XE#1178]) +2 other tests fail
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_content_protection@srm@pipe-a-dp-4.html

  * igt@kms_cursor_crc@cursor-onscreen-128x42:
    - shard-lnl:          NOTRUN -> [SKIP][56] ([Intel XE#1424])
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_cursor_crc@cursor-onscreen-128x42.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-adlp:         NOTRUN -> [SKIP][57] ([Intel XE#308])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - shard-lnl:          NOTRUN -> [SKIP][58] ([Intel XE#323])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-legacy:
    - shard-adlp:         NOTRUN -> [SKIP][59] ([Intel XE#309]) +1 other test skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-dg2-set2:     NOTRUN -> [SKIP][60] ([Intel XE#776])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_flip@2x-flip-vs-dpms-on-nop:
    - shard-adlp:         NOTRUN -> [SKIP][61] ([Intel XE#310]) +2 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_flip@2x-flip-vs-dpms-on-nop.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a1:
    - shard-adlp:         [PASS][62] -> [FAIL][63] ([Intel XE#301]) +1 other test fail
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-adlp-8/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a1.html
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a1.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp4:
    - shard-dg2-set2:     NOTRUN -> [FAIL][64] ([Intel XE#301]) +2 other tests fail
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp4.html

  * igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a6:
    - shard-dg2-set2:     [PASS][65] -> [FAIL][66] ([Intel XE#301]) +1 other test fail
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-434/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a6.html
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a6.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling:
    - shard-lnl:          NOTRUN -> [SKIP][67] ([Intel XE#1401] / [Intel XE#1745])
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][68] ([Intel XE#1401])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-y-to-y:
    - shard-adlp:         [PASS][69] -> [FAIL][70] ([Intel XE#1874]) +1 other test fail
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-adlp-4/igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-y-to-y.html
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-9/igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-y-to-y.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-blt:
    - shard-adlp:         NOTRUN -> [SKIP][71] ([Intel XE#651]) +2 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][72] ([Intel XE#651])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][73] ([Intel XE#651]) +4 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][74] ([Intel XE#656]) +2 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render:
    - shard-adlp:         NOTRUN -> [SKIP][75] ([Intel XE#653]) +1 other test skip
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][76] ([Intel XE#653]) +3 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@plane-fbc-rte:
    - shard-dg2-set2:     NOTRUN -> [SKIP][77] ([Intel XE#1158])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_frontbuffer_tracking@plane-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen:
    - shard-adlp:         NOTRUN -> [SKIP][78] ([Intel XE#656]) +8 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_joiner@basic-ultra-joiner:
    - shard-lnl:          NOTRUN -> [SKIP][79] ([Intel XE#2927])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_joiner@basic-ultra-joiner.html

  * igt@kms_panel_fitting@legacy:
    - shard-adlp:         NOTRUN -> [SKIP][80] ([Intel XE#455]) +5 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_panel_fitting@legacy.html

  * igt@kms_pipe_crc_basic@nonblocking-crc:
    - shard-adlp:         [PASS][81] -> [DMESG-WARN][82] ([Intel XE#2953] / [Intel XE#4173]) +3 other tests dmesg-warn
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-adlp-2/igt@kms_pipe_crc_basic@nonblocking-crc.html
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-2/igt@kms_pipe_crc_basic@nonblocking-crc.html

  * igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256:
    - shard-dg2-set2:     NOTRUN -> [FAIL][83] ([Intel XE#616]) +2 other tests fail
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-b:
    - shard-dg2-set2:     NOTRUN -> [SKIP][84] ([Intel XE#2763]) +11 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-b.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d:
    - shard-dg2-set2:     NOTRUN -> [SKIP][85] ([Intel XE#2763] / [Intel XE#455]) +3 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-b:
    - shard-lnl:          NOTRUN -> [SKIP][86] ([Intel XE#2763]) +3 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-b.html

  * igt@kms_pm_backlight@basic-brightness:
    - shard-adlp:         NOTRUN -> [SKIP][87] ([Intel XE#870]) +1 other test skip
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf:
    - shard-dg2-set2:     NOTRUN -> [SKIP][88] ([Intel XE#1489]) +2 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb:
    - shard-adlp:         NOTRUN -> [SKIP][89] ([Intel XE#1489]) +2 other tests skip
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb.html

  * igt@kms_psr@fbc-psr2-no-drrs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][90] ([Intel XE#2850] / [Intel XE#929]) +1 other test skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_psr@fbc-psr2-no-drrs.html

  * igt@kms_psr@psr2-cursor-blt:
    - shard-adlp:         NOTRUN -> [SKIP][91] ([Intel XE#2850] / [Intel XE#929]) +3 other tests skip
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@kms_psr@psr2-cursor-blt.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-dg2-set2:     NOTRUN -> [SKIP][92] ([Intel XE#2939])
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-270:
    - shard-dg2-set2:     NOTRUN -> [SKIP][93] ([Intel XE#3414])
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_rotation_crc@primary-y-tiled-reflect-x-270.html

  * igt@kms_vrr@cmrr@pipe-a-edp-1:
    - shard-lnl:          [PASS][94] -> [FAIL][95] ([Intel XE#4459]) +1 other test fail
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-lnl-5/igt@kms_vrr@cmrr@pipe-a-edp-1.html
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-6/igt@kms_vrr@cmrr@pipe-a-edp-1.html

  * igt@xe_compute_preempt@compute-preempt-many-all-ram@engine-drm_xe_engine_class_compute:
    - shard-dg2-set2:     NOTRUN -> [SKIP][96] ([Intel XE#455]) +11 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_compute_preempt@compute-preempt-many-all-ram@engine-drm_xe_engine_class_compute.html

  * igt@xe_compute_preempt@compute-preempt@engine-drm_xe_engine_class_compute:
    - shard-dg2-set2:     NOTRUN -> [SKIP][97] ([Intel XE#1280] / [Intel XE#455])
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@xe_compute_preempt@compute-preempt@engine-drm_xe_engine_class_compute.html

  * igt@xe_eudebug@basic-vm-bind-extended:
    - shard-lnl:          NOTRUN -> [SKIP][98] ([Intel XE#4837])
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@xe_eudebug@basic-vm-bind-extended.html

  * igt@xe_eudebug@discovery-race:
    - shard-dg2-set2:     NOTRUN -> [SKIP][99] ([Intel XE#4837])
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_eudebug@discovery-race.html

  * igt@xe_eudebug_online@set-breakpoint-sigint-debugger:
    - shard-adlp:         NOTRUN -> [SKIP][100] ([Intel XE#4837]) +2 other tests skip
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@xe_eudebug_online@set-breakpoint-sigint-debugger.html

  * igt@xe_evict_ccs@evict-overcommit-standalone-nofree-samefd:
    - shard-adlp:         NOTRUN -> [SKIP][101] ([Intel XE#688])
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@xe_evict_ccs@evict-overcommit-standalone-nofree-samefd.html

  * igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race:
    - shard-dg2-set2:     [PASS][102] -> [SKIP][103] ([Intel XE#1392]) +8 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-463/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-432/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race.html

  * igt@xe_exec_basic@multigpu-once-null-defer-bind:
    - shard-adlp:         NOTRUN -> [SKIP][104] ([Intel XE#1392]) +2 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@xe_exec_basic@multigpu-once-null-defer-bind.html

  * igt@xe_exec_fault_mode@many-execqueues-bindexecqueue:
    - shard-adlp:         NOTRUN -> [SKIP][105] ([Intel XE#288]) +5 other tests skip
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue.html

  * igt@xe_exec_fault_mode@many-invalid-userptr-fault:
    - shard-dg2-set2:     NOTRUN -> [SKIP][106] ([Intel XE#288]) +1 other test skip
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_exec_fault_mode@many-invalid-userptr-fault.html

  * igt@xe_exec_system_allocator@many-large-mmap-free-race-nomemset:
    - shard-dg2-set2:     NOTRUN -> [SKIP][107] ([Intel XE#4915]) +16 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_exec_system_allocator@many-large-mmap-free-race-nomemset.html

  * igt@xe_exec_system_allocator@many-new-bo-map:
    - shard-adlp:         NOTRUN -> [SKIP][108] ([Intel XE#4915]) +44 other tests skip
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@xe_exec_system_allocator@many-new-bo-map.html

  * igt@xe_exec_system_allocator@threads-many-large-mmap-new-huge:
    - shard-lnl:          NOTRUN -> [SKIP][109] ([Intel XE#4943])
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@xe_exec_system_allocator@threads-many-large-mmap-new-huge.html

  * igt@xe_exec_threads@threads-hang-shared-vm-rebind:
    - shard-dg2-set2:     [PASS][110] -> [SKIP][111] ([Intel XE#4208]) +35 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@xe_exec_threads@threads-hang-shared-vm-rebind.html
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_exec_threads@threads-hang-shared-vm-rebind.html

  * igt@xe_exec_threads@threads-hang-userptr-invalidate:
    - shard-dg2-set2:     [PASS][112] -> [DMESG-WARN][113] ([Intel XE#3876])
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-434/igt@xe_exec_threads@threads-hang-userptr-invalidate.html
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@xe_exec_threads@threads-hang-userptr-invalidate.html

  * igt@xe_mmap@pci-membarrier-bad-object:
    - shard-adlp:         NOTRUN -> [SKIP][114] ([Intel XE#4045])
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@xe_mmap@pci-membarrier-bad-object.html

  * igt@xe_oa@polling-small-buf:
    - shard-dg2-set2:     NOTRUN -> [SKIP][115] ([Intel XE#2541] / [Intel XE#3573])
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_oa@polling-small-buf.html

  * igt@xe_oa@syncs-ufence-wait:
    - shard-adlp:         NOTRUN -> [SKIP][116] ([Intel XE#2541] / [Intel XE#3573] / [Intel XE#4501])
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@xe_oa@syncs-ufence-wait.html

  * igt@xe_pat@pat-index-xehpc:
    - shard-dg2-set2:     NOTRUN -> [SKIP][117] ([Intel XE#2838] / [Intel XE#979])
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pm@s4-basic-exec:
    - shard-adlp:         [PASS][118] -> [ABORT][119] ([Intel XE#1794])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-adlp-6/igt@xe_pm@s4-basic-exec.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-9/igt@xe_pm@s4-basic-exec.html

  * igt@xe_pm@s4-mocs:
    - shard-lnl:          [PASS][120] -> [ABORT][121] ([Intel XE#1794])
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-lnl-8/igt@xe_pm@s4-mocs.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-2/igt@xe_pm@s4-mocs.html

  * igt@xe_pxp@pxp-stale-bo-bind-post-termination-irq:
    - shard-adlp:         NOTRUN -> [SKIP][122] ([Intel XE#4733])
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@xe_pxp@pxp-stale-bo-bind-post-termination-irq.html

  * igt@xe_query@multigpu-query-invalid-extension:
    - shard-adlp:         NOTRUN -> [SKIP][123] ([Intel XE#944])
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-8/igt@xe_query@multigpu-query-invalid-extension.html

  
#### Possible fixes ####

  * igt@fbdev@read:
    - shard-dg2-set2:     [SKIP][124] ([Intel XE#2134]) -> [PASS][125] +2 other tests pass
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@fbdev@read.html
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@fbdev@read.html

  * igt@intel_sysfs_debugfs@xe-debugfs-read-all-entries-display-on:
    - shard-dg2-set2:     [SKIP][126] ([Intel XE#4208] / [Intel XE#4618]) -> [PASS][127] +1 other test pass
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@intel_sysfs_debugfs@xe-debugfs-read-all-entries-display-on.html
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@intel_sysfs_debugfs@xe-debugfs-read-all-entries-display-on.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-adlp:         [DMESG-WARN][128] ([Intel XE#4173]) -> [PASS][129]
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-adlp-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-3/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * {igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1}:
    - shard-lnl:          [FAIL][130] ([Intel XE#911]) -> [PASS][131] +3 other tests pass
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-lnl-5/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-6/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [INCOMPLETE][132] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#3124]) -> [PASS][133]
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6.html
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a6-dp4:
    - shard-dg2-set2:     [FAIL][134] ([Intel XE#301] / [Intel XE#3321]) -> [PASS][135] +1 other test pass
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-435/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a6-dp4.html
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a6-dp4.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a6-dp4:
    - shard-dg2-set2:     [FAIL][136] ([Intel XE#301]) -> [PASS][137]
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-435/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a6-dp4.html
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bc-hdmi-a6-dp4.html

  * igt@kms_flip@busy-flip:
    - shard-dg2-set2:     [SKIP][138] ([Intel XE#4208] / [i915#2575]) -> [PASS][139] +167 other tests pass
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_flip@busy-flip.html
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_flip@busy-flip.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-y:
    - shard-adlp:         [DMESG-FAIL][140] ([Intel XE#4543]) -> [PASS][141] +3 other tests pass
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-adlp-4/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-y.html
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-9/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-y.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-x-to-y:
    - shard-adlp:         [FAIL][142] ([Intel XE#1874]) -> [PASS][143]
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-adlp-4/igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-x-to-y.html
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-9/igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-x-to-y.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-wc:
    - shard-dg2-set2:     [SKIP][144] ([Intel XE#2351] / [Intel XE#4208]) -> [PASS][145] +17 other tests pass
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-wc.html
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_setmode@invalid-clone-single-crtc-stealing@pipe-a-hdmi-a-6-dp-4:
    - shard-dg2-set2:     [ABORT][146] -> [PASS][147] +1 other test pass
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-463/igt@kms_setmode@invalid-clone-single-crtc-stealing@pipe-a-hdmi-a-6-dp-4.html
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_setmode@invalid-clone-single-crtc-stealing@pipe-a-hdmi-a-6-dp-4.html

  * igt@kms_setmode@invalid-clone-single-crtc-stealing@pipe-b-hdmi-a-6-dp-4:
    - shard-dg2-set2:     [DMESG-WARN][148] ([Intel XE#4212]) -> [PASS][149]
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-463/igt@kms_setmode@invalid-clone-single-crtc-stealing@pipe-b-hdmi-a-6-dp-4.html
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_setmode@invalid-clone-single-crtc-stealing@pipe-b-hdmi-a-6-dp-4.html

  * igt@xe_exec_basic@multigpu-once-null:
    - shard-dg2-set2:     [SKIP][150] ([Intel XE#1392]) -> [PASS][151] +2 other tests pass
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-432/igt@xe_exec_basic@multigpu-once-null.html
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_exec_basic@multigpu-once-null.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-new-bo-map-nomemset:
    - shard-lnl:          [FAIL][152] ([Intel XE#5018]) -> [PASS][153]
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-lnl-8/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-new-bo-map-nomemset.html
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-1/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-new-bo-map-nomemset.html

  * igt@xe_module_load@load:
    - shard-bmg:          ([PASS][154], [PASS][155], [PASS][156], [PASS][157], [PASS][158], [PASS][159], [PASS][160], [PASS][161], [PASS][162], [PASS][163], [PASS][164], [PASS][165], [PASS][166], [PASS][167], [SKIP][168], [PASS][169], [PASS][170], [PASS][171], [PASS][172], [PASS][173], [PASS][174], [PASS][175], [PASS][176], [PASS][177], [PASS][178], [PASS][179]) ([Intel XE#2457]) -> ([PASS][180], [PASS][181], [PASS][182], [PASS][183], [PASS][184], [PASS][185], [PASS][186], [PASS][187], [PASS][188], [PASS][189], [PASS][190], [PASS][191], [PASS][192], [PASS][193], [PASS][194], [PASS][195], [PASS][196], [PASS][197], [PASS][198], [PASS][199], [PASS][200], [PASS][201], [PASS][202], [PASS][203], [PASS][204])
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-2/igt@xe_module_load@load.html
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-8/igt@xe_module_load@load.html
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-6/igt@xe_module_load@load.html
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-6/igt@xe_module_load@load.html
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-2/igt@xe_module_load@load.html
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-5/igt@xe_module_load@load.html
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-4/igt@xe_module_load@load.html
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-7/igt@xe_module_load@load.html
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-8/igt@xe_module_load@load.html
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-5/igt@xe_module_load@load.html
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-1/igt@xe_module_load@load.html
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-1/igt@xe_module_load@load.html
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-7/igt@xe_module_load@load.html
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-7/igt@xe_module_load@load.html
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-1/igt@xe_module_load@load.html
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-5/igt@xe_module_load@load.html
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-2/igt@xe_module_load@load.html
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-8/igt@xe_module_load@load.html
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-4/igt@xe_module_load@load.html
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-4/igt@xe_module_load@load.html
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-3/igt@xe_module_load@load.html
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-6/igt@xe_module_load@load.html
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-3/igt@xe_module_load@load.html
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-6/igt@xe_module_load@load.html
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-3/igt@xe_module_load@load.html
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-bmg-6/igt@xe_module_load@load.html
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-4/igt@xe_module_load@load.html
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-4/igt@xe_module_load@load.html
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-6/igt@xe_module_load@load.html
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-6/igt@xe_module_load@load.html
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-6/igt@xe_module_load@load.html
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-4/igt@xe_module_load@load.html
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-5/igt@xe_module_load@load.html
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-7/igt@xe_module_load@load.html
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-1/igt@xe_module_load@load.html
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-2/igt@xe_module_load@load.html
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-4/igt@xe_module_load@load.html
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-1/igt@xe_module_load@load.html
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-5/igt@xe_module_load@load.html
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-1/igt@xe_module_load@load.html
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-7/igt@xe_module_load@load.html
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-8/igt@xe_module_load@load.html
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-2/igt@xe_module_load@load.html
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-2/igt@xe_module_load@load.html
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-5/igt@xe_module_load@load.html
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-8/igt@xe_module_load@load.html
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-8/igt@xe_module_load@load.html
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-3/igt@xe_module_load@load.html
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-3/igt@xe_module_load@load.html
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-3/igt@xe_module_load@load.html
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-bmg-7/igt@xe_module_load@load.html

  * igt@xe_module_load@many-reload:
    - shard-dg2-set2:     [FAIL][205] ([Intel XE#4208]) -> [PASS][206]
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_module_load@many-reload.html
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_module_load@many-reload.html

  * igt@xe_oa@buffer-fill:
    - shard-lnl:          [FAIL][207] ([Intel XE#4565]) -> [PASS][208]
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-lnl-7/igt@xe_oa@buffer-fill.html
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-3/igt@xe_oa@buffer-fill.html

  * igt@xe_pm@s4-basic:
    - shard-lnl:          [ABORT][209] ([Intel XE#1794]) -> [PASS][210]
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-lnl-2/igt@xe_pm@s4-basic.html
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-lnl-8/igt@xe_pm@s4-basic.html

  * igt@xe_vm@munmap-style-unbind-many-either-side-partial:
    - shard-dg2-set2:     [SKIP][211] ([Intel XE#4208]) -> [PASS][212] +377 other tests pass
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_vm@munmap-style-unbind-many-either-side-partial.html
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_vm@munmap-style-unbind-many-either-side-partial.html

  
#### Warnings ####

  * igt@kms_async_flips@invalid-async-flip-atomic:
    - shard-dg2-set2:     [SKIP][213] ([Intel XE#4208] / [i915#2575]) -> [SKIP][214] ([Intel XE#3768])
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_async_flips@invalid-async-flip-atomic.html
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_async_flips@invalid-async-flip-atomic.html

  * igt@kms_big_fb@linear-16bpp-rotate-90:
    - shard-dg2-set2:     [SKIP][215] ([Intel XE#316]) -> [SKIP][216] ([Intel XE#2351] / [Intel XE#4208]) +1 other test skip
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_big_fb@linear-16bpp-rotate-90.html
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_big_fb@linear-16bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-90:
    - shard-dg2-set2:     [SKIP][217] ([Intel XE#4208]) -> [SKIP][218] ([Intel XE#316]) +2 other tests skip
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-90:
    - shard-dg2-set2:     [SKIP][219] ([Intel XE#2351] / [Intel XE#4208]) -> [SKIP][220] ([Intel XE#316]) +2 other tests skip
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-0:
    - shard-dg2-set2:     [SKIP][221] ([Intel XE#1124]) -> [SKIP][222] ([Intel XE#2351] / [Intel XE#4208])
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_big_fb@y-tiled-8bpp-rotate-0.html
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_big_fb@y-tiled-8bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-addfb-size-overflow:
    - shard-dg2-set2:     [SKIP][223] ([Intel XE#4208]) -> [SKIP][224] ([Intel XE#610])
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_big_fb@y-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180:
    - shard-dg2-set2:     [SKIP][225] ([Intel XE#1124]) -> [SKIP][226] ([Intel XE#4208])
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180.html
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-180:
    - shard-dg2-set2:     [SKIP][227] ([Intel XE#4208]) -> [SKIP][228] ([Intel XE#1124]) +13 other tests skip
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-180:
    - shard-dg2-set2:     [SKIP][229] ([Intel XE#2351] / [Intel XE#4208]) -> [SKIP][230] ([Intel XE#1124]) +6 other tests skip
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-dg2-set2:     [SKIP][231] ([Intel XE#619]) -> [SKIP][232] ([Intel XE#2351] / [Intel XE#4208])
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_big_fb@yf-tiled-addfb.html
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-dg2-set2:     [SKIP][233] ([Intel XE#4208]) -> [SKIP][234] ([Intel XE#607])
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p:
    - shard-dg2-set2:     [SKIP][235] ([Intel XE#4208] / [i915#2575]) -> [SKIP][236] ([Intel XE#2191]) +1 other test skip
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html

  * igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p:
    - shard-dg2-set2:     [SKIP][237] ([Intel XE#2191]) -> [SKIP][238] ([Intel XE#4208] / [i915#2575])
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p.html
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p.html

  * igt@kms_bw@linear-tiling-4-displays-2560x1440p:
    - shard-dg2-set2:     [SKIP][239] ([Intel XE#4208] / [i915#2575]) -> [SKIP][240] ([Intel XE#367]) +4 other tests skip
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_bw@linear-tiling-4-displays-2560x1440p.html
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_bw@linear-tiling-4-displays-2560x1440p.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs:
    - shard-dg2-set2:     [SKIP][241] ([Intel XE#2907]) -> [SKIP][242] ([Intel XE#4208])
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs:
    - shard-dg2-set2:     [SKIP][243] ([Intel XE#2351] / [Intel XE#4208]) -> [SKIP][244] ([Intel XE#455] / [Intel XE#787]) +3 other tests skip
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs.html
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs:
    - shard-dg2-set2:     [SKIP][245] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][246] ([Intel XE#4208]) +1 other test skip
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs.html
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
    - shard-dg2-set2:     [SKIP][247] ([Intel XE#4208]) -> [SKIP][248] ([Intel XE#2907]) +2 other tests skip
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc:
    - shard-dg2-set2:     [SKIP][249] ([Intel XE#4208]) -> [SKIP][250] ([Intel XE#455] / [Intel XE#787]) +21 other tests skip
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc.html
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs:
    - shard-dg2-set2:     [SKIP][251] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][252] ([Intel XE#2351] / [Intel XE#4208])
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs.html
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-dg2-set2:     [SKIP][253] ([Intel XE#2351] / [Intel XE#4208]) -> [SKIP][254] ([Intel XE#4418])
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_cdclk@mode-transition-all-outputs.html
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_chamelium_color@ctm-0-75:
    - shard-dg2-set2:     [SKIP][255] ([Intel XE#4208] / [i915#2575]) -> [SKIP][256] ([Intel XE#306]) +2 other tests skip
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_chamelium_color@ctm-0-75.html
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_chamelium_color@ctm-0-75.html

  * igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode:
    - shard-dg2-set2:     [SKIP][257] ([Intel XE#373]) -> [SKIP][258] ([Intel XE#4208] / [i915#2575])
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode.html
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_chamelium_hpd@hdmi-hpd-enable-disable-mode.html

  * igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode:
    - shard-dg2-set2:     [SKIP][259] ([Intel XE#4208] / [i915#2575]) -> [SKIP][260] ([Intel XE#373]) +21 other tests skip
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html

  * igt@kms_content_protection@lic-type-0:
    - shard-dg2-set2:     [SKIP][261] ([Intel XE#4208] / [i915#2575]) -> [FAIL][262] ([Intel XE#1178]) +2 other tests fail
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_content_protection@lic-type-0.html
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_content_protection@lic-type-0.html

  * igt@kms_content_protection@lic-type-1:
    - shard-dg2-set2:     [SKIP][263] ([Intel XE#4208] / [i915#2575]) -> [SKIP][264] ([Intel XE#455]) +8 other tests skip
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_content_protection@lic-type-1.html
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_content_protection@lic-type-1.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-dg2-set2:     [SKIP][265] ([Intel XE#4208] / [i915#2575]) -> [SKIP][266] ([Intel XE#308]) +2 other tests skip
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_cursor_crc@cursor-onscreen-512x512.html
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-dg2-set2:     [SKIP][267] ([Intel XE#4208] / [i915#2575]) -> [SKIP][268] ([Intel XE#323]) +2 other tests skip
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_dp_link_training@non-uhbr-mst:
    - shard-dg2-set2:     [SKIP][269] ([Intel XE#4208]) -> [SKIP][270] ([Intel XE#4354])
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_dp_link_training@non-uhbr-mst.html
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_dp_link_training@non-uhbr-mst.html

  * igt@kms_dp_link_training@uhbr-sst:
    - shard-dg2-set2:     [SKIP][271] ([Intel XE#4208]) -> [SKIP][272] ([Intel XE#4356]) +1 other test skip
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_dp_link_training@uhbr-sst.html
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_dp_link_training@uhbr-sst.html

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-dg2-set2:     [SKIP][273] ([Intel XE#2351] / [Intel XE#4208]) -> [SKIP][274] ([Intel XE#455]) +3 other tests skip
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_dsc@dsc-with-bpc-formats.html
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats:
    - shard-dg2-set2:     [SKIP][275] ([Intel XE#4208]) -> [SKIP][276] ([Intel XE#4422])
   [275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats.html
   [276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
    - shard-dg2-set2:     [SKIP][277] ([Intel XE#4422]) -> [SKIP][278] ([Intel XE#4208])
   [277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html
   [278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html

  * igt@kms_fbcon_fbt@psr:
    - shard-dg2-set2:     [SKIP][279] ([Intel XE#4208]) -> [SKIP][280] ([Intel XE#776])
   [279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_fbcon_fbt@psr.html
   [280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_fbcon_fbt@psr.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
    - shard-dg2-set2:     [SKIP][281] ([Intel XE#4208] / [i915#2575]) -> [FAIL][282] ([Intel XE#301])
   [281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
   [282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_flip@flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - shard-dg2-set2:     [SKIP][283] ([Intel XE#455]) -> [SKIP][284] ([Intel XE#4208])
   [283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
   [284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
    - shard-dg2-set2:     [SKIP][285] ([Intel XE#4208]) -> [SKIP][286] ([Intel XE#455]) +7 other tests skip
   [285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
   [286]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-y:
    - shard-adlp:         [FAIL][287] ([Intel XE#1874]) -> [DMESG-FAIL][288] ([Intel XE#4543])
   [287]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-adlp-4/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-y.html
   [288]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-adlp-9/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-y.html

  * igt@kms_frontbuffer_tracking@drrs-1p-pri-indfb-multidraw:
    - shard-dg2-set2:     [SKIP][289] ([Intel XE#651]) -> [SKIP][290] ([Intel XE#4208]) +5 other tests skip
   [289]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_frontbuffer_tracking@drrs-1p-pri-indfb-multidraw.html
   [290]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_frontbuffer_tracking@drrs-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary:
    - shard-dg2-set2:     [SKIP][291] ([Intel XE#4208]) -> [SKIP][292] ([Intel XE#651]) +41 other tests skip
   [291]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary.html
   [292]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc:
    - shard-dg2-set2:     [SKIP][293] ([Intel XE#651]) -> [SKIP][294] ([Intel XE#2351] / [Intel XE#4208]) +1 other test skip
   [293]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc.html
   [294]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff:
    - shard-dg2-set2:     [SKIP][295] ([Intel XE#2351] / [Intel XE#4208]) -> [SKIP][296] ([Intel XE#651]) +14 other tests skip
   [295]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff.html
   [296]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-render:
    - shard-dg2-set2:     [SKIP][297] ([Intel XE#653]) -> [SKIP][298] ([Intel XE#4208]) +6 other tests skip
   [297]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-render.html
   [298]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-4:
    - shard-dg2-set2:     [SKIP][299] ([Intel XE#2351] / [Intel XE#4208]) -> [SKIP][300] ([Intel XE#653]) +14 other tests skip
   [299]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html
   [300]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt:
    - shard-dg2-set2:     [SKIP][301] ([Intel XE#4208]) -> [SKIP][302] ([Intel XE#653]) +44 other tests skip
   [301]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt.html
   [302]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt.html

  * igt@kms_getfb@getfb-reject-ccs:
    - shard-dg2-set2:     [SKIP][303] ([Intel XE#4208] / [i915#2575]) -> [SKIP][304] ([Intel XE#605])
   [303]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_getfb@getfb-reject-ccs.html
   [304]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_getfb@getfb-reject-ccs.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-dg2-set2:     [SKIP][305] ([Intel XE#346]) -> [SKIP][306] ([Intel XE#4208])
   [305]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_joiner@basic-big-joiner.html
   [306]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@invalid-modeset-big-joiner:
    - shard-dg2-set2:     [SKIP][307] ([Intel XE#4208]) -> [SKIP][308] ([Intel XE#346])
   [307]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_joiner@invalid-modeset-big-joiner.html
   [308]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_joiner@invalid-modeset-big-joiner.html

  * igt@kms_joiner@invalid-modeset-force-ultra-joiner:
    - shard-dg2-set2:     [SKIP][309] ([Intel XE#2925]) -> [SKIP][310] ([Intel XE#4208])
   [309]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
   [310]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-dg2-set2:     [SKIP][311] ([Intel XE#4208]) -> [SKIP][312] ([Intel XE#2925])
   [311]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
   [312]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_pipe_stress@stress-xrgb8888-ytiled:
    - shard-dg2-set2:     [SKIP][313] ([Intel XE#4208]) -> [SKIP][314] ([Intel XE#4359])
   [313]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html
   [314]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html

  * igt@kms_plane_cursor@primary:
    - shard-dg2-set2:     [SKIP][315] ([Intel XE#4208] / [i915#2575]) -> [FAIL][316] ([Intel XE#616])
   [315]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_plane_cursor@primary.html
   [316]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_plane_cursor@primary.html

  * igt@kms_plane_multiple@2x-tiling-y:
    - shard-dg2-set2:     [SKIP][317] ([Intel XE#4208] / [i915#2575]) -> [SKIP][318] ([Intel XE#5021])
   [317]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_plane_multiple@2x-tiling-y.html
   [318]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_plane_multiple@2x-tiling-y.html

  * igt@kms_plane_multiple@tiling-y:
    - shard-dg2-set2:     [SKIP][319] ([Intel XE#4208] / [i915#2575]) -> [SKIP][320] ([Intel XE#5020])
   [319]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_plane_multiple@tiling-y.html
   [320]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_plane_multiple@tiling-y.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling:
    - shard-dg2-set2:     [SKIP][321] ([Intel XE#4208] / [i915#2575]) -> [SKIP][322] ([Intel XE#2763] / [Intel XE#455]) +3 other tests skip
   [321]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html
   [322]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-dg2-set2:     [SKIP][323] ([Intel XE#4208]) -> [SKIP][324] ([Intel XE#870]) +2 other tests skip
   [323]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_pm_backlight@fade-with-suspend.html
   [324]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-dg2-set2:     [SKIP][325] ([Intel XE#3309]) -> [SKIP][326] ([Intel XE#4208])
   [325]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_pm_dc@dc5-retention-flops.html
   [326]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_properties@get_properties-sanity-non-atomic:
    - shard-dg2-set2:     [SKIP][327] ([Intel XE#4208] / [i915#2575]) -> [FAIL][328] ([Intel XE#5017])
   [327]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_properties@get_properties-sanity-non-atomic.html
   [328]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_properties@get_properties-sanity-non-atomic.html

  * igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area:
    - shard-dg2-set2:     [SKIP][329] ([Intel XE#4208]) -> [SKIP][330] ([Intel XE#1489]) +15 other tests skip
   [329]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html
   [330]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area:
    - shard-dg2-set2:     [SKIP][331] ([Intel XE#1489]) -> [SKIP][332] ([Intel XE#4208])
   [331]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html
   [332]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr@fbc-psr-sprite-render:
    - shard-dg2-set2:     [SKIP][333] ([Intel XE#4208]) -> [SKIP][334] ([Intel XE#2850] / [Intel XE#929]) +18 other tests skip
   [333]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_psr@fbc-psr-sprite-render.html
   [334]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_psr@fbc-psr-sprite-render.html

  * igt@kms_psr@fbc-psr-suspend:
    - shard-dg2-set2:     [SKIP][335] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][336] ([Intel XE#2351] / [Intel XE#4208])
   [335]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_psr@fbc-psr-suspend.html
   [336]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_psr@fbc-psr-suspend.html

  * igt@kms_psr@fbc-psr2-dpms:
    - shard-dg2-set2:     [SKIP][337] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][338] ([Intel XE#4208]) +2 other tests skip
   [337]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_psr@fbc-psr2-dpms.html
   [338]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_psr@fbc-psr2-dpms.html

  * igt@kms_psr@psr-dpms:
    - shard-dg2-set2:     [SKIP][339] ([Intel XE#2351] / [Intel XE#4208]) -> [SKIP][340] ([Intel XE#2850] / [Intel XE#929]) +12 other tests skip
   [339]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_psr@psr-dpms.html
   [340]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_psr@psr-dpms.html

  * igt@kms_rotation_crc@primary-rotation-90:
    - shard-dg2-set2:     [SKIP][341] ([Intel XE#4208] / [i915#2575]) -> [SKIP][342] ([Intel XE#3414]) +2 other tests skip
   [341]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_rotation_crc@primary-rotation-90.html
   [342]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_rotation_crc@primary-rotation-90.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
    - shard-dg2-set2:     [SKIP][343] ([Intel XE#3414]) -> [SKIP][344] ([Intel XE#4208] / [i915#2575])
   [343]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
   [344]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-dg2-set2:     [SKIP][345] ([Intel XE#4208] / [i915#2575]) -> [SKIP][346] ([Intel XE#1127]) +1 other test skip
   [345]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
   [346]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-dg2-set2:     [SKIP][347] ([Intel XE#4208] / [i915#2575]) -> [FAIL][348] ([Intel XE#1729])
   [347]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_tiled_display@basic-test-pattern.html
   [348]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_vrr@lobf:
    - shard-dg2-set2:     [SKIP][349] ([Intel XE#4208] / [i915#2575]) -> [SKIP][350] ([Intel XE#2168]) +1 other test skip
   [349]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_vrr@lobf.html
   [350]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@kms_vrr@lobf.html

  * igt@kms_vrr@seamless-rr-switch-drrs:
    - shard-dg2-set2:     [SKIP][351] ([Intel XE#455]) -> [SKIP][352] ([Intel XE#4208] / [i915#2575]) +1 other test skip
   [351]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@kms_vrr@seamless-rr-switch-drrs.html
   [352]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@kms_vrr@seamless-rr-switch-drrs.html

  * igt@kms_writeback@writeback-check-output:
    - shard-dg2-set2:     [SKIP][353] ([Intel XE#4208] / [i915#2575]) -> [SKIP][354] ([Intel XE#756])
   [353]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@kms_writeback@writeback-check-output.html
   [354]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@kms_writeback@writeback-check-output.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
    - shard-dg2-set2:     [SKIP][355] ([Intel XE#4208] / [i915#2575]) -> [SKIP][356] ([Intel XE#1091] / [Intel XE#2849])
   [355]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
   [356]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html

  * igt@xe_compute_preempt@compute-preempt:
    - shard-dg2-set2:     [SKIP][357] ([Intel XE#4208]) -> [SKIP][358] ([Intel XE#1280] / [Intel XE#455])
   [357]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_compute_preempt@compute-preempt.html
   [358]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@xe_compute_preempt@compute-preempt.html

  * igt@xe_copy_basic@mem-copy-linear-0x3fff:
    - shard-dg2-set2:     [SKIP][359] ([Intel XE#4208]) -> [SKIP][360] ([Intel XE#1123]) +1 other test skip
   [359]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_copy_basic@mem-copy-linear-0x3fff.html
   [360]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_copy_basic@mem-copy-linear-0x3fff.html

  * igt@xe_copy_basic@mem-set-linear-0xfd:
    - shard-dg2-set2:     [SKIP][361] ([Intel XE#4208]) -> [SKIP][362] ([Intel XE#1126]) +1 other test skip
   [361]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_copy_basic@mem-set-linear-0xfd.html
   [362]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_copy_basic@mem-set-linear-0xfd.html

  * igt@xe_eu_stall@blocking-read:
    - shard-dg2-set2:     [SKIP][363] ([Intel XE#4497]) -> [SKIP][364] ([Intel XE#4208])
   [363]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@xe_eu_stall@blocking-read.html
   [364]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_eu_stall@blocking-read.html

  * igt@xe_eu_stall@non-blocking-read:
    - shard-dg2-set2:     [SKIP][365] ([Intel XE#4208]) -> [SKIP][366] ([Intel XE#4497])
   [365]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_eu_stall@non-blocking-read.html
   [366]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_eu_stall@non-blocking-read.html

  * igt@xe_eudebug@basic-vm-bind-extended-discovery:
    - shard-dg2-set2:     [SKIP][367] ([Intel XE#4837]) -> [SKIP][368] ([Intel XE#4208]) +3 other tests skip
   [367]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@xe_eudebug@basic-vm-bind-extended-discovery.html
   [368]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_eudebug@basic-vm-bind-extended-discovery.html

  * igt@xe_eudebug@basic-vm-bind-ufence-delay-ack:
    - shard-dg2-set2:     [SKIP][369] ([Intel XE#4208]) -> [SKIP][370] ([Intel XE#4837]) +25 other tests skip
   [369]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_eudebug@basic-vm-bind-ufence-delay-ack.html
   [370]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_eudebug@basic-vm-bind-ufence-delay-ack.html

  * igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch:
    - shard-dg2-set2:     [SKIP][371] ([Intel XE#288]) -> [SKIP][372] ([Intel XE#4208]) +5 other tests skip
   [371]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch.html
   [372]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch.html

  * igt@xe_exec_fault_mode@twice-userptr-rebind-imm:
    - shard-dg2-set2:     [SKIP][373] ([Intel XE#4208]) -> [SKIP][374] ([Intel XE#288]) +50 other tests skip
   [373]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html
   [374]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html

  * igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence:
    - shard-dg2-set2:     [SKIP][375] ([Intel XE#4208]) -> [SKIP][376] ([Intel XE#2360])
   [375]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence.html
   [376]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence.html

  * igt@xe_exec_system_allocator@many-large-malloc-nomemset:
    - shard-dg2-set2:     [SKIP][377] ([Intel XE#4208]) -> [SKIP][378] ([Intel XE#4915]) +345 other tests skip
   [377]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_exec_system_allocator@many-large-malloc-nomemset.html
   [378]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@xe_exec_system_allocator@many-large-malloc-nomemset.html

  * igt@xe_exec_system_allocator@once-malloc-nomemset:
    - shard-dg2-set2:     [SKIP][379] ([Intel XE#4915]) -> [SKIP][380] ([Intel XE#4208]) +31 other tests skip
   [379]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@xe_exec_system_allocator@once-malloc-nomemset.html
   [380]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_exec_system_allocator@once-malloc-nomemset.html

  * igt@xe_huc_copy@huc_copy:
    - shard-dg2-set2:     [SKIP][381] ([Intel XE#4208]) -> [SKIP][382] ([Intel XE#255])
   [381]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_huc_copy@huc_copy.html
   [382]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_huc_copy@huc_copy.html

  * igt@xe_oa@oa-regs-whitelisted:
    - shard-dg2-set2:     [SKIP][383] ([Intel XE#2541] / [Intel XE#3573]) -> [SKIP][384] ([Intel XE#4208]) +1 other test skip
   [383]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@xe_oa@oa-regs-whitelisted.html
   [384]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_oa@oa-regs-whitelisted.html

  * igt@xe_oa@oa-unit-exclusive-stream-sample-oa:
    - shard-dg2-set2:     [SKIP][385] ([Intel XE#4208]) -> [SKIP][386] ([Intel XE#2541] / [Intel XE#3573]) +9 other tests skip
   [385]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_oa@oa-unit-exclusive-stream-sample-oa.html
   [386]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_oa@oa-unit-exclusive-stream-sample-oa.html

  * igt@xe_oa@syncs-ufence-wait:
    - shard-dg2-set2:     [SKIP][387] ([Intel XE#4208]) -> [SKIP][388] ([Intel XE#2541] / [Intel XE#3573] / [Intel XE#4501]) +2 other tests skip
   [387]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_oa@syncs-ufence-wait.html
   [388]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_oa@syncs-ufence-wait.html

  * igt@xe_pat@pat-index-xe2:
    - shard-dg2-set2:     [SKIP][389] ([Intel XE#4208]) -> [SKIP][390] ([Intel XE#977])
   [389]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_pat@pat-index-xe2.html
   [390]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@xe_pat@pat-index-xe2.html

  * igt@xe_peer2peer@read:
    - shard-dg2-set2:     [FAIL][391] ([Intel XE#1173]) -> [SKIP][392] ([Intel XE#1061]) +1 other test skip
   [391]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-434/igt@xe_peer2peer@read.html
   [392]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-432/igt@xe_peer2peer@read.html

  * igt@xe_pm@d3cold-mmap-vram:
    - shard-dg2-set2:     [SKIP][393] ([Intel XE#4208]) -> [SKIP][394] ([Intel XE#2284] / [Intel XE#366]) +2 other tests skip
   [393]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_pm@d3cold-mmap-vram.html
   [394]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_pm@d3cold-mmap-vram.html

  * igt@xe_pm@vram-d3cold-threshold:
    - shard-dg2-set2:     [SKIP][395] ([Intel XE#4208]) -> [SKIP][396] ([Intel XE#579])
   [395]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_pm@vram-d3cold-threshold.html
   [396]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_pm@vram-d3cold-threshold.html

  * igt@xe_pxp@pxp-termination-key-update-post-suspend:
    - shard-dg2-set2:     [SKIP][397] ([Intel XE#4208]) -> [SKIP][398] ([Intel XE#4733]) +3 other tests skip
   [397]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_pxp@pxp-termination-key-update-post-suspend.html
   [398]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-433/igt@xe_pxp@pxp-termination-key-update-post-suspend.html

  * igt@xe_query@multigpu-query-engines:
    - shard-dg2-set2:     [SKIP][399] ([Intel XE#4208]) -> [SKIP][400] ([Intel XE#944]) +4 other tests skip
   [399]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_query@multigpu-query-engines.html
   [400]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_query@multigpu-query-engines.html

  * igt@xe_query@multigpu-query-topology-l3-bank-mask:
    - shard-dg2-set2:     [SKIP][401] ([Intel XE#944]) -> [SKIP][402] ([Intel XE#4208])
   [401]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@xe_query@multigpu-query-topology-l3-bank-mask.html
   [402]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_query@multigpu-query-topology-l3-bank-mask.html

  * igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling:
    - shard-dg2-set2:     [SKIP][403] ([Intel XE#4208]) -> [SKIP][404] ([Intel XE#4130]) +1 other test skip
   [403]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling.html
   [404]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-464/igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling.html

  * igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs:
    - shard-dg2-set2:     [SKIP][405] ([Intel XE#4130]) -> [SKIP][406] ([Intel XE#4208])
   [405]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-433/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs.html
   [406]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-increase-numvfs.html

  * igt@xe_sriov_scheduling@nonpreempt-engine-resets:
    - shard-dg2-set2:     [SKIP][407] ([Intel XE#4208]) -> [SKIP][408] ([Intel XE#4351])
   [407]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1/shard-dg2-464/igt@xe_sriov_scheduling@nonpreempt-engine-resets.html
   [408]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-148825v3/shard-dg2-435/igt@xe_sriov_scheduling@nonpreempt-engine-resets.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
  [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1158]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1158
  [Intel XE#1173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1173
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1466
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
  [Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
  [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
  [Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
  [Intel XE#2134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2134
  [Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
  [Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2351
  [Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
  [Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
  [Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
  [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
  [Intel XE#2838]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2838
  [Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
  [Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
  [Intel XE#2927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2927
  [Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939
  [Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
  [Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
  [Intel XE#3124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3124
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
  [Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309
  [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#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
  [Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#3767]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3767
  [Intel XE#3768]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3768
  [Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
  [Intel XE#4045]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4045
  [Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
  [Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
  [Intel XE#4208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4208
  [Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
  [Intel XE#4351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4351
  [Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
  [Intel XE#4356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4356
  [Intel XE#4359]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4359
  [Intel XE#4417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4417
  [Intel XE#4418]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4418
  [Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
  [Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
  [Intel XE#4497]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4497
  [Intel XE#4501]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4501
  [Intel XE#4522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4522
  [Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#4565]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4565
  [Intel XE#4618]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4618
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
  [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
  [Intel XE#4983]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4983
  [Intel XE#5017]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5017
  [Intel XE#5018]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5018
  [Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
  [Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
  [Intel XE#579]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/579
  [Intel XE#605]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/605
  [Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
  [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
  [Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/911
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
  [i915#2575]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2575


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

  * Linux: xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1 -> xe-pw-148825v3

  IGT_8364: 8364
  xe-3089-3d6670fab64cb00b5e6ed80d2517147db533faf1: 3d6670fab64cb00b5e6ed80d2517147db533faf1
  xe-pw-148825v3: 148825v3

== Logs ==

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

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

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

* ✗ CI.Patch_applied: failure for Some (drm_sched_|dma_)fence lifetime issues (rev3)
  2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
                   ` (16 preceding siblings ...)
  2025-05-15 20:53 ` ✗ Xe.CI.Full: failure " Patchwork
@ 2025-05-27  2:02 ` Patchwork
  17 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2025-05-27  2:02 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-xe

== Series Details ==

Series: Some (drm_sched_|dma_)fence lifetime issues (rev3)
URL   : https://patchwork.freedesktop.org/series/148825/
State : failure

== Summary ==

=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: 3e019cc3eaff drm-tip: 2025y-05m-26d-14h-49m-23s UTC integration manifest
=== git am output follows ===
error: patch failed: drivers/dma-buf/dma-fence-chain.c:252
error: drivers/dma-buf/dma-fence-chain.c: patch does not apply
error: patch failed: drivers/dma-buf/sw_sync.c:170
error: drivers/dma-buf/sw_sync.c: patch does not apply
error: patch failed: drivers/gpu/drm/xe/xe_hw_fence.c:165
error: drivers/gpu/drm/xe/xe_hw_fence.c: patch does not apply
error: patch failed: drivers/gpu/drm/xe/xe_sched_job.c:216
error: drivers/gpu/drm/xe/xe_sched_job.c: patch does not apply
error: patch failed: include/linux/dma-fence.h:441
error: include/linux/dma-fence.h: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: dma-fence: Change signature of __dma_fence_is_later
Patch failed at 0001 dma-fence: Change signature of __dma_fence_is_later
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".



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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-05-15 13:15   ` Christian König
@ 2025-06-02 13:05     ` Tvrtko Ursulin
  2025-06-02 14:42       ` Christian König
  0 siblings, 1 reply; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-06-02 13:05 UTC (permalink / raw)
  To: Christian König, dri-devel, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann
  Cc: amd-gfx, intel-xe, intel-gfx, linux-media, linaro-mm-sig,
	kernel-dev


Hi,

On 15/05/2025 14:15, Christian König wrote:
> Hey drm-misc maintainers,
> 
> can you guys please backmerge drm-next into drm-misc-next?
> 
> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.

Looks like the backmerge is still pending?

In the meantime, Christian, any chance you will have some bandwith to 
think about the tail end of the series? Specifically patch 6 and how 
that is used onward.

Regards,

Tvrtko

> On 5/15/25 11:49, Tvrtko Ursulin wrote:
>> With the goal of reducing the need for drivers to touch (and dereference)
>> fence->ops, we move the 64-bit seqnos flag from struct dma_fence_ops to
>> the fence->flags.
>>
>> Drivers which were setting this flag are changed to use new
>> dma_fence_init64() instead of dma_fence_init().
>>
>> v2:
>>   * Streamlined init and added kerneldoc.
>>   * Rebase for amdgpu userq which landed since.
>>
>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
>> Reviewed-by: Christian König <christian.koenig@amd.com> # v1
>> ---
>>   drivers/dma-buf/dma-fence-chain.c             |  5 +-
>>   drivers/dma-buf/dma-fence.c                   | 69 ++++++++++++++-----
>>   .../drm/amd/amdgpu/amdgpu_eviction_fence.c    |  7 +-
>>   .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c   |  5 +-
>>   .../gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c  |  5 +-
>>   include/linux/dma-fence.h                     | 14 ++--
>>   6 files changed, 64 insertions(+), 41 deletions(-)
>>
>> diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c
>> index 90424f23fd73..a8a90acf4f34 100644
>> --- a/drivers/dma-buf/dma-fence-chain.c
>> +++ b/drivers/dma-buf/dma-fence-chain.c
>> @@ -218,7 +218,6 @@ static void dma_fence_chain_set_deadline(struct dma_fence *fence,
>>   }
>>   
>>   const struct dma_fence_ops dma_fence_chain_ops = {
>> -	.use_64bit_seqno = true,
>>   	.get_driver_name = dma_fence_chain_get_driver_name,
>>   	.get_timeline_name = dma_fence_chain_get_timeline_name,
>>   	.enable_signaling = dma_fence_chain_enable_signaling,
>> @@ -262,8 +261,8 @@ void dma_fence_chain_init(struct dma_fence_chain *chain,
>>   			seqno = max(prev->seqno, seqno);
>>   	}
>>   
>> -	dma_fence_init(&chain->base, &dma_fence_chain_ops,
>> -		       &chain->lock, context, seqno);
>> +	dma_fence_init64(&chain->base, &dma_fence_chain_ops, &chain->lock,
>> +			 context, seqno);
>>   
>>   	/*
>>   	 * Chaining dma_fence_chain container together is only allowed through
>> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
>> index f0cdd3e99d36..705b59787731 100644
>> --- a/drivers/dma-buf/dma-fence.c
>> +++ b/drivers/dma-buf/dma-fence.c
>> @@ -989,24 +989,9 @@ void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
>>   }
>>   EXPORT_SYMBOL(dma_fence_describe);
>>   
>> -/**
>> - * dma_fence_init - Initialize a custom fence.
>> - * @fence: the fence to initialize
>> - * @ops: the dma_fence_ops for operations on this fence
>> - * @lock: the irqsafe spinlock to use for locking this fence
>> - * @context: the execution context this fence is run on
>> - * @seqno: a linear increasing sequence number for this context
>> - *
>> - * Initializes an allocated fence, the caller doesn't have to keep its
>> - * refcount after committing with this fence, but it will need to hold a
>> - * refcount again if &dma_fence_ops.enable_signaling gets called.
>> - *
>> - * context and seqno are used for easy comparison between fences, allowing
>> - * to check which fence is later by simply using dma_fence_later().
>> - */
>> -void
>> -dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>> -	       spinlock_t *lock, u64 context, u64 seqno)
>> +static void
>> +__dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>> +	         spinlock_t *lock, u64 context, u64 seqno, unsigned long flags)
>>   {
>>   	BUG_ON(!lock);
>>   	BUG_ON(!ops || !ops->get_driver_name || !ops->get_timeline_name);
>> @@ -1017,9 +1002,55 @@ dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>   	fence->lock = lock;
>>   	fence->context = context;
>>   	fence->seqno = seqno;
>> -	fence->flags = 0UL;
>> +	fence->flags = flags;
>>   	fence->error = 0;
>>   
>>   	trace_dma_fence_init(fence);
>>   }
>> +
>> +/**
>> + * dma_fence_init - Initialize a custom fence.
>> + * @fence: the fence to initialize
>> + * @ops: the dma_fence_ops for operations on this fence
>> + * @lock: the irqsafe spinlock to use for locking this fence
>> + * @context: the execution context this fence is run on
>> + * @seqno: a linear increasing sequence number for this context
>> + *
>> + * Initializes an allocated fence, the caller doesn't have to keep its
>> + * refcount after committing with this fence, but it will need to hold a
>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>> + *
>> + * context and seqno are used for easy comparison between fences, allowing
>> + * to check which fence is later by simply using dma_fence_later().
>> + */
>> +void
>> +dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>> +	       spinlock_t *lock, u64 context, u64 seqno)
>> +{
>> +	__dma_fence_init(fence, ops, lock, context, seqno, 0UL);
>> +}
>>   EXPORT_SYMBOL(dma_fence_init);
>> +
>> +/**
>> + * dma_fence_init64 - Initialize a custom fence with 64-bit seqno support.
>> + * @fence: the fence to initialize
>> + * @ops: the dma_fence_ops for operations on this fence
>> + * @lock: the irqsafe spinlock to use for locking this fence
>> + * @context: the execution context this fence is run on
>> + * @seqno: a linear increasing sequence number for this context
>> + *
>> + * Initializes an allocated fence, the caller doesn't have to keep its
>> + * refcount after committing with this fence, but it will need to hold a
>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>> + *
>> + * Context and seqno are used for easy comparison between fences, allowing
>> + * to check which fence is later by simply using dma_fence_later().
>> + */
>> +void
>> +dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>> +		 spinlock_t *lock, u64 context, u64 seqno)
>> +{
>> +	__dma_fence_init(fence, ops, lock, context, seqno,
>> +			 BIT(DMA_FENCE_FLAG_SEQNO64_BIT));
>> +}
>> +EXPORT_SYMBOL(dma_fence_init64);
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>> index 1a7469543db5..79713421bffe 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>> @@ -134,7 +134,6 @@ static bool amdgpu_eviction_fence_enable_signaling(struct dma_fence *f)
>>   }
>>   
>>   static const struct dma_fence_ops amdgpu_eviction_fence_ops = {
>> -	.use_64bit_seqno = true,
>>   	.get_driver_name = amdgpu_eviction_fence_get_driver_name,
>>   	.get_timeline_name = amdgpu_eviction_fence_get_timeline_name,
>>   	.enable_signaling = amdgpu_eviction_fence_enable_signaling,
>> @@ -160,9 +159,9 @@ amdgpu_eviction_fence_create(struct amdgpu_eviction_fence_mgr *evf_mgr)
>>   	ev_fence->evf_mgr = evf_mgr;
>>   	get_task_comm(ev_fence->timeline_name, current);
>>   	spin_lock_init(&ev_fence->lock);
>> -	dma_fence_init(&ev_fence->base, &amdgpu_eviction_fence_ops,
>> -		       &ev_fence->lock, evf_mgr->ev_fence_ctx,
>> -		       atomic_inc_return(&evf_mgr->ev_fence_seq));
>> +	dma_fence_init64(&ev_fence->base, &amdgpu_eviction_fence_ops,
>> +			 &ev_fence->lock, evf_mgr->ev_fence_ctx,
>> +			 atomic_inc_return(&evf_mgr->ev_fence_seq));
>>   	return ev_fence;
>>   }
>>   
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>> index 029cb24c28b3..5e92d00a591f 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>> @@ -239,8 +239,8 @@ static int amdgpu_userq_fence_create(struct amdgpu_usermode_queue *userq,
>>   	fence = &userq_fence->base;
>>   	userq_fence->fence_drv = fence_drv;
>>   
>> -	dma_fence_init(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>> -		       fence_drv->context, seq);
>> +	dma_fence_init64(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>> +			 fence_drv->context, seq);
>>   
>>   	amdgpu_userq_fence_driver_get(fence_drv);
>>   	dma_fence_get(fence);
>> @@ -334,7 +334,6 @@ static void amdgpu_userq_fence_release(struct dma_fence *f)
>>   }
>>   
>>   static const struct dma_fence_ops amdgpu_userq_fence_ops = {
>> -	.use_64bit_seqno = true,
>>   	.get_driver_name = amdgpu_userq_fence_get_driver_name,
>>   	.get_timeline_name = amdgpu_userq_fence_get_timeline_name,
>>   	.signaled = amdgpu_userq_fence_signaled,
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>> index 51cddfa3f1e8..5d26797356a3 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>> @@ -71,7 +71,6 @@ static void amdgpu_tlb_fence_work(struct work_struct *work)
>>   }
>>   
>>   static const struct dma_fence_ops amdgpu_tlb_fence_ops = {
>> -	.use_64bit_seqno = true,
>>   	.get_driver_name = amdgpu_tlb_fence_get_driver_name,
>>   	.get_timeline_name = amdgpu_tlb_fence_get_timeline_name
>>   };
>> @@ -101,8 +100,8 @@ void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev, struct amdgpu_vm *vm
>>   	INIT_WORK(&f->work, amdgpu_tlb_fence_work);
>>   	spin_lock_init(&f->lock);
>>   
>> -	dma_fence_init(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>> -		       vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>> +	dma_fence_init64(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>> +			 vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>   
>>   	/* TODO: We probably need a separate wq here */
>>   	dma_fence_get(&f->base);
>> diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
>> index 48b5202c531d..a34a0dcdc446 100644
>> --- a/include/linux/dma-fence.h
>> +++ b/include/linux/dma-fence.h
>> @@ -97,6 +97,7 @@ struct dma_fence {
>>   };
>>   
>>   enum dma_fence_flag_bits {
>> +	DMA_FENCE_FLAG_SEQNO64_BIT,
>>   	DMA_FENCE_FLAG_SIGNALED_BIT,
>>   	DMA_FENCE_FLAG_TIMESTAMP_BIT,
>>   	DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
>> @@ -124,14 +125,6 @@ struct dma_fence_cb {
>>    *
>>    */
>>   struct dma_fence_ops {
>> -	/**
>> -	 * @use_64bit_seqno:
>> -	 *
>> -	 * True if this dma_fence implementation uses 64bit seqno, false
>> -	 * otherwise.
>> -	 */
>> -	bool use_64bit_seqno;
>> -
>>   	/**
>>   	 * @get_driver_name:
>>   	 *
>> @@ -262,6 +255,9 @@ struct dma_fence_ops {
>>   void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>   		    spinlock_t *lock, u64 context, u64 seqno);
>>   
>> +void dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>> +		      spinlock_t *lock, u64 context, u64 seqno);
>> +
>>   void dma_fence_release(struct kref *kref);
>>   void dma_fence_free(struct dma_fence *fence);
>>   void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq);
>> @@ -454,7 +450,7 @@ static inline bool __dma_fence_is_later(struct dma_fence *fence, u64 f1, u64 f2)
>>   	 * 32bit sequence numbers. Use a 64bit compare when the driver says to
>>   	 * do so.
>>   	 */
>> -	if (fence->ops->use_64bit_seqno)
>> +	if (test_bit(DMA_FENCE_FLAG_SEQNO64_BIT, &fence->flags))
>>   		return f1 > f2;
>>   
>>   	return (int)(lower_32_bits(f1) - lower_32_bits(f2)) > 0;
> 


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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-06-02 13:05     ` Tvrtko Ursulin
@ 2025-06-02 14:42       ` Christian König
  2025-06-02 15:25         ` Tvrtko Ursulin
  2025-06-03 13:13         ` Maxime Ripard
  0 siblings, 2 replies; 34+ messages in thread
From: Christian König @ 2025-06-02 14:42 UTC (permalink / raw)
  To: Tvrtko Ursulin, dri-devel, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann
  Cc: amd-gfx, intel-xe, intel-gfx, linux-media, linaro-mm-sig,
	kernel-dev

On 6/2/25 15:05, Tvrtko Ursulin wrote:
> 
> Hi,
> 
> On 15/05/2025 14:15, Christian König wrote:
>> Hey drm-misc maintainers,
>>
>> can you guys please backmerge drm-next into drm-misc-next?
>>
>> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.
> 
> Looks like the backmerge is still pending?

Yes, @Maarten, @Maxime and @Thomas ping on this.

> In the meantime, Christian, any chance you will have some bandwith to think about the tail end of the series? Specifically patch 6 and how that is used onward.

Well the RCU grace period is quite a nifty hack. I wanted to go over it again after merging the first patches from this series.

In general looks like a good idea to me, I just don't like that we explicitely need to expose dma_fence_access_begin() and dma_fence_access_end().

Especially we can't do that while calling fence->ops->release.

Regards,
Christian.

> 
> Regards,
> 
> Tvrtko
> 
>> On 5/15/25 11:49, Tvrtko Ursulin wrote:
>>> With the goal of reducing the need for drivers to touch (and dereference)
>>> fence->ops, we move the 64-bit seqnos flag from struct dma_fence_ops to
>>> the fence->flags.
>>>
>>> Drivers which were setting this flag are changed to use new
>>> dma_fence_init64() instead of dma_fence_init().
>>>
>>> v2:
>>>   * Streamlined init and added kerneldoc.
>>>   * Rebase for amdgpu userq which landed since.
>>>
>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
>>> Reviewed-by: Christian König <christian.koenig@amd.com> # v1
>>> ---
>>>   drivers/dma-buf/dma-fence-chain.c             |  5 +-
>>>   drivers/dma-buf/dma-fence.c                   | 69 ++++++++++++++-----
>>>   .../drm/amd/amdgpu/amdgpu_eviction_fence.c    |  7 +-
>>>   .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c   |  5 +-
>>>   .../gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c  |  5 +-
>>>   include/linux/dma-fence.h                     | 14 ++--
>>>   6 files changed, 64 insertions(+), 41 deletions(-)
>>>
>>> diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c
>>> index 90424f23fd73..a8a90acf4f34 100644
>>> --- a/drivers/dma-buf/dma-fence-chain.c
>>> +++ b/drivers/dma-buf/dma-fence-chain.c
>>> @@ -218,7 +218,6 @@ static void dma_fence_chain_set_deadline(struct dma_fence *fence,
>>>   }
>>>     const struct dma_fence_ops dma_fence_chain_ops = {
>>> -    .use_64bit_seqno = true,
>>>       .get_driver_name = dma_fence_chain_get_driver_name,
>>>       .get_timeline_name = dma_fence_chain_get_timeline_name,
>>>       .enable_signaling = dma_fence_chain_enable_signaling,
>>> @@ -262,8 +261,8 @@ void dma_fence_chain_init(struct dma_fence_chain *chain,
>>>               seqno = max(prev->seqno, seqno);
>>>       }
>>>   -    dma_fence_init(&chain->base, &dma_fence_chain_ops,
>>> -               &chain->lock, context, seqno);
>>> +    dma_fence_init64(&chain->base, &dma_fence_chain_ops, &chain->lock,
>>> +             context, seqno);
>>>         /*
>>>        * Chaining dma_fence_chain container together is only allowed through
>>> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
>>> index f0cdd3e99d36..705b59787731 100644
>>> --- a/drivers/dma-buf/dma-fence.c
>>> +++ b/drivers/dma-buf/dma-fence.c
>>> @@ -989,24 +989,9 @@ void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
>>>   }
>>>   EXPORT_SYMBOL(dma_fence_describe);
>>>   -/**
>>> - * dma_fence_init - Initialize a custom fence.
>>> - * @fence: the fence to initialize
>>> - * @ops: the dma_fence_ops for operations on this fence
>>> - * @lock: the irqsafe spinlock to use for locking this fence
>>> - * @context: the execution context this fence is run on
>>> - * @seqno: a linear increasing sequence number for this context
>>> - *
>>> - * Initializes an allocated fence, the caller doesn't have to keep its
>>> - * refcount after committing with this fence, but it will need to hold a
>>> - * refcount again if &dma_fence_ops.enable_signaling gets called.
>>> - *
>>> - * context and seqno are used for easy comparison between fences, allowing
>>> - * to check which fence is later by simply using dma_fence_later().
>>> - */
>>> -void
>>> -dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>> -           spinlock_t *lock, u64 context, u64 seqno)
>>> +static void
>>> +__dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>> +             spinlock_t *lock, u64 context, u64 seqno, unsigned long flags)
>>>   {
>>>       BUG_ON(!lock);
>>>       BUG_ON(!ops || !ops->get_driver_name || !ops->get_timeline_name);
>>> @@ -1017,9 +1002,55 @@ dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>       fence->lock = lock;
>>>       fence->context = context;
>>>       fence->seqno = seqno;
>>> -    fence->flags = 0UL;
>>> +    fence->flags = flags;
>>>       fence->error = 0;
>>>         trace_dma_fence_init(fence);
>>>   }
>>> +
>>> +/**
>>> + * dma_fence_init - Initialize a custom fence.
>>> + * @fence: the fence to initialize
>>> + * @ops: the dma_fence_ops for operations on this fence
>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>> + * @context: the execution context this fence is run on
>>> + * @seqno: a linear increasing sequence number for this context
>>> + *
>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>> + * refcount after committing with this fence, but it will need to hold a
>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>> + *
>>> + * context and seqno are used for easy comparison between fences, allowing
>>> + * to check which fence is later by simply using dma_fence_later().
>>> + */
>>> +void
>>> +dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>> +           spinlock_t *lock, u64 context, u64 seqno)
>>> +{
>>> +    __dma_fence_init(fence, ops, lock, context, seqno, 0UL);
>>> +}
>>>   EXPORT_SYMBOL(dma_fence_init);
>>> +
>>> +/**
>>> + * dma_fence_init64 - Initialize a custom fence with 64-bit seqno support.
>>> + * @fence: the fence to initialize
>>> + * @ops: the dma_fence_ops for operations on this fence
>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>> + * @context: the execution context this fence is run on
>>> + * @seqno: a linear increasing sequence number for this context
>>> + *
>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>> + * refcount after committing with this fence, but it will need to hold a
>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>> + *
>>> + * Context and seqno are used for easy comparison between fences, allowing
>>> + * to check which fence is later by simply using dma_fence_later().
>>> + */
>>> +void
>>> +dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>> +         spinlock_t *lock, u64 context, u64 seqno)
>>> +{
>>> +    __dma_fence_init(fence, ops, lock, context, seqno,
>>> +             BIT(DMA_FENCE_FLAG_SEQNO64_BIT));
>>> +}
>>> +EXPORT_SYMBOL(dma_fence_init64);
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>> index 1a7469543db5..79713421bffe 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>> @@ -134,7 +134,6 @@ static bool amdgpu_eviction_fence_enable_signaling(struct dma_fence *f)
>>>   }
>>>     static const struct dma_fence_ops amdgpu_eviction_fence_ops = {
>>> -    .use_64bit_seqno = true,
>>>       .get_driver_name = amdgpu_eviction_fence_get_driver_name,
>>>       .get_timeline_name = amdgpu_eviction_fence_get_timeline_name,
>>>       .enable_signaling = amdgpu_eviction_fence_enable_signaling,
>>> @@ -160,9 +159,9 @@ amdgpu_eviction_fence_create(struct amdgpu_eviction_fence_mgr *evf_mgr)
>>>       ev_fence->evf_mgr = evf_mgr;
>>>       get_task_comm(ev_fence->timeline_name, current);
>>>       spin_lock_init(&ev_fence->lock);
>>> -    dma_fence_init(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>> -               &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>> -               atomic_inc_return(&evf_mgr->ev_fence_seq));
>>> +    dma_fence_init64(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>> +             &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>> +             atomic_inc_return(&evf_mgr->ev_fence_seq));
>>>       return ev_fence;
>>>   }
>>>   diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>> index 029cb24c28b3..5e92d00a591f 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>> @@ -239,8 +239,8 @@ static int amdgpu_userq_fence_create(struct amdgpu_usermode_queue *userq,
>>>       fence = &userq_fence->base;
>>>       userq_fence->fence_drv = fence_drv;
>>>   -    dma_fence_init(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>> -               fence_drv->context, seq);
>>> +    dma_fence_init64(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>> +             fence_drv->context, seq);
>>>         amdgpu_userq_fence_driver_get(fence_drv);
>>>       dma_fence_get(fence);
>>> @@ -334,7 +334,6 @@ static void amdgpu_userq_fence_release(struct dma_fence *f)
>>>   }
>>>     static const struct dma_fence_ops amdgpu_userq_fence_ops = {
>>> -    .use_64bit_seqno = true,
>>>       .get_driver_name = amdgpu_userq_fence_get_driver_name,
>>>       .get_timeline_name = amdgpu_userq_fence_get_timeline_name,
>>>       .signaled = amdgpu_userq_fence_signaled,
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>> index 51cddfa3f1e8..5d26797356a3 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>> @@ -71,7 +71,6 @@ static void amdgpu_tlb_fence_work(struct work_struct *work)
>>>   }
>>>     static const struct dma_fence_ops amdgpu_tlb_fence_ops = {
>>> -    .use_64bit_seqno = true,
>>>       .get_driver_name = amdgpu_tlb_fence_get_driver_name,
>>>       .get_timeline_name = amdgpu_tlb_fence_get_timeline_name
>>>   };
>>> @@ -101,8 +100,8 @@ void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev, struct amdgpu_vm *vm
>>>       INIT_WORK(&f->work, amdgpu_tlb_fence_work);
>>>       spin_lock_init(&f->lock);
>>>   -    dma_fence_init(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>> -               vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>> +    dma_fence_init64(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>> +             vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>>         /* TODO: We probably need a separate wq here */
>>>       dma_fence_get(&f->base);
>>> diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
>>> index 48b5202c531d..a34a0dcdc446 100644
>>> --- a/include/linux/dma-fence.h
>>> +++ b/include/linux/dma-fence.h
>>> @@ -97,6 +97,7 @@ struct dma_fence {
>>>   };
>>>     enum dma_fence_flag_bits {
>>> +    DMA_FENCE_FLAG_SEQNO64_BIT,
>>>       DMA_FENCE_FLAG_SIGNALED_BIT,
>>>       DMA_FENCE_FLAG_TIMESTAMP_BIT,
>>>       DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
>>> @@ -124,14 +125,6 @@ struct dma_fence_cb {
>>>    *
>>>    */
>>>   struct dma_fence_ops {
>>> -    /**
>>> -     * @use_64bit_seqno:
>>> -     *
>>> -     * True if this dma_fence implementation uses 64bit seqno, false
>>> -     * otherwise.
>>> -     */
>>> -    bool use_64bit_seqno;
>>> -
>>>       /**
>>>        * @get_driver_name:
>>>        *
>>> @@ -262,6 +255,9 @@ struct dma_fence_ops {
>>>   void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>               spinlock_t *lock, u64 context, u64 seqno);
>>>   +void dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>> +              spinlock_t *lock, u64 context, u64 seqno);
>>> +
>>>   void dma_fence_release(struct kref *kref);
>>>   void dma_fence_free(struct dma_fence *fence);
>>>   void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq);
>>> @@ -454,7 +450,7 @@ static inline bool __dma_fence_is_later(struct dma_fence *fence, u64 f1, u64 f2)
>>>        * 32bit sequence numbers. Use a 64bit compare when the driver says to
>>>        * do so.
>>>        */
>>> -    if (fence->ops->use_64bit_seqno)
>>> +    if (test_bit(DMA_FENCE_FLAG_SEQNO64_BIT, &fence->flags))
>>>           return f1 > f2;
>>>         return (int)(lower_32_bits(f1) - lower_32_bits(f2)) > 0;
>>
> 


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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-06-02 14:42       ` Christian König
@ 2025-06-02 15:25         ` Tvrtko Ursulin
       [not found]           ` <2ffc513c-2d11-4b76-b9c9-c7cb7841e386@amd.com>
  2025-06-03 13:13         ` Maxime Ripard
  1 sibling, 1 reply; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-06-02 15:25 UTC (permalink / raw)
  To: Christian König, dri-devel, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann
  Cc: amd-gfx, intel-xe, intel-gfx, linux-media, linaro-mm-sig,
	kernel-dev


On 02/06/2025 15:42, Christian König wrote:
> On 6/2/25 15:05, Tvrtko Ursulin wrote:
>>
>> Hi,
>>
>> On 15/05/2025 14:15, Christian König wrote:
>>> Hey drm-misc maintainers,
>>>
>>> can you guys please backmerge drm-next into drm-misc-next?
>>>
>>> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.
>>
>> Looks like the backmerge is still pending?
> 
> Yes, @Maarten, @Maxime and @Thomas ping on this.
> 
>> In the meantime, Christian, any chance you will have some bandwith to think about the tail end of the series? Specifically patch 6 and how that is used onward.
> 
> Well the RCU grace period is quite a nifty hack. I wanted to go over it again after merging the first patches from this series.
> 
> In general looks like a good idea to me, I just don't like that we explicitely need to expose dma_fence_access_begin() and dma_fence_access_end().
> 
> Especially we can't do that while calling fence->ops->release.

Hm why not? You think something will take offence of the rcu_read_lock()?

Regards,

Tvrtko

>>> On 5/15/25 11:49, Tvrtko Ursulin wrote:
>>>> With the goal of reducing the need for drivers to touch (and dereference)
>>>> fence->ops, we move the 64-bit seqnos flag from struct dma_fence_ops to
>>>> the fence->flags.
>>>>
>>>> Drivers which were setting this flag are changed to use new
>>>> dma_fence_init64() instead of dma_fence_init().
>>>>
>>>> v2:
>>>>    * Streamlined init and added kerneldoc.
>>>>    * Rebase for amdgpu userq which landed since.
>>>>
>>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
>>>> Reviewed-by: Christian König <christian.koenig@amd.com> # v1
>>>> ---
>>>>    drivers/dma-buf/dma-fence-chain.c             |  5 +-
>>>>    drivers/dma-buf/dma-fence.c                   | 69 ++++++++++++++-----
>>>>    .../drm/amd/amdgpu/amdgpu_eviction_fence.c    |  7 +-
>>>>    .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c   |  5 +-
>>>>    .../gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c  |  5 +-
>>>>    include/linux/dma-fence.h                     | 14 ++--
>>>>    6 files changed, 64 insertions(+), 41 deletions(-)
>>>>
>>>> diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c
>>>> index 90424f23fd73..a8a90acf4f34 100644
>>>> --- a/drivers/dma-buf/dma-fence-chain.c
>>>> +++ b/drivers/dma-buf/dma-fence-chain.c
>>>> @@ -218,7 +218,6 @@ static void dma_fence_chain_set_deadline(struct dma_fence *fence,
>>>>    }
>>>>      const struct dma_fence_ops dma_fence_chain_ops = {
>>>> -    .use_64bit_seqno = true,
>>>>        .get_driver_name = dma_fence_chain_get_driver_name,
>>>>        .get_timeline_name = dma_fence_chain_get_timeline_name,
>>>>        .enable_signaling = dma_fence_chain_enable_signaling,
>>>> @@ -262,8 +261,8 @@ void dma_fence_chain_init(struct dma_fence_chain *chain,
>>>>                seqno = max(prev->seqno, seqno);
>>>>        }
>>>>    -    dma_fence_init(&chain->base, &dma_fence_chain_ops,
>>>> -               &chain->lock, context, seqno);
>>>> +    dma_fence_init64(&chain->base, &dma_fence_chain_ops, &chain->lock,
>>>> +             context, seqno);
>>>>          /*
>>>>         * Chaining dma_fence_chain container together is only allowed through
>>>> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
>>>> index f0cdd3e99d36..705b59787731 100644
>>>> --- a/drivers/dma-buf/dma-fence.c
>>>> +++ b/drivers/dma-buf/dma-fence.c
>>>> @@ -989,24 +989,9 @@ void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
>>>>    }
>>>>    EXPORT_SYMBOL(dma_fence_describe);
>>>>    -/**
>>>> - * dma_fence_init - Initialize a custom fence.
>>>> - * @fence: the fence to initialize
>>>> - * @ops: the dma_fence_ops for operations on this fence
>>>> - * @lock: the irqsafe spinlock to use for locking this fence
>>>> - * @context: the execution context this fence is run on
>>>> - * @seqno: a linear increasing sequence number for this context
>>>> - *
>>>> - * Initializes an allocated fence, the caller doesn't have to keep its
>>>> - * refcount after committing with this fence, but it will need to hold a
>>>> - * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>> - *
>>>> - * context and seqno are used for easy comparison between fences, allowing
>>>> - * to check which fence is later by simply using dma_fence_later().
>>>> - */
>>>> -void
>>>> -dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>> -           spinlock_t *lock, u64 context, u64 seqno)
>>>> +static void
>>>> +__dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>> +             spinlock_t *lock, u64 context, u64 seqno, unsigned long flags)
>>>>    {
>>>>        BUG_ON(!lock);
>>>>        BUG_ON(!ops || !ops->get_driver_name || !ops->get_timeline_name);
>>>> @@ -1017,9 +1002,55 @@ dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>        fence->lock = lock;
>>>>        fence->context = context;
>>>>        fence->seqno = seqno;
>>>> -    fence->flags = 0UL;
>>>> +    fence->flags = flags;
>>>>        fence->error = 0;
>>>>          trace_dma_fence_init(fence);
>>>>    }
>>>> +
>>>> +/**
>>>> + * dma_fence_init - Initialize a custom fence.
>>>> + * @fence: the fence to initialize
>>>> + * @ops: the dma_fence_ops for operations on this fence
>>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>>> + * @context: the execution context this fence is run on
>>>> + * @seqno: a linear increasing sequence number for this context
>>>> + *
>>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>>> + * refcount after committing with this fence, but it will need to hold a
>>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>> + *
>>>> + * context and seqno are used for easy comparison between fences, allowing
>>>> + * to check which fence is later by simply using dma_fence_later().
>>>> + */
>>>> +void
>>>> +dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>> +           spinlock_t *lock, u64 context, u64 seqno)
>>>> +{
>>>> +    __dma_fence_init(fence, ops, lock, context, seqno, 0UL);
>>>> +}
>>>>    EXPORT_SYMBOL(dma_fence_init);
>>>> +
>>>> +/**
>>>> + * dma_fence_init64 - Initialize a custom fence with 64-bit seqno support.
>>>> + * @fence: the fence to initialize
>>>> + * @ops: the dma_fence_ops for operations on this fence
>>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>>> + * @context: the execution context this fence is run on
>>>> + * @seqno: a linear increasing sequence number for this context
>>>> + *
>>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>>> + * refcount after committing with this fence, but it will need to hold a
>>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>> + *
>>>> + * Context and seqno are used for easy comparison between fences, allowing
>>>> + * to check which fence is later by simply using dma_fence_later().
>>>> + */
>>>> +void
>>>> +dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>> +         spinlock_t *lock, u64 context, u64 seqno)
>>>> +{
>>>> +    __dma_fence_init(fence, ops, lock, context, seqno,
>>>> +             BIT(DMA_FENCE_FLAG_SEQNO64_BIT));
>>>> +}
>>>> +EXPORT_SYMBOL(dma_fence_init64);
>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>> index 1a7469543db5..79713421bffe 100644
>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>> @@ -134,7 +134,6 @@ static bool amdgpu_eviction_fence_enable_signaling(struct dma_fence *f)
>>>>    }
>>>>      static const struct dma_fence_ops amdgpu_eviction_fence_ops = {
>>>> -    .use_64bit_seqno = true,
>>>>        .get_driver_name = amdgpu_eviction_fence_get_driver_name,
>>>>        .get_timeline_name = amdgpu_eviction_fence_get_timeline_name,
>>>>        .enable_signaling = amdgpu_eviction_fence_enable_signaling,
>>>> @@ -160,9 +159,9 @@ amdgpu_eviction_fence_create(struct amdgpu_eviction_fence_mgr *evf_mgr)
>>>>        ev_fence->evf_mgr = evf_mgr;
>>>>        get_task_comm(ev_fence->timeline_name, current);
>>>>        spin_lock_init(&ev_fence->lock);
>>>> -    dma_fence_init(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>>> -               &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>>> -               atomic_inc_return(&evf_mgr->ev_fence_seq));
>>>> +    dma_fence_init64(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>>> +             &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>>> +             atomic_inc_return(&evf_mgr->ev_fence_seq));
>>>>        return ev_fence;
>>>>    }
>>>>    diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>> index 029cb24c28b3..5e92d00a591f 100644
>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>> @@ -239,8 +239,8 @@ static int amdgpu_userq_fence_create(struct amdgpu_usermode_queue *userq,
>>>>        fence = &userq_fence->base;
>>>>        userq_fence->fence_drv = fence_drv;
>>>>    -    dma_fence_init(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>>> -               fence_drv->context, seq);
>>>> +    dma_fence_init64(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>>> +             fence_drv->context, seq);
>>>>          amdgpu_userq_fence_driver_get(fence_drv);
>>>>        dma_fence_get(fence);
>>>> @@ -334,7 +334,6 @@ static void amdgpu_userq_fence_release(struct dma_fence *f)
>>>>    }
>>>>      static const struct dma_fence_ops amdgpu_userq_fence_ops = {
>>>> -    .use_64bit_seqno = true,
>>>>        .get_driver_name = amdgpu_userq_fence_get_driver_name,
>>>>        .get_timeline_name = amdgpu_userq_fence_get_timeline_name,
>>>>        .signaled = amdgpu_userq_fence_signaled,
>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>> index 51cddfa3f1e8..5d26797356a3 100644
>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>> @@ -71,7 +71,6 @@ static void amdgpu_tlb_fence_work(struct work_struct *work)
>>>>    }
>>>>      static const struct dma_fence_ops amdgpu_tlb_fence_ops = {
>>>> -    .use_64bit_seqno = true,
>>>>        .get_driver_name = amdgpu_tlb_fence_get_driver_name,
>>>>        .get_timeline_name = amdgpu_tlb_fence_get_timeline_name
>>>>    };
>>>> @@ -101,8 +100,8 @@ void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev, struct amdgpu_vm *vm
>>>>        INIT_WORK(&f->work, amdgpu_tlb_fence_work);
>>>>        spin_lock_init(&f->lock);
>>>>    -    dma_fence_init(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>>> -               vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>>> +    dma_fence_init64(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>>> +             vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>>>          /* TODO: We probably need a separate wq here */
>>>>        dma_fence_get(&f->base);
>>>> diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
>>>> index 48b5202c531d..a34a0dcdc446 100644
>>>> --- a/include/linux/dma-fence.h
>>>> +++ b/include/linux/dma-fence.h
>>>> @@ -97,6 +97,7 @@ struct dma_fence {
>>>>    };
>>>>      enum dma_fence_flag_bits {
>>>> +    DMA_FENCE_FLAG_SEQNO64_BIT,
>>>>        DMA_FENCE_FLAG_SIGNALED_BIT,
>>>>        DMA_FENCE_FLAG_TIMESTAMP_BIT,
>>>>        DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
>>>> @@ -124,14 +125,6 @@ struct dma_fence_cb {
>>>>     *
>>>>     */
>>>>    struct dma_fence_ops {
>>>> -    /**
>>>> -     * @use_64bit_seqno:
>>>> -     *
>>>> -     * True if this dma_fence implementation uses 64bit seqno, false
>>>> -     * otherwise.
>>>> -     */
>>>> -    bool use_64bit_seqno;
>>>> -
>>>>        /**
>>>>         * @get_driver_name:
>>>>         *
>>>> @@ -262,6 +255,9 @@ struct dma_fence_ops {
>>>>    void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>                spinlock_t *lock, u64 context, u64 seqno);
>>>>    +void dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>> +              spinlock_t *lock, u64 context, u64 seqno);
>>>> +
>>>>    void dma_fence_release(struct kref *kref);
>>>>    void dma_fence_free(struct dma_fence *fence);
>>>>    void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq);
>>>> @@ -454,7 +450,7 @@ static inline bool __dma_fence_is_later(struct dma_fence *fence, u64 f1, u64 f2)
>>>>         * 32bit sequence numbers. Use a 64bit compare when the driver says to
>>>>         * do so.
>>>>         */
>>>> -    if (fence->ops->use_64bit_seqno)
>>>> +    if (test_bit(DMA_FENCE_FLAG_SEQNO64_BIT, &fence->flags))
>>>>            return f1 > f2;
>>>>          return (int)(lower_32_bits(f1) - lower_32_bits(f2)) > 0;
>>>
>>
> 


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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
       [not found]           ` <2ffc513c-2d11-4b76-b9c9-c7cb7841e386@amd.com>
@ 2025-06-03 11:30             ` Tvrtko Ursulin
  2025-06-03 12:40               ` Christian König
  0 siblings, 1 reply; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-06-03 11:30 UTC (permalink / raw)
  To: Christian König, dri-devel, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann
  Cc: amd-gfx, intel-xe, intel-gfx, linux-media, linaro-mm-sig,
	kernel-dev


On 02/06/2025 19:00, Christian König wrote:
> On 6/2/25 17:25, Tvrtko Ursulin wrote:
>>
>> On 02/06/2025 15:42, Christian König wrote:
>>> On 6/2/25 15:05, Tvrtko Ursulin wrote:
>>>>
>>>> Hi,
>>>>
>>>> On 15/05/2025 14:15, Christian König wrote:
>>>>> Hey drm-misc maintainers,
>>>>>
>>>>> can you guys please backmerge drm-next into drm-misc-next?
>>>>>
>>>>> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.
>>>>
>>>> Looks like the backmerge is still pending?
>>>
>>> Yes, @Maarten, @Maxime and @Thomas ping on this.
>>>
>>>> In the meantime, Christian, any chance you will have some bandwith to think about the tail end of the series? Specifically patch 6 and how that is used onward.
>>>
>>> Well the RCU grace period is quite a nifty hack. I wanted to go over it again after merging the first patches from this series.
>>>
>>> In general looks like a good idea to me, I just don't like that we explicitely need to expose dma_fence_access_begin() and dma_fence_access_end().
>>>
>>> Especially we can't do that while calling fence->ops->release.
>>
>> Hm why not? You think something will take offence of the rcu_read_lock()?
> 
> Yes, especially it is perfectly legitimate to call synchronize_rcu() or lock semaphores/mutexes from that callback.
> 
> Either keep the RCU critical section only for the trace or even better come up with some different approach, e.g. copying the string under the RCU lock or something like that.

Hmm but the kerneldoc explicity says callback can be called from irq 
context:

	/**
	 * @release:
	 *
	 * Called on destruction of fence to release additional resources.
	 * Can be called from irq context.  This callback is optional. If it is
	 * NULL, then dma_fence_free() is instead called as the default
	 * implementation.
	 */
	void (*release)(struct dma_fence *fence);


Regards,

Tvrtko

> 
> Regards,
> Christian.
> 
>>
>> Regards,
>>
>> Tvrtko
>>
>>>>> On 5/15/25 11:49, Tvrtko Ursulin wrote:
>>>>>> With the goal of reducing the need for drivers to touch (and dereference)
>>>>>> fence->ops, we move the 64-bit seqnos flag from struct dma_fence_ops to
>>>>>> the fence->flags.
>>>>>>
>>>>>> Drivers which were setting this flag are changed to use new
>>>>>> dma_fence_init64() instead of dma_fence_init().
>>>>>>
>>>>>> v2:
>>>>>>     * Streamlined init and added kerneldoc.
>>>>>>     * Rebase for amdgpu userq which landed since.
>>>>>>
>>>>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
>>>>>> Reviewed-by: Christian König <christian.koenig@amd.com> # v1
>>>>>> ---
>>>>>>     drivers/dma-buf/dma-fence-chain.c             |  5 +-
>>>>>>     drivers/dma-buf/dma-fence.c                   | 69 ++++++++++++++-----
>>>>>>     .../drm/amd/amdgpu/amdgpu_eviction_fence.c    |  7 +-
>>>>>>     .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c   |  5 +-
>>>>>>     .../gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c  |  5 +-
>>>>>>     include/linux/dma-fence.h                     | 14 ++--
>>>>>>     6 files changed, 64 insertions(+), 41 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c
>>>>>> index 90424f23fd73..a8a90acf4f34 100644
>>>>>> --- a/drivers/dma-buf/dma-fence-chain.c
>>>>>> +++ b/drivers/dma-buf/dma-fence-chain.c
>>>>>> @@ -218,7 +218,6 @@ static void dma_fence_chain_set_deadline(struct dma_fence *fence,
>>>>>>     }
>>>>>>       const struct dma_fence_ops dma_fence_chain_ops = {
>>>>>> -    .use_64bit_seqno = true,
>>>>>>         .get_driver_name = dma_fence_chain_get_driver_name,
>>>>>>         .get_timeline_name = dma_fence_chain_get_timeline_name,
>>>>>>         .enable_signaling = dma_fence_chain_enable_signaling,
>>>>>> @@ -262,8 +261,8 @@ void dma_fence_chain_init(struct dma_fence_chain *chain,
>>>>>>                 seqno = max(prev->seqno, seqno);
>>>>>>         }
>>>>>>     -    dma_fence_init(&chain->base, &dma_fence_chain_ops,
>>>>>> -               &chain->lock, context, seqno);
>>>>>> +    dma_fence_init64(&chain->base, &dma_fence_chain_ops, &chain->lock,
>>>>>> +             context, seqno);
>>>>>>           /*
>>>>>>          * Chaining dma_fence_chain container together is only allowed through
>>>>>> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
>>>>>> index f0cdd3e99d36..705b59787731 100644
>>>>>> --- a/drivers/dma-buf/dma-fence.c
>>>>>> +++ b/drivers/dma-buf/dma-fence.c
>>>>>> @@ -989,24 +989,9 @@ void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
>>>>>>     }
>>>>>>     EXPORT_SYMBOL(dma_fence_describe);
>>>>>>     -/**
>>>>>> - * dma_fence_init - Initialize a custom fence.
>>>>>> - * @fence: the fence to initialize
>>>>>> - * @ops: the dma_fence_ops for operations on this fence
>>>>>> - * @lock: the irqsafe spinlock to use for locking this fence
>>>>>> - * @context: the execution context this fence is run on
>>>>>> - * @seqno: a linear increasing sequence number for this context
>>>>>> - *
>>>>>> - * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>> - * refcount after committing with this fence, but it will need to hold a
>>>>>> - * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>> - *
>>>>>> - * context and seqno are used for easy comparison between fences, allowing
>>>>>> - * to check which fence is later by simply using dma_fence_later().
>>>>>> - */
>>>>>> -void
>>>>>> -dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>> -           spinlock_t *lock, u64 context, u64 seqno)
>>>>>> +static void
>>>>>> +__dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>> +             spinlock_t *lock, u64 context, u64 seqno, unsigned long flags)
>>>>>>     {
>>>>>>         BUG_ON(!lock);
>>>>>>         BUG_ON(!ops || !ops->get_driver_name || !ops->get_timeline_name);
>>>>>> @@ -1017,9 +1002,55 @@ dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>         fence->lock = lock;
>>>>>>         fence->context = context;
>>>>>>         fence->seqno = seqno;
>>>>>> -    fence->flags = 0UL;
>>>>>> +    fence->flags = flags;
>>>>>>         fence->error = 0;
>>>>>>           trace_dma_fence_init(fence);
>>>>>>     }
>>>>>> +
>>>>>> +/**
>>>>>> + * dma_fence_init - Initialize a custom fence.
>>>>>> + * @fence: the fence to initialize
>>>>>> + * @ops: the dma_fence_ops for operations on this fence
>>>>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>>>>> + * @context: the execution context this fence is run on
>>>>>> + * @seqno: a linear increasing sequence number for this context
>>>>>> + *
>>>>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>> + * refcount after committing with this fence, but it will need to hold a
>>>>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>> + *
>>>>>> + * context and seqno are used for easy comparison between fences, allowing
>>>>>> + * to check which fence is later by simply using dma_fence_later().
>>>>>> + */
>>>>>> +void
>>>>>> +dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>> +           spinlock_t *lock, u64 context, u64 seqno)
>>>>>> +{
>>>>>> +    __dma_fence_init(fence, ops, lock, context, seqno, 0UL);
>>>>>> +}
>>>>>>     EXPORT_SYMBOL(dma_fence_init);
>>>>>> +
>>>>>> +/**
>>>>>> + * dma_fence_init64 - Initialize a custom fence with 64-bit seqno support.
>>>>>> + * @fence: the fence to initialize
>>>>>> + * @ops: the dma_fence_ops for operations on this fence
>>>>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>>>>> + * @context: the execution context this fence is run on
>>>>>> + * @seqno: a linear increasing sequence number for this context
>>>>>> + *
>>>>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>> + * refcount after committing with this fence, but it will need to hold a
>>>>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>> + *
>>>>>> + * Context and seqno are used for easy comparison between fences, allowing
>>>>>> + * to check which fence is later by simply using dma_fence_later().
>>>>>> + */
>>>>>> +void
>>>>>> +dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>> +         spinlock_t *lock, u64 context, u64 seqno)
>>>>>> +{
>>>>>> +    __dma_fence_init(fence, ops, lock, context, seqno,
>>>>>> +             BIT(DMA_FENCE_FLAG_SEQNO64_BIT));
>>>>>> +}
>>>>>> +EXPORT_SYMBOL(dma_fence_init64);
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>> index 1a7469543db5..79713421bffe 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>> @@ -134,7 +134,6 @@ static bool amdgpu_eviction_fence_enable_signaling(struct dma_fence *f)
>>>>>>     }
>>>>>>       static const struct dma_fence_ops amdgpu_eviction_fence_ops = {
>>>>>> -    .use_64bit_seqno = true,
>>>>>>         .get_driver_name = amdgpu_eviction_fence_get_driver_name,
>>>>>>         .get_timeline_name = amdgpu_eviction_fence_get_timeline_name,
>>>>>>         .enable_signaling = amdgpu_eviction_fence_enable_signaling,
>>>>>> @@ -160,9 +159,9 @@ amdgpu_eviction_fence_create(struct amdgpu_eviction_fence_mgr *evf_mgr)
>>>>>>         ev_fence->evf_mgr = evf_mgr;
>>>>>>         get_task_comm(ev_fence->timeline_name, current);
>>>>>>         spin_lock_init(&ev_fence->lock);
>>>>>> -    dma_fence_init(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>>>>> -               &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>>>>> -               atomic_inc_return(&evf_mgr->ev_fence_seq));
>>>>>> +    dma_fence_init64(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>>>>> +             &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>>>>> +             atomic_inc_return(&evf_mgr->ev_fence_seq));
>>>>>>         return ev_fence;
>>>>>>     }
>>>>>>     diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>> index 029cb24c28b3..5e92d00a591f 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>> @@ -239,8 +239,8 @@ static int amdgpu_userq_fence_create(struct amdgpu_usermode_queue *userq,
>>>>>>         fence = &userq_fence->base;
>>>>>>         userq_fence->fence_drv = fence_drv;
>>>>>>     -    dma_fence_init(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>>>>> -               fence_drv->context, seq);
>>>>>> +    dma_fence_init64(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>>>>> +             fence_drv->context, seq);
>>>>>>           amdgpu_userq_fence_driver_get(fence_drv);
>>>>>>         dma_fence_get(fence);
>>>>>> @@ -334,7 +334,6 @@ static void amdgpu_userq_fence_release(struct dma_fence *f)
>>>>>>     }
>>>>>>       static const struct dma_fence_ops amdgpu_userq_fence_ops = {
>>>>>> -    .use_64bit_seqno = true,
>>>>>>         .get_driver_name = amdgpu_userq_fence_get_driver_name,
>>>>>>         .get_timeline_name = amdgpu_userq_fence_get_timeline_name,
>>>>>>         .signaled = amdgpu_userq_fence_signaled,
>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>> index 51cddfa3f1e8..5d26797356a3 100644
>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>> @@ -71,7 +71,6 @@ static void amdgpu_tlb_fence_work(struct work_struct *work)
>>>>>>     }
>>>>>>       static const struct dma_fence_ops amdgpu_tlb_fence_ops = {
>>>>>> -    .use_64bit_seqno = true,
>>>>>>         .get_driver_name = amdgpu_tlb_fence_get_driver_name,
>>>>>>         .get_timeline_name = amdgpu_tlb_fence_get_timeline_name
>>>>>>     };
>>>>>> @@ -101,8 +100,8 @@ void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev, struct amdgpu_vm *vm
>>>>>>         INIT_WORK(&f->work, amdgpu_tlb_fence_work);
>>>>>>         spin_lock_init(&f->lock);
>>>>>>     -    dma_fence_init(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>>>>> -               vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>>>>> +    dma_fence_init64(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>>>>> +             vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>>>>>           /* TODO: We probably need a separate wq here */
>>>>>>         dma_fence_get(&f->base);
>>>>>> diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
>>>>>> index 48b5202c531d..a34a0dcdc446 100644
>>>>>> --- a/include/linux/dma-fence.h
>>>>>> +++ b/include/linux/dma-fence.h
>>>>>> @@ -97,6 +97,7 @@ struct dma_fence {
>>>>>>     };
>>>>>>       enum dma_fence_flag_bits {
>>>>>> +    DMA_FENCE_FLAG_SEQNO64_BIT,
>>>>>>         DMA_FENCE_FLAG_SIGNALED_BIT,
>>>>>>         DMA_FENCE_FLAG_TIMESTAMP_BIT,
>>>>>>         DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
>>>>>> @@ -124,14 +125,6 @@ struct dma_fence_cb {
>>>>>>      *
>>>>>>      */
>>>>>>     struct dma_fence_ops {
>>>>>> -    /**
>>>>>> -     * @use_64bit_seqno:
>>>>>> -     *
>>>>>> -     * True if this dma_fence implementation uses 64bit seqno, false
>>>>>> -     * otherwise.
>>>>>> -     */
>>>>>> -    bool use_64bit_seqno;
>>>>>> -
>>>>>>         /**
>>>>>>          * @get_driver_name:
>>>>>>          *
>>>>>> @@ -262,6 +255,9 @@ struct dma_fence_ops {
>>>>>>     void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>                 spinlock_t *lock, u64 context, u64 seqno);
>>>>>>     +void dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>> +              spinlock_t *lock, u64 context, u64 seqno);
>>>>>> +
>>>>>>     void dma_fence_release(struct kref *kref);
>>>>>>     void dma_fence_free(struct dma_fence *fence);
>>>>>>     void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq);
>>>>>> @@ -454,7 +450,7 @@ static inline bool __dma_fence_is_later(struct dma_fence *fence, u64 f1, u64 f2)
>>>>>>          * 32bit sequence numbers. Use a 64bit compare when the driver says to
>>>>>>          * do so.
>>>>>>          */
>>>>>> -    if (fence->ops->use_64bit_seqno)
>>>>>> +    if (test_bit(DMA_FENCE_FLAG_SEQNO64_BIT, &fence->flags))
>>>>>>             return f1 > f2;
>>>>>>           return (int)(lower_32_bits(f1) - lower_32_bits(f2)) > 0;
>>>>>
>>>>
>>>
>>
> 


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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-06-03 11:30             ` Tvrtko Ursulin
@ 2025-06-03 12:40               ` Christian König
  2025-06-03 12:48                 ` Tvrtko Ursulin
  0 siblings, 1 reply; 34+ messages in thread
From: Christian König @ 2025-06-03 12:40 UTC (permalink / raw)
  To: Tvrtko Ursulin, dri-devel, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann
  Cc: amd-gfx, intel-xe, intel-gfx, linux-media, linaro-mm-sig,
	kernel-dev

On 6/3/25 13:30, Tvrtko Ursulin wrote:
> 
> On 02/06/2025 19:00, Christian König wrote:
>> On 6/2/25 17:25, Tvrtko Ursulin wrote:
>>>
>>> On 02/06/2025 15:42, Christian König wrote:
>>>> On 6/2/25 15:05, Tvrtko Ursulin wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> On 15/05/2025 14:15, Christian König wrote:
>>>>>> Hey drm-misc maintainers,
>>>>>>
>>>>>> can you guys please backmerge drm-next into drm-misc-next?
>>>>>>
>>>>>> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.
>>>>>
>>>>> Looks like the backmerge is still pending?
>>>>
>>>> Yes, @Maarten, @Maxime and @Thomas ping on this.
>>>>
>>>>> In the meantime, Christian, any chance you will have some bandwith to think about the tail end of the series? Specifically patch 6 and how that is used onward.
>>>>
>>>> Well the RCU grace period is quite a nifty hack. I wanted to go over it again after merging the first patches from this series.
>>>>
>>>> In general looks like a good idea to me, I just don't like that we explicitely need to expose dma_fence_access_begin() and dma_fence_access_end().
>>>>
>>>> Especially we can't do that while calling fence->ops->release.
>>>
>>> Hm why not? You think something will take offence of the rcu_read_lock()?
>>
>> Yes, especially it is perfectly legitimate to call synchronize_rcu() or lock semaphores/mutexes from that callback.
>>
>> Either keep the RCU critical section only for the trace or even better come up with some different approach, e.g. copying the string under the RCU lock or something like that.
> 
> Hmm but the kerneldoc explicity says callback can be called from irq context:
> 
>     /**
>      * @release:
>      *
>      * Called on destruction of fence to release additional resources.
>      * Can be called from irq context.  This callback is optional. If it is
>      * NULL, then dma_fence_free() is instead called as the default
>      * implementation.
>      */
>     void (*release)(struct dma_fence *fence);

Ah, right. I mixed that up with the dma-buf object.

Yeah in that case that is probably harmless. We delegate the final free to a work item if necessary anyway.

But I would still like to avoid having the RCU cover the release as well. Or why is there any reason why we would explicitely want to do this?

Regards,
Christian.

> 
> 
> Regards,
> 
> Tvrtko
> 
>>
>> Regards,
>> Christian.
>>
>>>
>>> Regards,
>>>
>>> Tvrtko
>>>
>>>>>> On 5/15/25 11:49, Tvrtko Ursulin wrote:
>>>>>>> With the goal of reducing the need for drivers to touch (and dereference)
>>>>>>> fence->ops, we move the 64-bit seqnos flag from struct dma_fence_ops to
>>>>>>> the fence->flags.
>>>>>>>
>>>>>>> Drivers which were setting this flag are changed to use new
>>>>>>> dma_fence_init64() instead of dma_fence_init().
>>>>>>>
>>>>>>> v2:
>>>>>>>     * Streamlined init and added kerneldoc.
>>>>>>>     * Rebase for amdgpu userq which landed since.
>>>>>>>
>>>>>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
>>>>>>> Reviewed-by: Christian König <christian.koenig@amd.com> # v1
>>>>>>> ---
>>>>>>>     drivers/dma-buf/dma-fence-chain.c             |  5 +-
>>>>>>>     drivers/dma-buf/dma-fence.c                   | 69 ++++++++++++++-----
>>>>>>>     .../drm/amd/amdgpu/amdgpu_eviction_fence.c    |  7 +-
>>>>>>>     .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c   |  5 +-
>>>>>>>     .../gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c  |  5 +-
>>>>>>>     include/linux/dma-fence.h                     | 14 ++--
>>>>>>>     6 files changed, 64 insertions(+), 41 deletions(-)
>>>>>>>
>>>>>>> diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c
>>>>>>> index 90424f23fd73..a8a90acf4f34 100644
>>>>>>> --- a/drivers/dma-buf/dma-fence-chain.c
>>>>>>> +++ b/drivers/dma-buf/dma-fence-chain.c
>>>>>>> @@ -218,7 +218,6 @@ static void dma_fence_chain_set_deadline(struct dma_fence *fence,
>>>>>>>     }
>>>>>>>       const struct dma_fence_ops dma_fence_chain_ops = {
>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>         .get_driver_name = dma_fence_chain_get_driver_name,
>>>>>>>         .get_timeline_name = dma_fence_chain_get_timeline_name,
>>>>>>>         .enable_signaling = dma_fence_chain_enable_signaling,
>>>>>>> @@ -262,8 +261,8 @@ void dma_fence_chain_init(struct dma_fence_chain *chain,
>>>>>>>                 seqno = max(prev->seqno, seqno);
>>>>>>>         }
>>>>>>>     -    dma_fence_init(&chain->base, &dma_fence_chain_ops,
>>>>>>> -               &chain->lock, context, seqno);
>>>>>>> +    dma_fence_init64(&chain->base, &dma_fence_chain_ops, &chain->lock,
>>>>>>> +             context, seqno);
>>>>>>>           /*
>>>>>>>          * Chaining dma_fence_chain container together is only allowed through
>>>>>>> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
>>>>>>> index f0cdd3e99d36..705b59787731 100644
>>>>>>> --- a/drivers/dma-buf/dma-fence.c
>>>>>>> +++ b/drivers/dma-buf/dma-fence.c
>>>>>>> @@ -989,24 +989,9 @@ void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
>>>>>>>     }
>>>>>>>     EXPORT_SYMBOL(dma_fence_describe);
>>>>>>>     -/**
>>>>>>> - * dma_fence_init - Initialize a custom fence.
>>>>>>> - * @fence: the fence to initialize
>>>>>>> - * @ops: the dma_fence_ops for operations on this fence
>>>>>>> - * @lock: the irqsafe spinlock to use for locking this fence
>>>>>>> - * @context: the execution context this fence is run on
>>>>>>> - * @seqno: a linear increasing sequence number for this context
>>>>>>> - *
>>>>>>> - * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>>> - * refcount after committing with this fence, but it will need to hold a
>>>>>>> - * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>>> - *
>>>>>>> - * context and seqno are used for easy comparison between fences, allowing
>>>>>>> - * to check which fence is later by simply using dma_fence_later().
>>>>>>> - */
>>>>>>> -void
>>>>>>> -dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>> -           spinlock_t *lock, u64 context, u64 seqno)
>>>>>>> +static void
>>>>>>> +__dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>> +             spinlock_t *lock, u64 context, u64 seqno, unsigned long flags)
>>>>>>>     {
>>>>>>>         BUG_ON(!lock);
>>>>>>>         BUG_ON(!ops || !ops->get_driver_name || !ops->get_timeline_name);
>>>>>>> @@ -1017,9 +1002,55 @@ dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>         fence->lock = lock;
>>>>>>>         fence->context = context;
>>>>>>>         fence->seqno = seqno;
>>>>>>> -    fence->flags = 0UL;
>>>>>>> +    fence->flags = flags;
>>>>>>>         fence->error = 0;
>>>>>>>           trace_dma_fence_init(fence);
>>>>>>>     }
>>>>>>> +
>>>>>>> +/**
>>>>>>> + * dma_fence_init - Initialize a custom fence.
>>>>>>> + * @fence: the fence to initialize
>>>>>>> + * @ops: the dma_fence_ops for operations on this fence
>>>>>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>>>>>> + * @context: the execution context this fence is run on
>>>>>>> + * @seqno: a linear increasing sequence number for this context
>>>>>>> + *
>>>>>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>>> + * refcount after committing with this fence, but it will need to hold a
>>>>>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>>> + *
>>>>>>> + * context and seqno are used for easy comparison between fences, allowing
>>>>>>> + * to check which fence is later by simply using dma_fence_later().
>>>>>>> + */
>>>>>>> +void
>>>>>>> +dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>> +           spinlock_t *lock, u64 context, u64 seqno)
>>>>>>> +{
>>>>>>> +    __dma_fence_init(fence, ops, lock, context, seqno, 0UL);
>>>>>>> +}
>>>>>>>     EXPORT_SYMBOL(dma_fence_init);
>>>>>>> +
>>>>>>> +/**
>>>>>>> + * dma_fence_init64 - Initialize a custom fence with 64-bit seqno support.
>>>>>>> + * @fence: the fence to initialize
>>>>>>> + * @ops: the dma_fence_ops for operations on this fence
>>>>>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>>>>>> + * @context: the execution context this fence is run on
>>>>>>> + * @seqno: a linear increasing sequence number for this context
>>>>>>> + *
>>>>>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>>> + * refcount after committing with this fence, but it will need to hold a
>>>>>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>>> + *
>>>>>>> + * Context and seqno are used for easy comparison between fences, allowing
>>>>>>> + * to check which fence is later by simply using dma_fence_later().
>>>>>>> + */
>>>>>>> +void
>>>>>>> +dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>> +         spinlock_t *lock, u64 context, u64 seqno)
>>>>>>> +{
>>>>>>> +    __dma_fence_init(fence, ops, lock, context, seqno,
>>>>>>> +             BIT(DMA_FENCE_FLAG_SEQNO64_BIT));
>>>>>>> +}
>>>>>>> +EXPORT_SYMBOL(dma_fence_init64);
>>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>>> index 1a7469543db5..79713421bffe 100644
>>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>>> @@ -134,7 +134,6 @@ static bool amdgpu_eviction_fence_enable_signaling(struct dma_fence *f)
>>>>>>>     }
>>>>>>>       static const struct dma_fence_ops amdgpu_eviction_fence_ops = {
>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>         .get_driver_name = amdgpu_eviction_fence_get_driver_name,
>>>>>>>         .get_timeline_name = amdgpu_eviction_fence_get_timeline_name,
>>>>>>>         .enable_signaling = amdgpu_eviction_fence_enable_signaling,
>>>>>>> @@ -160,9 +159,9 @@ amdgpu_eviction_fence_create(struct amdgpu_eviction_fence_mgr *evf_mgr)
>>>>>>>         ev_fence->evf_mgr = evf_mgr;
>>>>>>>         get_task_comm(ev_fence->timeline_name, current);
>>>>>>>         spin_lock_init(&ev_fence->lock);
>>>>>>> -    dma_fence_init(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>>>>>> -               &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>>>>>> -               atomic_inc_return(&evf_mgr->ev_fence_seq));
>>>>>>> +    dma_fence_init64(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>>>>>> +             &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>>>>>> +             atomic_inc_return(&evf_mgr->ev_fence_seq));
>>>>>>>         return ev_fence;
>>>>>>>     }
>>>>>>>     diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>>> index 029cb24c28b3..5e92d00a591f 100644
>>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>>> @@ -239,8 +239,8 @@ static int amdgpu_userq_fence_create(struct amdgpu_usermode_queue *userq,
>>>>>>>         fence = &userq_fence->base;
>>>>>>>         userq_fence->fence_drv = fence_drv;
>>>>>>>     -    dma_fence_init(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>>>>>> -               fence_drv->context, seq);
>>>>>>> +    dma_fence_init64(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>>>>>> +             fence_drv->context, seq);
>>>>>>>           amdgpu_userq_fence_driver_get(fence_drv);
>>>>>>>         dma_fence_get(fence);
>>>>>>> @@ -334,7 +334,6 @@ static void amdgpu_userq_fence_release(struct dma_fence *f)
>>>>>>>     }
>>>>>>>       static const struct dma_fence_ops amdgpu_userq_fence_ops = {
>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>         .get_driver_name = amdgpu_userq_fence_get_driver_name,
>>>>>>>         .get_timeline_name = amdgpu_userq_fence_get_timeline_name,
>>>>>>>         .signaled = amdgpu_userq_fence_signaled,
>>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>>> index 51cddfa3f1e8..5d26797356a3 100644
>>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>>> @@ -71,7 +71,6 @@ static void amdgpu_tlb_fence_work(struct work_struct *work)
>>>>>>>     }
>>>>>>>       static const struct dma_fence_ops amdgpu_tlb_fence_ops = {
>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>         .get_driver_name = amdgpu_tlb_fence_get_driver_name,
>>>>>>>         .get_timeline_name = amdgpu_tlb_fence_get_timeline_name
>>>>>>>     };
>>>>>>> @@ -101,8 +100,8 @@ void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev, struct amdgpu_vm *vm
>>>>>>>         INIT_WORK(&f->work, amdgpu_tlb_fence_work);
>>>>>>>         spin_lock_init(&f->lock);
>>>>>>>     -    dma_fence_init(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>>>>>> -               vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>>>>>> +    dma_fence_init64(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>>>>>> +             vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>>>>>>           /* TODO: We probably need a separate wq here */
>>>>>>>         dma_fence_get(&f->base);
>>>>>>> diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
>>>>>>> index 48b5202c531d..a34a0dcdc446 100644
>>>>>>> --- a/include/linux/dma-fence.h
>>>>>>> +++ b/include/linux/dma-fence.h
>>>>>>> @@ -97,6 +97,7 @@ struct dma_fence {
>>>>>>>     };
>>>>>>>       enum dma_fence_flag_bits {
>>>>>>> +    DMA_FENCE_FLAG_SEQNO64_BIT,
>>>>>>>         DMA_FENCE_FLAG_SIGNALED_BIT,
>>>>>>>         DMA_FENCE_FLAG_TIMESTAMP_BIT,
>>>>>>>         DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
>>>>>>> @@ -124,14 +125,6 @@ struct dma_fence_cb {
>>>>>>>      *
>>>>>>>      */
>>>>>>>     struct dma_fence_ops {
>>>>>>> -    /**
>>>>>>> -     * @use_64bit_seqno:
>>>>>>> -     *
>>>>>>> -     * True if this dma_fence implementation uses 64bit seqno, false
>>>>>>> -     * otherwise.
>>>>>>> -     */
>>>>>>> -    bool use_64bit_seqno;
>>>>>>> -
>>>>>>>         /**
>>>>>>>          * @get_driver_name:
>>>>>>>          *
>>>>>>> @@ -262,6 +255,9 @@ struct dma_fence_ops {
>>>>>>>     void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>                 spinlock_t *lock, u64 context, u64 seqno);
>>>>>>>     +void dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>> +              spinlock_t *lock, u64 context, u64 seqno);
>>>>>>> +
>>>>>>>     void dma_fence_release(struct kref *kref);
>>>>>>>     void dma_fence_free(struct dma_fence *fence);
>>>>>>>     void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq);
>>>>>>> @@ -454,7 +450,7 @@ static inline bool __dma_fence_is_later(struct dma_fence *fence, u64 f1, u64 f2)
>>>>>>>          * 32bit sequence numbers. Use a 64bit compare when the driver says to
>>>>>>>          * do so.
>>>>>>>          */
>>>>>>> -    if (fence->ops->use_64bit_seqno)
>>>>>>> +    if (test_bit(DMA_FENCE_FLAG_SEQNO64_BIT, &fence->flags))
>>>>>>>             return f1 > f2;
>>>>>>>           return (int)(lower_32_bits(f1) - lower_32_bits(f2)) > 0;
>>>>>>
>>>>>
>>>>
>>>
>>
> 


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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-06-03 12:40               ` Christian König
@ 2025-06-03 12:48                 ` Tvrtko Ursulin
  2025-06-03 14:00                   ` Christian König
  0 siblings, 1 reply; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-06-03 12:48 UTC (permalink / raw)
  To: Christian König, dri-devel, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann
  Cc: amd-gfx, intel-xe, intel-gfx, linux-media, linaro-mm-sig,
	kernel-dev


On 03/06/2025 13:40, Christian König wrote:
> On 6/3/25 13:30, Tvrtko Ursulin wrote:
>>
>> On 02/06/2025 19:00, Christian König wrote:
>>> On 6/2/25 17:25, Tvrtko Ursulin wrote:
>>>>
>>>> On 02/06/2025 15:42, Christian König wrote:
>>>>> On 6/2/25 15:05, Tvrtko Ursulin wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> On 15/05/2025 14:15, Christian König wrote:
>>>>>>> Hey drm-misc maintainers,
>>>>>>>
>>>>>>> can you guys please backmerge drm-next into drm-misc-next?
>>>>>>>
>>>>>>> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.
>>>>>>
>>>>>> Looks like the backmerge is still pending?
>>>>>
>>>>> Yes, @Maarten, @Maxime and @Thomas ping on this.
>>>>>
>>>>>> In the meantime, Christian, any chance you will have some bandwith to think about the tail end of the series? Specifically patch 6 and how that is used onward.
>>>>>
>>>>> Well the RCU grace period is quite a nifty hack. I wanted to go over it again after merging the first patches from this series.
>>>>>
>>>>> In general looks like a good idea to me, I just don't like that we explicitely need to expose dma_fence_access_begin() and dma_fence_access_end().
>>>>>
>>>>> Especially we can't do that while calling fence->ops->release.
>>>>
>>>> Hm why not? You think something will take offence of the rcu_read_lock()?
>>>
>>> Yes, especially it is perfectly legitimate to call synchronize_rcu() or lock semaphores/mutexes from that callback.
>>>
>>> Either keep the RCU critical section only for the trace or even better come up with some different approach, e.g. copying the string under the RCU lock or something like that.
>>
>> Hmm but the kerneldoc explicity says callback can be called from irq context:
>>
>>      /**
>>       * @release:
>>       *
>>       * Called on destruction of fence to release additional resources.
>>       * Can be called from irq context.  This callback is optional. If it is
>>       * NULL, then dma_fence_free() is instead called as the default
>>       * implementation.
>>       */
>>      void (*release)(struct dma_fence *fence);
> 
> Ah, right. I mixed that up with the dma-buf object.
> 
> Yeah in that case that is probably harmless. We delegate the final free to a work item if necessary anyway.
> 
> But I would still like to avoid having the RCU cover the release as well. Or why is there any reason why we would explicitely want to do this?

I can't remember there was a particular reason. Obviously the 
driver/timeline name vfunc access I needed a 
dma_fence_access_begin/end() block so maybe I was just sloppy and put 
the end at the end of the function instead of at the end of the block 
which can dereference them.

I will pull it earlier for the next respin, assuming no gotchas get 
discovered in the process.

Regards,

Tvrtko

> 
> Regards,
> Christian.
> 
>>
>>
>> Regards,
>>
>> Tvrtko
>>
>>>
>>> Regards,
>>> Christian.
>>>
>>>>
>>>> Regards,
>>>>
>>>> Tvrtko
>>>>
>>>>>>> On 5/15/25 11:49, Tvrtko Ursulin wrote:
>>>>>>>> With the goal of reducing the need for drivers to touch (and dereference)
>>>>>>>> fence->ops, we move the 64-bit seqnos flag from struct dma_fence_ops to
>>>>>>>> the fence->flags.
>>>>>>>>
>>>>>>>> Drivers which were setting this flag are changed to use new
>>>>>>>> dma_fence_init64() instead of dma_fence_init().
>>>>>>>>
>>>>>>>> v2:
>>>>>>>>      * Streamlined init and added kerneldoc.
>>>>>>>>      * Rebase for amdgpu userq which landed since.
>>>>>>>>
>>>>>>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
>>>>>>>> Reviewed-by: Christian König <christian.koenig@amd.com> # v1
>>>>>>>> ---
>>>>>>>>      drivers/dma-buf/dma-fence-chain.c             |  5 +-
>>>>>>>>      drivers/dma-buf/dma-fence.c                   | 69 ++++++++++++++-----
>>>>>>>>      .../drm/amd/amdgpu/amdgpu_eviction_fence.c    |  7 +-
>>>>>>>>      .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c   |  5 +-
>>>>>>>>      .../gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c  |  5 +-
>>>>>>>>      include/linux/dma-fence.h                     | 14 ++--
>>>>>>>>      6 files changed, 64 insertions(+), 41 deletions(-)
>>>>>>>>
>>>>>>>> diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c
>>>>>>>> index 90424f23fd73..a8a90acf4f34 100644
>>>>>>>> --- a/drivers/dma-buf/dma-fence-chain.c
>>>>>>>> +++ b/drivers/dma-buf/dma-fence-chain.c
>>>>>>>> @@ -218,7 +218,6 @@ static void dma_fence_chain_set_deadline(struct dma_fence *fence,
>>>>>>>>      }
>>>>>>>>        const struct dma_fence_ops dma_fence_chain_ops = {
>>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>>          .get_driver_name = dma_fence_chain_get_driver_name,
>>>>>>>>          .get_timeline_name = dma_fence_chain_get_timeline_name,
>>>>>>>>          .enable_signaling = dma_fence_chain_enable_signaling,
>>>>>>>> @@ -262,8 +261,8 @@ void dma_fence_chain_init(struct dma_fence_chain *chain,
>>>>>>>>                  seqno = max(prev->seqno, seqno);
>>>>>>>>          }
>>>>>>>>      -    dma_fence_init(&chain->base, &dma_fence_chain_ops,
>>>>>>>> -               &chain->lock, context, seqno);
>>>>>>>> +    dma_fence_init64(&chain->base, &dma_fence_chain_ops, &chain->lock,
>>>>>>>> +             context, seqno);
>>>>>>>>            /*
>>>>>>>>           * Chaining dma_fence_chain container together is only allowed through
>>>>>>>> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
>>>>>>>> index f0cdd3e99d36..705b59787731 100644
>>>>>>>> --- a/drivers/dma-buf/dma-fence.c
>>>>>>>> +++ b/drivers/dma-buf/dma-fence.c
>>>>>>>> @@ -989,24 +989,9 @@ void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
>>>>>>>>      }
>>>>>>>>      EXPORT_SYMBOL(dma_fence_describe);
>>>>>>>>      -/**
>>>>>>>> - * dma_fence_init - Initialize a custom fence.
>>>>>>>> - * @fence: the fence to initialize
>>>>>>>> - * @ops: the dma_fence_ops for operations on this fence
>>>>>>>> - * @lock: the irqsafe spinlock to use for locking this fence
>>>>>>>> - * @context: the execution context this fence is run on
>>>>>>>> - * @seqno: a linear increasing sequence number for this context
>>>>>>>> - *
>>>>>>>> - * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>>>> - * refcount after committing with this fence, but it will need to hold a
>>>>>>>> - * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>>>> - *
>>>>>>>> - * context and seqno are used for easy comparison between fences, allowing
>>>>>>>> - * to check which fence is later by simply using dma_fence_later().
>>>>>>>> - */
>>>>>>>> -void
>>>>>>>> -dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>> -           spinlock_t *lock, u64 context, u64 seqno)
>>>>>>>> +static void
>>>>>>>> +__dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>> +             spinlock_t *lock, u64 context, u64 seqno, unsigned long flags)
>>>>>>>>      {
>>>>>>>>          BUG_ON(!lock);
>>>>>>>>          BUG_ON(!ops || !ops->get_driver_name || !ops->get_timeline_name);
>>>>>>>> @@ -1017,9 +1002,55 @@ dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>>          fence->lock = lock;
>>>>>>>>          fence->context = context;
>>>>>>>>          fence->seqno = seqno;
>>>>>>>> -    fence->flags = 0UL;
>>>>>>>> +    fence->flags = flags;
>>>>>>>>          fence->error = 0;
>>>>>>>>            trace_dma_fence_init(fence);
>>>>>>>>      }
>>>>>>>> +
>>>>>>>> +/**
>>>>>>>> + * dma_fence_init - Initialize a custom fence.
>>>>>>>> + * @fence: the fence to initialize
>>>>>>>> + * @ops: the dma_fence_ops for operations on this fence
>>>>>>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>>>>>>> + * @context: the execution context this fence is run on
>>>>>>>> + * @seqno: a linear increasing sequence number for this context
>>>>>>>> + *
>>>>>>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>>>> + * refcount after committing with this fence, but it will need to hold a
>>>>>>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>>>> + *
>>>>>>>> + * context and seqno are used for easy comparison between fences, allowing
>>>>>>>> + * to check which fence is later by simply using dma_fence_later().
>>>>>>>> + */
>>>>>>>> +void
>>>>>>>> +dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>> +           spinlock_t *lock, u64 context, u64 seqno)
>>>>>>>> +{
>>>>>>>> +    __dma_fence_init(fence, ops, lock, context, seqno, 0UL);
>>>>>>>> +}
>>>>>>>>      EXPORT_SYMBOL(dma_fence_init);
>>>>>>>> +
>>>>>>>> +/**
>>>>>>>> + * dma_fence_init64 - Initialize a custom fence with 64-bit seqno support.
>>>>>>>> + * @fence: the fence to initialize
>>>>>>>> + * @ops: the dma_fence_ops for operations on this fence
>>>>>>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>>>>>>> + * @context: the execution context this fence is run on
>>>>>>>> + * @seqno: a linear increasing sequence number for this context
>>>>>>>> + *
>>>>>>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>>>> + * refcount after committing with this fence, but it will need to hold a
>>>>>>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>>>> + *
>>>>>>>> + * Context and seqno are used for easy comparison between fences, allowing
>>>>>>>> + * to check which fence is later by simply using dma_fence_later().
>>>>>>>> + */
>>>>>>>> +void
>>>>>>>> +dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>> +         spinlock_t *lock, u64 context, u64 seqno)
>>>>>>>> +{
>>>>>>>> +    __dma_fence_init(fence, ops, lock, context, seqno,
>>>>>>>> +             BIT(DMA_FENCE_FLAG_SEQNO64_BIT));
>>>>>>>> +}
>>>>>>>> +EXPORT_SYMBOL(dma_fence_init64);
>>>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>>>> index 1a7469543db5..79713421bffe 100644
>>>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>>>> @@ -134,7 +134,6 @@ static bool amdgpu_eviction_fence_enable_signaling(struct dma_fence *f)
>>>>>>>>      }
>>>>>>>>        static const struct dma_fence_ops amdgpu_eviction_fence_ops = {
>>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>>          .get_driver_name = amdgpu_eviction_fence_get_driver_name,
>>>>>>>>          .get_timeline_name = amdgpu_eviction_fence_get_timeline_name,
>>>>>>>>          .enable_signaling = amdgpu_eviction_fence_enable_signaling,
>>>>>>>> @@ -160,9 +159,9 @@ amdgpu_eviction_fence_create(struct amdgpu_eviction_fence_mgr *evf_mgr)
>>>>>>>>          ev_fence->evf_mgr = evf_mgr;
>>>>>>>>          get_task_comm(ev_fence->timeline_name, current);
>>>>>>>>          spin_lock_init(&ev_fence->lock);
>>>>>>>> -    dma_fence_init(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>>>>>>> -               &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>>>>>>> -               atomic_inc_return(&evf_mgr->ev_fence_seq));
>>>>>>>> +    dma_fence_init64(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>>>>>>> +             &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>>>>>>> +             atomic_inc_return(&evf_mgr->ev_fence_seq));
>>>>>>>>          return ev_fence;
>>>>>>>>      }
>>>>>>>>      diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>>>> index 029cb24c28b3..5e92d00a591f 100644
>>>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>>>> @@ -239,8 +239,8 @@ static int amdgpu_userq_fence_create(struct amdgpu_usermode_queue *userq,
>>>>>>>>          fence = &userq_fence->base;
>>>>>>>>          userq_fence->fence_drv = fence_drv;
>>>>>>>>      -    dma_fence_init(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>>>>>>> -               fence_drv->context, seq);
>>>>>>>> +    dma_fence_init64(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>>>>>>> +             fence_drv->context, seq);
>>>>>>>>            amdgpu_userq_fence_driver_get(fence_drv);
>>>>>>>>          dma_fence_get(fence);
>>>>>>>> @@ -334,7 +334,6 @@ static void amdgpu_userq_fence_release(struct dma_fence *f)
>>>>>>>>      }
>>>>>>>>        static const struct dma_fence_ops amdgpu_userq_fence_ops = {
>>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>>          .get_driver_name = amdgpu_userq_fence_get_driver_name,
>>>>>>>>          .get_timeline_name = amdgpu_userq_fence_get_timeline_name,
>>>>>>>>          .signaled = amdgpu_userq_fence_signaled,
>>>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>>>> index 51cddfa3f1e8..5d26797356a3 100644
>>>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>>>> @@ -71,7 +71,6 @@ static void amdgpu_tlb_fence_work(struct work_struct *work)
>>>>>>>>      }
>>>>>>>>        static const struct dma_fence_ops amdgpu_tlb_fence_ops = {
>>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>>          .get_driver_name = amdgpu_tlb_fence_get_driver_name,
>>>>>>>>          .get_timeline_name = amdgpu_tlb_fence_get_timeline_name
>>>>>>>>      };
>>>>>>>> @@ -101,8 +100,8 @@ void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev, struct amdgpu_vm *vm
>>>>>>>>          INIT_WORK(&f->work, amdgpu_tlb_fence_work);
>>>>>>>>          spin_lock_init(&f->lock);
>>>>>>>>      -    dma_fence_init(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>>>>>>> -               vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>>>>>>> +    dma_fence_init64(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>>>>>>> +             vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>>>>>>>            /* TODO: We probably need a separate wq here */
>>>>>>>>          dma_fence_get(&f->base);
>>>>>>>> diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
>>>>>>>> index 48b5202c531d..a34a0dcdc446 100644
>>>>>>>> --- a/include/linux/dma-fence.h
>>>>>>>> +++ b/include/linux/dma-fence.h
>>>>>>>> @@ -97,6 +97,7 @@ struct dma_fence {
>>>>>>>>      };
>>>>>>>>        enum dma_fence_flag_bits {
>>>>>>>> +    DMA_FENCE_FLAG_SEQNO64_BIT,
>>>>>>>>          DMA_FENCE_FLAG_SIGNALED_BIT,
>>>>>>>>          DMA_FENCE_FLAG_TIMESTAMP_BIT,
>>>>>>>>          DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
>>>>>>>> @@ -124,14 +125,6 @@ struct dma_fence_cb {
>>>>>>>>       *
>>>>>>>>       */
>>>>>>>>      struct dma_fence_ops {
>>>>>>>> -    /**
>>>>>>>> -     * @use_64bit_seqno:
>>>>>>>> -     *
>>>>>>>> -     * True if this dma_fence implementation uses 64bit seqno, false
>>>>>>>> -     * otherwise.
>>>>>>>> -     */
>>>>>>>> -    bool use_64bit_seqno;
>>>>>>>> -
>>>>>>>>          /**
>>>>>>>>           * @get_driver_name:
>>>>>>>>           *
>>>>>>>> @@ -262,6 +255,9 @@ struct dma_fence_ops {
>>>>>>>>      void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>>                  spinlock_t *lock, u64 context, u64 seqno);
>>>>>>>>      +void dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>> +              spinlock_t *lock, u64 context, u64 seqno);
>>>>>>>> +
>>>>>>>>      void dma_fence_release(struct kref *kref);
>>>>>>>>      void dma_fence_free(struct dma_fence *fence);
>>>>>>>>      void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq);
>>>>>>>> @@ -454,7 +450,7 @@ static inline bool __dma_fence_is_later(struct dma_fence *fence, u64 f1, u64 f2)
>>>>>>>>           * 32bit sequence numbers. Use a 64bit compare when the driver says to
>>>>>>>>           * do so.
>>>>>>>>           */
>>>>>>>> -    if (fence->ops->use_64bit_seqno)
>>>>>>>> +    if (test_bit(DMA_FENCE_FLAG_SEQNO64_BIT, &fence->flags))
>>>>>>>>              return f1 > f2;
>>>>>>>>            return (int)(lower_32_bits(f1) - lower_32_bits(f2)) > 0;
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
> 


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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-06-02 14:42       ` Christian König
  2025-06-02 15:25         ` Tvrtko Ursulin
@ 2025-06-03 13:13         ` Maxime Ripard
  2025-06-03 15:00           ` Tvrtko Ursulin
  2025-06-03 16:10           ` Christian König
  1 sibling, 2 replies; 34+ messages in thread
From: Maxime Ripard @ 2025-06-03 13:13 UTC (permalink / raw)
  To: Christian König
  Cc: Tvrtko Ursulin, dri-devel, Maarten Lankhorst, Thomas Zimmermann,
	amd-gfx, intel-xe, intel-gfx, linux-media, linaro-mm-sig,
	kernel-dev

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

Hi,

On Mon, Jun 02, 2025 at 04:42:27PM +0200, Christian König wrote:
> On 6/2/25 15:05, Tvrtko Ursulin wrote:
> > On 15/05/2025 14:15, Christian König wrote:
> >> Hey drm-misc maintainers,
> >>
> >> can you guys please backmerge drm-next into drm-misc-next?
> >>
> >> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.
> > 
> > Looks like the backmerge is still pending?
> 
> Yes, @Maarten, @Maxime and @Thomas ping on this.

It's done

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]

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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-06-03 12:48                 ` Tvrtko Ursulin
@ 2025-06-03 14:00                   ` Christian König
  0 siblings, 0 replies; 34+ messages in thread
From: Christian König @ 2025-06-03 14:00 UTC (permalink / raw)
  To: Tvrtko Ursulin, dri-devel, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann
  Cc: amd-gfx, intel-xe, intel-gfx, linux-media, linaro-mm-sig,
	kernel-dev

On 6/3/25 14:48, Tvrtko Ursulin wrote:
> 
> On 03/06/2025 13:40, Christian König wrote:
>> On 6/3/25 13:30, Tvrtko Ursulin wrote:
>>>
>>> On 02/06/2025 19:00, Christian König wrote:
>>>> On 6/2/25 17:25, Tvrtko Ursulin wrote:
>>>>>
>>>>> On 02/06/2025 15:42, Christian König wrote:
>>>>>> On 6/2/25 15:05, Tvrtko Ursulin wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> On 15/05/2025 14:15, Christian König wrote:
>>>>>>>> Hey drm-misc maintainers,
>>>>>>>>
>>>>>>>> can you guys please backmerge drm-next into drm-misc-next?
>>>>>>>>
>>>>>>>> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.
>>>>>>>
>>>>>>> Looks like the backmerge is still pending?
>>>>>>
>>>>>> Yes, @Maarten, @Maxime and @Thomas ping on this.
>>>>>>
>>>>>>> In the meantime, Christian, any chance you will have some bandwith to think about the tail end of the series? Specifically patch 6 and how that is used onward.
>>>>>>
>>>>>> Well the RCU grace period is quite a nifty hack. I wanted to go over it again after merging the first patches from this series.
>>>>>>
>>>>>> In general looks like a good idea to me, I just don't like that we explicitely need to expose dma_fence_access_begin() and dma_fence_access_end().
>>>>>>
>>>>>> Especially we can't do that while calling fence->ops->release.
>>>>>
>>>>> Hm why not? You think something will take offence of the rcu_read_lock()?
>>>>
>>>> Yes, especially it is perfectly legitimate to call synchronize_rcu() or lock semaphores/mutexes from that callback.
>>>>
>>>> Either keep the RCU critical section only for the trace or even better come up with some different approach, e.g. copying the string under the RCU lock or something like that.
>>>
>>> Hmm but the kerneldoc explicity says callback can be called from irq context:
>>>
>>>      /**
>>>       * @release:
>>>       *
>>>       * Called on destruction of fence to release additional resources.
>>>       * Can be called from irq context.  This callback is optional. If it is
>>>       * NULL, then dma_fence_free() is instead called as the default
>>>       * implementation.
>>>       */
>>>      void (*release)(struct dma_fence *fence);
>>
>> Ah, right. I mixed that up with the dma-buf object.
>>
>> Yeah in that case that is probably harmless. We delegate the final free to a work item if necessary anyway.
>>
>> But I would still like to avoid having the RCU cover the release as well. Or why is there any reason why we would explicitely want to do this?
> 
> I can't remember there was a particular reason. Obviously the driver/timeline name vfunc access I needed a dma_fence_access_begin/end() block so maybe I was just sloppy and put the end at the end of the function instead of at the end of the block which can dereference them.

Yeah that's the next topic I would rather like to improve. We are kind of hiding that the returned strings are using RCU protection.

In other words it would be nicer if we could add an __rcu tag to the get_driver_name/get_timeline_name callbacks and let the automated tools complain if somebody isn't doing the proper RCU handling.

The problem is that as far as I know that is not supported by the automated tools (would be cool if somebody could double check that).

+We would need to convert the get_timeline/get_timeline_name function to something like func(struct dma_fence *fence, const char __rcu **out) to make that work.

Regards,
Christian.

> 
> I will pull it earlier for the next respin, assuming no gotchas get discovered in the process.
> 
> Regards,
> 
> Tvrtko
> 
>>
>> Regards,
>> Christian.
>>
>>>
>>>
>>> Regards,
>>>
>>> Tvrtko
>>>
>>>>
>>>> Regards,
>>>> Christian.
>>>>
>>>>>
>>>>> Regards,
>>>>>
>>>>> Tvrtko
>>>>>
>>>>>>>> On 5/15/25 11:49, Tvrtko Ursulin wrote:
>>>>>>>>> With the goal of reducing the need for drivers to touch (and dereference)
>>>>>>>>> fence->ops, we move the 64-bit seqnos flag from struct dma_fence_ops to
>>>>>>>>> the fence->flags.
>>>>>>>>>
>>>>>>>>> Drivers which were setting this flag are changed to use new
>>>>>>>>> dma_fence_init64() instead of dma_fence_init().
>>>>>>>>>
>>>>>>>>> v2:
>>>>>>>>>      * Streamlined init and added kerneldoc.
>>>>>>>>>      * Rebase for amdgpu userq which landed since.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
>>>>>>>>> Reviewed-by: Christian König <christian.koenig@amd.com> # v1
>>>>>>>>> ---
>>>>>>>>>      drivers/dma-buf/dma-fence-chain.c             |  5 +-
>>>>>>>>>      drivers/dma-buf/dma-fence.c                   | 69 ++++++++++++++-----
>>>>>>>>>      .../drm/amd/amdgpu/amdgpu_eviction_fence.c    |  7 +-
>>>>>>>>>      .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c   |  5 +-
>>>>>>>>>      .../gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c  |  5 +-
>>>>>>>>>      include/linux/dma-fence.h                     | 14 ++--
>>>>>>>>>      6 files changed, 64 insertions(+), 41 deletions(-)
>>>>>>>>>
>>>>>>>>> diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c
>>>>>>>>> index 90424f23fd73..a8a90acf4f34 100644
>>>>>>>>> --- a/drivers/dma-buf/dma-fence-chain.c
>>>>>>>>> +++ b/drivers/dma-buf/dma-fence-chain.c
>>>>>>>>> @@ -218,7 +218,6 @@ static void dma_fence_chain_set_deadline(struct dma_fence *fence,
>>>>>>>>>      }
>>>>>>>>>        const struct dma_fence_ops dma_fence_chain_ops = {
>>>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>>>          .get_driver_name = dma_fence_chain_get_driver_name,
>>>>>>>>>          .get_timeline_name = dma_fence_chain_get_timeline_name,
>>>>>>>>>          .enable_signaling = dma_fence_chain_enable_signaling,
>>>>>>>>> @@ -262,8 +261,8 @@ void dma_fence_chain_init(struct dma_fence_chain *chain,
>>>>>>>>>                  seqno = max(prev->seqno, seqno);
>>>>>>>>>          }
>>>>>>>>>      -    dma_fence_init(&chain->base, &dma_fence_chain_ops,
>>>>>>>>> -               &chain->lock, context, seqno);
>>>>>>>>> +    dma_fence_init64(&chain->base, &dma_fence_chain_ops, &chain->lock,
>>>>>>>>> +             context, seqno);
>>>>>>>>>            /*
>>>>>>>>>           * Chaining dma_fence_chain container together is only allowed through
>>>>>>>>> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
>>>>>>>>> index f0cdd3e99d36..705b59787731 100644
>>>>>>>>> --- a/drivers/dma-buf/dma-fence.c
>>>>>>>>> +++ b/drivers/dma-buf/dma-fence.c
>>>>>>>>> @@ -989,24 +989,9 @@ void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq)
>>>>>>>>>      }
>>>>>>>>>      EXPORT_SYMBOL(dma_fence_describe);
>>>>>>>>>      -/**
>>>>>>>>> - * dma_fence_init - Initialize a custom fence.
>>>>>>>>> - * @fence: the fence to initialize
>>>>>>>>> - * @ops: the dma_fence_ops for operations on this fence
>>>>>>>>> - * @lock: the irqsafe spinlock to use for locking this fence
>>>>>>>>> - * @context: the execution context this fence is run on
>>>>>>>>> - * @seqno: a linear increasing sequence number for this context
>>>>>>>>> - *
>>>>>>>>> - * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>>>>> - * refcount after committing with this fence, but it will need to hold a
>>>>>>>>> - * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>>>>> - *
>>>>>>>>> - * context and seqno are used for easy comparison between fences, allowing
>>>>>>>>> - * to check which fence is later by simply using dma_fence_later().
>>>>>>>>> - */
>>>>>>>>> -void
>>>>>>>>> -dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>>> -           spinlock_t *lock, u64 context, u64 seqno)
>>>>>>>>> +static void
>>>>>>>>> +__dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>>> +             spinlock_t *lock, u64 context, u64 seqno, unsigned long flags)
>>>>>>>>>      {
>>>>>>>>>          BUG_ON(!lock);
>>>>>>>>>          BUG_ON(!ops || !ops->get_driver_name || !ops->get_timeline_name);
>>>>>>>>> @@ -1017,9 +1002,55 @@ dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>>>          fence->lock = lock;
>>>>>>>>>          fence->context = context;
>>>>>>>>>          fence->seqno = seqno;
>>>>>>>>> -    fence->flags = 0UL;
>>>>>>>>> +    fence->flags = flags;
>>>>>>>>>          fence->error = 0;
>>>>>>>>>            trace_dma_fence_init(fence);
>>>>>>>>>      }
>>>>>>>>> +
>>>>>>>>> +/**
>>>>>>>>> + * dma_fence_init - Initialize a custom fence.
>>>>>>>>> + * @fence: the fence to initialize
>>>>>>>>> + * @ops: the dma_fence_ops for operations on this fence
>>>>>>>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>>>>>>>> + * @context: the execution context this fence is run on
>>>>>>>>> + * @seqno: a linear increasing sequence number for this context
>>>>>>>>> + *
>>>>>>>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>>>>> + * refcount after committing with this fence, but it will need to hold a
>>>>>>>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>>>>> + *
>>>>>>>>> + * context and seqno are used for easy comparison between fences, allowing
>>>>>>>>> + * to check which fence is later by simply using dma_fence_later().
>>>>>>>>> + */
>>>>>>>>> +void
>>>>>>>>> +dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>>> +           spinlock_t *lock, u64 context, u64 seqno)
>>>>>>>>> +{
>>>>>>>>> +    __dma_fence_init(fence, ops, lock, context, seqno, 0UL);
>>>>>>>>> +}
>>>>>>>>>      EXPORT_SYMBOL(dma_fence_init);
>>>>>>>>> +
>>>>>>>>> +/**
>>>>>>>>> + * dma_fence_init64 - Initialize a custom fence with 64-bit seqno support.
>>>>>>>>> + * @fence: the fence to initialize
>>>>>>>>> + * @ops: the dma_fence_ops for operations on this fence
>>>>>>>>> + * @lock: the irqsafe spinlock to use for locking this fence
>>>>>>>>> + * @context: the execution context this fence is run on
>>>>>>>>> + * @seqno: a linear increasing sequence number for this context
>>>>>>>>> + *
>>>>>>>>> + * Initializes an allocated fence, the caller doesn't have to keep its
>>>>>>>>> + * refcount after committing with this fence, but it will need to hold a
>>>>>>>>> + * refcount again if &dma_fence_ops.enable_signaling gets called.
>>>>>>>>> + *
>>>>>>>>> + * Context and seqno are used for easy comparison between fences, allowing
>>>>>>>>> + * to check which fence is later by simply using dma_fence_later().
>>>>>>>>> + */
>>>>>>>>> +void
>>>>>>>>> +dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>>> +         spinlock_t *lock, u64 context, u64 seqno)
>>>>>>>>> +{
>>>>>>>>> +    __dma_fence_init(fence, ops, lock, context, seqno,
>>>>>>>>> +             BIT(DMA_FENCE_FLAG_SEQNO64_BIT));
>>>>>>>>> +}
>>>>>>>>> +EXPORT_SYMBOL(dma_fence_init64);
>>>>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>>>>> index 1a7469543db5..79713421bffe 100644
>>>>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.c
>>>>>>>>> @@ -134,7 +134,6 @@ static bool amdgpu_eviction_fence_enable_signaling(struct dma_fence *f)
>>>>>>>>>      }
>>>>>>>>>        static const struct dma_fence_ops amdgpu_eviction_fence_ops = {
>>>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>>>          .get_driver_name = amdgpu_eviction_fence_get_driver_name,
>>>>>>>>>          .get_timeline_name = amdgpu_eviction_fence_get_timeline_name,
>>>>>>>>>          .enable_signaling = amdgpu_eviction_fence_enable_signaling,
>>>>>>>>> @@ -160,9 +159,9 @@ amdgpu_eviction_fence_create(struct amdgpu_eviction_fence_mgr *evf_mgr)
>>>>>>>>>          ev_fence->evf_mgr = evf_mgr;
>>>>>>>>>          get_task_comm(ev_fence->timeline_name, current);
>>>>>>>>>          spin_lock_init(&ev_fence->lock);
>>>>>>>>> -    dma_fence_init(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>>>>>>>> -               &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>>>>>>>> -               atomic_inc_return(&evf_mgr->ev_fence_seq));
>>>>>>>>> +    dma_fence_init64(&ev_fence->base, &amdgpu_eviction_fence_ops,
>>>>>>>>> +             &ev_fence->lock, evf_mgr->ev_fence_ctx,
>>>>>>>>> +             atomic_inc_return(&evf_mgr->ev_fence_seq));
>>>>>>>>>          return ev_fence;
>>>>>>>>>      }
>>>>>>>>>      diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>>>>> index 029cb24c28b3..5e92d00a591f 100644
>>>>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>>>>>>>> @@ -239,8 +239,8 @@ static int amdgpu_userq_fence_create(struct amdgpu_usermode_queue *userq,
>>>>>>>>>          fence = &userq_fence->base;
>>>>>>>>>          userq_fence->fence_drv = fence_drv;
>>>>>>>>>      -    dma_fence_init(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>>>>>>>> -               fence_drv->context, seq);
>>>>>>>>> +    dma_fence_init64(fence, &amdgpu_userq_fence_ops, &userq_fence->lock,
>>>>>>>>> +             fence_drv->context, seq);
>>>>>>>>>            amdgpu_userq_fence_driver_get(fence_drv);
>>>>>>>>>          dma_fence_get(fence);
>>>>>>>>> @@ -334,7 +334,6 @@ static void amdgpu_userq_fence_release(struct dma_fence *f)
>>>>>>>>>      }
>>>>>>>>>        static const struct dma_fence_ops amdgpu_userq_fence_ops = {
>>>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>>>          .get_driver_name = amdgpu_userq_fence_get_driver_name,
>>>>>>>>>          .get_timeline_name = amdgpu_userq_fence_get_timeline_name,
>>>>>>>>>          .signaled = amdgpu_userq_fence_signaled,
>>>>>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>>>>> index 51cddfa3f1e8..5d26797356a3 100644
>>>>>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_tlb_fence.c
>>>>>>>>> @@ -71,7 +71,6 @@ static void amdgpu_tlb_fence_work(struct work_struct *work)
>>>>>>>>>      }
>>>>>>>>>        static const struct dma_fence_ops amdgpu_tlb_fence_ops = {
>>>>>>>>> -    .use_64bit_seqno = true,
>>>>>>>>>          .get_driver_name = amdgpu_tlb_fence_get_driver_name,
>>>>>>>>>          .get_timeline_name = amdgpu_tlb_fence_get_timeline_name
>>>>>>>>>      };
>>>>>>>>> @@ -101,8 +100,8 @@ void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev, struct amdgpu_vm *vm
>>>>>>>>>          INIT_WORK(&f->work, amdgpu_tlb_fence_work);
>>>>>>>>>          spin_lock_init(&f->lock);
>>>>>>>>>      -    dma_fence_init(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>>>>>>>> -               vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>>>>>>>> +    dma_fence_init64(&f->base, &amdgpu_tlb_fence_ops, &f->lock,
>>>>>>>>> +             vm->tlb_fence_context, atomic64_read(&vm->tlb_seq));
>>>>>>>>>            /* TODO: We probably need a separate wq here */
>>>>>>>>>          dma_fence_get(&f->base);
>>>>>>>>> diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
>>>>>>>>> index 48b5202c531d..a34a0dcdc446 100644
>>>>>>>>> --- a/include/linux/dma-fence.h
>>>>>>>>> +++ b/include/linux/dma-fence.h
>>>>>>>>> @@ -97,6 +97,7 @@ struct dma_fence {
>>>>>>>>>      };
>>>>>>>>>        enum dma_fence_flag_bits {
>>>>>>>>> +    DMA_FENCE_FLAG_SEQNO64_BIT,
>>>>>>>>>          DMA_FENCE_FLAG_SIGNALED_BIT,
>>>>>>>>>          DMA_FENCE_FLAG_TIMESTAMP_BIT,
>>>>>>>>>          DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
>>>>>>>>> @@ -124,14 +125,6 @@ struct dma_fence_cb {
>>>>>>>>>       *
>>>>>>>>>       */
>>>>>>>>>      struct dma_fence_ops {
>>>>>>>>> -    /**
>>>>>>>>> -     * @use_64bit_seqno:
>>>>>>>>> -     *
>>>>>>>>> -     * True if this dma_fence implementation uses 64bit seqno, false
>>>>>>>>> -     * otherwise.
>>>>>>>>> -     */
>>>>>>>>> -    bool use_64bit_seqno;
>>>>>>>>> -
>>>>>>>>>          /**
>>>>>>>>>           * @get_driver_name:
>>>>>>>>>           *
>>>>>>>>> @@ -262,6 +255,9 @@ struct dma_fence_ops {
>>>>>>>>>      void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>>>                  spinlock_t *lock, u64 context, u64 seqno);
>>>>>>>>>      +void dma_fence_init64(struct dma_fence *fence, const struct dma_fence_ops *ops,
>>>>>>>>> +              spinlock_t *lock, u64 context, u64 seqno);
>>>>>>>>> +
>>>>>>>>>      void dma_fence_release(struct kref *kref);
>>>>>>>>>      void dma_fence_free(struct dma_fence *fence);
>>>>>>>>>      void dma_fence_describe(struct dma_fence *fence, struct seq_file *seq);
>>>>>>>>> @@ -454,7 +450,7 @@ static inline bool __dma_fence_is_later(struct dma_fence *fence, u64 f1, u64 f2)
>>>>>>>>>           * 32bit sequence numbers. Use a 64bit compare when the driver says to
>>>>>>>>>           * do so.
>>>>>>>>>           */
>>>>>>>>> -    if (fence->ops->use_64bit_seqno)
>>>>>>>>> +    if (test_bit(DMA_FENCE_FLAG_SEQNO64_BIT, &fence->flags))
>>>>>>>>>              return f1 > f2;
>>>>>>>>>            return (int)(lower_32_bits(f1) - lower_32_bits(f2)) > 0;
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
> 


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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-06-03 13:13         ` Maxime Ripard
@ 2025-06-03 15:00           ` Tvrtko Ursulin
  2025-06-03 16:27             ` Christian König
  2025-06-03 16:10           ` Christian König
  1 sibling, 1 reply; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-06-03 15:00 UTC (permalink / raw)
  To: Maxime Ripard, Christian König
  Cc: dri-devel, Maarten Lankhorst, Thomas Zimmermann, amd-gfx,
	intel-xe, intel-gfx, linux-media, linaro-mm-sig, kernel-dev


On 03/06/2025 14:13, Maxime Ripard wrote:
> Hi,
> 
> On Mon, Jun 02, 2025 at 04:42:27PM +0200, Christian König wrote:
>> On 6/2/25 15:05, Tvrtko Ursulin wrote:
>>> On 15/05/2025 14:15, Christian König wrote:
>>>> Hey drm-misc maintainers,
>>>>
>>>> can you guys please backmerge drm-next into drm-misc-next?
>>>>
>>>> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.
>>>
>>> Looks like the backmerge is still pending?
>>
>> Yes, @Maarten, @Maxime and @Thomas ping on this.
> 
> It's done

Thanks Maxime!

Christian, I can merge 2-5 to take some load off you if you want?

Regards,

Tvrtko


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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-06-03 13:13         ` Maxime Ripard
  2025-06-03 15:00           ` Tvrtko Ursulin
@ 2025-06-03 16:10           ` Christian König
  1 sibling, 0 replies; 34+ messages in thread
From: Christian König @ 2025-06-03 16:10 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Tvrtko Ursulin, dri-devel, Maarten Lankhorst, Thomas Zimmermann,
	amd-gfx, intel-xe, intel-gfx, linux-media, linaro-mm-sig,
	kernel-dev

On 6/3/25 15:13, Maxime Ripard wrote:
> Hi,
> 
> On Mon, Jun 02, 2025 at 04:42:27PM +0200, Christian König wrote:
>> On 6/2/25 15:05, Tvrtko Ursulin wrote:
>>> On 15/05/2025 14:15, Christian König wrote:
>>>> Hey drm-misc maintainers,
>>>>
>>>> can you guys please backmerge drm-next into drm-misc-next?
>>>>
>>>> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.
>>>
>>> Looks like the backmerge is still pending?
>>
>> Yes, @Maarten, @Maxime and @Thomas ping on this.
> 
> It's done

Thanks, I will start merge things tomorrow.

Regards,
Christian.

> 
> Maxime


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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-06-03 15:00           ` Tvrtko Ursulin
@ 2025-06-03 16:27             ` Christian König
  2025-06-03 16:53               ` Tvrtko Ursulin
  0 siblings, 1 reply; 34+ messages in thread
From: Christian König @ 2025-06-03 16:27 UTC (permalink / raw)
  To: Tvrtko Ursulin, Maxime Ripard
  Cc: dri-devel, Maarten Lankhorst, Thomas Zimmermann, amd-gfx,
	intel-xe, intel-gfx, linux-media, linaro-mm-sig, kernel-dev



On 6/3/25 17:00, Tvrtko Ursulin wrote:
> 
> On 03/06/2025 14:13, Maxime Ripard wrote:
>> Hi,
>>
>> On Mon, Jun 02, 2025 at 04:42:27PM +0200, Christian König wrote:
>>> On 6/2/25 15:05, Tvrtko Ursulin wrote:
>>>> On 15/05/2025 14:15, Christian König wrote:
>>>>> Hey drm-misc maintainers,
>>>>>
>>>>> can you guys please backmerge drm-next into drm-misc-next?
>>>>>
>>>>> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.
>>>>
>>>> Looks like the backmerge is still pending?
>>>
>>> Yes, @Maarten, @Maxime and @Thomas ping on this.
>>
>> It's done
> 
> Thanks Maxime!
> 
> Christian, I can merge 2-5 to take some load off you if you want?

Sure, go ahead.

Then I can call it a day for today :)

Cheers,
Christian.

> 
> Regards,
> 
> Tvrtko
> 


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

* Re: [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos
  2025-06-03 16:27             ` Christian König
@ 2025-06-03 16:53               ` Tvrtko Ursulin
  0 siblings, 0 replies; 34+ messages in thread
From: Tvrtko Ursulin @ 2025-06-03 16:53 UTC (permalink / raw)
  To: Christian König, Maxime Ripard
  Cc: dri-devel, Maarten Lankhorst, Thomas Zimmermann, amd-gfx,
	intel-xe, intel-gfx, linux-media, linaro-mm-sig, kernel-dev


On 03/06/2025 17:27, Christian König wrote:
> On 6/3/25 17:00, Tvrtko Ursulin wrote:
>>
>> On 03/06/2025 14:13, Maxime Ripard wrote:
>>> Hi,
>>>
>>> On Mon, Jun 02, 2025 at 04:42:27PM +0200, Christian König wrote:
>>>> On 6/2/25 15:05, Tvrtko Ursulin wrote:
>>>>> On 15/05/2025 14:15, Christian König wrote:
>>>>>> Hey drm-misc maintainers,
>>>>>>
>>>>>> can you guys please backmerge drm-next into drm-misc-next?
>>>>>>
>>>>>> I want to push this patch here but it depends on changes which are partially in drm-next and partially in drm-misc-next.
>>>>>
>>>>> Looks like the backmerge is still pending?
>>>>
>>>> Yes, @Maarten, @Maxime and @Thomas ping on this.
>>>
>>> It's done
>>
>> Thanks Maxime!
>>
>> Christian, I can merge 2-5 to take some load off you if you want?
> 
> Sure, go ahead.
> 
> Then I can call it a day for today :)

Pushed. Thanks for the reviews once more!

I will aim to respin the rest of the series ASAP but may be delayed a 
few days.

Regards,

Tvrtko


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

end of thread, other threads:[~2025-06-03 16:54 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-15  9:49 [PATCH v4 0/9] Some (drm_sched_|dma_)fence lifetime issues Tvrtko Ursulin
2025-05-15  9:49 ` [PATCH v4 1/9] dma-fence: Change signature of __dma_fence_is_later Tvrtko Ursulin
2025-05-15  9:49 ` [PATCH v4 2/9] dma-fence: Use a flag for 64-bit seqnos Tvrtko Ursulin
2025-05-15 13:15   ` Christian König
2025-06-02 13:05     ` Tvrtko Ursulin
2025-06-02 14:42       ` Christian König
2025-06-02 15:25         ` Tvrtko Ursulin
     [not found]           ` <2ffc513c-2d11-4b76-b9c9-c7cb7841e386@amd.com>
2025-06-03 11:30             ` Tvrtko Ursulin
2025-06-03 12:40               ` Christian König
2025-06-03 12:48                 ` Tvrtko Ursulin
2025-06-03 14:00                   ` Christian König
2025-06-03 13:13         ` Maxime Ripard
2025-06-03 15:00           ` Tvrtko Ursulin
2025-06-03 16:27             ` Christian König
2025-06-03 16:53               ` Tvrtko Ursulin
2025-06-03 16:10           ` Christian König
2025-05-15  9:49 ` [PATCH v4 3/9] dma-fence: Add helpers for accessing driver and timeline name Tvrtko Ursulin
2025-05-15  9:49 ` [PATCH v4 4/9] sync_file: Use dma-fence driver and timeline name helpers Tvrtko Ursulin
2025-05-15  9:50 ` [PATCH v4 5/9] drm/i915: " Tvrtko Ursulin
2025-05-15 14:46   ` Andi Shyti
2025-05-15  9:50 ` [PATCH v4 6/9] dma-fence: Add safe access helpers and document the rules Tvrtko Ursulin
2025-05-15  9:50 ` [PATCH v4 7/9] sync_file: Protect access to driver and timeline name Tvrtko Ursulin
2025-05-15  9:50 ` [PATCH v4 8/9] drm/i915: " Tvrtko Ursulin
2025-05-15 15:08   ` Andi Shyti
2025-05-15  9:50 ` [PATCH v4 9/9] drm/xe: Make dma-fences compliant with the safe access rules Tvrtko Ursulin
2025-05-15 10:47 ` ✓ CI.Patch_applied: success for Some (drm_sched_|dma_)fence lifetime issues (rev3) Patchwork
2025-05-15 10:48 ` ✗ CI.checkpatch: warning " Patchwork
2025-05-15 10:49 ` ✓ CI.KUnit: success " Patchwork
2025-05-15 10:59 ` ✓ CI.Build: " Patchwork
2025-05-15 11:02 ` ✓ CI.Hooks: " Patchwork
2025-05-15 11:03 ` ✗ CI.checksparse: warning " Patchwork
2025-05-15 11:27 ` ✓ Xe.CI.BAT: success " Patchwork
2025-05-15 20:53 ` ✗ Xe.CI.Full: failure " Patchwork
2025-05-27  2:02 ` ✗ CI.Patch_applied: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox