* [RFC PATCH 00/13] Fence deadlines in Xe
@ 2025-12-25 1:17 Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 01/13] drm/xe: Add dedicated message lock Matthew Brost
` (16 more replies)
0 siblings, 17 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
Implement fence deadlines in Xe. The idea is that if a deadline is set
on a fence, we try hard to complete it within 3 ms of the deadline. This
means for queues tied to a fence with CAP_SYS_ADMIN, we bump the
priority, and for all queues tied to a fence, we ramp up the GPU
frequency. The expected use case is a compositor that needs a steady
frame rate but does not want to run at a higher priority than the
application rendering the frame.
Lightly tested; seems to be behaving as expected and not crashing.
Matt
Matthew Brost (13):
drm/xe: Add dedicated message lock
drm/xe: Add EXEC_QUEUE_FLAG_CAP_SYS_NICE
drm/xe: Store exec queue in hardware fence
drm/xe: Add deadline exec queue vfuncs
drm/xe: Export to_xe_hw_fence
drm/xe: Add deadline manager
drm/xe: Add deadline manager to user exec queues
drm/xe: Stub out execlists deadline vfuncs as NOPs
drm/xe: Make scheduler message lock IRQ-safe
drm/xe: Implement GuC submission backend ops for deadlines
drm/xe: Enable deadlines on hardware fences
drm/xe: Add CONFIG_DRM_XE_DEADLINE_WINDOW
drm/xe: Add exec queue deadline trace points
drivers/gpu/drm/xe/Kconfig.profile | 6 +
drivers/gpu/drm/xe/Makefile | 1 +
drivers/gpu/drm/xe/xe_deadline_mgr.c | 219 +++++++++++++++++++
drivers/gpu/drm/xe/xe_deadline_mgr.h | 26 +++
drivers/gpu/drm/xe/xe_deadline_mgr_types.h | 34 +++
drivers/gpu/drm/xe/xe_exec_queue.c | 7 +
drivers/gpu/drm/xe/xe_exec_queue_types.h | 15 ++
drivers/gpu/drm/xe/xe_execlist.c | 20 ++
drivers/gpu/drm/xe/xe_gpu_scheduler.c | 33 +--
drivers/gpu/drm/xe/xe_gpu_scheduler.h | 11 +-
drivers/gpu/drm/xe/xe_gpu_scheduler_types.h | 2 +
drivers/gpu/drm/xe/xe_guc_exec_queue_types.h | 2 +-
drivers/gpu/drm/xe/xe_guc_submit.c | 137 ++++++++++--
drivers/gpu/drm/xe/xe_hw_fence.c | 29 ++-
drivers/gpu/drm/xe/xe_hw_fence.h | 5 +-
drivers/gpu/drm/xe/xe_hw_fence_types.h | 13 ++
drivers/gpu/drm/xe/xe_lrc.c | 6 +-
drivers/gpu/drm/xe/xe_lrc.h | 3 +-
drivers/gpu/drm/xe/xe_sched_job.c | 2 +-
drivers/gpu/drm/xe/xe_trace.h | 10 +
20 files changed, 530 insertions(+), 51 deletions(-)
create mode 100644 drivers/gpu/drm/xe/xe_deadline_mgr.c
create mode 100644 drivers/gpu/drm/xe/xe_deadline_mgr.h
create mode 100644 drivers/gpu/drm/xe/xe_deadline_mgr_types.h
--
2.34.1
^ permalink raw reply [flat|nested] 18+ messages in thread
* [RFC PATCH 01/13] drm/xe: Add dedicated message lock
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 02/13] drm/xe: Add EXEC_QUEUE_FLAG_CAP_SYS_NICE Matthew Brost
` (15 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
Stop abusing DRM scheduler job list lock for messages, add dedicated
message lock.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Acked-by: Philipp Stanner <phasta@kernel.org>
---
drivers/gpu/drm/xe/xe_gpu_scheduler.c | 5 +++--
drivers/gpu/drm/xe/xe_gpu_scheduler.h | 4 ++--
drivers/gpu/drm/xe/xe_gpu_scheduler_types.h | 2 ++
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler.c b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
index f91e06d03511..f4f23317191f 100644
--- a/drivers/gpu/drm/xe/xe_gpu_scheduler.c
+++ b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
@@ -77,6 +77,7 @@ int xe_sched_init(struct xe_gpu_scheduler *sched,
};
sched->ops = xe_ops;
+ spin_lock_init(&sched->msg_lock);
INIT_LIST_HEAD(&sched->msgs);
INIT_WORK(&sched->work_process_msg, xe_sched_process_msg_work);
@@ -117,7 +118,7 @@ void xe_sched_add_msg(struct xe_gpu_scheduler *sched,
void xe_sched_add_msg_locked(struct xe_gpu_scheduler *sched,
struct xe_sched_msg *msg)
{
- lockdep_assert_held(&sched->base.job_list_lock);
+ lockdep_assert_held(&sched->msg_lock);
list_add_tail(&msg->link, &sched->msgs);
xe_sched_process_msg_queue(sched);
@@ -131,7 +132,7 @@ void xe_sched_add_msg_locked(struct xe_gpu_scheduler *sched,
void xe_sched_add_msg_head(struct xe_gpu_scheduler *sched,
struct xe_sched_msg *msg)
{
- lockdep_assert_held(&sched->base.job_list_lock);
+ lockdep_assert_held(&sched->msg_lock);
list_add(&msg->link, &sched->msgs);
xe_sched_process_msg_queue(sched);
diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler.h b/drivers/gpu/drm/xe/xe_gpu_scheduler.h
index c7a77a3a9681..dceb2cd0ee5b 100644
--- a/drivers/gpu/drm/xe/xe_gpu_scheduler.h
+++ b/drivers/gpu/drm/xe/xe_gpu_scheduler.h
@@ -33,12 +33,12 @@ void xe_sched_add_msg_head(struct xe_gpu_scheduler *sched,
static inline void xe_sched_msg_lock(struct xe_gpu_scheduler *sched)
{
- spin_lock(&sched->base.job_list_lock);
+ spin_lock(&sched->msg_lock);
}
static inline void xe_sched_msg_unlock(struct xe_gpu_scheduler *sched)
{
- spin_unlock(&sched->base.job_list_lock);
+ spin_unlock(&sched->msg_lock);
}
static inline void xe_sched_stop(struct xe_gpu_scheduler *sched)
diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler_types.h b/drivers/gpu/drm/xe/xe_gpu_scheduler_types.h
index 6731b13da8bb..63d9bf92583c 100644
--- a/drivers/gpu/drm/xe/xe_gpu_scheduler_types.h
+++ b/drivers/gpu/drm/xe/xe_gpu_scheduler_types.h
@@ -47,6 +47,8 @@ struct xe_gpu_scheduler {
const struct xe_sched_backend_ops *ops;
/** @msgs: list of messages to be processed in @work_process_msg */
struct list_head msgs;
+ /** @msg_lock: Message lock */
+ spinlock_t msg_lock;
/** @work_process_msg: processes messages */
struct work_struct work_process_msg;
};
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 02/13] drm/xe: Add EXEC_QUEUE_FLAG_CAP_SYS_NICE
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 01/13] drm/xe: Add dedicated message lock Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 03/13] drm/xe: Store exec queue in hardware fence Matthew Brost
` (14 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
Store whether CAP_SYS_NICE is set on the user process that creates an
exec queue. This will indicate if the exec queue is eligible for higher
priority levels under deadline pressure.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_exec_queue.c | 3 +++
drivers/gpu/drm/xe/xe_exec_queue_types.h | 2 ++
2 files changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
index 0b9e074b022f..a9b981591773 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue.c
+++ b/drivers/gpu/drm/xe/xe_exec_queue.c
@@ -1158,6 +1158,9 @@ int xe_exec_queue_create_ioctl(struct drm_device *dev, void *data,
if (args->flags & DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT)
flags |= EXEC_QUEUE_FLAG_LOW_LATENCY;
+ if (capable(CAP_SYS_NICE))
+ flags |= EXEC_QUEUE_FLAG_CAP_SYS_NICE;
+
if (eci[0].engine_class == DRM_XE_ENGINE_CLASS_VM_BIND) {
if (XE_IOCTL_DBG(xe, args->width != 1) ||
XE_IOCTL_DBG(xe, args->num_placements != 1) ||
diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h b/drivers/gpu/drm/xe/xe_exec_queue_types.h
index 67ea5eebf70b..cd7a6571f5c6 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
+++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
@@ -128,6 +128,8 @@ struct xe_exec_queue {
#define EXEC_QUEUE_FLAG_LOW_LATENCY BIT(5)
/* for migration (kernel copy, clear, bind) jobs */
#define EXEC_QUEUE_FLAG_MIGRATE BIT(6)
+/* for user queues, created in CAP_SYS_NICE context */
+#define EXEC_QUEUE_FLAG_CAP_SYS_NICE BIT(7)
/**
* @flags: flags for this exec queue, should statically setup aside from ban
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 03/13] drm/xe: Store exec queue in hardware fence
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 01/13] drm/xe: Add dedicated message lock Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 02/13] drm/xe: Add EXEC_QUEUE_FLAG_CAP_SYS_NICE Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 04/13] drm/xe: Add deadline exec queue vfuncs Matthew Brost
` (13 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
Enable hardware fences to set deadlines for exec queues.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_hw_fence.c | 4 +++-
drivers/gpu/drm/xe/xe_hw_fence.h | 2 +-
drivers/gpu/drm/xe/xe_hw_fence_types.h | 6 ++++++
drivers/gpu/drm/xe/xe_lrc.c | 6 ++++--
drivers/gpu/drm/xe/xe_lrc.h | 3 ++-
drivers/gpu/drm/xe/xe_sched_job.c | 2 +-
6 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_hw_fence.c b/drivers/gpu/drm/xe/xe_hw_fence.c
index f6057456e460..5995bf095843 100644
--- a/drivers/gpu/drm/xe/xe_hw_fence.c
+++ b/drivers/gpu/drm/xe/xe_hw_fence.c
@@ -242,6 +242,7 @@ void xe_hw_fence_free(struct dma_fence *fence)
* xe_hw_fence_init() - Initialize an hw fence.
* @fence: Pointer to the fence to initialize.
* @ctx: Pointer to the struct xe_hw_fence_ctx fence context.
+ * @q: Pointer to exec queue tied to the fence.
* @seqno_map: Pointer to the map into where the seqno is blitted.
*
* Initializes a pre-allocated hw fence.
@@ -249,12 +250,13 @@ void xe_hw_fence_free(struct dma_fence *fence)
* dma-fence refcounting.
*/
void xe_hw_fence_init(struct dma_fence *fence, struct xe_hw_fence_ctx *ctx,
- struct iosys_map seqno_map)
+ struct xe_exec_queue *q, struct iosys_map seqno_map)
{
struct xe_hw_fence *hw_fence =
container_of(fence, typeof(*hw_fence), dma);
hw_fence->xe = gt_to_xe(ctx->gt);
+ hw_fence->q = q;
snprintf(hw_fence->name, sizeof(hw_fence->name), "%s", ctx->name);
hw_fence->seqno_map = seqno_map;
INIT_LIST_HEAD(&hw_fence->irq_link);
diff --git a/drivers/gpu/drm/xe/xe_hw_fence.h b/drivers/gpu/drm/xe/xe_hw_fence.h
index f13a1c4982c7..7a8678c881d8 100644
--- a/drivers/gpu/drm/xe/xe_hw_fence.h
+++ b/drivers/gpu/drm/xe/xe_hw_fence.h
@@ -29,5 +29,5 @@ struct dma_fence *xe_hw_fence_alloc(void);
void xe_hw_fence_free(struct dma_fence *fence);
void xe_hw_fence_init(struct dma_fence *fence, struct xe_hw_fence_ctx *ctx,
- struct iosys_map seqno_map);
+ struct xe_exec_queue *q, struct iosys_map seqno_map);
#endif
diff --git a/drivers/gpu/drm/xe/xe_hw_fence_types.h b/drivers/gpu/drm/xe/xe_hw_fence_types.h
index 58a8d09afe5c..052bbab1fad6 100644
--- a/drivers/gpu/drm/xe/xe_hw_fence_types.h
+++ b/drivers/gpu/drm/xe/xe_hw_fence_types.h
@@ -13,6 +13,7 @@
#include <linux/spinlock.h>
struct xe_device;
+struct xe_exec_queue;
struct xe_gt;
/**
@@ -64,6 +65,11 @@ struct xe_hw_fence {
struct dma_fence dma;
/** @xe: Xe device for hw fence driver name */
struct xe_device *xe;
+ /**
+ * @q: Exec queue which fence is tied too, not ref counted, lookup
+ * protected by fence lock.
+ */
+ struct xe_exec_queue *q;
/** @name: name of hardware fence context */
char name[MAX_FENCE_NAME_LEN];
/** @seqno_map: I/O map for seqno */
diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
index 70eae7d03a27..fc4b21e3c00d 100644
--- a/drivers/gpu/drm/xe/xe_lrc.c
+++ b/drivers/gpu/drm/xe/xe_lrc.c
@@ -1783,15 +1783,17 @@ void xe_lrc_free_seqno_fence(struct dma_fence *fence)
/**
* xe_lrc_init_seqno_fence() - Initialize an lrc seqno fence.
* @lrc: Pointer to the lrc.
+ ( @q: Pointner to exec queue.
* @fence: Pointer to the fence to initialize.
*
* Initializes a pre-allocated lrc seqno fence.
* After initialization, the fence is subject to normal
* dma-fence refcounting.
*/
-void xe_lrc_init_seqno_fence(struct xe_lrc *lrc, struct dma_fence *fence)
+void xe_lrc_init_seqno_fence(struct xe_lrc *lrc, struct xe_exec_queue *q,
+ struct dma_fence *fence)
{
- xe_hw_fence_init(fence, &lrc->fence_ctx, __xe_lrc_seqno_map(lrc));
+ xe_hw_fence_init(fence, &lrc->fence_ctx, q, __xe_lrc_seqno_map(lrc));
}
s32 xe_lrc_seqno(struct xe_lrc *lrc)
diff --git a/drivers/gpu/drm/xe/xe_lrc.h b/drivers/gpu/drm/xe/xe_lrc.h
index 8acf85273c1a..3d72b4c0da8e 100644
--- a/drivers/gpu/drm/xe/xe_lrc.h
+++ b/drivers/gpu/drm/xe/xe_lrc.h
@@ -118,7 +118,8 @@ u64 xe_lrc_descriptor(struct xe_lrc *lrc);
u32 xe_lrc_seqno_ggtt_addr(struct xe_lrc *lrc);
struct dma_fence *xe_lrc_alloc_seqno_fence(void);
void xe_lrc_free_seqno_fence(struct dma_fence *fence);
-void xe_lrc_init_seqno_fence(struct xe_lrc *lrc, struct dma_fence *fence);
+void xe_lrc_init_seqno_fence(struct xe_lrc *lrc, struct xe_exec_queue *q,
+ struct dma_fence *fence);
s32 xe_lrc_seqno(struct xe_lrc *lrc);
u32 xe_lrc_start_seqno_ggtt_addr(struct xe_lrc *lrc);
diff --git a/drivers/gpu/drm/xe/xe_sched_job.c b/drivers/gpu/drm/xe/xe_sched_job.c
index cb674a322113..6099b4445835 100644
--- a/drivers/gpu/drm/xe/xe_sched_job.c
+++ b/drivers/gpu/drm/xe/xe_sched_job.c
@@ -270,7 +270,7 @@ void xe_sched_job_arm(struct xe_sched_job *job)
struct dma_fence_chain *chain;
fence = job->ptrs[i].lrc_fence;
- xe_lrc_init_seqno_fence(q->lrc[i], fence);
+ xe_lrc_init_seqno_fence(q->lrc[i], q, fence);
job->ptrs[i].lrc_fence = NULL;
if (!i) {
job->lrc_seqno = fence->seqno;
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 04/13] drm/xe: Add deadline exec queue vfuncs
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (2 preceding siblings ...)
2025-12-25 1:17 ` [RFC PATCH 03/13] drm/xe: Store exec queue in hardware fence Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 05/13] drm/xe: Export to_xe_hw_fence Matthew Brost
` (12 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
Add set_deadline, enter_deadline, and exit_deadline exec queue vfuncs
for deadline control.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_exec_queue_types.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h b/drivers/gpu/drm/xe/xe_exec_queue_types.h
index cd7a6571f5c6..ceb0dcea6dfc 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
+++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
@@ -301,6 +301,15 @@ struct xe_exec_queue_ops {
void (*resume)(struct xe_exec_queue *q);
/** @reset_status: check exec queue reset status */
bool (*reset_status)(struct xe_exec_queue *q);
+ /**
+ * @set_deadline: Set deadline for on a queue for a fence.
+ */
+ void (*set_deadline)(struct xe_exec_queue *q, struct dma_fence *fence,
+ ktime_t deadline);
+ /** @enter_deadline: Enter a deadline */
+ void (*enter_deadline)(struct xe_exec_queue *q);
+ /** @exit_deadline: Enter a deadline */
+ void (*exit_deadline)(struct xe_exec_queue *q);
};
#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 05/13] drm/xe: Export to_xe_hw_fence
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (3 preceding siblings ...)
2025-12-25 1:17 ` [RFC PATCH 04/13] drm/xe: Add deadline exec queue vfuncs Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 06/13] drm/xe: Add deadline manager Matthew Brost
` (11 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
Allow other layers to operate on hardware fences.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_hw_fence.c | 9 ++++++---
drivers/gpu/drm/xe/xe_hw_fence.h | 3 +++
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_hw_fence.c b/drivers/gpu/drm/xe/xe_hw_fence.c
index 5995bf095843..ec06b1eaf004 100644
--- a/drivers/gpu/drm/xe/xe_hw_fence.c
+++ b/drivers/gpu/drm/xe/xe_hw_fence.c
@@ -138,8 +138,6 @@ void xe_hw_fence_ctx_finish(struct xe_hw_fence_ctx *ctx)
{
}
-static struct xe_hw_fence *to_xe_hw_fence(struct dma_fence *fence);
-
static struct xe_hw_fence_irq *xe_hw_fence_irq(struct xe_hw_fence *fence)
{
return container_of(fence->dma.lock, struct xe_hw_fence_irq, lock);
@@ -200,7 +198,12 @@ static const struct dma_fence_ops xe_hw_fence_ops = {
.release = xe_hw_fence_release,
};
-static struct xe_hw_fence *to_xe_hw_fence(struct dma_fence *fence)
+/**
+ * to_xe_hw_fence() - Convert dma-fence to Xe hardware fence
+ *
+ * Return: struct xe_hw_fence or NULL
+ */
+struct xe_hw_fence *to_xe_hw_fence(struct dma_fence *fence)
{
if (XE_WARN_ON(fence->ops != &xe_hw_fence_ops))
return NULL;
diff --git a/drivers/gpu/drm/xe/xe_hw_fence.h b/drivers/gpu/drm/xe/xe_hw_fence.h
index 7a8678c881d8..4d5756681279 100644
--- a/drivers/gpu/drm/xe/xe_hw_fence.h
+++ b/drivers/gpu/drm/xe/xe_hw_fence.h
@@ -30,4 +30,7 @@ void xe_hw_fence_free(struct dma_fence *fence);
void xe_hw_fence_init(struct dma_fence *fence, struct xe_hw_fence_ctx *ctx,
struct xe_exec_queue *q, struct iosys_map seqno_map);
+
+struct xe_hw_fence *to_xe_hw_fence(struct dma_fence *fence);
+
#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 06/13] drm/xe: Add deadline manager
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (4 preceding siblings ...)
2025-12-25 1:17 ` [RFC PATCH 05/13] drm/xe: Export to_xe_hw_fence Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 07/13] drm/xe: Add deadline manager to user exec queues Matthew Brost
` (10 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
Add a deadline manager that toggles the exec queue’s deadline state. It
is implemented using a list of deadlines (hardware fences) and an
hrtimer, which dynamically enters or exits the queue’s deadline state if
a deadline is within 3 ms of being missed. The intended usage is for
compositors to avoid missing page flips.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/Makefile | 1 +
drivers/gpu/drm/xe/xe_deadline_mgr.c | 213 +++++++++++++++++++++
drivers/gpu/drm/xe/xe_deadline_mgr.h | 26 +++
drivers/gpu/drm/xe/xe_deadline_mgr_types.h | 34 ++++
drivers/gpu/drm/xe/xe_hw_fence.c | 3 +
drivers/gpu/drm/xe/xe_hw_fence_types.h | 7 +
6 files changed, 284 insertions(+)
create mode 100644 drivers/gpu/drm/xe/xe_deadline_mgr.c
create mode 100644 drivers/gpu/drm/xe/xe_deadline_mgr.h
create mode 100644 drivers/gpu/drm/xe/xe_deadline_mgr_types.h
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 1d571cdbd6fa..4fbdf7f83f3a 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -35,6 +35,7 @@ $(obj)/generated/%_device_wa_oob.c $(obj)/generated/%_device_wa_oob.h: $(obj)/xe
xe-y += xe_bb.o \
xe_bo.o \
xe_bo_evict.o \
+ xe_deadline_mgr.o \
xe_dep_scheduler.o \
xe_devcoredump.o \
xe_device.o \
diff --git a/drivers/gpu/drm/xe/xe_deadline_mgr.c b/drivers/gpu/drm/xe/xe_deadline_mgr.c
new file mode 100644
index 000000000000..5159ce35fdde
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_deadline_mgr.c
@@ -0,0 +1,213 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#include <linux/dma-fence-chain.h>
+
+#include "xe_deadline_mgr.h"
+#include "xe_deadline_mgr_types.h"
+#include "xe_exec_queue_types.h"
+#include "xe_gt.h"
+#include "xe_hw_fence.h"
+
+static void __xe_deadline_mgr_enter_deadline(struct xe_deadline_mgr *mgr)
+{
+ lockdep_assert_held(&mgr->lock);
+
+ if (!mgr->deadline_entered) {
+ mgr->deadline_entered = true;
+ mgr->q->ops->enter_deadline(mgr->q);
+ }
+}
+
+static void __xe_deadline_mgr_exit_deadline(struct xe_deadline_mgr *mgr)
+{
+ lockdep_assert_held(&mgr->lock);
+
+ if (mgr->deadline_entered) {
+ mgr->deadline_entered = false;
+ mgr->q->ops->exit_deadline(mgr->q);
+ }
+}
+
+static enum hrtimer_restart deadline_timer(struct hrtimer *t)
+{
+ struct xe_deadline_mgr *mgr = container_of(t, typeof(*mgr), timer);
+
+ guard(spinlock_irqsave)(&mgr->lock);
+ __xe_deadline_mgr_enter_deadline(mgr);
+
+ return HRTIMER_NORESTART;
+}
+
+/**
+ * xe_deadline_mgr_init() - Deadline manager initialize
+ * @mgr: Deadline manager object
+ * @q: Exec queue associated with deadline
+ */
+void xe_deadline_mgr_init(struct xe_deadline_mgr *mgr, struct xe_exec_queue *q)
+{
+ mgr->q = q;
+ INIT_LIST_HEAD(&mgr->deadlines);
+ spin_lock_init(&mgr->lock);
+ hrtimer_setup(&mgr->timer, deadline_timer, CLOCK_MONOTONIC,
+ HRTIMER_MODE_ABS);
+ mgr->deadline = XE_DEADLINE_NONE;
+ mgr->deadline_entered = false;
+}
+
+/**
+ * xe_deadline_mgr_fini() - Deadline manager finalize
+ * @mgr: Deadline manager object
+ */
+void xe_deadline_mgr_fini(struct xe_deadline_mgr *mgr)
+{
+ xe_assert(gt_to_xe(mgr->q->gt), !mgr->deadline_entered);
+ xe_assert(gt_to_xe(mgr->q->gt), !hrtimer_cancel(&mgr->timer));
+ xe_assert(gt_to_xe(mgr->q->gt), list_empty(&mgr->deadlines));
+}
+
+static ktime_t __xe_deadline_mgr_new_deadline(struct xe_deadline_mgr *mgr)
+{
+ struct xe_hw_fence *hw_fence;
+
+ lockdep_assert_held(&mgr->lock);
+
+ hw_fence = list_first_entry_or_null(&mgr->deadlines,
+ typeof(*hw_fence),
+ deadline.link);
+ if (!hw_fence)
+ return XE_DEADLINE_NONE;
+ else
+ return hw_fence->deadline.time;
+
+}
+
+static void __xe_deadline_mgr_update_deadline(struct xe_deadline_mgr *mgr)
+{
+ ktime_t old_deadline = mgr->deadline;
+
+ lockdep_assert_held(&mgr->lock);
+
+ mgr->deadline = __xe_deadline_mgr_new_deadline(mgr);
+
+ if (old_deadline != mgr->deadline) {
+ hrtimer_cancel(&mgr->timer);
+
+ if (mgr->deadline != XE_DEADLINE_NONE) {
+ ktime_t deadline = ktime_sub(mgr->deadline,
+ ms_to_ktime(3));
+ ktime_t now = ktime_get();
+
+ if (ktime_after(now, deadline)) {
+ __xe_deadline_mgr_enter_deadline(mgr);
+ } else {
+ __xe_deadline_mgr_exit_deadline(mgr);
+ hrtimer_start(&mgr->timer, deadline,
+ HRTIMER_MODE_ABS);
+ }
+ } else {
+ __xe_deadline_mgr_exit_deadline(mgr);
+ }
+ }
+}
+
+static void __xe_deadline_mgr_remove_deadline(struct xe_deadline_mgr *mgr,
+ struct xe_hw_fence *hw_fence)
+{
+ ktime_t old_deadline = hw_fence->deadline.time;
+
+ lockdep_assert_held(&mgr->lock);
+
+ hw_fence->deadline.time = XE_DEADLINE_DONE;
+ if (old_deadline == XE_DEADLINE_NONE)
+ return;
+
+ list_del_init(&hw_fence->deadline.link);
+ __xe_deadline_mgr_update_deadline(mgr);
+}
+
+
+static void __xe_deadline_mgr_add_deadline(struct xe_deadline_mgr *mgr,
+ struct xe_hw_fence *hw_fence,
+ ktime_t deadline)
+{
+ struct xe_hw_fence *pos;
+
+ lockdep_assert_held(&mgr->lock);
+
+ hw_fence->deadline.time = deadline;
+
+ list_for_each_entry(pos, &mgr->deadlines, deadline.link) {
+ if (pos->deadline.time >= hw_fence->deadline.time) {
+ list_add_tail(&hw_fence->deadline.link,
+ &pos->deadline.link);
+ return;
+ }
+ }
+
+ list_add_tail(&hw_fence->deadline.link, &mgr->deadlines);
+}
+
+/**
+ * xe_deadline_mgr_add_deadline() - Add deadline
+ * @mgr: Deadline manager object
+ * @fence: Fence with deadline (must be struct xe_hw_fence)
+ * @deadline: Deadline for the fence
+ *
+ * Add a deadline for a fence. This may be called multiple times on a given
+ * fence. It assumes upper layers only call this function multiple times if the
+ * deadline is being reduced. If called after xe_deadline_mgr_remove_deadline,
+ * this function is a NOP.
+ */
+void xe_deadline_mgr_add_deadline(struct xe_deadline_mgr *mgr,
+ struct dma_fence *fence,
+ ktime_t deadline)
+{
+ struct xe_hw_fence *hw_fence = to_xe_hw_fence(fence);
+
+ guard(spinlock_irqsave)(&mgr->lock);
+
+ if (hw_fence->deadline.time == XE_DEADLINE_DONE)
+ return;
+
+ xe_assert(gt_to_xe(mgr->q->gt),
+ hw_fence->deadline.time == XE_DEADLINE_NONE ||
+ deadline < hw_fence->deadline.time);
+
+ __xe_deadline_mgr_remove_deadline(mgr, hw_fence);
+ __xe_deadline_mgr_add_deadline(mgr, hw_fence, deadline);
+ __xe_deadline_mgr_update_deadline(mgr);
+}
+
+/**
+ * xe_deadline_mgr_remove_deadline() - Remove deadline
+ * @mgr: Deadline manager object
+ * @fence: Fence with deadline (must be struct xe_hw_fence or chain of struct
+ * xe_hw_fence)
+ *
+ * Remove the deadline for a fence. This should be called exactly once after the
+ * fence is signaled. After this function is called, future
+ * xe_deadline_mgr_add_deadline calls are NOPs.
+ */
+void xe_deadline_mgr_remove_deadline(struct xe_deadline_mgr *mgr,
+ struct dma_fence *fence)
+{
+ struct dma_fence *iter, *__fence;
+
+ guard(spinlock_irqsave)(&mgr->lock);
+
+ xe_assert(gt_to_xe(mgr->q->gt), dma_fence_is_signaled(fence));
+
+ if (!dma_fence_is_chain(fence)) {
+ __xe_deadline_mgr_remove_deadline(mgr, to_xe_hw_fence(fence));
+ return;
+ }
+
+ dma_fence_chain_for_each(iter, fence) {
+ __fence = dma_fence_chain_contained(iter);
+
+ __xe_deadline_mgr_remove_deadline(mgr, to_xe_hw_fence(__fence));
+ }
+}
diff --git a/drivers/gpu/drm/xe/xe_deadline_mgr.h b/drivers/gpu/drm/xe/xe_deadline_mgr.h
new file mode 100644
index 000000000000..80cce5930c4f
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_deadline_mgr.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#ifndef _XE_EXEC_QUEUE_DEADLINE_MGR_H_
+#define _XE_EXEC_QUEUE_DEADLINE_MGR_H_
+
+#include <linux/types.h>
+
+struct dma_fence;
+struct xe_deadline_mgr;
+struct xe_exec_queue;
+
+void xe_deadline_mgr_init(struct xe_deadline_mgr *mgr, struct xe_exec_queue *q);
+
+void xe_deadline_mgr_fini(struct xe_deadline_mgr *mgr);
+
+void xe_deadline_mgr_add_deadline(struct xe_deadline_mgr *mgr,
+ struct dma_fence *fence,
+ ktime_t deadline);
+
+void xe_deadline_mgr_remove_deadline(struct xe_deadline_mgr *mgr,
+ struct dma_fence *fence);
+
+#endif
diff --git a/drivers/gpu/drm/xe/xe_deadline_mgr_types.h b/drivers/gpu/drm/xe/xe_deadline_mgr_types.h
new file mode 100644
index 000000000000..e743367647c5
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_deadline_mgr_types.h
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#ifndef _XE_DEADLINE_MGR_TYPES_H_
+#define _XE_DEADLINE_MGR_TYPES_H_
+
+#include <linux/hrtimer_types.h>
+#include <linux/spinlock.h>
+#include <linux/types.h>
+
+struct xe_exec_queue;
+
+#define XE_DEADLINE_NONE (-1)
+#define XE_DEADLINE_DONE (-2)
+
+/** struct xe_deadline_mgr - Xe deadline manager */
+struct xe_deadline_mgr {
+ /** @q: Pointer to queue associated with deadline */
+ struct xe_exec_queue *q;
+ /** @deadlines: List storing deadline fences, protected by @lock */
+ struct list_head deadlines;
+ /** @timer: Timer to enter deadline mode, protected by @lock */
+ struct hrtimer timer;
+ /** @lock: Lock to protect deadlines */
+ spinlock_t lock;
+ /** @deadline: Current deadline, protected by @lock */
+ ktime_t deadline;
+ /** @deadline_entered: In deadline mode, protected by @lock */
+ bool deadline_entered;
+};
+
+#endif
diff --git a/drivers/gpu/drm/xe/xe_hw_fence.c b/drivers/gpu/drm/xe/xe_hw_fence.c
index ec06b1eaf004..8b884691718f 100644
--- a/drivers/gpu/drm/xe/xe_hw_fence.c
+++ b/drivers/gpu/drm/xe/xe_hw_fence.c
@@ -9,6 +9,7 @@
#include <linux/slab.h>
#include "xe_bo.h"
+#include "xe_deadline_mgr_types.h"
#include "xe_device.h"
#include "xe_gt.h"
#include "xe_hw_engine.h"
@@ -260,6 +261,8 @@ void xe_hw_fence_init(struct dma_fence *fence, struct xe_hw_fence_ctx *ctx,
hw_fence->xe = gt_to_xe(ctx->gt);
hw_fence->q = q;
+ hw_fence->deadline.time = XE_DEADLINE_NONE;
+ INIT_LIST_HEAD(&hw_fence->deadline.link);
snprintf(hw_fence->name, sizeof(hw_fence->name), "%s", ctx->name);
hw_fence->seqno_map = seqno_map;
INIT_LIST_HEAD(&hw_fence->irq_link);
diff --git a/drivers/gpu/drm/xe/xe_hw_fence_types.h b/drivers/gpu/drm/xe/xe_hw_fence_types.h
index 052bbab1fad6..8d035c52195c 100644
--- a/drivers/gpu/drm/xe/xe_hw_fence_types.h
+++ b/drivers/gpu/drm/xe/xe_hw_fence_types.h
@@ -76,6 +76,13 @@ struct xe_hw_fence {
struct iosys_map seqno_map;
/** @irq_link: Link in struct xe_hw_fence_irq.pending */
struct list_head irq_link;
+ /** @deadline: Deadline info, protected by deadline manager lock */
+ struct {
+ /** @deadline.time: Deadline time */
+ ktime_t time;
+ /** @deadline.list: Deadline link */
+ struct list_head link;
+ } deadline;
};
#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 07/13] drm/xe: Add deadline manager to user exec queues
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (5 preceding siblings ...)
2025-12-25 1:17 ` [RFC PATCH 06/13] drm/xe: Add deadline manager Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 08/13] drm/xe: Stub out execlists deadline vfuncs as NOPs Matthew Brost
` (9 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
User exec queues can set deadlines in exported scheduler fences.
Initialize the deadline manager to facilitate this.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_exec_queue.c | 4 ++++
drivers/gpu/drm/xe/xe_exec_queue_types.h | 4 ++++
2 files changed, 8 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
index a9b981591773..6015b2334a0f 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue.c
+++ b/drivers/gpu/drm/xe/xe_exec_queue.c
@@ -14,6 +14,7 @@
#include <uapi/drm/xe_drm.h>
#include "xe_bo.h"
+#include "xe_deadline_mgr.h"
#include "xe_dep_scheduler.h"
#include "xe_device.h"
#include "xe_gt.h"
@@ -266,6 +267,8 @@ static struct xe_exec_queue *__xe_exec_queue_alloc(struct xe_device *xe,
}
}
+ xe_deadline_mgr_init(&q->deadline_mgr, q);
+
return q;
}
@@ -332,6 +335,7 @@ static void __xe_exec_queue_fini(struct xe_exec_queue *q)
{
int i;
+ xe_deadline_mgr_fini(&q->deadline_mgr);
q->ops->fini(q);
for (i = 0; i < q->width; ++i)
diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h b/drivers/gpu/drm/xe/xe_exec_queue_types.h
index ceb0dcea6dfc..318c577786f7 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
+++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
@@ -10,6 +10,7 @@
#include <drm/gpu_scheduler.h>
+#include "xe_deadline_mgr_types.h"
#include "xe_gpu_scheduler_types.h"
#include "xe_hw_engine_types.h"
#include "xe_hw_fence_types.h"
@@ -219,6 +220,9 @@ struct xe_exec_queue {
struct list_head link;
} pxp;
+ /** @deadline_mgr: Deadline manager */
+ struct xe_deadline_mgr deadline_mgr;
+
/** @ufence_syncobj: User fence syncobj */
struct drm_syncobj *ufence_syncobj;
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 08/13] drm/xe: Stub out execlists deadline vfuncs as NOPs
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (6 preceding siblings ...)
2025-12-25 1:17 ` [RFC PATCH 07/13] drm/xe: Add deadline manager to user exec queues Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 09/13] drm/xe: Make scheduler message lock IRQ-safe Matthew Brost
` (8 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
The execlists backend is non-functional but shouldn’t crash. Stub out
execlists deadline vfuncs as NOPs.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_execlist.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c
index 46c17a18a3f4..1e9323fe19e3 100644
--- a/drivers/gpu/drm/xe/xe_execlist.c
+++ b/drivers/gpu/drm/xe/xe_execlist.c
@@ -469,6 +469,23 @@ static bool execlist_exec_queue_reset_status(struct xe_exec_queue *q)
return false;
}
+static void execlist_exec_queue_set_deadline(struct xe_exec_queue *q,
+ struct dma_fence *fence,
+ ktime_t deadline)
+{
+ /* NIY */
+}
+
+static void execlist_exec_queue_enter_deadline(struct xe_exec_queue *q)
+{
+ /* NIY */
+}
+
+static void execlist_exec_queue_exit_deadline(struct xe_exec_queue *q)
+{
+ /* NIY */
+}
+
static const struct xe_exec_queue_ops execlist_exec_queue_ops = {
.init = execlist_exec_queue_init,
.kill = execlist_exec_queue_kill,
@@ -481,6 +498,9 @@ static const struct xe_exec_queue_ops execlist_exec_queue_ops = {
.suspend_wait = execlist_exec_queue_suspend_wait,
.resume = execlist_exec_queue_resume,
.reset_status = execlist_exec_queue_reset_status,
+ .set_deadline = execlist_exec_queue_set_deadline,
+ .enter_deadline = execlist_exec_queue_enter_deadline,
+ .exit_deadline = execlist_exec_queue_exit_deadline,
};
int xe_execlist_init(struct xe_gt *gt)
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 09/13] drm/xe: Make scheduler message lock IRQ-safe
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (7 preceding siblings ...)
2025-12-25 1:17 ` [RFC PATCH 08/13] drm/xe: Stub out execlists deadline vfuncs as NOPs Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 10/13] drm/xe: Implement GuC submission backend ops for deadlines Matthew Brost
` (7 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
It is legal to modify deadlines in IRQ contexts, and deadlines can add
messages. Therefore, the scheduler message lock needs to be IRQ-safe.
Change xe_sched_msg_lock to use scoped_guard, which is IRQ-safe.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_gpu_scheduler.c | 28 +++++++++++++--------------
drivers/gpu/drm/xe/xe_gpu_scheduler.h | 11 ++---------
drivers/gpu/drm/xe/xe_guc_submit.c | 23 ++++++++++------------
3 files changed, 26 insertions(+), 36 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler.c b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
index f4f23317191f..d0589cc333ac 100644
--- a/drivers/gpu/drm/xe/xe_gpu_scheduler.c
+++ b/drivers/gpu/drm/xe/xe_gpu_scheduler.c
@@ -15,11 +15,12 @@ static void xe_sched_process_msg_queue_if_ready(struct xe_gpu_scheduler *sched)
{
struct xe_sched_msg *msg;
- xe_sched_msg_lock(sched);
- msg = list_first_entry_or_null(&sched->msgs, struct xe_sched_msg, link);
- if (msg)
- xe_sched_process_msg_queue(sched);
- xe_sched_msg_unlock(sched);
+ xe_sched_msg_lock(sched) {
+ msg = list_first_entry_or_null(&sched->msgs,
+ struct xe_sched_msg, link);
+ if (msg)
+ xe_sched_process_msg_queue(sched);
+ }
}
static struct xe_sched_msg *
@@ -27,12 +28,12 @@ xe_sched_get_msg(struct xe_gpu_scheduler *sched)
{
struct xe_sched_msg *msg;
- xe_sched_msg_lock(sched);
- msg = list_first_entry_or_null(&sched->msgs,
- struct xe_sched_msg, link);
- if (msg)
- list_del_init(&msg->link);
- xe_sched_msg_unlock(sched);
+ xe_sched_msg_lock(sched) {
+ msg = list_first_entry_or_null(&sched->msgs,
+ struct xe_sched_msg, link);
+ if (msg)
+ list_del_init(&msg->link);
+ }
return msg;
}
@@ -110,9 +111,8 @@ void xe_sched_submission_resume_tdr(struct xe_gpu_scheduler *sched)
void xe_sched_add_msg(struct xe_gpu_scheduler *sched,
struct xe_sched_msg *msg)
{
- xe_sched_msg_lock(sched);
- xe_sched_add_msg_locked(sched, msg);
- xe_sched_msg_unlock(sched);
+ xe_sched_msg_lock(sched)
+ xe_sched_add_msg_locked(sched, msg);
}
void xe_sched_add_msg_locked(struct xe_gpu_scheduler *sched,
diff --git a/drivers/gpu/drm/xe/xe_gpu_scheduler.h b/drivers/gpu/drm/xe/xe_gpu_scheduler.h
index dceb2cd0ee5b..b0918ea3adbd 100644
--- a/drivers/gpu/drm/xe/xe_gpu_scheduler.h
+++ b/drivers/gpu/drm/xe/xe_gpu_scheduler.h
@@ -31,15 +31,8 @@ void xe_sched_add_msg_locked(struct xe_gpu_scheduler *sched,
void xe_sched_add_msg_head(struct xe_gpu_scheduler *sched,
struct xe_sched_msg *msg);
-static inline void xe_sched_msg_lock(struct xe_gpu_scheduler *sched)
-{
- spin_lock(&sched->msg_lock);
-}
-
-static inline void xe_sched_msg_unlock(struct xe_gpu_scheduler *sched)
-{
- spin_unlock(&sched->msg_lock);
-}
+#define xe_sched_msg_lock(sched) \
+ scoped_guard(spinlock_irqsave, &sched->msg_lock)
static inline void xe_sched_stop(struct xe_gpu_scheduler *sched)
{
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index 7a4218f76024..76460b8ab407 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -2329,10 +2329,10 @@ static int guc_exec_queue_suspend(struct xe_exec_queue *q)
if (exec_queue_killed_or_banned_or_wedged(q))
return -EINVAL;
- xe_sched_msg_lock(sched);
- if (guc_exec_queue_try_add_msg(q, msg, SUSPEND))
- q->guc->suspend_pending = true;
- xe_sched_msg_unlock(sched);
+ xe_sched_msg_lock(sched) {
+ if (guc_exec_queue_try_add_msg(q, msg, SUSPEND))
+ q->guc->suspend_pending = true;
+ }
return 0;
}
@@ -2388,9 +2388,8 @@ static void guc_exec_queue_resume(struct xe_exec_queue *q)
xe_gt_assert(guc_to_gt(guc), !q->guc->suspend_pending);
- xe_sched_msg_lock(sched);
- guc_exec_queue_try_add_msg(q, msg, RESUME);
- xe_sched_msg_unlock(sched);
+ xe_sched_msg_lock(sched)
+ guc_exec_queue_try_add_msg(q, msg, RESUME);
}
static bool guc_exec_queue_reset_status(struct xe_exec_queue *q)
@@ -2810,9 +2809,8 @@ static void guc_exec_queue_replay_pending_state_change(struct xe_exec_queue *q)
if (q->guc->needs_suspend) {
msg = q->guc->static_msgs + STATIC_MSG_SUSPEND;
- xe_sched_msg_lock(sched);
- guc_exec_queue_try_add_msg_head(q, msg, SUSPEND);
- xe_sched_msg_unlock(sched);
+ xe_sched_msg_lock(sched)
+ guc_exec_queue_try_add_msg_head(q, msg, SUSPEND);
q->guc->needs_suspend = false;
}
@@ -2825,9 +2823,8 @@ static void guc_exec_queue_replay_pending_state_change(struct xe_exec_queue *q)
if (q->guc->needs_resume) {
msg = q->guc->static_msgs + STATIC_MSG_RESUME;
- xe_sched_msg_lock(sched);
- guc_exec_queue_try_add_msg_head(q, msg, RESUME);
- xe_sched_msg_unlock(sched);
+ xe_sched_msg_lock(sched)
+ guc_exec_queue_try_add_msg_head(q, msg, RESUME);
q->guc->needs_resume = false;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 10/13] drm/xe: Implement GuC submission backend ops for deadlines
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (8 preceding siblings ...)
2025-12-25 1:17 ` [RFC PATCH 09/13] drm/xe: Make scheduler message lock IRQ-safe Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 11/13] drm/xe: Enable deadlines on hardware fences Matthew Brost
` (6 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
Implement GuC submission backend ops for deadlines, which dynamically
raise or lower the priority of user queues with CAP_SYS_NICE and adjust
queue frequency upon deadline entry or exit. The idea is that if a fence
on a queue is at risk of missing a deadline, we try to ensure this fence
completes as soon as possible.
Signed-off-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 | 110 ++++++++++++++++++-
2 files changed, 108 insertions(+), 4 deletions(-)
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 a3b034e4b205..fcc7bca2405a 100644
--- a/drivers/gpu/drm/xe/xe_guc_exec_queue_types.h
+++ b/drivers/gpu/drm/xe/xe_guc_exec_queue_types.h
@@ -31,7 +31,7 @@ struct xe_guc_exec_queue {
* a message needs to sent through the GPU scheduler but memory
* allocations are not allowed.
*/
-#define MAX_STATIC_MSG_TYPE 3
+#define MAX_STATIC_MSG_TYPE 5
struct xe_sched_msg static_msgs[MAX_STATIC_MSG_TYPE];
/** @lr_tdr: long running TDR worker */
struct work_struct lr_tdr;
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index 76460b8ab407..791c64d6397f 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -20,6 +20,7 @@
#include "regs/xe_lrc_layout.h"
#include "xe_assert.h"
#include "xe_bo.h"
+#include "xe_deadline_mgr.h"
#include "xe_devcoredump.h"
#include "xe_device.h"
#include "xe_exec_queue.h"
@@ -552,6 +553,26 @@ static const int xe_exec_queue_prio_to_guc[] = {
[XE_EXEC_QUEUE_PRIORITY_KERNEL] = GUC_CLIENT_PRIORITY_KMD_HIGH,
};
+static void deadline_policies(struct xe_guc *guc, struct xe_exec_queue *q)
+{
+ struct exec_queue_policy policy;
+ enum xe_exec_queue_priority prio =
+ q->flags & EXEC_QUEUE_FLAG_CAP_SYS_NICE ?
+ XE_EXEC_QUEUE_PRIORITY_HIGH : q->sched_props.priority;
+ u32 slpc_exec_queue_freq_req = SLPC_CTX_FREQ_REQ_IS_COMPUTE;
+
+ xe_gt_assert(guc_to_gt(guc), exec_queue_registered(q) &&
+ !xe_exec_queue_is_multi_queue_secondary(q));
+
+ __guc_exec_queue_policy_start_klv(&policy, q->guc->id);
+ __guc_exec_queue_policy_add_priority(&policy, xe_exec_queue_prio_to_guc[prio]);
+ __guc_exec_queue_policy_add_slpc_exec_queue_freq_req(&policy,
+ slpc_exec_queue_freq_req);
+
+ xe_guc_ct_send(&guc->ct, (u32 *)&policy.h2g,
+ __guc_exec_queue_policy_action_size(&policy), 0, 0);
+}
+
static void init_policies(struct xe_guc *guc, struct xe_exec_queue *q)
{
struct exec_queue_policy policy;
@@ -1249,6 +1270,7 @@ static void guc_exec_queue_free_job(struct drm_sched_job *drm_job)
struct xe_sched_job *job = to_xe_sched_job(drm_job);
trace_xe_sched_job_free(job);
+ xe_deadline_mgr_remove_deadline(&job->q->deadline_mgr, job->fence);
xe_sched_job_put(job);
}
@@ -2037,11 +2059,39 @@ static void __guc_exec_queue_process_msg_set_multi_queue_priority(struct xe_sche
kfree(msg);
}
+static void __guc_exec_queue_process_msg_enter_deadline(struct xe_sched_msg *msg)
+{
+ struct xe_exec_queue *q = msg->private_data;
+ struct xe_guc *guc = exec_queue_to_guc(q);
+
+ /* XXX: Rethink multi-q implementation */
+ if (xe_exec_queue_is_multi_queue_secondary(q))
+ q = xe_exec_queue_multi_queue_primary(q);
+
+ if (guc_exec_queue_allowed_to_change_state(q))
+ deadline_policies(guc, q);
+}
+
+static void __guc_exec_queue_process_msg_exit_deadline(struct xe_sched_msg *msg)
+{
+ struct xe_exec_queue *q = msg->private_data;
+ struct xe_guc *guc = exec_queue_to_guc(q);
+
+ /* XXX: Rethink multi-q implementation */
+ if (xe_exec_queue_is_multi_queue_secondary(q))
+ q = xe_exec_queue_multi_queue_primary(q);
+
+ if (guc_exec_queue_allowed_to_change_state(q))
+ init_policies(guc, q);
+}
+
#define CLEANUP 1 /* Non-zero values to catch uninitialized msg */
#define SET_SCHED_PROPS 2
#define SUSPEND 3
#define RESUME 4
#define SET_MULTI_QUEUE_PRIORITY 5
+#define ENTER_DEADLINE 6
+#define EXIT_DEADLINE 7
#define OPCODE_MASK 0xf
#define MSG_LOCKED BIT(8)
#define MSG_HEAD BIT(9)
@@ -2068,6 +2118,12 @@ static void guc_exec_queue_process_msg(struct xe_sched_msg *msg)
case SET_MULTI_QUEUE_PRIORITY:
__guc_exec_queue_process_msg_set_multi_queue_priority(msg);
break;
+ case ENTER_DEADLINE:
+ __guc_exec_queue_process_msg_enter_deadline(msg);
+ break;
+ case EXIT_DEADLINE:
+ __guc_exec_queue_process_msg_exit_deadline(msg);
+ break;
default:
XE_WARN_ON("Unknown message type");
}
@@ -2231,9 +2287,11 @@ static bool guc_exec_queue_try_add_msg(struct xe_exec_queue *q,
return true;
}
-#define STATIC_MSG_CLEANUP 0
-#define STATIC_MSG_SUSPEND 1
-#define STATIC_MSG_RESUME 2
+#define STATIC_MSG_CLEANUP 0
+#define STATIC_MSG_SUSPEND 1
+#define STATIC_MSG_RESUME 2
+#define STATIC_MSG_ENTER_DEADLINE 3
+#define STATIC_MSG_EXIT_DEADLINE 4
static void guc_exec_queue_destroy(struct xe_exec_queue *q)
{
struct xe_sched_msg *msg = q->guc->static_msgs + STATIC_MSG_CLEANUP;
@@ -2401,6 +2459,49 @@ static bool guc_exec_queue_reset_status(struct xe_exec_queue *q)
return exec_queue_reset(q) || exec_queue_killed_or_banned_or_wedged(q);
}
+static void guc_exec_queue_set_deadline(struct xe_exec_queue *q,
+ struct dma_fence *fence,
+ ktime_t deadline)
+{
+ xe_deadline_mgr_add_deadline(&q->deadline_mgr, fence, deadline);
+}
+
+static void guc_exec_queue_enter_deadline(struct xe_exec_queue *q)
+{
+ struct xe_gpu_scheduler *sched = &q->guc->sched;
+ struct xe_sched_msg *msg = q->guc->static_msgs +
+ STATIC_MSG_ENTER_DEADLINE;
+
+ xe_sched_msg_lock(sched) {
+ if (!guc_exec_queue_try_add_msg(q, msg, ENTER_DEADLINE)) {
+ /*
+ * Corner case where a deadline enter + exit are in
+ * message list, delete the exit deadline message.
+ */
+ msg = q->guc->static_msgs + STATIC_MSG_EXIT_DEADLINE;
+ list_del_init(&msg->link);
+ }
+ }
+}
+
+static void guc_exec_queue_exit_deadline(struct xe_exec_queue *q)
+{
+ struct xe_gpu_scheduler *sched = &q->guc->sched;
+ struct xe_sched_msg *msg = q->guc->static_msgs +
+ STATIC_MSG_EXIT_DEADLINE;
+
+ xe_sched_msg_lock(sched) {
+ if (!guc_exec_queue_try_add_msg(q, msg, EXIT_DEADLINE)) {
+ /*
+ * Corner case where a deadline exit + enter are in
+ * message list, delete the enter deadline message.
+ */
+ msg = q->guc->static_msgs + STATIC_MSG_ENTER_DEADLINE;
+ list_del_init(&msg->link);
+ }
+ }
+}
+
/*
* All of these functions are an abstraction layer which other parts of Xe can
* use to trap into the GuC backend. All of these functions, aside from init,
@@ -2420,6 +2521,9 @@ static const struct xe_exec_queue_ops guc_exec_queue_ops = {
.suspend_wait = guc_exec_queue_suspend_wait,
.resume = guc_exec_queue_resume,
.reset_status = guc_exec_queue_reset_status,
+ .set_deadline = guc_exec_queue_set_deadline,
+ .enter_deadline = guc_exec_queue_enter_deadline,
+ .exit_deadline = guc_exec_queue_exit_deadline,
};
static void guc_exec_queue_stop(struct xe_guc *guc, struct xe_exec_queue *q)
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 11/13] drm/xe: Enable deadlines on hardware fences
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (9 preceding siblings ...)
2025-12-25 1:17 ` [RFC PATCH 10/13] drm/xe: Implement GuC submission backend ops for deadlines Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 12/13] drm/xe: Add CONFIG_DRM_XE_DEADLINE_WINDOW Matthew Brost
` (5 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
Implement the set_deadline vfunc on hardware fences, which, with GuC
submission, allows priority and frequency boosts for queues that have
fences at risk of missing a deadline.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_hw_fence.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_hw_fence.c b/drivers/gpu/drm/xe/xe_hw_fence.c
index 8b884691718f..9452ea2be62f 100644
--- a/drivers/gpu/drm/xe/xe_hw_fence.c
+++ b/drivers/gpu/drm/xe/xe_hw_fence.c
@@ -66,6 +66,7 @@ static void hw_fence_irq_run_cb(struct irq_work *work)
if (dma_fence_is_signaled_locked(dma_fence)) {
trace_xe_hw_fence_signal(fence);
list_del_init(&fence->irq_link);
+ fence->q = NULL;
dma_fence_put(dma_fence);
}
}
@@ -93,6 +94,7 @@ void xe_hw_fence_irq_finish(struct xe_hw_fence_irq *irq)
spin_lock_irqsave(&irq->lock, flags);
list_for_each_entry_safe(fence, next, &irq->pending, irq_link) {
list_del_init(&fence->irq_link);
+ fence->q = NULL;
XE_WARN_ON(dma_fence_check_and_signal_locked(&fence->dma));
dma_fence_put(&fence->dma);
}
@@ -191,12 +193,23 @@ static void xe_hw_fence_release(struct dma_fence *dma_fence)
call_rcu(&dma_fence->rcu, fence_free);
}
+static void xe_hw_fence_set_deadline(struct dma_fence *dma_fence,
+ ktime_t deadline)
+{
+ struct xe_hw_fence *fence = to_xe_hw_fence(dma_fence);
+
+ guard(spinlock_irqsave)(dma_fence->lock);
+ if (fence->q)
+ fence->q->ops->set_deadline(fence->q, dma_fence, deadline);
+}
+
static const struct dma_fence_ops xe_hw_fence_ops = {
.get_driver_name = xe_hw_fence_get_driver_name,
.get_timeline_name = xe_hw_fence_get_timeline_name,
.enable_signaling = xe_hw_fence_enable_signaling,
.signaled = xe_hw_fence_signaled,
.release = xe_hw_fence_release,
+ .set_deadline = xe_hw_fence_set_deadline,
};
/**
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 12/13] drm/xe: Add CONFIG_DRM_XE_DEADLINE_WINDOW
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (10 preceding siblings ...)
2025-12-25 1:17 ` [RFC PATCH 11/13] drm/xe: Enable deadlines on hardware fences Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 13/13] drm/xe: Add exec queue deadline trace points Matthew Brost
` (4 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
Configures the deadline window. If a fence is not signaled within this
window before the set deadline, the deadline boost starts. The default
is 3 ms, but this allows OEMs to tune the deadline implementation.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/Kconfig.profile | 6 ++++++
drivers/gpu/drm/xe/xe_deadline_mgr.c | 10 ++++++++--
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/Kconfig.profile b/drivers/gpu/drm/xe/Kconfig.profile
index 7530df998148..b17ca4c67b8a 100644
--- a/drivers/gpu/drm/xe/Kconfig.profile
+++ b/drivers/gpu/drm/xe/Kconfig.profile
@@ -53,3 +53,9 @@ config DRM_XE_ENABLE_SCHEDTIMEOUT_LIMIT
to apply to applicable user. For elevated user, all above MIN
and MAX values will apply when this configuration is enable to
apply limitation. By default limitation is applied.
+config DRM_XE_DEADLINE_WINDOW
+ int "Default deadline window (ms)"
+ default 3 # milliseconds
+ help
+ Configures the deadline window. If a fence is not signaled within this
+ window before set deadline, the deadline boost starts.
diff --git a/drivers/gpu/drm/xe/xe_deadline_mgr.c b/drivers/gpu/drm/xe/xe_deadline_mgr.c
index 5159ce35fdde..80a1bb72ea56 100644
--- a/drivers/gpu/drm/xe/xe_deadline_mgr.c
+++ b/drivers/gpu/drm/xe/xe_deadline_mgr.c
@@ -11,6 +11,12 @@
#include "xe_gt.h"
#include "xe_hw_fence.h"
+#ifdef CONFIG_DRM_XE_DEADLINE_WINDOW
+#define XE_DEADLINE_WINDOW CONFIG_DRM_XE_DEADLINE_WINDOW
+#else
+#define XE_DEADLINE_WINDOW 3
+#endif
+
static void __xe_deadline_mgr_enter_deadline(struct xe_deadline_mgr *mgr)
{
lockdep_assert_held(&mgr->lock);
@@ -96,8 +102,8 @@ static void __xe_deadline_mgr_update_deadline(struct xe_deadline_mgr *mgr)
hrtimer_cancel(&mgr->timer);
if (mgr->deadline != XE_DEADLINE_NONE) {
- ktime_t deadline = ktime_sub(mgr->deadline,
- ms_to_ktime(3));
+ ktime_t sub = ms_to_ktime(XE_DEADLINE_WINDOW);
+ ktime_t deadline = ktime_sub(mgr->deadline, sub);
ktime_t now = ktime_get();
if (ktime_after(now, deadline)) {
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [RFC PATCH 13/13] drm/xe: Add exec queue deadline trace points
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (11 preceding siblings ...)
2025-12-25 1:17 ` [RFC PATCH 12/13] drm/xe: Add CONFIG_DRM_XE_DEADLINE_WINDOW Matthew Brost
@ 2025-12-25 1:17 ` Matthew Brost
2025-12-25 1:25 ` ✗ CI.checkpatch: warning for Fence deadlines in Xe Patchwork
` (3 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Matthew Brost @ 2025-12-25 1:17 UTC (permalink / raw)
To: intel-xe; +Cc: daniele.ceraolospurio, carlos.santa
Add exec queue deadline trace points to help debug and profile the
deadline implementation.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_guc_submit.c | 4 ++++
drivers/gpu/drm/xe/xe_trace.h | 10 ++++++++++
2 files changed, 14 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index 791c64d6397f..ab9450ca8559 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -2068,6 +2068,8 @@ static void __guc_exec_queue_process_msg_enter_deadline(struct xe_sched_msg *msg
if (xe_exec_queue_is_multi_queue_secondary(q))
q = xe_exec_queue_multi_queue_primary(q);
+ trace_xe_exec_queue_enter_deadline(q);
+
if (guc_exec_queue_allowed_to_change_state(q))
deadline_policies(guc, q);
}
@@ -2081,6 +2083,8 @@ static void __guc_exec_queue_process_msg_exit_deadline(struct xe_sched_msg *msg)
if (xe_exec_queue_is_multi_queue_secondary(q))
q = xe_exec_queue_multi_queue_primary(q);
+ trace_xe_exec_queue_exit_deadline(q);
+
if (guc_exec_queue_allowed_to_change_state(q))
init_policies(guc, q);
}
diff --git a/drivers/gpu/drm/xe/xe_trace.h b/drivers/gpu/drm/xe/xe_trace.h
index 6d12fcc13f43..d40947a8e1fe 100644
--- a/drivers/gpu/drm/xe/xe_trace.h
+++ b/drivers/gpu/drm/xe/xe_trace.h
@@ -233,6 +233,16 @@ DEFINE_EVENT(xe_exec_queue, xe_exec_queue_lr_cleanup,
TP_ARGS(q)
);
+DEFINE_EVENT(xe_exec_queue, xe_exec_queue_enter_deadline,
+ TP_PROTO(struct xe_exec_queue *q),
+ TP_ARGS(q)
+);
+
+DEFINE_EVENT(xe_exec_queue, xe_exec_queue_exit_deadline,
+ TP_PROTO(struct xe_exec_queue *q),
+ TP_ARGS(q)
+);
+
DECLARE_EVENT_CLASS(xe_sched_job,
TP_PROTO(struct xe_sched_job *job),
TP_ARGS(job),
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* ✗ CI.checkpatch: warning for Fence deadlines in Xe
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (12 preceding siblings ...)
2025-12-25 1:17 ` [RFC PATCH 13/13] drm/xe: Add exec queue deadline trace points Matthew Brost
@ 2025-12-25 1:25 ` Patchwork
2025-12-25 1:26 ` ✓ CI.KUnit: success " Patchwork
` (2 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2025-12-25 1:25 UTC (permalink / raw)
To: Matthew Brost; +Cc: intel-xe
== Series Details ==
Series: Fence deadlines in Xe
URL : https://patchwork.freedesktop.org/series/159479/
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
99339247d1ae4378b24366da182e712bdc623311
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 57a616bdccfbb37cf2e5ee97369a498393dbf2d2
Author: Matthew Brost <matthew.brost@intel.com>
Date: Wed Dec 24 17:17:34 2025 -0800
drm/xe: Add exec queue deadline trace points
Add exec queue deadline trace points to help debug and profile the
deadline implementation.
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
+ /mt/dim checkpatch 5c680ac45628b1951d20a444f400c82242029031 drm-intel
c2c665d12514 drm/xe: Add dedicated message lock
0d853ea7942e drm/xe: Add EXEC_QUEUE_FLAG_CAP_SYS_NICE
373af0e47c0e drm/xe: Store exec queue in hardware fence
bfd1dcedf478 drm/xe: Add deadline exec queue vfuncs
8281afdd155f drm/xe: Export to_xe_hw_fence
27d2eb31dc5e drm/xe: Add deadline manager
-:30: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#30:
new file mode 100644
-:119: CHECK:BRACES: Blank lines aren't necessary before a close brace '}'
#119: FILE: drivers/gpu/drm/xe/xe_deadline_mgr.c:85:
+
+}
-:165: CHECK:LINE_SPACING: Please don't use multiple blank lines
#165: FILE: drivers/gpu/drm/xe/xe_deadline_mgr.c:131:
+
+
total: 0 errors, 1 warnings, 2 checks, 308 lines checked
482ae2e6dea1 drm/xe: Add deadline manager to user exec queues
819c1bd106be drm/xe: Stub out execlists deadline vfuncs as NOPs
a10c43abe6c5 drm/xe: Make scheduler message lock IRQ-safe
-:82: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'sched' may be better as '(sched)' to avoid precedence issues
#82: FILE: drivers/gpu/drm/xe/xe_gpu_scheduler.h:34:
+#define xe_sched_msg_lock(sched) \
+ scoped_guard(spinlock_irqsave, &sched->msg_lock)
total: 0 errors, 0 warnings, 1 checks, 110 lines checked
91baa6abb5a6 drm/xe: Implement GuC submission backend ops for deadlines
6614fc118515 drm/xe: Enable deadlines on hardware fences
3066661b59d8 drm/xe: Add CONFIG_DRM_XE_DEADLINE_WINDOW
57a616bdccfb drm/xe: Add exec queue deadline trace points
^ permalink raw reply [flat|nested] 18+ messages in thread
* ✓ CI.KUnit: success for Fence deadlines in Xe
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (13 preceding siblings ...)
2025-12-25 1:25 ` ✗ CI.checkpatch: warning for Fence deadlines in Xe Patchwork
@ 2025-12-25 1:26 ` Patchwork
2025-12-25 2:01 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-12-25 3:02 ` ✓ Xe.CI.Full: success " Patchwork
16 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2025-12-25 1:26 UTC (permalink / raw)
To: Matthew Brost; +Cc: intel-xe
== Series Details ==
Series: Fence deadlines in Xe
URL : https://patchwork.freedesktop.org/series/159479/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[01:25:21] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[01:25:25] 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
[01:25:57] Starting KUnit Kernel (1/1)...
[01:25:57] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[01:25:57] ================== guc_buf (11 subtests) ===================
[01:25:57] [PASSED] test_smallest
[01:25:57] [PASSED] test_largest
[01:25:57] [PASSED] test_granular
[01:25:57] [PASSED] test_unique
[01:25:57] [PASSED] test_overlap
[01:25:57] [PASSED] test_reusable
[01:25:57] [PASSED] test_too_big
[01:25:57] [PASSED] test_flush
[01:25:57] [PASSED] test_lookup
[01:25:57] [PASSED] test_data
[01:25:57] [PASSED] test_class
[01:25:57] ===================== [PASSED] guc_buf =====================
[01:25:57] =================== guc_dbm (7 subtests) ===================
[01:25:57] [PASSED] test_empty
[01:25:57] [PASSED] test_default
[01:25:57] ======================== test_size ========================
[01:25:57] [PASSED] 4
[01:25:57] [PASSED] 8
[01:25:57] [PASSED] 32
[01:25:57] [PASSED] 256
[01:25:57] ==================== [PASSED] test_size ====================
[01:25:57] ======================= test_reuse ========================
[01:25:57] [PASSED] 4
[01:25:57] [PASSED] 8
[01:25:57] [PASSED] 32
[01:25:57] [PASSED] 256
[01:25:57] =================== [PASSED] test_reuse ====================
[01:25:57] =================== test_range_overlap ====================
[01:25:57] [PASSED] 4
[01:25:57] [PASSED] 8
[01:25:57] [PASSED] 32
[01:25:57] [PASSED] 256
[01:25:57] =============== [PASSED] test_range_overlap ================
[01:25:57] =================== test_range_compact ====================
[01:25:57] [PASSED] 4
[01:25:57] [PASSED] 8
[01:25:57] [PASSED] 32
[01:25:57] [PASSED] 256
[01:25:57] =============== [PASSED] test_range_compact ================
[01:25:57] ==================== test_range_spare =====================
[01:25:57] [PASSED] 4
[01:25:57] [PASSED] 8
[01:25:57] [PASSED] 32
[01:25:57] [PASSED] 256
[01:25:57] ================ [PASSED] test_range_spare =================
[01:25:57] ===================== [PASSED] guc_dbm =====================
[01:25:57] =================== guc_idm (6 subtests) ===================
[01:25:57] [PASSED] bad_init
[01:25:57] [PASSED] no_init
[01:25:57] [PASSED] init_fini
[01:25:57] [PASSED] check_used
[01:25:57] [PASSED] check_quota
[01:25:57] [PASSED] check_all
[01:25:57] ===================== [PASSED] guc_idm =====================
[01:25:57] ================== no_relay (3 subtests) ===================
[01:25:57] [PASSED] xe_drops_guc2pf_if_not_ready
[01:25:57] [PASSED] xe_drops_guc2vf_if_not_ready
[01:25:57] [PASSED] xe_rejects_send_if_not_ready
[01:25:57] ==================== [PASSED] no_relay =====================
[01:25:57] ================== pf_relay (14 subtests) ==================
[01:25:57] [PASSED] pf_rejects_guc2pf_too_short
[01:25:57] [PASSED] pf_rejects_guc2pf_too_long
[01:25:57] [PASSED] pf_rejects_guc2pf_no_payload
[01:25:57] [PASSED] pf_fails_no_payload
[01:25:57] [PASSED] pf_fails_bad_origin
[01:25:57] [PASSED] pf_fails_bad_type
[01:25:57] [PASSED] pf_txn_reports_error
[01:25:57] [PASSED] pf_txn_sends_pf2guc
[01:25:57] [PASSED] pf_sends_pf2guc
[01:25:57] [SKIPPED] pf_loopback_nop
[01:25:57] [SKIPPED] pf_loopback_echo
[01:25:57] [SKIPPED] pf_loopback_fail
[01:25:57] [SKIPPED] pf_loopback_busy
[01:25:57] [SKIPPED] pf_loopback_retry
[01:25:57] ==================== [PASSED] pf_relay =====================
[01:25:57] ================== vf_relay (3 subtests) ===================
[01:25:57] [PASSED] vf_rejects_guc2vf_too_short
[01:25:57] [PASSED] vf_rejects_guc2vf_too_long
[01:25:57] [PASSED] vf_rejects_guc2vf_no_payload
[01:25:57] ==================== [PASSED] vf_relay =====================
[01:25:57] ================ pf_gt_config (6 subtests) =================
[01:25:57] [PASSED] fair_contexts_1vf
[01:25:57] [PASSED] fair_doorbells_1vf
[01:25:57] [PASSED] fair_ggtt_1vf
[01:25:57] ====================== fair_contexts ======================
[01:25:57] [PASSED] 1 VF
[01:25:57] [PASSED] 2 VFs
[01:25:57] [PASSED] 3 VFs
[01:25:57] [PASSED] 4 VFs
[01:25:57] [PASSED] 5 VFs
[01:25:57] [PASSED] 6 VFs
[01:25:57] [PASSED] 7 VFs
[01:25:57] [PASSED] 8 VFs
[01:25:57] [PASSED] 9 VFs
[01:25:57] [PASSED] 10 VFs
[01:25:57] [PASSED] 11 VFs
[01:25:57] [PASSED] 12 VFs
[01:25:57] [PASSED] 13 VFs
[01:25:57] [PASSED] 14 VFs
[01:25:57] [PASSED] 15 VFs
[01:25:57] [PASSED] 16 VFs
[01:25:57] [PASSED] 17 VFs
[01:25:57] [PASSED] 18 VFs
[01:25:57] [PASSED] 19 VFs
[01:25:57] [PASSED] 20 VFs
[01:25:57] [PASSED] 21 VFs
[01:25:57] [PASSED] 22 VFs
[01:25:57] [PASSED] 23 VFs
[01:25:57] [PASSED] 24 VFs
[01:25:57] [PASSED] 25 VFs
[01:25:57] [PASSED] 26 VFs
[01:25:57] [PASSED] 27 VFs
[01:25:57] [PASSED] 28 VFs
[01:25:57] [PASSED] 29 VFs
[01:25:57] [PASSED] 30 VFs
[01:25:57] [PASSED] 31 VFs
[01:25:57] [PASSED] 32 VFs
[01:25:57] [PASSED] 33 VFs
[01:25:57] [PASSED] 34 VFs
[01:25:57] [PASSED] 35 VFs
[01:25:57] [PASSED] 36 VFs
[01:25:57] [PASSED] 37 VFs
[01:25:57] [PASSED] 38 VFs
[01:25:57] [PASSED] 39 VFs
[01:25:57] [PASSED] 40 VFs
[01:25:57] [PASSED] 41 VFs
[01:25:57] [PASSED] 42 VFs
[01:25:57] [PASSED] 43 VFs
[01:25:57] [PASSED] 44 VFs
[01:25:57] [PASSED] 45 VFs
[01:25:57] [PASSED] 46 VFs
[01:25:57] [PASSED] 47 VFs
[01:25:57] [PASSED] 48 VFs
[01:25:57] [PASSED] 49 VFs
[01:25:57] [PASSED] 50 VFs
[01:25:57] [PASSED] 51 VFs
[01:25:57] [PASSED] 52 VFs
[01:25:57] [PASSED] 53 VFs
[01:25:57] [PASSED] 54 VFs
[01:25:57] [PASSED] 55 VFs
[01:25:57] [PASSED] 56 VFs
[01:25:57] [PASSED] 57 VFs
[01:25:57] [PASSED] 58 VFs
[01:25:57] [PASSED] 59 VFs
[01:25:57] [PASSED] 60 VFs
[01:25:57] [PASSED] 61 VFs
[01:25:57] [PASSED] 62 VFs
[01:25:57] [PASSED] 63 VFs
[01:25:57] ================== [PASSED] fair_contexts ==================
[01:25:57] ===================== fair_doorbells ======================
[01:25:57] [PASSED] 1 VF
[01:25:57] [PASSED] 2 VFs
[01:25:57] [PASSED] 3 VFs
[01:25:57] [PASSED] 4 VFs
[01:25:57] [PASSED] 5 VFs
[01:25:57] [PASSED] 6 VFs
[01:25:57] [PASSED] 7 VFs
[01:25:57] [PASSED] 8 VFs
[01:25:57] [PASSED] 9 VFs
[01:25:57] [PASSED] 10 VFs
[01:25:57] [PASSED] 11 VFs
[01:25:57] [PASSED] 12 VFs
[01:25:57] [PASSED] 13 VFs
[01:25:57] [PASSED] 14 VFs
[01:25:57] [PASSED] 15 VFs
[01:25:57] [PASSED] 16 VFs
[01:25:57] [PASSED] 17 VFs
[01:25:57] [PASSED] 18 VFs
[01:25:57] [PASSED] 19 VFs
[01:25:57] [PASSED] 20 VFs
[01:25:57] [PASSED] 21 VFs
[01:25:57] [PASSED] 22 VFs
[01:25:57] [PASSED] 23 VFs
[01:25:57] [PASSED] 24 VFs
[01:25:57] [PASSED] 25 VFs
[01:25:57] [PASSED] 26 VFs
[01:25:57] [PASSED] 27 VFs
[01:25:57] [PASSED] 28 VFs
[01:25:57] [PASSED] 29 VFs
[01:25:57] [PASSED] 30 VFs
[01:25:57] [PASSED] 31 VFs
[01:25:57] [PASSED] 32 VFs
[01:25:57] [PASSED] 33 VFs
[01:25:57] [PASSED] 34 VFs
[01:25:57] [PASSED] 35 VFs
[01:25:57] [PASSED] 36 VFs
[01:25:57] [PASSED] 37 VFs
[01:25:57] [PASSED] 38 VFs
[01:25:57] [PASSED] 39 VFs
[01:25:57] [PASSED] 40 VFs
[01:25:57] [PASSED] 41 VFs
[01:25:57] [PASSED] 42 VFs
[01:25:57] [PASSED] 43 VFs
[01:25:57] [PASSED] 44 VFs
[01:25:57] [PASSED] 45 VFs
[01:25:57] [PASSED] 46 VFs
[01:25:57] [PASSED] 47 VFs
[01:25:57] [PASSED] 48 VFs
[01:25:57] [PASSED] 49 VFs
[01:25:57] [PASSED] 50 VFs
[01:25:57] [PASSED] 51 VFs
[01:25:57] [PASSED] 52 VFs
[01:25:57] [PASSED] 53 VFs
[01:25:57] [PASSED] 54 VFs
[01:25:57] [PASSED] 55 VFs
[01:25:57] [PASSED] 56 VFs
[01:25:57] [PASSED] 57 VFs
[01:25:57] [PASSED] 58 VFs
[01:25:57] [PASSED] 59 VFs
[01:25:57] [PASSED] 60 VFs
[01:25:57] [PASSED] 61 VFs
[01:25:57] [PASSED] 62 VFs
[01:25:57] [PASSED] 63 VFs
[01:25:57] ================= [PASSED] fair_doorbells ==================
[01:25:57] ======================== fair_ggtt ========================
[01:25:57] [PASSED] 1 VF
[01:25:57] [PASSED] 2 VFs
[01:25:57] [PASSED] 3 VFs
[01:25:57] [PASSED] 4 VFs
[01:25:57] [PASSED] 5 VFs
[01:25:57] [PASSED] 6 VFs
[01:25:57] [PASSED] 7 VFs
[01:25:57] [PASSED] 8 VFs
[01:25:57] [PASSED] 9 VFs
[01:25:57] [PASSED] 10 VFs
[01:25:57] [PASSED] 11 VFs
[01:25:57] [PASSED] 12 VFs
[01:25:57] [PASSED] 13 VFs
[01:25:57] [PASSED] 14 VFs
[01:25:57] [PASSED] 15 VFs
[01:25:57] [PASSED] 16 VFs
[01:25:57] [PASSED] 17 VFs
[01:25:57] [PASSED] 18 VFs
[01:25:57] [PASSED] 19 VFs
[01:25:57] [PASSED] 20 VFs
[01:25:57] [PASSED] 21 VFs
[01:25:57] [PASSED] 22 VFs
[01:25:57] [PASSED] 23 VFs
[01:25:57] [PASSED] 24 VFs
[01:25:57] [PASSED] 25 VFs
[01:25:57] [PASSED] 26 VFs
[01:25:57] [PASSED] 27 VFs
[01:25:57] [PASSED] 28 VFs
[01:25:57] [PASSED] 29 VFs
[01:25:57] [PASSED] 30 VFs
[01:25:57] [PASSED] 31 VFs
[01:25:57] [PASSED] 32 VFs
[01:25:57] [PASSED] 33 VFs
[01:25:57] [PASSED] 34 VFs
[01:25:57] [PASSED] 35 VFs
[01:25:57] [PASSED] 36 VFs
[01:25:57] [PASSED] 37 VFs
[01:25:57] [PASSED] 38 VFs
[01:25:57] [PASSED] 39 VFs
[01:25:57] [PASSED] 40 VFs
[01:25:57] [PASSED] 41 VFs
[01:25:57] [PASSED] 42 VFs
[01:25:57] [PASSED] 43 VFs
[01:25:57] [PASSED] 44 VFs
[01:25:57] [PASSED] 45 VFs
[01:25:57] [PASSED] 46 VFs
[01:25:57] [PASSED] 47 VFs
[01:25:57] [PASSED] 48 VFs
[01:25:57] [PASSED] 49 VFs
[01:25:57] [PASSED] 50 VFs
[01:25:57] [PASSED] 51 VFs
[01:25:57] [PASSED] 52 VFs
[01:25:57] [PASSED] 53 VFs
[01:25:57] [PASSED] 54 VFs
[01:25:57] [PASSED] 55 VFs
[01:25:57] [PASSED] 56 VFs
[01:25:57] [PASSED] 57 VFs
[01:25:57] [PASSED] 58 VFs
[01:25:57] [PASSED] 59 VFs
[01:25:57] [PASSED] 60 VFs
[01:25:57] [PASSED] 61 VFs
[01:25:57] [PASSED] 62 VFs
[01:25:57] [PASSED] 63 VFs
[01:25:57] ==================== [PASSED] fair_ggtt ====================
[01:25:57] ================== [PASSED] pf_gt_config ===================
[01:25:57] ===================== lmtt (1 subtest) =====================
[01:25:57] ======================== test_ops =========================
[01:25:57] [PASSED] 2-level
[01:25:57] [PASSED] multi-level
[01:25:57] ==================== [PASSED] test_ops =====================
[01:25:57] ====================== [PASSED] lmtt =======================
[01:25:57] ================= pf_service (11 subtests) =================
[01:25:57] [PASSED] pf_negotiate_any
[01:25:57] [PASSED] pf_negotiate_base_match
[01:25:57] [PASSED] pf_negotiate_base_newer
[01:25:57] [PASSED] pf_negotiate_base_next
[01:25:57] [SKIPPED] pf_negotiate_base_older
[01:25:57] [PASSED] pf_negotiate_base_prev
[01:25:57] [PASSED] pf_negotiate_latest_match
[01:25:57] [PASSED] pf_negotiate_latest_newer
[01:25:57] [PASSED] pf_negotiate_latest_next
[01:25:57] [SKIPPED] pf_negotiate_latest_older
[01:25:57] [SKIPPED] pf_negotiate_latest_prev
[01:25:57] =================== [PASSED] pf_service ====================
[01:25:57] ================= xe_guc_g2g (2 subtests) ==================
[01:25:57] ============== xe_live_guc_g2g_kunit_default ==============
[01:25:57] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[01:25:57] ============== xe_live_guc_g2g_kunit_allmem ===============
[01:25:57] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[01:25:57] =================== [SKIPPED] xe_guc_g2g ===================
[01:25:57] =================== xe_mocs (2 subtests) ===================
[01:25:57] ================ xe_live_mocs_kernel_kunit ================
[01:25:57] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[01:25:57] ================ xe_live_mocs_reset_kunit =================
[01:25:57] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[01:25:57] ==================== [SKIPPED] xe_mocs =====================
[01:25:57] ================= xe_migrate (2 subtests) ==================
[01:25:57] ================= xe_migrate_sanity_kunit =================
[01:25:57] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[01:25:57] ================== xe_validate_ccs_kunit ==================
[01:25:57] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[01:25:57] =================== [SKIPPED] xe_migrate ===================
[01:25:57] ================== xe_dma_buf (1 subtest) ==================
[01:25:57] ==================== xe_dma_buf_kunit =====================
[01:25:57] ================ [SKIPPED] xe_dma_buf_kunit ================
[01:25:57] =================== [SKIPPED] xe_dma_buf ===================
[01:25:57] ================= xe_bo_shrink (1 subtest) =================
[01:25:57] =================== xe_bo_shrink_kunit ====================
[01:25:57] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[01:25:57] ================== [SKIPPED] xe_bo_shrink ==================
[01:25:57] ==================== xe_bo (2 subtests) ====================
[01:25:57] ================== xe_ccs_migrate_kunit ===================
[01:25:57] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[01:25:57] ==================== xe_bo_evict_kunit ====================
[01:25:57] =============== [SKIPPED] xe_bo_evict_kunit ================
[01:25:57] ===================== [SKIPPED] xe_bo ======================
[01:25:57] ==================== args (13 subtests) ====================
[01:25:57] [PASSED] count_args_test
[01:25:57] [PASSED] call_args_example
[01:25:57] [PASSED] call_args_test
[01:25:57] [PASSED] drop_first_arg_example
[01:25:57] [PASSED] drop_first_arg_test
[01:25:57] [PASSED] first_arg_example
[01:25:57] [PASSED] first_arg_test
[01:25:57] [PASSED] last_arg_example
[01:25:57] [PASSED] last_arg_test
[01:25:57] [PASSED] pick_arg_example
[01:25:57] [PASSED] if_args_example
[01:25:57] [PASSED] if_args_test
[01:25:57] [PASSED] sep_comma_example
[01:25:57] ====================== [PASSED] args =======================
[01:25:57] =================== xe_pci (3 subtests) ====================
[01:25:57] ==================== check_graphics_ip ====================
[01:25:57] [PASSED] 12.00 Xe_LP
[01:25:57] [PASSED] 12.10 Xe_LP+
[01:25:57] [PASSED] 12.55 Xe_HPG
[01:25:57] [PASSED] 12.60 Xe_HPC
[01:25:57] [PASSED] 12.70 Xe_LPG
[01:25:57] [PASSED] 12.71 Xe_LPG
[01:25:57] [PASSED] 12.74 Xe_LPG+
[01:25:57] [PASSED] 20.01 Xe2_HPG
[01:25:57] [PASSED] 20.02 Xe2_HPG
[01:25:57] [PASSED] 20.04 Xe2_LPG
[01:25:57] [PASSED] 30.00 Xe3_LPG
[01:25:57] [PASSED] 30.01 Xe3_LPG
[01:25:57] [PASSED] 30.03 Xe3_LPG
[01:25:57] [PASSED] 30.04 Xe3_LPG
[01:25:57] [PASSED] 30.05 Xe3_LPG
[01:25:57] [PASSED] 35.11 Xe3p_XPC
[01:25:57] ================ [PASSED] check_graphics_ip ================
[01:25:57] ===================== check_media_ip ======================
[01:25:57] [PASSED] 12.00 Xe_M
[01:25:57] [PASSED] 12.55 Xe_HPM
[01:25:57] [PASSED] 13.00 Xe_LPM+
[01:25:57] [PASSED] 13.01 Xe2_HPM
[01:25:57] [PASSED] 20.00 Xe2_LPM
[01:25:57] [PASSED] 30.00 Xe3_LPM
[01:25:57] [PASSED] 30.02 Xe3_LPM
[01:25:57] [PASSED] 35.00 Xe3p_LPM
[01:25:57] [PASSED] 35.03 Xe3p_HPM
[01:25:57] ================= [PASSED] check_media_ip ==================
[01:25:57] =================== check_platform_desc ===================
[01:25:57] [PASSED] 0x9A60 (TIGERLAKE)
[01:25:57] [PASSED] 0x9A68 (TIGERLAKE)
[01:25:57] [PASSED] 0x9A70 (TIGERLAKE)
[01:25:57] [PASSED] 0x9A40 (TIGERLAKE)
[01:25:57] [PASSED] 0x9A49 (TIGERLAKE)
[01:25:57] [PASSED] 0x9A59 (TIGERLAKE)
[01:25:57] [PASSED] 0x9A78 (TIGERLAKE)
[01:25:57] [PASSED] 0x9AC0 (TIGERLAKE)
[01:25:57] [PASSED] 0x9AC9 (TIGERLAKE)
[01:25:57] [PASSED] 0x9AD9 (TIGERLAKE)
[01:25:57] [PASSED] 0x9AF8 (TIGERLAKE)
[01:25:57] [PASSED] 0x4C80 (ROCKETLAKE)
[01:25:57] [PASSED] 0x4C8A (ROCKETLAKE)
[01:25:57] [PASSED] 0x4C8B (ROCKETLAKE)
[01:25:57] [PASSED] 0x4C8C (ROCKETLAKE)
[01:25:57] [PASSED] 0x4C90 (ROCKETLAKE)
[01:25:57] [PASSED] 0x4C9A (ROCKETLAKE)
[01:25:57] [PASSED] 0x4680 (ALDERLAKE_S)
[01:25:57] [PASSED] 0x4682 (ALDERLAKE_S)
[01:25:57] [PASSED] 0x4688 (ALDERLAKE_S)
[01:25:57] [PASSED] 0x468A (ALDERLAKE_S)
[01:25:57] [PASSED] 0x468B (ALDERLAKE_S)
[01:25:57] [PASSED] 0x4690 (ALDERLAKE_S)
[01:25:57] [PASSED] 0x4692 (ALDERLAKE_S)
[01:25:57] [PASSED] 0x4693 (ALDERLAKE_S)
[01:25:57] [PASSED] 0x46A0 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46A1 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46A2 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46A3 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46A6 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46A8 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46AA (ALDERLAKE_P)
[01:25:57] [PASSED] 0x462A (ALDERLAKE_P)
[01:25:57] [PASSED] 0x4626 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x4628 (ALDERLAKE_P)
stty: 'standard input': Inappropriate ioctl for device
[01:25:57] [PASSED] 0x46B0 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46B1 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46B2 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46B3 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46C0 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46C1 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46C2 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46C3 (ALDERLAKE_P)
[01:25:57] [PASSED] 0x46D0 (ALDERLAKE_N)
[01:25:57] [PASSED] 0x46D1 (ALDERLAKE_N)
[01:25:57] [PASSED] 0x46D2 (ALDERLAKE_N)
[01:25:57] [PASSED] 0x46D3 (ALDERLAKE_N)
[01:25:57] [PASSED] 0x46D4 (ALDERLAKE_N)
[01:25:57] [PASSED] 0xA721 (ALDERLAKE_P)
[01:25:57] [PASSED] 0xA7A1 (ALDERLAKE_P)
[01:25:57] [PASSED] 0xA7A9 (ALDERLAKE_P)
[01:25:57] [PASSED] 0xA7AC (ALDERLAKE_P)
[01:25:57] [PASSED] 0xA7AD (ALDERLAKE_P)
[01:25:57] [PASSED] 0xA720 (ALDERLAKE_P)
[01:25:57] [PASSED] 0xA7A0 (ALDERLAKE_P)
[01:25:57] [PASSED] 0xA7A8 (ALDERLAKE_P)
[01:25:57] [PASSED] 0xA7AA (ALDERLAKE_P)
[01:25:57] [PASSED] 0xA7AB (ALDERLAKE_P)
[01:25:57] [PASSED] 0xA780 (ALDERLAKE_S)
[01:25:57] [PASSED] 0xA781 (ALDERLAKE_S)
[01:25:57] [PASSED] 0xA782 (ALDERLAKE_S)
[01:25:57] [PASSED] 0xA783 (ALDERLAKE_S)
[01:25:57] [PASSED] 0xA788 (ALDERLAKE_S)
[01:25:57] [PASSED] 0xA789 (ALDERLAKE_S)
[01:25:57] [PASSED] 0xA78A (ALDERLAKE_S)
[01:25:57] [PASSED] 0xA78B (ALDERLAKE_S)
[01:25:57] [PASSED] 0x4905 (DG1)
[01:25:57] [PASSED] 0x4906 (DG1)
[01:25:57] [PASSED] 0x4907 (DG1)
[01:25:57] [PASSED] 0x4908 (DG1)
[01:25:57] [PASSED] 0x4909 (DG1)
[01:25:57] [PASSED] 0x56C0 (DG2)
[01:25:57] [PASSED] 0x56C2 (DG2)
[01:25:57] [PASSED] 0x56C1 (DG2)
[01:25:57] [PASSED] 0x7D51 (METEORLAKE)
[01:25:57] [PASSED] 0x7DD1 (METEORLAKE)
[01:25:57] [PASSED] 0x7D41 (METEORLAKE)
[01:25:57] [PASSED] 0x7D67 (METEORLAKE)
[01:25:57] [PASSED] 0xB640 (METEORLAKE)
[01:25:57] [PASSED] 0x56A0 (DG2)
[01:25:57] [PASSED] 0x56A1 (DG2)
[01:25:57] [PASSED] 0x56A2 (DG2)
[01:25:57] [PASSED] 0x56BE (DG2)
[01:25:57] [PASSED] 0x56BF (DG2)
[01:25:57] [PASSED] 0x5690 (DG2)
[01:25:57] [PASSED] 0x5691 (DG2)
[01:25:57] [PASSED] 0x5692 (DG2)
[01:25:57] [PASSED] 0x56A5 (DG2)
[01:25:57] [PASSED] 0x56A6 (DG2)
[01:25:57] [PASSED] 0x56B0 (DG2)
[01:25:57] [PASSED] 0x56B1 (DG2)
[01:25:57] [PASSED] 0x56BA (DG2)
[01:25:57] [PASSED] 0x56BB (DG2)
[01:25:57] [PASSED] 0x56BC (DG2)
[01:25:57] [PASSED] 0x56BD (DG2)
[01:25:57] [PASSED] 0x5693 (DG2)
[01:25:57] [PASSED] 0x5694 (DG2)
[01:25:57] [PASSED] 0x5695 (DG2)
[01:25:57] [PASSED] 0x56A3 (DG2)
[01:25:57] [PASSED] 0x56A4 (DG2)
[01:25:57] [PASSED] 0x56B2 (DG2)
[01:25:57] [PASSED] 0x56B3 (DG2)
[01:25:57] [PASSED] 0x5696 (DG2)
[01:25:57] [PASSED] 0x5697 (DG2)
[01:25:57] [PASSED] 0xB69 (PVC)
[01:25:57] [PASSED] 0xB6E (PVC)
[01:25:57] [PASSED] 0xBD4 (PVC)
[01:25:57] [PASSED] 0xBD5 (PVC)
[01:25:57] [PASSED] 0xBD6 (PVC)
[01:25:57] [PASSED] 0xBD7 (PVC)
[01:25:57] [PASSED] 0xBD8 (PVC)
[01:25:57] [PASSED] 0xBD9 (PVC)
[01:25:57] [PASSED] 0xBDA (PVC)
[01:25:57] [PASSED] 0xBDB (PVC)
[01:25:57] [PASSED] 0xBE0 (PVC)
[01:25:57] [PASSED] 0xBE1 (PVC)
[01:25:57] [PASSED] 0xBE5 (PVC)
[01:25:57] [PASSED] 0x7D40 (METEORLAKE)
[01:25:57] [PASSED] 0x7D45 (METEORLAKE)
[01:25:57] [PASSED] 0x7D55 (METEORLAKE)
[01:25:57] [PASSED] 0x7D60 (METEORLAKE)
[01:25:57] [PASSED] 0x7DD5 (METEORLAKE)
[01:25:57] [PASSED] 0x6420 (LUNARLAKE)
[01:25:57] [PASSED] 0x64A0 (LUNARLAKE)
[01:25:57] [PASSED] 0x64B0 (LUNARLAKE)
[01:25:57] [PASSED] 0xE202 (BATTLEMAGE)
[01:25:57] [PASSED] 0xE209 (BATTLEMAGE)
[01:25:57] [PASSED] 0xE20B (BATTLEMAGE)
[01:25:57] [PASSED] 0xE20C (BATTLEMAGE)
[01:25:57] [PASSED] 0xE20D (BATTLEMAGE)
[01:25:57] [PASSED] 0xE210 (BATTLEMAGE)
[01:25:57] [PASSED] 0xE211 (BATTLEMAGE)
[01:25:57] [PASSED] 0xE212 (BATTLEMAGE)
[01:25:57] [PASSED] 0xE216 (BATTLEMAGE)
[01:25:57] [PASSED] 0xE220 (BATTLEMAGE)
[01:25:57] [PASSED] 0xE221 (BATTLEMAGE)
[01:25:57] [PASSED] 0xE222 (BATTLEMAGE)
[01:25:57] [PASSED] 0xE223 (BATTLEMAGE)
[01:25:57] [PASSED] 0xB080 (PANTHERLAKE)
[01:25:57] [PASSED] 0xB081 (PANTHERLAKE)
[01:25:57] [PASSED] 0xB082 (PANTHERLAKE)
[01:25:57] [PASSED] 0xB083 (PANTHERLAKE)
[01:25:57] [PASSED] 0xB084 (PANTHERLAKE)
[01:25:57] [PASSED] 0xB085 (PANTHERLAKE)
[01:25:57] [PASSED] 0xB086 (PANTHERLAKE)
[01:25:57] [PASSED] 0xB087 (PANTHERLAKE)
[01:25:57] [PASSED] 0xB08F (PANTHERLAKE)
[01:25:57] [PASSED] 0xB090 (PANTHERLAKE)
[01:25:57] [PASSED] 0xB0A0 (PANTHERLAKE)
[01:25:57] [PASSED] 0xB0B0 (PANTHERLAKE)
[01:25:57] [PASSED] 0xFD80 (PANTHERLAKE)
[01:25:57] [PASSED] 0xFD81 (PANTHERLAKE)
[01:25:57] [PASSED] 0xD740 (NOVALAKE_S)
[01:25:57] [PASSED] 0xD741 (NOVALAKE_S)
[01:25:57] [PASSED] 0xD742 (NOVALAKE_S)
[01:25:57] [PASSED] 0xD743 (NOVALAKE_S)
[01:25:57] [PASSED] 0xD744 (NOVALAKE_S)
[01:25:57] [PASSED] 0xD745 (NOVALAKE_S)
[01:25:57] [PASSED] 0x674C (CRESCENTISLAND)
[01:25:57] =============== [PASSED] check_platform_desc ===============
[01:25:57] ===================== [PASSED] xe_pci ======================
[01:25:57] =================== xe_rtp (2 subtests) ====================
[01:25:57] =============== xe_rtp_process_to_sr_tests ================
[01:25:57] [PASSED] coalesce-same-reg
[01:25:57] [PASSED] no-match-no-add
[01:25:57] [PASSED] match-or
[01:25:57] [PASSED] match-or-xfail
[01:25:57] [PASSED] no-match-no-add-multiple-rules
[01:25:57] [PASSED] two-regs-two-entries
[01:25:57] [PASSED] clr-one-set-other
[01:25:57] [PASSED] set-field
[01:25:57] [PASSED] conflict-duplicate
[01:25:57] [PASSED] conflict-not-disjoint
[01:25:57] [PASSED] conflict-reg-type
[01:25:57] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[01:25:57] ================== xe_rtp_process_tests ===================
[01:25:57] [PASSED] active1
[01:25:57] [PASSED] active2
[01:25:57] [PASSED] active-inactive
[01:25:57] [PASSED] inactive-active
[01:25:57] [PASSED] inactive-1st_or_active-inactive
[01:25:57] [PASSED] inactive-2nd_or_active-inactive
[01:25:57] [PASSED] inactive-last_or_active-inactive
[01:25:57] [PASSED] inactive-no_or_active-inactive
[01:25:57] ============== [PASSED] xe_rtp_process_tests ===============
[01:25:57] ===================== [PASSED] xe_rtp ======================
[01:25:57] ==================== xe_wa (1 subtest) =====================
[01:25:57] ======================== xe_wa_gt =========================
[01:25:57] [PASSED] TIGERLAKE B0
[01:25:57] [PASSED] DG1 A0
[01:25:57] [PASSED] DG1 B0
[01:25:57] [PASSED] ALDERLAKE_S A0
[01:25:57] [PASSED] ALDERLAKE_S B0
[01:25:57] [PASSED] ALDERLAKE_S C0
[01:25:57] [PASSED] ALDERLAKE_S D0
[01:25:57] [PASSED] ALDERLAKE_P A0
[01:25:57] [PASSED] ALDERLAKE_P B0
[01:25:57] [PASSED] ALDERLAKE_P C0
[01:25:57] [PASSED] ALDERLAKE_S RPLS D0
[01:25:57] [PASSED] ALDERLAKE_P RPLU E0
[01:25:57] [PASSED] DG2 G10 C0
[01:25:57] [PASSED] DG2 G11 B1
[01:25:57] [PASSED] DG2 G12 A1
[01:25:57] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[01:25:57] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[01:25:57] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[01:25:57] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[01:25:57] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[01:25:57] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[01:25:57] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[01:25:57] ==================== [PASSED] xe_wa_gt =====================
[01:25:57] ====================== [PASSED] xe_wa ======================
[01:25:57] ============================================================
[01:25:57] Testing complete. Ran 512 tests: passed: 494, skipped: 18
[01:25:57] Elapsed time: 36.285s total, 4.227s configuring, 31.591s building, 0.457s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[01:25:57] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[01:25:59] 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
[01:26:24] Starting KUnit Kernel (1/1)...
[01:26:24] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[01:26:24] ============ drm_test_pick_cmdline (2 subtests) ============
[01:26:24] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[01:26:24] =============== drm_test_pick_cmdline_named ===============
[01:26:24] [PASSED] NTSC
[01:26:24] [PASSED] NTSC-J
[01:26:24] [PASSED] PAL
[01:26:24] [PASSED] PAL-M
[01:26:24] =========== [PASSED] drm_test_pick_cmdline_named ===========
[01:26:24] ============== [PASSED] drm_test_pick_cmdline ==============
[01:26:24] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[01:26:24] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[01:26:24] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[01:26:24] =========== drm_validate_clone_mode (2 subtests) ===========
[01:26:24] ============== drm_test_check_in_clone_mode ===============
[01:26:24] [PASSED] in_clone_mode
[01:26:24] [PASSED] not_in_clone_mode
[01:26:24] ========== [PASSED] drm_test_check_in_clone_mode ===========
[01:26:24] =============== drm_test_check_valid_clones ===============
[01:26:24] [PASSED] not_in_clone_mode
[01:26:24] [PASSED] valid_clone
[01:26:24] [PASSED] invalid_clone
[01:26:24] =========== [PASSED] drm_test_check_valid_clones ===========
[01:26:24] ============= [PASSED] drm_validate_clone_mode =============
[01:26:24] ============= drm_validate_modeset (1 subtest) =============
[01:26:24] [PASSED] drm_test_check_connector_changed_modeset
[01:26:24] ============== [PASSED] drm_validate_modeset ===============
[01:26:24] ====== drm_test_bridge_get_current_state (2 subtests) ======
[01:26:24] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[01:26:24] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[01:26:24] ======== [PASSED] drm_test_bridge_get_current_state ========
[01:26:24] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[01:26:24] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[01:26:24] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[01:26:24] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[01:26:24] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[01:26:24] ============== drm_bridge_alloc (2 subtests) ===============
[01:26:24] [PASSED] drm_test_drm_bridge_alloc_basic
[01:26:24] [PASSED] drm_test_drm_bridge_alloc_get_put
[01:26:24] ================ [PASSED] drm_bridge_alloc =================
[01:26:24] ================== drm_buddy (8 subtests) ==================
[01:26:24] [PASSED] drm_test_buddy_alloc_limit
[01:26:24] [PASSED] drm_test_buddy_alloc_optimistic
[01:26:24] [PASSED] drm_test_buddy_alloc_pessimistic
[01:26:24] [PASSED] drm_test_buddy_alloc_pathological
[01:26:24] [PASSED] drm_test_buddy_alloc_contiguous
[01:26:24] [PASSED] drm_test_buddy_alloc_clear
[01:26:24] [PASSED] drm_test_buddy_alloc_range_bias
[01:26:25] [PASSED] drm_test_buddy_fragmentation_performance
[01:26:25] ==================== [PASSED] drm_buddy ====================
[01:26:25] ============= drm_cmdline_parser (40 subtests) =============
[01:26:25] [PASSED] drm_test_cmdline_force_d_only
[01:26:25] [PASSED] drm_test_cmdline_force_D_only_dvi
[01:26:25] [PASSED] drm_test_cmdline_force_D_only_hdmi
[01:26:25] [PASSED] drm_test_cmdline_force_D_only_not_digital
[01:26:25] [PASSED] drm_test_cmdline_force_e_only
[01:26:25] [PASSED] drm_test_cmdline_res
[01:26:25] [PASSED] drm_test_cmdline_res_vesa
[01:26:25] [PASSED] drm_test_cmdline_res_vesa_rblank
[01:26:25] [PASSED] drm_test_cmdline_res_rblank
[01:26:25] [PASSED] drm_test_cmdline_res_bpp
[01:26:25] [PASSED] drm_test_cmdline_res_refresh
[01:26:25] [PASSED] drm_test_cmdline_res_bpp_refresh
[01:26:25] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[01:26:25] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[01:26:25] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[01:26:25] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[01:26:25] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[01:26:25] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[01:26:25] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[01:26:25] [PASSED] drm_test_cmdline_res_margins_force_on
[01:26:25] [PASSED] drm_test_cmdline_res_vesa_margins
[01:26:25] [PASSED] drm_test_cmdline_name
[01:26:25] [PASSED] drm_test_cmdline_name_bpp
[01:26:25] [PASSED] drm_test_cmdline_name_option
[01:26:25] [PASSED] drm_test_cmdline_name_bpp_option
[01:26:25] [PASSED] drm_test_cmdline_rotate_0
[01:26:25] [PASSED] drm_test_cmdline_rotate_90
[01:26:25] [PASSED] drm_test_cmdline_rotate_180
[01:26:25] [PASSED] drm_test_cmdline_rotate_270
[01:26:25] [PASSED] drm_test_cmdline_hmirror
[01:26:25] [PASSED] drm_test_cmdline_vmirror
[01:26:25] [PASSED] drm_test_cmdline_margin_options
[01:26:25] [PASSED] drm_test_cmdline_multiple_options
[01:26:25] [PASSED] drm_test_cmdline_bpp_extra_and_option
[01:26:25] [PASSED] drm_test_cmdline_extra_and_option
[01:26:25] [PASSED] drm_test_cmdline_freestanding_options
[01:26:25] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[01:26:25] [PASSED] drm_test_cmdline_panel_orientation
[01:26:25] ================ drm_test_cmdline_invalid =================
[01:26:25] [PASSED] margin_only
[01:26:25] [PASSED] interlace_only
[01:26:25] [PASSED] res_missing_x
[01:26:25] [PASSED] res_missing_y
[01:26:25] [PASSED] res_bad_y
[01:26:25] [PASSED] res_missing_y_bpp
[01:26:25] [PASSED] res_bad_bpp
[01:26:25] [PASSED] res_bad_refresh
[01:26:25] [PASSED] res_bpp_refresh_force_on_off
[01:26:25] [PASSED] res_invalid_mode
[01:26:25] [PASSED] res_bpp_wrong_place_mode
[01:26:25] [PASSED] name_bpp_refresh
[01:26:25] [PASSED] name_refresh
[01:26:25] [PASSED] name_refresh_wrong_mode
[01:26:25] [PASSED] name_refresh_invalid_mode
[01:26:25] [PASSED] rotate_multiple
[01:26:25] [PASSED] rotate_invalid_val
[01:26:25] [PASSED] rotate_truncated
[01:26:25] [PASSED] invalid_option
[01:26:25] [PASSED] invalid_tv_option
[01:26:25] [PASSED] truncated_tv_option
[01:26:25] ============ [PASSED] drm_test_cmdline_invalid =============
[01:26:25] =============== drm_test_cmdline_tv_options ===============
[01:26:25] [PASSED] NTSC
[01:26:25] [PASSED] NTSC_443
[01:26:25] [PASSED] NTSC_J
[01:26:25] [PASSED] PAL
[01:26:25] [PASSED] PAL_M
[01:26:25] [PASSED] PAL_N
[01:26:25] [PASSED] SECAM
[01:26:25] [PASSED] MONO_525
[01:26:25] [PASSED] MONO_625
[01:26:25] =========== [PASSED] drm_test_cmdline_tv_options ===========
[01:26:25] =============== [PASSED] drm_cmdline_parser ================
[01:26:25] ========== drmm_connector_hdmi_init (20 subtests) ==========
[01:26:25] [PASSED] drm_test_connector_hdmi_init_valid
[01:26:25] [PASSED] drm_test_connector_hdmi_init_bpc_8
[01:26:25] [PASSED] drm_test_connector_hdmi_init_bpc_10
[01:26:25] [PASSED] drm_test_connector_hdmi_init_bpc_12
[01:26:25] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[01:26:25] [PASSED] drm_test_connector_hdmi_init_bpc_null
[01:26:25] [PASSED] drm_test_connector_hdmi_init_formats_empty
[01:26:25] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[01:26:25] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[01:26:25] [PASSED] supported_formats=0x9 yuv420_allowed=1
[01:26:25] [PASSED] supported_formats=0x9 yuv420_allowed=0
[01:26:25] [PASSED] supported_formats=0x3 yuv420_allowed=1
[01:26:25] [PASSED] supported_formats=0x3 yuv420_allowed=0
[01:26:25] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[01:26:25] [PASSED] drm_test_connector_hdmi_init_null_ddc
[01:26:25] [PASSED] drm_test_connector_hdmi_init_null_product
[01:26:25] [PASSED] drm_test_connector_hdmi_init_null_vendor
[01:26:25] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[01:26:25] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[01:26:25] [PASSED] drm_test_connector_hdmi_init_product_valid
[01:26:25] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[01:26:25] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[01:26:25] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[01:26:25] ========= drm_test_connector_hdmi_init_type_valid =========
[01:26:25] [PASSED] HDMI-A
[01:26:25] [PASSED] HDMI-B
[01:26:25] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[01:26:25] ======== drm_test_connector_hdmi_init_type_invalid ========
[01:26:25] [PASSED] Unknown
[01:26:25] [PASSED] VGA
[01:26:25] [PASSED] DVI-I
[01:26:25] [PASSED] DVI-D
[01:26:25] [PASSED] DVI-A
[01:26:25] [PASSED] Composite
[01:26:25] [PASSED] SVIDEO
[01:26:25] [PASSED] LVDS
[01:26:25] [PASSED] Component
[01:26:25] [PASSED] DIN
[01:26:25] [PASSED] DP
[01:26:25] [PASSED] TV
[01:26:25] [PASSED] eDP
[01:26:25] [PASSED] Virtual
[01:26:25] [PASSED] DSI
[01:26:25] [PASSED] DPI
[01:26:25] [PASSED] Writeback
[01:26:25] [PASSED] SPI
[01:26:25] [PASSED] USB
[01:26:25] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[01:26:25] ============ [PASSED] drmm_connector_hdmi_init =============
[01:26:25] ============= drmm_connector_init (3 subtests) =============
[01:26:25] [PASSED] drm_test_drmm_connector_init
[01:26:25] [PASSED] drm_test_drmm_connector_init_null_ddc
[01:26:25] ========= drm_test_drmm_connector_init_type_valid =========
[01:26:25] [PASSED] Unknown
[01:26:25] [PASSED] VGA
[01:26:25] [PASSED] DVI-I
[01:26:25] [PASSED] DVI-D
[01:26:25] [PASSED] DVI-A
[01:26:25] [PASSED] Composite
[01:26:25] [PASSED] SVIDEO
[01:26:25] [PASSED] LVDS
[01:26:25] [PASSED] Component
[01:26:25] [PASSED] DIN
[01:26:25] [PASSED] DP
[01:26:25] [PASSED] HDMI-A
[01:26:25] [PASSED] HDMI-B
[01:26:25] [PASSED] TV
[01:26:25] [PASSED] eDP
[01:26:25] [PASSED] Virtual
[01:26:25] [PASSED] DSI
[01:26:25] [PASSED] DPI
[01:26:25] [PASSED] Writeback
[01:26:25] [PASSED] SPI
[01:26:25] [PASSED] USB
[01:26:25] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[01:26:25] =============== [PASSED] drmm_connector_init ===============
[01:26:25] ========= drm_connector_dynamic_init (6 subtests) ==========
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_init
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_init_properties
[01:26:25] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[01:26:25] [PASSED] Unknown
[01:26:25] [PASSED] VGA
[01:26:25] [PASSED] DVI-I
[01:26:25] [PASSED] DVI-D
[01:26:25] [PASSED] DVI-A
[01:26:25] [PASSED] Composite
[01:26:25] [PASSED] SVIDEO
[01:26:25] [PASSED] LVDS
[01:26:25] [PASSED] Component
[01:26:25] [PASSED] DIN
[01:26:25] [PASSED] DP
[01:26:25] [PASSED] HDMI-A
[01:26:25] [PASSED] HDMI-B
[01:26:25] [PASSED] TV
[01:26:25] [PASSED] eDP
[01:26:25] [PASSED] Virtual
[01:26:25] [PASSED] DSI
[01:26:25] [PASSED] DPI
[01:26:25] [PASSED] Writeback
[01:26:25] [PASSED] SPI
[01:26:25] [PASSED] USB
[01:26:25] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[01:26:25] ======== drm_test_drm_connector_dynamic_init_name =========
[01:26:25] [PASSED] Unknown
[01:26:25] [PASSED] VGA
[01:26:25] [PASSED] DVI-I
[01:26:25] [PASSED] DVI-D
[01:26:25] [PASSED] DVI-A
[01:26:25] [PASSED] Composite
[01:26:25] [PASSED] SVIDEO
[01:26:25] [PASSED] LVDS
[01:26:25] [PASSED] Component
[01:26:25] [PASSED] DIN
[01:26:25] [PASSED] DP
[01:26:25] [PASSED] HDMI-A
[01:26:25] [PASSED] HDMI-B
[01:26:25] [PASSED] TV
[01:26:25] [PASSED] eDP
[01:26:25] [PASSED] Virtual
[01:26:25] [PASSED] DSI
[01:26:25] [PASSED] DPI
[01:26:25] [PASSED] Writeback
[01:26:25] [PASSED] SPI
[01:26:25] [PASSED] USB
[01:26:25] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[01:26:25] =========== [PASSED] drm_connector_dynamic_init ============
[01:26:25] ==== drm_connector_dynamic_register_early (4 subtests) =====
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[01:26:25] ====== [PASSED] drm_connector_dynamic_register_early =======
[01:26:25] ======= drm_connector_dynamic_register (7 subtests) ========
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[01:26:25] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[01:26:25] ========= [PASSED] drm_connector_dynamic_register ==========
[01:26:25] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[01:26:25] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[01:26:25] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[01:26:25] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[01:26:25] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[01:26:25] ========== drm_test_get_tv_mode_from_name_valid ===========
[01:26:25] [PASSED] NTSC
[01:26:25] [PASSED] NTSC-443
[01:26:25] [PASSED] NTSC-J
[01:26:25] [PASSED] PAL
[01:26:25] [PASSED] PAL-M
[01:26:25] [PASSED] PAL-N
[01:26:25] [PASSED] SECAM
[01:26:25] [PASSED] Mono
[01:26:25] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[01:26:25] [PASSED] drm_test_get_tv_mode_from_name_truncated
[01:26:25] ============ [PASSED] drm_get_tv_mode_from_name ============
[01:26:25] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[01:26:25] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[01:26:25] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[01:26:25] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[01:26:25] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[01:26:25] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[01:26:25] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[01:26:25] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[01:26:25] [PASSED] VIC 96
[01:26:25] [PASSED] VIC 97
[01:26:25] [PASSED] VIC 101
[01:26:25] [PASSED] VIC 102
[01:26:25] [PASSED] VIC 106
[01:26:25] [PASSED] VIC 107
[01:26:25] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[01:26:25] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[01:26:25] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[01:26:25] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[01:26:25] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[01:26:25] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[01:26:25] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[01:26:25] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[01:26:25] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[01:26:25] [PASSED] Automatic
[01:26:25] [PASSED] Full
[01:26:25] [PASSED] Limited 16:235
[01:26:25] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[01:26:25] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[01:26:25] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[01:26:25] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[01:26:25] === drm_test_drm_hdmi_connector_get_output_format_name ====
[01:26:25] [PASSED] RGB
[01:26:25] [PASSED] YUV 4:2:0
[01:26:25] [PASSED] YUV 4:2:2
[01:26:25] [PASSED] YUV 4:4:4
[01:26:25] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[01:26:25] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[01:26:25] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[01:26:25] ============= drm_damage_helper (21 subtests) ==============
[01:26:25] [PASSED] drm_test_damage_iter_no_damage
[01:26:25] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[01:26:25] [PASSED] drm_test_damage_iter_no_damage_src_moved
[01:26:25] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[01:26:25] [PASSED] drm_test_damage_iter_no_damage_not_visible
[01:26:25] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[01:26:25] [PASSED] drm_test_damage_iter_no_damage_no_fb
[01:26:25] [PASSED] drm_test_damage_iter_simple_damage
[01:26:25] [PASSED] drm_test_damage_iter_single_damage
[01:26:25] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[01:26:25] [PASSED] drm_test_damage_iter_single_damage_outside_src
[01:26:25] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[01:26:25] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[01:26:25] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[01:26:25] [PASSED] drm_test_damage_iter_single_damage_src_moved
[01:26:25] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[01:26:25] [PASSED] drm_test_damage_iter_damage
[01:26:25] [PASSED] drm_test_damage_iter_damage_one_intersect
[01:26:25] [PASSED] drm_test_damage_iter_damage_one_outside
[01:26:25] [PASSED] drm_test_damage_iter_damage_src_moved
[01:26:25] [PASSED] drm_test_damage_iter_damage_not_visible
[01:26:25] ================ [PASSED] drm_damage_helper ================
[01:26:25] ============== drm_dp_mst_helper (3 subtests) ==============
[01:26:25] ============== drm_test_dp_mst_calc_pbn_mode ==============
[01:26:25] [PASSED] Clock 154000 BPP 30 DSC disabled
[01:26:25] [PASSED] Clock 234000 BPP 30 DSC disabled
[01:26:25] [PASSED] Clock 297000 BPP 24 DSC disabled
[01:26:25] [PASSED] Clock 332880 BPP 24 DSC enabled
[01:26:25] [PASSED] Clock 324540 BPP 24 DSC enabled
[01:26:25] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[01:26:25] ============== drm_test_dp_mst_calc_pbn_div ===============
[01:26:25] [PASSED] Link rate 2000000 lane count 4
[01:26:25] [PASSED] Link rate 2000000 lane count 2
[01:26:25] [PASSED] Link rate 2000000 lane count 1
[01:26:25] [PASSED] Link rate 1350000 lane count 4
[01:26:25] [PASSED] Link rate 1350000 lane count 2
[01:26:25] [PASSED] Link rate 1350000 lane count 1
[01:26:25] [PASSED] Link rate 1000000 lane count 4
[01:26:25] [PASSED] Link rate 1000000 lane count 2
[01:26:25] [PASSED] Link rate 1000000 lane count 1
[01:26:25] [PASSED] Link rate 810000 lane count 4
[01:26:25] [PASSED] Link rate 810000 lane count 2
[01:26:25] [PASSED] Link rate 810000 lane count 1
[01:26:25] [PASSED] Link rate 540000 lane count 4
[01:26:25] [PASSED] Link rate 540000 lane count 2
[01:26:25] [PASSED] Link rate 540000 lane count 1
[01:26:25] [PASSED] Link rate 270000 lane count 4
[01:26:25] [PASSED] Link rate 270000 lane count 2
[01:26:25] [PASSED] Link rate 270000 lane count 1
[01:26:25] [PASSED] Link rate 162000 lane count 4
[01:26:25] [PASSED] Link rate 162000 lane count 2
[01:26:25] [PASSED] Link rate 162000 lane count 1
[01:26:25] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[01:26:25] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[01:26:25] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[01:26:25] [PASSED] DP_POWER_UP_PHY with port number
[01:26:25] [PASSED] DP_POWER_DOWN_PHY with port number
[01:26:25] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[01:26:25] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[01:26:25] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[01:26:25] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[01:26:25] [PASSED] DP_QUERY_PAYLOAD with port number
[01:26:25] [PASSED] DP_QUERY_PAYLOAD with VCPI
[01:26:25] [PASSED] DP_REMOTE_DPCD_READ with port number
[01:26:25] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[01:26:25] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[01:26:25] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[01:26:25] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[01:26:25] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[01:26:25] [PASSED] DP_REMOTE_I2C_READ with port number
[01:26:25] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[01:26:25] [PASSED] DP_REMOTE_I2C_READ with transactions array
[01:26:25] [PASSED] DP_REMOTE_I2C_WRITE with port number
[01:26:25] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[01:26:25] [PASSED] DP_REMOTE_I2C_WRITE with data array
[01:26:25] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[01:26:25] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[01:26:25] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[01:26:25] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[01:26:25] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[01:26:25] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[01:26:25] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[01:26:25] ================ [PASSED] drm_dp_mst_helper ================
[01:26:25] ================== drm_exec (7 subtests) ===================
[01:26:25] [PASSED] sanitycheck
[01:26:25] [PASSED] test_lock
[01:26:25] [PASSED] test_lock_unlock
[01:26:25] [PASSED] test_duplicates
[01:26:25] [PASSED] test_prepare
[01:26:25] [PASSED] test_prepare_array
[01:26:25] [PASSED] test_multiple_loops
[01:26:25] ==================== [PASSED] drm_exec =====================
[01:26:25] =========== drm_format_helper_test (17 subtests) ===========
[01:26:25] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[01:26:25] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[01:26:25] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[01:26:25] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[01:26:25] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[01:26:25] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[01:26:25] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[01:26:25] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[01:26:25] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[01:26:25] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[01:26:25] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[01:26:25] ============== drm_test_fb_xrgb8888_to_mono ===============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[01:26:25] ==================== drm_test_fb_swab =====================
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ================ [PASSED] drm_test_fb_swab =================
[01:26:25] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[01:26:25] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[01:26:25] [PASSED] single_pixel_source_buffer
[01:26:25] [PASSED] single_pixel_clip_rectangle
[01:26:25] [PASSED] well_known_colors
[01:26:25] [PASSED] destination_pitch
[01:26:25] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[01:26:25] ================= drm_test_fb_clip_offset =================
[01:26:25] [PASSED] pass through
[01:26:25] [PASSED] horizontal offset
[01:26:25] [PASSED] vertical offset
[01:26:25] [PASSED] horizontal and vertical offset
[01:26:25] [PASSED] horizontal offset (custom pitch)
[01:26:25] [PASSED] vertical offset (custom pitch)
[01:26:25] [PASSED] horizontal and vertical offset (custom pitch)
[01:26:25] ============= [PASSED] drm_test_fb_clip_offset =============
[01:26:25] =================== drm_test_fb_memcpy ====================
[01:26:25] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[01:26:25] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[01:26:25] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[01:26:25] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[01:26:25] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[01:26:25] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[01:26:25] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[01:26:25] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[01:26:25] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[01:26:25] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[01:26:25] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[01:26:25] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[01:26:25] =============== [PASSED] drm_test_fb_memcpy ================
[01:26:25] ============= [PASSED] drm_format_helper_test ==============
[01:26:25] ================= drm_format (18 subtests) =================
[01:26:25] [PASSED] drm_test_format_block_width_invalid
[01:26:25] [PASSED] drm_test_format_block_width_one_plane
[01:26:25] [PASSED] drm_test_format_block_width_two_plane
[01:26:25] [PASSED] drm_test_format_block_width_three_plane
[01:26:25] [PASSED] drm_test_format_block_width_tiled
[01:26:25] [PASSED] drm_test_format_block_height_invalid
[01:26:25] [PASSED] drm_test_format_block_height_one_plane
[01:26:25] [PASSED] drm_test_format_block_height_two_plane
[01:26:25] [PASSED] drm_test_format_block_height_three_plane
[01:26:25] [PASSED] drm_test_format_block_height_tiled
[01:26:25] [PASSED] drm_test_format_min_pitch_invalid
[01:26:25] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[01:26:25] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[01:26:25] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[01:26:25] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[01:26:25] [PASSED] drm_test_format_min_pitch_two_plane
[01:26:25] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[01:26:25] [PASSED] drm_test_format_min_pitch_tiled
[01:26:25] =================== [PASSED] drm_format ====================
[01:26:25] ============== drm_framebuffer (10 subtests) ===============
[01:26:25] ========== drm_test_framebuffer_check_src_coords ==========
[01:26:25] [PASSED] Success: source fits into fb
[01:26:25] [PASSED] Fail: overflowing fb with x-axis coordinate
[01:26:25] [PASSED] Fail: overflowing fb with y-axis coordinate
[01:26:25] [PASSED] Fail: overflowing fb with source width
[01:26:25] [PASSED] Fail: overflowing fb with source height
[01:26:25] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[01:26:25] [PASSED] drm_test_framebuffer_cleanup
[01:26:25] =============== drm_test_framebuffer_create ===============
[01:26:25] [PASSED] ABGR8888 normal sizes
[01:26:25] [PASSED] ABGR8888 max sizes
[01:26:25] [PASSED] ABGR8888 pitch greater than min required
[01:26:25] [PASSED] ABGR8888 pitch less than min required
[01:26:25] [PASSED] ABGR8888 Invalid width
[01:26:25] [PASSED] ABGR8888 Invalid buffer handle
[01:26:25] [PASSED] No pixel format
[01:26:25] [PASSED] ABGR8888 Width 0
[01:26:25] [PASSED] ABGR8888 Height 0
[01:26:25] [PASSED] ABGR8888 Out of bound height * pitch combination
[01:26:25] [PASSED] ABGR8888 Large buffer offset
[01:26:25] [PASSED] ABGR8888 Buffer offset for inexistent plane
[01:26:25] [PASSED] ABGR8888 Invalid flag
[01:26:25] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[01:26:25] [PASSED] ABGR8888 Valid buffer modifier
[01:26:25] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[01:26:25] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[01:26:25] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[01:26:25] [PASSED] NV12 Normal sizes
[01:26:25] [PASSED] NV12 Max sizes
[01:26:25] [PASSED] NV12 Invalid pitch
[01:26:25] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[01:26:25] [PASSED] NV12 different modifier per-plane
[01:26:25] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[01:26:25] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[01:26:25] [PASSED] NV12 Modifier for inexistent plane
[01:26:25] [PASSED] NV12 Handle for inexistent plane
[01:26:25] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[01:26:25] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[01:26:25] [PASSED] YVU420 Normal sizes
[01:26:25] [PASSED] YVU420 Max sizes
[01:26:25] [PASSED] YVU420 Invalid pitch
[01:26:25] [PASSED] YVU420 Different pitches
[01:26:25] [PASSED] YVU420 Different buffer offsets/pitches
[01:26:25] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[01:26:25] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[01:26:25] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[01:26:25] [PASSED] YVU420 Valid modifier
[01:26:25] [PASSED] YVU420 Different modifiers per plane
[01:26:25] [PASSED] YVU420 Modifier for inexistent plane
[01:26:25] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[01:26:25] [PASSED] X0L2 Normal sizes
[01:26:25] [PASSED] X0L2 Max sizes
[01:26:25] [PASSED] X0L2 Invalid pitch
[01:26:25] [PASSED] X0L2 Pitch greater than minimum required
[01:26:25] [PASSED] X0L2 Handle for inexistent plane
[01:26:25] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[01:26:25] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[01:26:25] [PASSED] X0L2 Valid modifier
[01:26:25] [PASSED] X0L2 Modifier for inexistent plane
[01:26:25] =========== [PASSED] drm_test_framebuffer_create ===========
[01:26:25] [PASSED] drm_test_framebuffer_free
[01:26:25] [PASSED] drm_test_framebuffer_init
[01:26:25] [PASSED] drm_test_framebuffer_init_bad_format
[01:26:25] [PASSED] drm_test_framebuffer_init_dev_mismatch
[01:26:25] [PASSED] drm_test_framebuffer_lookup
[01:26:25] [PASSED] drm_test_framebuffer_lookup_inexistent
[01:26:25] [PASSED] drm_test_framebuffer_modifiers_not_supported
[01:26:25] ================= [PASSED] drm_framebuffer =================
[01:26:25] ================ drm_gem_shmem (8 subtests) ================
[01:26:25] [PASSED] drm_gem_shmem_test_obj_create
[01:26:25] [PASSED] drm_gem_shmem_test_obj_create_private
[01:26:25] [PASSED] drm_gem_shmem_test_pin_pages
[01:26:25] [PASSED] drm_gem_shmem_test_vmap
[01:26:25] [PASSED] drm_gem_shmem_test_get_sg_table
[01:26:25] [PASSED] drm_gem_shmem_test_get_pages_sgt
[01:26:25] [PASSED] drm_gem_shmem_test_madvise
[01:26:25] [PASSED] drm_gem_shmem_test_purge
[01:26:25] ================== [PASSED] drm_gem_shmem ==================
[01:26:25] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[01:26:25] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[01:26:25] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[01:26:25] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[01:26:25] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[01:26:25] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[01:26:25] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[01:26:25] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[01:26:25] [PASSED] Automatic
[01:26:25] [PASSED] Full
[01:26:25] [PASSED] Limited 16:235
[01:26:25] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[01:26:25] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[01:26:25] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[01:26:25] [PASSED] drm_test_check_disable_connector
[01:26:25] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[01:26:25] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[01:26:25] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[01:26:25] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[01:26:25] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[01:26:25] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[01:26:25] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[01:26:25] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[01:26:25] [PASSED] drm_test_check_output_bpc_dvi
[01:26:25] [PASSED] drm_test_check_output_bpc_format_vic_1
[01:26:25] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[01:26:25] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[01:26:25] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[01:26:25] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[01:26:25] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[01:26:25] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[01:26:25] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[01:26:25] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[01:26:25] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[01:26:25] [PASSED] drm_test_check_broadcast_rgb_value
[01:26:25] [PASSED] drm_test_check_bpc_8_value
[01:26:25] [PASSED] drm_test_check_bpc_10_value
[01:26:25] [PASSED] drm_test_check_bpc_12_value
[01:26:25] [PASSED] drm_test_check_format_value
[01:26:25] [PASSED] drm_test_check_tmds_char_value
[01:26:25] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[01:26:25] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[01:26:25] [PASSED] drm_test_check_mode_valid
[01:26:25] [PASSED] drm_test_check_mode_valid_reject
[01:26:25] [PASSED] drm_test_check_mode_valid_reject_rate
[01:26:25] [PASSED] drm_test_check_mode_valid_reject_max_clock
[01:26:25] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[01:26:25] ================= drm_managed (2 subtests) =================
[01:26:25] [PASSED] drm_test_managed_release_action
[01:26:25] [PASSED] drm_test_managed_run_action
[01:26:25] =================== [PASSED] drm_managed ===================
[01:26:25] =================== drm_mm (6 subtests) ====================
[01:26:25] [PASSED] drm_test_mm_init
[01:26:25] [PASSED] drm_test_mm_debug
[01:26:25] [PASSED] drm_test_mm_align32
[01:26:25] [PASSED] drm_test_mm_align64
[01:26:25] [PASSED] drm_test_mm_lowest
[01:26:25] [PASSED] drm_test_mm_highest
[01:26:25] ===================== [PASSED] drm_mm ======================
[01:26:25] ============= drm_modes_analog_tv (5 subtests) =============
[01:26:25] [PASSED] drm_test_modes_analog_tv_mono_576i
[01:26:25] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[01:26:25] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[01:26:25] [PASSED] drm_test_modes_analog_tv_pal_576i
[01:26:25] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[01:26:25] =============== [PASSED] drm_modes_analog_tv ===============
[01:26:25] ============== drm_plane_helper (2 subtests) ===============
[01:26:25] =============== drm_test_check_plane_state ================
[01:26:25] [PASSED] clipping_simple
[01:26:25] [PASSED] clipping_rotate_reflect
[01:26:25] [PASSED] positioning_simple
[01:26:25] [PASSED] upscaling
[01:26:25] [PASSED] downscaling
[01:26:25] [PASSED] rounding1
[01:26:25] [PASSED] rounding2
[01:26:25] [PASSED] rounding3
[01:26:25] [PASSED] rounding4
[01:26:25] =========== [PASSED] drm_test_check_plane_state ============
[01:26:25] =========== drm_test_check_invalid_plane_state ============
[01:26:25] [PASSED] positioning_invalid
[01:26:25] [PASSED] upscaling_invalid
[01:26:25] [PASSED] downscaling_invalid
[01:26:25] ======= [PASSED] drm_test_check_invalid_plane_state ========
[01:26:25] ================ [PASSED] drm_plane_helper =================
[01:26:25] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[01:26:25] ====== drm_test_connector_helper_tv_get_modes_check =======
[01:26:25] [PASSED] None
[01:26:25] [PASSED] PAL
[01:26:25] [PASSED] NTSC
[01:26:25] [PASSED] Both, NTSC Default
[01:26:25] [PASSED] Both, PAL Default
[01:26:25] [PASSED] Both, NTSC Default, with PAL on command-line
[01:26:25] [PASSED] Both, PAL Default, with NTSC on command-line
[01:26:25] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[01:26:25] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[01:26:25] ================== drm_rect (9 subtests) ===================
[01:26:25] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[01:26:25] [PASSED] drm_test_rect_clip_scaled_not_clipped
[01:26:25] [PASSED] drm_test_rect_clip_scaled_clipped
[01:26:25] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[01:26:25] ================= drm_test_rect_intersect =================
[01:26:25] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[01:26:25] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[01:26:25] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[01:26:25] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[01:26:25] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[01:26:25] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[01:26:25] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[01:26:25] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[01:26:25] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[01:26:25] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[01:26:25] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[01:26:25] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[01:26:25] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[01:26:25] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[01:26:25] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[01:26:25] ============= [PASSED] drm_test_rect_intersect =============
[01:26:25] ================ drm_test_rect_calc_hscale ================
[01:26:25] [PASSED] normal use
[01:26:25] [PASSED] out of max range
[01:26:25] [PASSED] out of min range
[01:26:25] [PASSED] zero dst
[01:26:25] [PASSED] negative src
[01:26:25] [PASSED] negative dst
[01:26:25] ============ [PASSED] drm_test_rect_calc_hscale ============
[01:26:25] ================ drm_test_rect_calc_vscale ================
[01:26:25] [PASSED] normal use
stty: 'standard input': Inappropriate ioctl for device
[01:26:25] [PASSED] out of max range
[01:26:25] [PASSED] out of min range
[01:26:25] [PASSED] zero dst
[01:26:25] [PASSED] negative src
[01:26:25] [PASSED] negative dst
[01:26:25] ============ [PASSED] drm_test_rect_calc_vscale ============
[01:26:25] ================== drm_test_rect_rotate ===================
[01:26:25] [PASSED] reflect-x
[01:26:25] [PASSED] reflect-y
[01:26:25] [PASSED] rotate-0
[01:26:25] [PASSED] rotate-90
[01:26:25] [PASSED] rotate-180
[01:26:25] [PASSED] rotate-270
[01:26:25] ============== [PASSED] drm_test_rect_rotate ===============
[01:26:25] ================ drm_test_rect_rotate_inv =================
[01:26:25] [PASSED] reflect-x
[01:26:25] [PASSED] reflect-y
[01:26:25] [PASSED] rotate-0
[01:26:25] [PASSED] rotate-90
[01:26:25] [PASSED] rotate-180
[01:26:25] [PASSED] rotate-270
[01:26:25] ============ [PASSED] drm_test_rect_rotate_inv =============
[01:26:25] ==================== [PASSED] drm_rect =====================
[01:26:25] ============ drm_sysfb_modeset_test (1 subtest) ============
[01:26:25] ============ drm_test_sysfb_build_fourcc_list =============
[01:26:25] [PASSED] no native formats
[01:26:25] [PASSED] XRGB8888 as native format
[01:26:25] [PASSED] remove duplicates
[01:26:25] [PASSED] convert alpha formats
[01:26:25] [PASSED] random formats
[01:26:25] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[01:26:25] ============= [PASSED] drm_sysfb_modeset_test ==============
[01:26:25] ================== drm_fixp (2 subtests) ===================
[01:26:25] [PASSED] drm_test_int2fixp
[01:26:25] [PASSED] drm_test_sm2fixp
[01:26:25] ==================== [PASSED] drm_fixp =====================
[01:26:25] ============================================================
[01:26:25] Testing complete. Ran 624 tests: passed: 624
[01:26:25] Elapsed time: 27.446s total, 1.669s configuring, 25.359s building, 0.379s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[01:26:25] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[01:26:26] 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
[01:26:36] Starting KUnit Kernel (1/1)...
[01:26:36] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[01:26:36] ================= ttm_device (5 subtests) ==================
[01:26:36] [PASSED] ttm_device_init_basic
[01:26:36] [PASSED] ttm_device_init_multiple
[01:26:36] [PASSED] ttm_device_fini_basic
[01:26:36] [PASSED] ttm_device_init_no_vma_man
[01:26:36] ================== ttm_device_init_pools ==================
[01:26:36] [PASSED] No DMA allocations, no DMA32 required
[01:26:36] [PASSED] DMA allocations, DMA32 required
[01:26:36] [PASSED] No DMA allocations, DMA32 required
[01:26:36] [PASSED] DMA allocations, no DMA32 required
[01:26:36] ============== [PASSED] ttm_device_init_pools ==============
[01:26:36] =================== [PASSED] ttm_device ====================
[01:26:36] ================== ttm_pool (8 subtests) ===================
[01:26:36] ================== ttm_pool_alloc_basic ===================
[01:26:36] [PASSED] One page
[01:26:36] [PASSED] More than one page
[01:26:36] [PASSED] Above the allocation limit
[01:26:36] [PASSED] One page, with coherent DMA mappings enabled
[01:26:36] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[01:26:36] ============== [PASSED] ttm_pool_alloc_basic ===============
[01:26:36] ============== ttm_pool_alloc_basic_dma_addr ==============
[01:26:36] [PASSED] One page
[01:26:36] [PASSED] More than one page
[01:26:36] [PASSED] Above the allocation limit
[01:26:36] [PASSED] One page, with coherent DMA mappings enabled
[01:26:36] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[01:26:36] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[01:26:36] [PASSED] ttm_pool_alloc_order_caching_match
[01:26:36] [PASSED] ttm_pool_alloc_caching_mismatch
[01:26:36] [PASSED] ttm_pool_alloc_order_mismatch
[01:26:36] [PASSED] ttm_pool_free_dma_alloc
[01:26:36] [PASSED] ttm_pool_free_no_dma_alloc
[01:26:36] [PASSED] ttm_pool_fini_basic
[01:26:36] ==================== [PASSED] ttm_pool =====================
[01:26:36] ================ ttm_resource (8 subtests) =================
[01:26:36] ================= ttm_resource_init_basic =================
[01:26:36] [PASSED] Init resource in TTM_PL_SYSTEM
[01:26:36] [PASSED] Init resource in TTM_PL_VRAM
[01:26:36] [PASSED] Init resource in a private placement
[01:26:36] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[01:26:36] ============= [PASSED] ttm_resource_init_basic =============
[01:26:36] [PASSED] ttm_resource_init_pinned
[01:26:36] [PASSED] ttm_resource_fini_basic
[01:26:36] [PASSED] ttm_resource_manager_init_basic
[01:26:36] [PASSED] ttm_resource_manager_usage_basic
[01:26:36] [PASSED] ttm_resource_manager_set_used_basic
[01:26:36] [PASSED] ttm_sys_man_alloc_basic
[01:26:36] [PASSED] ttm_sys_man_free_basic
[01:26:36] ================== [PASSED] ttm_resource ===================
[01:26:36] =================== ttm_tt (15 subtests) ===================
[01:26:36] ==================== ttm_tt_init_basic ====================
[01:26:36] [PASSED] Page-aligned size
[01:26:36] [PASSED] Extra pages requested
[01:26:36] ================ [PASSED] ttm_tt_init_basic ================
[01:26:36] [PASSED] ttm_tt_init_misaligned
[01:26:36] [PASSED] ttm_tt_fini_basic
[01:26:36] [PASSED] ttm_tt_fini_sg
[01:26:36] [PASSED] ttm_tt_fini_shmem
[01:26:36] [PASSED] ttm_tt_create_basic
[01:26:36] [PASSED] ttm_tt_create_invalid_bo_type
[01:26:36] [PASSED] ttm_tt_create_ttm_exists
[01:26:36] [PASSED] ttm_tt_create_failed
[01:26:36] [PASSED] ttm_tt_destroy_basic
[01:26:36] [PASSED] ttm_tt_populate_null_ttm
[01:26:36] [PASSED] ttm_tt_populate_populated_ttm
[01:26:36] [PASSED] ttm_tt_unpopulate_basic
[01:26:36] [PASSED] ttm_tt_unpopulate_empty_ttm
[01:26:36] [PASSED] ttm_tt_swapin_basic
[01:26:36] ===================== [PASSED] ttm_tt ======================
[01:26:36] =================== ttm_bo (14 subtests) ===================
[01:26:36] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[01:26:36] [PASSED] Cannot be interrupted and sleeps
[01:26:36] [PASSED] Cannot be interrupted, locks straight away
[01:26:36] [PASSED] Can be interrupted, sleeps
[01:26:36] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[01:26:36] [PASSED] ttm_bo_reserve_locked_no_sleep
[01:26:36] [PASSED] ttm_bo_reserve_no_wait_ticket
[01:26:36] [PASSED] ttm_bo_reserve_double_resv
[01:26:36] [PASSED] ttm_bo_reserve_interrupted
[01:26:36] [PASSED] ttm_bo_reserve_deadlock
[01:26:36] [PASSED] ttm_bo_unreserve_basic
[01:26:36] [PASSED] ttm_bo_unreserve_pinned
[01:26:36] [PASSED] ttm_bo_unreserve_bulk
[01:26:36] [PASSED] ttm_bo_fini_basic
[01:26:36] [PASSED] ttm_bo_fini_shared_resv
[01:26:36] [PASSED] ttm_bo_pin_basic
[01:26:36] [PASSED] ttm_bo_pin_unpin_resource
[01:26:36] [PASSED] ttm_bo_multiple_pin_one_unpin
[01:26:36] ===================== [PASSED] ttm_bo ======================
[01:26:36] ============== ttm_bo_validate (21 subtests) ===============
[01:26:36] ============== ttm_bo_init_reserved_sys_man ===============
[01:26:36] [PASSED] Buffer object for userspace
[01:26:36] [PASSED] Kernel buffer object
[01:26:36] [PASSED] Shared buffer object
[01:26:36] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[01:26:36] ============== ttm_bo_init_reserved_mock_man ==============
[01:26:36] [PASSED] Buffer object for userspace
[01:26:36] [PASSED] Kernel buffer object
[01:26:36] [PASSED] Shared buffer object
[01:26:36] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[01:26:36] [PASSED] ttm_bo_init_reserved_resv
[01:26:36] ================== ttm_bo_validate_basic ==================
[01:26:36] [PASSED] Buffer object for userspace
[01:26:36] [PASSED] Kernel buffer object
[01:26:36] [PASSED] Shared buffer object
[01:26:36] ============== [PASSED] ttm_bo_validate_basic ==============
[01:26:36] [PASSED] ttm_bo_validate_invalid_placement
[01:26:36] ============= ttm_bo_validate_same_placement ==============
[01:26:36] [PASSED] System manager
[01:26:36] [PASSED] VRAM manager
[01:26:36] ========= [PASSED] ttm_bo_validate_same_placement ==========
[01:26:36] [PASSED] ttm_bo_validate_failed_alloc
[01:26:36] [PASSED] ttm_bo_validate_pinned
[01:26:36] [PASSED] ttm_bo_validate_busy_placement
[01:26:36] ================ ttm_bo_validate_multihop =================
[01:26:36] [PASSED] Buffer object for userspace
[01:26:36] [PASSED] Kernel buffer object
[01:26:36] [PASSED] Shared buffer object
[01:26:36] ============ [PASSED] ttm_bo_validate_multihop =============
[01:26:36] ========== ttm_bo_validate_no_placement_signaled ==========
[01:26:36] [PASSED] Buffer object in system domain, no page vector
[01:26:36] [PASSED] Buffer object in system domain with an existing page vector
[01:26:36] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[01:26:36] ======== ttm_bo_validate_no_placement_not_signaled ========
[01:26:36] [PASSED] Buffer object for userspace
[01:26:36] [PASSED] Kernel buffer object
[01:26:36] [PASSED] Shared buffer object
[01:26:36] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[01:26:36] [PASSED] ttm_bo_validate_move_fence_signaled
[01:26:36] ========= ttm_bo_validate_move_fence_not_signaled =========
[01:26:36] [PASSED] Waits for GPU
[01:26:36] [PASSED] Tries to lock straight away
[01:26:36] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[01:26:36] [PASSED] ttm_bo_validate_happy_evict
[01:26:36] [PASSED] ttm_bo_validate_all_pinned_evict
[01:26:36] [PASSED] ttm_bo_validate_allowed_only_evict
[01:26:36] [PASSED] ttm_bo_validate_deleted_evict
[01:26:36] [PASSED] ttm_bo_validate_busy_domain_evict
[01:26:36] [PASSED] ttm_bo_validate_evict_gutting
[01:26:36] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[01:26:36] ================= [PASSED] ttm_bo_validate =================
[01:26:36] ============================================================
[01:26:36] Testing complete. Ran 101 tests: passed: 101
[01:26:36] Elapsed time: 11.392s total, 1.731s configuring, 9.394s building, 0.225s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 18+ messages in thread
* ✗ Xe.CI.BAT: failure for Fence deadlines in Xe
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (14 preceding siblings ...)
2025-12-25 1:26 ` ✓ CI.KUnit: success " Patchwork
@ 2025-12-25 2:01 ` Patchwork
2025-12-25 3:02 ` ✓ Xe.CI.Full: success " Patchwork
16 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2025-12-25 2:01 UTC (permalink / raw)
To: Matthew Brost; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 2305 bytes --]
== Series Details ==
Series: Fence deadlines in Xe
URL : https://patchwork.freedesktop.org/series/159479/
State : failure
== Summary ==
CI Bug Log - changes from xe-4302-5c680ac45628b1951d20a444f400c82242029031_BAT -> xe-pw-159479v1_BAT
====================================================
Summary
-------
**WARNING**
Minor unknown changes coming with xe-pw-159479v1_BAT need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-159479v1_BAT, 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 (12 -> 12)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-159479v1_BAT:
### IGT changes ###
#### Warnings ####
* igt@xe_module_load@load:
- bat-bmg-1: [ABORT][1] ([Intel XE#6922]) -> [ABORT][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/bat-bmg-1/igt@xe_module_load@load.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/bat-bmg-1/igt@xe_module_load@load.html
Known issues
------------
Here are the changes found in xe-pw-159479v1_BAT that come from known issues:
### IGT changes ###
#### Possible fixes ####
* igt@xe_waitfence@engine:
- bat-dg2-oem2: [FAIL][3] ([Intel XE#6519]) -> [PASS][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/bat-dg2-oem2/igt@xe_waitfence@engine.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/bat-dg2-oem2/igt@xe_waitfence@engine.html
[Intel XE#6519]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6519
[Intel XE#6922]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6922
Build changes
-------------
* Linux: xe-4302-5c680ac45628b1951d20a444f400c82242029031 -> xe-pw-159479v1
IGT_8677: 8677
xe-4302-5c680ac45628b1951d20a444f400c82242029031: 5c680ac45628b1951d20a444f400c82242029031
xe-pw-159479v1: 159479v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/index.html
[-- Attachment #2: Type: text/html, Size: 2904 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* ✓ Xe.CI.Full: success for Fence deadlines in Xe
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
` (15 preceding siblings ...)
2025-12-25 2:01 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2025-12-25 3:02 ` Patchwork
16 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2025-12-25 3:02 UTC (permalink / raw)
To: Matthew Brost; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 11610 bytes --]
== Series Details ==
Series: Fence deadlines in Xe
URL : https://patchwork.freedesktop.org/series/159479/
State : success
== Summary ==
CI Bug Log - changes from xe-4302-5c680ac45628b1951d20a444f400c82242029031_FULL -> xe-pw-159479v1_FULL
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-159479v1_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][1] ([Intel XE#2887])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-9/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs.html
* igt@kms_cdclk@plane-scaling:
- shard-bmg: NOTRUN -> [SKIP][2] ([Intel XE#2724])
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-9/igt@kms_cdclk@plane-scaling.html
* igt@kms_chamelium_color@ctm-negative:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#2325])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-9/igt@kms_chamelium_color@ctm-negative.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [PASS][4] -> [FAIL][5] ([Intel XE#4633])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-bmg-3/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-1/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-bmg: [PASS][6] -> [FAIL][7] ([Intel XE#5299])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-bmg-4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-10/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#2311]) +1 other test skip
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-9/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2313]) +1 other test skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-9/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_hdr@bpc-switch@pipe-a-dp-2:
- shard-bmg: [PASS][10] -> [ABORT][11] ([Intel XE#6740]) +1 other test abort
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-bmg-10/igt@kms_hdr@bpc-switch@pipe-a-dp-2.html
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-8/igt@kms_hdr@bpc-switch@pipe-a-dp-2.html
* igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#1406] / [Intel XE#1489])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-9/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area.html
* igt@xe_eudebug_online@interrupt-all:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#4837] / [Intel XE#6665])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-9/igt@xe_eudebug_online@interrupt-all.html
* igt@xe_evict@evict-beng-mixed-many-threads-small:
- shard-bmg: [PASS][14] -> [INCOMPLETE][15] ([Intel XE#6321])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-bmg-8/igt@xe_evict@evict-beng-mixed-many-threads-small.html
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-7/igt@xe_evict@evict-beng-mixed-many-threads-small.html
* igt@xe_exec_multi_queue@few-execs-preempt-mode-close-fd:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#6874])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-2/igt@xe_exec_multi_queue@few-execs-preempt-mode-close-fd.html
* igt@xe_exec_system_allocator@twice-mmap-free-huge-nomemset:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#4943]) +3 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-9/igt@xe_exec_system_allocator@twice-mmap-free-huge-nomemset.html
* igt@xe_pmu@engine-activity-accuracy-50:
- shard-lnl: [PASS][18] -> [FAIL][19] ([Intel XE#6251]) +4 other tests fail
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-lnl-4/igt@xe_pmu@engine-activity-accuracy-50.html
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-lnl-3/igt@xe_pmu@engine-activity-accuracy-50.html
* igt@xe_sriov_flr@flr-each-isolation:
- shard-bmg: NOTRUN -> [FAIL][20] ([Intel XE#6569])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-9/igt@xe_sriov_flr@flr-each-isolation.html
#### Possible fixes ####
* igt@kms_async_flips@async-flip-with-page-flip-events-linear:
- shard-lnl: [FAIL][21] ([Intel XE#5993]) -> [PASS][22] +3 other tests pass
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-lnl-5/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-lnl-7/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-toggle:
- shard-bmg: [SKIP][23] ([Intel XE#2291]) -> [PASS][24]
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-bmg-4/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-8/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html
* igt@kms_flip@2x-flip-vs-expired-vblank:
- shard-bmg: [SKIP][25] ([Intel XE#2316]) -> [PASS][26]
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-bmg-4/igt@kms_flip@2x-flip-vs-expired-vblank.html
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-8/igt@kms_flip@2x-flip-vs-expired-vblank.html
* igt@kms_vrr@flipline:
- shard-lnl: [FAIL][27] ([Intel XE#4227]) -> [PASS][28] +1 other test pass
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-lnl-4/igt@kms_vrr@flipline.html
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-lnl-3/igt@kms_vrr@flipline.html
* igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma:
- shard-lnl: [FAIL][29] ([Intel XE#5625]) -> [PASS][30]
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-lnl-3/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-lnl-5/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html
* igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_decode0:
- shard-lnl: [FAIL][31] ([Intel XE#6251]) -> [PASS][32] +1 other test pass
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-lnl-3/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_decode0.html
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-lnl-5/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_decode0.html
#### Warnings ####
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][33] ([Intel XE#2312]) -> [SKIP][34] ([Intel XE#4141])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render:
- shard-bmg: [SKIP][35] ([Intel XE#2312]) -> [SKIP][36] ([Intel XE#2313])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [ABORT][37] ([Intel XE#6740]) -> [SKIP][38] ([Intel XE#1503])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4302-5c680ac45628b1951d20a444f400c82242029031/shard-bmg-7/igt@kms_hdr@invalid-hdr.html
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/shard-bmg-9/igt@kms_hdr@invalid-hdr.html
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
[Intel XE#4633]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4633
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5299]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5299
[Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
[Intel XE#5993]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5993
[Intel XE#6251]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6251
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
[Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665
[Intel XE#6740]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6740
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
Build changes
-------------
* Linux: xe-4302-5c680ac45628b1951d20a444f400c82242029031 -> xe-pw-159479v1
IGT_8677: 8677
xe-4302-5c680ac45628b1951d20a444f400c82242029031: 5c680ac45628b1951d20a444f400c82242029031
xe-pw-159479v1: 159479v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159479v1/index.html
[-- Attachment #2: Type: text/html, Size: 12972 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2025-12-25 3:02 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-25 1:17 [RFC PATCH 00/13] Fence deadlines in Xe Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 01/13] drm/xe: Add dedicated message lock Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 02/13] drm/xe: Add EXEC_QUEUE_FLAG_CAP_SYS_NICE Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 03/13] drm/xe: Store exec queue in hardware fence Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 04/13] drm/xe: Add deadline exec queue vfuncs Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 05/13] drm/xe: Export to_xe_hw_fence Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 06/13] drm/xe: Add deadline manager Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 07/13] drm/xe: Add deadline manager to user exec queues Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 08/13] drm/xe: Stub out execlists deadline vfuncs as NOPs Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 09/13] drm/xe: Make scheduler message lock IRQ-safe Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 10/13] drm/xe: Implement GuC submission backend ops for deadlines Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 11/13] drm/xe: Enable deadlines on hardware fences Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 12/13] drm/xe: Add CONFIG_DRM_XE_DEADLINE_WINDOW Matthew Brost
2025-12-25 1:17 ` [RFC PATCH 13/13] drm/xe: Add exec queue deadline trace points Matthew Brost
2025-12-25 1:25 ` ✗ CI.checkpatch: warning for Fence deadlines in Xe Patchwork
2025-12-25 1:26 ` ✓ CI.KUnit: success " Patchwork
2025-12-25 2:01 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-12-25 3:02 ` ✓ Xe.CI.Full: success " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox