* [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe.
@ 2026-03-10 11:56 Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 01/26] drm/vblank_work: Add methods to schedule vblank_work in 2 stages Maarten Lankhorst
` (32 more replies)
0 siblings, 33 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
New version with patch from Sebastian to fix starvation of irq_work.
Still need feedback on the vblank approach, and check to see if there are some bugs left.
Hoping this passes BAT on i915, and still mostly the full run on xe.
Maarten Lankhorst (20):
drm/vblank_work: Add methods to schedule vblank_work in 2 stages
drm/vblank: Add a 2-stage version of drm_crtc_arm_vblank_event
drm/intel/display: Make intel_crtc_arm_vblank_event static
drm/intel/display: Convert vblank event handling to 2-stage arming
drm/i915/display: Move vblank put until after critical section
drm/i915/display: Remove locking from intel_vblank_evade critical
section
drm/i915/display: Handle vlv dsi workaround in scanline_in_safe_range
too
drm/i915/display: Make get_vblank_counter use intel_de_read_fw()
drm/i915/display: Do not take uncore lock in i915_get_vblank_counter
drm/i915/display: Make icl_dsi_frame_update use _fw too
drm/i915/display: Use intel_de_read/write_fw in colorops
drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset
drm/i915/display: Make set_pipeconf use the fw variants
drm/i915/display: Fix intel_lpe_audio_irq_handler for PREEMPT-RT
drm/i915/gt: Fix selftests on PREEMPT_RT
drm/i915/gt: Set stop_timeout() correctly on PREEMPT-RT
drm/i915/display: Remove uncore lock from vlv_atomic_update_fifo
drm/i915: Use sleeping selftests for igt_atomic on PREEMPT_RT
PREEMPT_RT injection
FOR-CI: bump MAX_STACK_TRACE_ENTRIES
Mike Galbraith (1):
drm/i915: Use preempt_disable/enable_rt() where recommended
Sebastian Andrzej Siewior (5):
drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() +
spin_lock()
drm/i915: Drop the irqs_disabled() check
drm/i915/guc: Consider also RCU depth in busy loop.
Revert "drm/i915: Depend on !PREEMPT_RT."
drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
drivers/gpu/drm/drm_vblank.c | 61 +++++++++-
drivers/gpu/drm/drm_vblank_work.c | 106 ++++++++++++----
drivers/gpu/drm/i915/Kconfig | 1 -
drivers/gpu/drm/i915/Kconfig.debug | 15 ---
drivers/gpu/drm/i915/display/i9xx_wm.c | 4 -
drivers/gpu/drm/i915/display/icl_dsi.c | 4 +-
drivers/gpu/drm/i915/display/intel_color.c | 6 +-
drivers/gpu/drm/i915/display/intel_crtc.c | 86 ++++++-------
drivers/gpu/drm/i915/display/intel_crtc.h | 1 -
drivers/gpu/drm/i915/display/intel_cursor.c | 8 +-
drivers/gpu/drm/i915/display/intel_de.h | 8 ++
drivers/gpu/drm/i915/display/intel_display.c | 46 +++----
.../gpu/drm/i915/display/intel_lpe_audio.c | 2 +-
drivers/gpu/drm/i915/display/intel_vblank.c | 115 ++++++++++--------
drivers/gpu/drm/i915/display/intel_vblank.h | 1 +
drivers/gpu/drm/i915/display/intel_vrr.c | 18 +--
drivers/gpu/drm/i915/gt/intel_breadcrumbs.c | 8 +-
.../gpu/drm/i915/gt/intel_breadcrumbs_types.h | 1 +
drivers/gpu/drm/i915/gt/intel_engine_cs.c | 2 +-
.../drm/i915/gt/intel_execlists_submission.c | 17 +--
drivers/gpu/drm/i915/gt/selftest_engine_pm.c | 8 +-
drivers/gpu/drm/i915/gt/uc/intel_guc.h | 2 +-
drivers/gpu/drm/i915/i915_request.c | 2 -
drivers/gpu/drm/i915/intel_uncore.h | 26 ++--
drivers/gpu/drm/i915/selftests/igt_atomic.c | 7 ++
drivers/gpu/drm/xe/Kconfig.debug | 5 +
.../drm/xe/compat-i915-headers/intel_uncore.h | 7 ++
include/drm/drm_vblank.h | 14 ++-
include/drm/drm_vblank_work.h | 12 ++
kernel/Kconfig.preempt | 4 +-
lib/Kconfig.debug | 4 +-
31 files changed, 391 insertions(+), 210 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 45+ messages in thread
* [PATCH v7 01/26] drm/vblank_work: Add methods to schedule vblank_work in 2 stages
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 02/26] drm/vblank: Add a 2-stage version of drm_crtc_arm_vblank_event Maarten Lankhorst
` (31 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
In case of vblank evasion in intel/display, it's necessary to
perform some work in advance, so the critical section will always run in
constant time on PREEMPT_RT.
By preparing all the work in advance, the part that needs to finish in
constant time only has to write a single variable instead. This allows
PREEMPT_RT to keep the interrupts disabled at the most critical part,
without completely reworking all locks to be raw spinlocks.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/drm_vblank_work.c | 106 ++++++++++++++++++++++--------
include/drm/drm_vblank_work.h | 12 ++++
2 files changed, 92 insertions(+), 26 deletions(-)
diff --git a/drivers/gpu/drm/drm_vblank_work.c b/drivers/gpu/drm/drm_vblank_work.c
index 70f0199251ea0..6acb240b9c112 100644
--- a/drivers/gpu/drm/drm_vblank_work.c
+++ b/drivers/gpu/drm/drm_vblank_work.c
@@ -54,7 +54,8 @@ void drm_handle_vblank_works(struct drm_vblank_crtc *vblank)
assert_spin_locked(&vblank->dev->event_lock);
list_for_each_entry_safe(work, next, &vblank->pending_work, node) {
- if (!drm_vblank_passed(count, work->count))
+ /* READ_ONCE pairs with WRITE_ONCE in drm_vblank_work_enable() */
+ if (!READ_ONCE(work->armed) || !drm_vblank_passed(count, work->count))
continue;
list_del_init(&work->node);
@@ -86,30 +87,8 @@ void drm_vblank_cancel_pending_works(struct drm_vblank_crtc *vblank)
wake_up_all(&vblank->work_wait_queue);
}
-/**
- * drm_vblank_work_schedule - schedule a vblank work
- * @work: vblank work to schedule
- * @count: target vblank count
- * @nextonmiss: defer until the next vblank if target vblank was missed
- *
- * Schedule @work for execution once the crtc vblank count reaches @count.
- *
- * If the crtc vblank count has already reached @count and @nextonmiss is
- * %false the work starts to execute immediately.
- *
- * If the crtc vblank count has already reached @count and @nextonmiss is
- * %true the work is deferred until the next vblank (as if @count has been
- * specified as crtc vblank count + 1).
- *
- * If @work is already scheduled, this function will reschedule said work
- * using the new @count. This can be used for self-rearming work items.
- *
- * Returns:
- * %1 if @work was successfully (re)scheduled, %0 if it was either already
- * scheduled or cancelled, or a negative error code on failure.
- */
-int drm_vblank_work_schedule(struct drm_vblank_work *work,
- u64 count, bool nextonmiss)
+static int __drm_vblank_work_schedule(struct drm_vblank_work *work,
+ u64 count, bool nextonmiss, bool armed)
{
struct drm_vblank_crtc *vblank = work->vblank;
struct drm_device *dev = vblank->dev;
@@ -139,6 +118,7 @@ int drm_vblank_work_schedule(struct drm_vblank_work *work,
rescheduling = true;
}
+ work->armed = armed;
work->count = count;
cur_vbl = drm_vblank_count(dev, vblank->pipe);
passed = drm_vblank_passed(cur_vbl, count);
@@ -147,7 +127,7 @@ int drm_vblank_work_schedule(struct drm_vblank_work *work,
"crtc %d vblank %llu already passed (current %llu)\n",
vblank->pipe, count, cur_vbl);
- if (!nextonmiss && passed) {
+ if (!nextonmiss && passed && armed) {
drm_vblank_put(dev, vblank->pipe);
ret = kthread_queue_work(vblank->worker, &work->base);
@@ -167,8 +147,82 @@ int drm_vblank_work_schedule(struct drm_vblank_work *work,
wake_up_all(&vblank->work_wait_queue);
return ret;
}
+
+/**
+ * drm_vblank_work_schedule - schedule a vblank work
+ * @work: vblank work to schedule
+ * @count: target vblank count
+ * @nextonmiss: defer until the next vblank if target vblank was missed
+ *
+ * Schedule @work for execution once the crtc vblank count reaches @count.
+ *
+ * If the crtc vblank count has already reached @count and @nextonmiss is
+ * %false the work starts to execute immediately.
+ *
+ * If the crtc vblank count has already reached @count and @nextonmiss is
+ * %true the work is deferred until the next vblank (as if @count has been
+ * specified as crtc vblank count + 1).
+ *
+ * If @work is already scheduled, this function will reschedule said work
+ * using the new @count. This can be used for self-rearming work items.
+ *
+ * Returns:
+ * %1 if @work was successfully (re)scheduled, %0 if it was either already
+ * scheduled or cancelled, or a negative error code on failure.
+ */
+int drm_vblank_work_schedule(struct drm_vblank_work *work,
+ u64 count, bool nextonmiss)
+{
+ return __drm_vblank_work_schedule(work, count, nextonmiss, true);
+}
EXPORT_SYMBOL(drm_vblank_work_schedule);
+
+/**
+ * drm_vblank_work_schedule_disabled - schedule a vblank work, withoug enabling
+ * @work: vblank work to schedule
+ * @count: target vblank count
+ *
+ * Schedule @work for execution once the crtc vblank count reaches @count.
+ *
+ * The vblank work will not be scheduled until drm_vblank_work_enable() is called.
+ * If the crtc vblank count has already reached @count, the work will still
+ * not be scheduled until the first following vblank.
+ *
+ * If @work is already scheduled, this function will reschedule said work
+ * using the new @count. This can be used for self-rearming work items.
+ *
+ * Returns:
+ * %1 if @work was successfully (re)scheduled, %0 if it was either already
+ * scheduled or cancelled, or a negative error code on failure.
+ */
+int drm_vblank_work_schedule_disabled(struct drm_vblank_work *work, u64 count)
+{
+ return __drm_vblank_work_schedule(work, count, true, false);
+}
+EXPORT_SYMBOL(drm_vblank_work_schedule_disabled);
+
+/**
+ * drm_vblank_work_enable - enable vblank work
+ * @work: vblank work to enable
+ *
+ * This function is specifically only for when drm_vblank_work_schedule_disabled() is
+ * called. It allows for the work to be armed in any context, without any locks.
+ *
+ * The work will be signalled earliest at the @count argument, if it has been passed,
+ * it will signalled at the next vblank.
+ *
+ * This is particularly useful for PREEMPT_RT, where the spin_lock is converted
+ * into a sleeping rtmutex, and vblank evasion requires some work to be
+ * scheduled on completion with interrupts disabled.
+ */
+void drm_vblank_work_enable(struct drm_vblank_work *work)
+{
+ WARN_ON(work->armed);
+ WRITE_ONCE(work->armed, true);
+}
+EXPORT_SYMBOL(drm_vblank_work_enable);
+
/**
* drm_vblank_work_cancel_sync - cancel a vblank work and wait for it to
* finish executing
diff --git a/include/drm/drm_vblank_work.h b/include/drm/drm_vblank_work.h
index e04d436b72973..e19351200da24 100644
--- a/include/drm/drm_vblank_work.h
+++ b/include/drm/drm_vblank_work.h
@@ -47,6 +47,14 @@ struct drm_vblank_work {
*/
int cancelling;
+ /**
+ * @armed: If false, the work item has been added to the
+ * drm_vblank_crtc.pending_work list, but will not yet be signalled.
+ *
+ * Call drm_vblank_work_enable() to fire on next vblank.
+ */
+ bool armed;
+
/**
* @node: The position of this work item in
* &drm_vblank_crtc.pending_work.
@@ -64,6 +72,10 @@ struct drm_vblank_work {
int drm_vblank_work_schedule(struct drm_vblank_work *work,
u64 count, bool nextonmiss);
+
+int drm_vblank_work_schedule_disabled(struct drm_vblank_work *work, u64 count);
+void drm_vblank_work_enable(struct drm_vblank_work *work);
+
void drm_vblank_work_init(struct drm_vblank_work *work, struct drm_crtc *crtc,
void (*func)(struct kthread_work *work));
bool drm_vblank_work_cancel_sync(struct drm_vblank_work *work);
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 02/26] drm/vblank: Add a 2-stage version of drm_crtc_arm_vblank_event
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 01/26] drm/vblank_work: Add methods to schedule vblank_work in 2 stages Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 03/26] drm/intel/display: Make intel_crtc_arm_vblank_event static Maarten Lankhorst
` (30 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
When trying to fix the hardware programming in intel/display, I had
to take all the vblank locks with local_irqs_disabled(). This
required converting the entire vblank code to raw spinlocks.
In the alternative approach, do all preparations in advance, and only
enable the vblank_event with interrupts disabled, this requires only
a simple write and prevents a complete re-architecture of the code.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/drm_vblank.c | 61 +++++++++++++++++++++++++++++++++++-
include/drm/drm_vblank.h | 14 ++++++++-
2 files changed, 73 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index f78bf37f1e0a7..388d94e2e961f 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -1118,12 +1118,68 @@ void drm_crtc_arm_vblank_event(struct drm_crtc *crtc,
assert_spin_locked(&dev->event_lock);
+ WARN_ON(e->postponed);
e->pipe = pipe;
e->sequence = drm_crtc_accurate_vblank_count(crtc) + 1;
list_add_tail(&e->base.link, &dev->vblank_event_list);
}
EXPORT_SYMBOL(drm_crtc_arm_vblank_event);
+/**
+ * drm_crtc_prepare_arm_vblank_event - arm vblank event *before* pageflip.
+ * @crtc: the source CRTC of the vblank event
+ * @e: the event to send
+ *
+ * See drm_crtc_arm_vblank_event(). This function is a 2-stage version of
+ * that call. This function is called *BEFORE* programming the hardware.
+ *
+ * After programming, call drm_crtc_arm_prepared_vblank_event() and the
+ * event will be scheduled on the next vblank.
+ *
+ * This is mainly useful for code that has to run on PREEMPT_RT kernels,
+ * with interrupts disabled, since all vblank spinlocks are converted to
+ * rtmutexes, and code running with irqs disabled cannot take any vblank lock.
+ *
+ * It also increases determinism for any hardware
+ * programming, since no vblank related locks are taking when arming.
+ */
+void drm_crtc_prepare_arm_vblank_event(struct drm_crtc *crtc,
+ struct drm_pending_vblank_event *e)
+{
+ drm_crtc_arm_vblank_event(crtc, e);
+
+ /* Set the flag, so that the event is not fired yet */
+ e->postponed = true;
+}
+EXPORT_SYMBOL(drm_crtc_prepare_arm_vblank_event);
+
+/**
+ * drm_crtc_arm_prepared_vblank_event - arm prepared vblank event *after* pageflip.
+ * @crtc: the source CRTC of the vblank event
+ * @e: the event to send
+ *
+ * See drm_crtc_prepare_arm_vblank_event(). This function is a 2-stage version of
+ * that call. This function is called directly *AFTER* programming the hardware.
+ *
+ * Before this function is called, drm_crtc_prepare_arm_vblank_event() should be
+ * called instead.
+ *
+ * This is mainly useful for code that has to run on PREEMPT_RT kernels,
+ * with interrupts disabled, since all vblank spinlocks are converted to
+ * rtmutexes, and code running with irqs disabled cannot take any vblank lock.
+ *
+ * It also increases determinism for any hardware
+ * programming, since no vblank related locks are taking when arming.
+ */
+void drm_crtc_arm_prepared_vblank_event(struct drm_pending_vblank_event *e)
+{
+ WARN_ON(!e->postponed);
+
+ /* remove the flag to be processed as a normal event */
+ WRITE_ONCE(e->postponed, false);
+}
+EXPORT_SYMBOL(drm_crtc_arm_prepared_vblank_event);
+
/**
* drm_crtc_send_vblank_event - helper to send vblank event after pageflip
* @crtc: the source CRTC of the vblank event
@@ -1381,6 +1437,8 @@ void drm_crtc_vblank_off(struct drm_crtc *crtc)
list_for_each_entry_safe(e, t, &dev->vblank_event_list, base.link) {
if (e->pipe != pipe)
continue;
+
+ WARN_ON(e->postponed);
drm_dbg_core(dev, "Sending premature vblank event on disable: "
"wanted %llu, current %llu\n",
e->sequence, seq);
@@ -1886,7 +1944,8 @@ static void drm_handle_vblank_events(struct drm_device *dev, unsigned int pipe)
seq = drm_vblank_count_and_time(dev, pipe, &now);
list_for_each_entry_safe(e, t, &dev->vblank_event_list, base.link) {
- if (e->pipe != pipe)
+ /* Matches WRITE_ONCE in drm_crtc_arm_prepared_vblank_event() */
+ if (e->pipe != pipe || READ_ONCE(e->postponed))
continue;
if (!drm_vblank_passed(seq, e->sequence))
continue;
diff --git a/include/drm/drm_vblank.h b/include/drm/drm_vblank.h
index 2fcef9c0f5b1b..956d5621eb7f9 100644
--- a/include/drm/drm_vblank.h
+++ b/include/drm/drm_vblank.h
@@ -53,6 +53,13 @@ struct drm_pending_vblank_event {
* @sequence: frame event should be triggered at
*/
u64 sequence;
+
+ /**
+ * @postponed: whether drm_crtc_prepare_arm_vblank_event() is called,
+ * and drm_crtc_arm_prepared_vblank_event has yet to be called to arm.
+ */
+ bool postponed;
+
/**
* @event: Actual event which will be sent to userspace.
*/
@@ -294,7 +301,12 @@ int drm_crtc_next_vblank_start(struct drm_crtc *crtc, ktime_t *vblanktime);
void drm_crtc_send_vblank_event(struct drm_crtc *crtc,
struct drm_pending_vblank_event *e);
void drm_crtc_arm_vblank_event(struct drm_crtc *crtc,
- struct drm_pending_vblank_event *e);
+ struct drm_pending_vblank_event *e);
+
+void drm_crtc_prepare_arm_vblank_event(struct drm_crtc *crtc,
+ struct drm_pending_vblank_event *e);
+void drm_crtc_arm_prepared_vblank_event(struct drm_pending_vblank_event *e);
+
void drm_vblank_set_event(struct drm_pending_vblank_event *e,
u64 *seq,
ktime_t *now);
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 03/26] drm/intel/display: Make intel_crtc_arm_vblank_event static
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 01/26] drm/vblank_work: Add methods to schedule vblank_work in 2 stages Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 02/26] drm/vblank: Add a 2-stage version of drm_crtc_arm_vblank_event Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 04/26] drm/intel/display: Convert vblank event handling to 2-stage arming Maarten Lankhorst
` (29 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
Only used inside intel_crtc.c now, so no need to export it any more.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/display/intel_crtc.c | 2 +-
drivers/gpu/drm/i915/display/intel_crtc.h | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
index b8189cd5d864a..296f7a7b962fa 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc.c
@@ -638,7 +638,7 @@ static void dbg_vblank_evade(struct intel_crtc *crtc, ktime_t end)
static void dbg_vblank_evade(struct intel_crtc *crtc, ktime_t end) {}
#endif
-void intel_crtc_arm_vblank_event(struct intel_crtc_state *crtc_state)
+static void intel_crtc_arm_vblank_event(struct intel_crtc_state *crtc_state)
{
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
unsigned long irqflags;
diff --git a/drivers/gpu/drm/i915/display/intel_crtc.h b/drivers/gpu/drm/i915/display/intel_crtc.h
index 12507b51ee77e..f65cbafe2b42a 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.h
+++ b/drivers/gpu/drm/i915/display/intel_crtc.h
@@ -33,7 +33,6 @@ int intel_usecs_to_scanlines(const struct drm_display_mode *adjusted_mode,
int usecs);
int intel_scanlines_to_usecs(const struct drm_display_mode *adjusted_mode,
int scanlines);
-void intel_crtc_arm_vblank_event(struct intel_crtc_state *crtc_state);
void intel_crtc_prepare_vblank_event(struct intel_crtc_state *crtc_state,
struct drm_pending_vblank_event **event);
u32 intel_crtc_max_vblank_count(const struct intel_crtc_state *crtc_state);
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 04/26] drm/intel/display: Convert vblank event handling to 2-stage arming
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (2 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 03/26] drm/intel/display: Make intel_crtc_arm_vblank_event static Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 05/26] drm/i915/display: Move vblank put until after critical section Maarten Lankhorst
` (28 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
This is converts the vblank functions to be called with interrupts
disabled, even on PREEMPT_RT kernels.
Because the PREEMPT_RT kernel converts all spinlocks to rt-mutexes,
the normal vblank functions cannot be used inside the critical section.
Instead, prepare the vblank at the start, and then enable the vblank
work after the hardware programming is completed.
This allows us to keep programming the hardware with interrupts
disabled, and still schedule completion on PREEMPT_RT on next vblank.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/display/intel_crtc.c | 84 ++++++++++++-----------
1 file changed, 44 insertions(+), 40 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
index 296f7a7b962fa..ca85b6fe50c6f 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc.c
@@ -480,6 +480,10 @@ static void intel_crtc_vblank_work_init(struct intel_crtc_state *crtc_state)
drm_vblank_work_init(&crtc_state->vblank_work, &crtc->base,
intel_crtc_vblank_work);
+
+ drm_vblank_work_schedule_disabled(&crtc_state->vblank_work,
+ drm_crtc_accurate_vblank_count(&crtc->base) + 1);
+
/*
* Interrupt latency is critical for getting the vblank
* work executed as early as possible during the vblank.
@@ -525,6 +529,21 @@ int intel_scanlines_to_usecs(const struct drm_display_mode *adjusted_mode,
adjusted_mode->crtc_clock);
}
+static void intel_crtc_arm_vblank_event(struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+ unsigned long irqflags;
+
+ if (!crtc_state->uapi.event)
+ return;
+
+ drm_WARN_ON(crtc->base.dev, drm_crtc_vblank_get(&crtc->base) != 0);
+
+ spin_lock_irqsave(&crtc->base.dev->event_lock, irqflags);
+ drm_crtc_prepare_arm_vblank_event(&crtc->base, crtc_state->uapi.event);
+ spin_unlock_irqrestore(&crtc->base.dev->event_lock, irqflags);
+}
+
/**
* intel_pipe_update_start() - start update of a set of display registers
* @state: the atomic state
@@ -561,6 +580,8 @@ void intel_pipe_update_start(struct intel_atomic_state *state,
if (intel_crtc_needs_vblank_work(new_crtc_state))
intel_crtc_vblank_work_init(new_crtc_state);
+ else
+ intel_crtc_arm_vblank_event(new_crtc_state);
if (state->base.legacy_cursor_update) {
struct intel_plane *plane;
@@ -638,23 +659,6 @@ static void dbg_vblank_evade(struct intel_crtc *crtc, ktime_t end)
static void dbg_vblank_evade(struct intel_crtc *crtc, ktime_t end) {}
#endif
-static void intel_crtc_arm_vblank_event(struct intel_crtc_state *crtc_state)
-{
- struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
- unsigned long irqflags;
-
- if (!crtc_state->uapi.event)
- return;
-
- drm_WARN_ON(crtc->base.dev, drm_crtc_vblank_get(&crtc->base) != 0);
-
- spin_lock_irqsave(&crtc->base.dev->event_lock, irqflags);
- drm_crtc_arm_vblank_event(&crtc->base, crtc_state->uapi.event);
- spin_unlock_irqrestore(&crtc->base.dev->event_lock, irqflags);
-
- crtc_state->uapi.event = NULL;
-}
-
void intel_crtc_prepare_vblank_event(struct intel_crtc_state *crtc_state,
struct drm_pending_vblank_event **event)
{
@@ -708,29 +712,10 @@ void intel_pipe_update_end(struct intel_atomic_state *state,
* event outside of the critical section - the spinlock might spin for a
* while ... */
if (intel_crtc_needs_vblank_work(new_crtc_state)) {
- drm_vblank_work_schedule(&new_crtc_state->vblank_work,
- drm_crtc_accurate_vblank_count(&crtc->base) + 1,
- false);
- } else {
- intel_crtc_arm_vblank_event(new_crtc_state);
- }
-
- if (state->base.legacy_cursor_update) {
- struct intel_plane *plane;
- struct intel_plane_state *old_plane_state;
- int i;
-
- for_each_old_intel_plane_in_state(state, plane, old_plane_state, i) {
- if (old_plane_state->hw.crtc == &crtc->base &&
- old_plane_state->unpin_work.vblank) {
- drm_vblank_work_schedule(&old_plane_state->unpin_work,
- drm_crtc_accurate_vblank_count(&crtc->base) + 1,
- false);
-
- /* Remove plane from atomic state, cleanup/free is done from vblank worker. */
- memset(&state->base.planes[i], 0, sizeof(state->base.planes[i]));
- }
- }
+ drm_vblank_work_enable(&new_crtc_state->vblank_work);
+ } else if (new_crtc_state->uapi.event) {
+ drm_crtc_arm_prepared_vblank_event(new_crtc_state->uapi.event);
+ new_crtc_state->uapi.event = NULL;
}
/*
@@ -754,6 +739,25 @@ void intel_pipe_update_end(struct intel_atomic_state *state,
local_irq_enable();
+ /* Run after local_irq_enable(), not timing sensitive */
+ if (state->base.legacy_cursor_update) {
+ struct intel_plane *plane;
+ struct intel_plane_state *old_plane_state;
+ int i;
+
+ for_each_old_intel_plane_in_state(state, plane, old_plane_state, i) {
+ if (old_plane_state->hw.crtc == &crtc->base &&
+ old_plane_state->unpin_work.vblank) {
+ drm_vblank_work_schedule(&old_plane_state->unpin_work,
+ drm_crtc_accurate_vblank_count(&crtc->base) + 1,
+ false);
+
+ /* Remove plane from atomic state, cleanup/free is done from vblank worker. */
+ memset(&state->base.planes[i], 0, sizeof(state->base.planes[i]));
+ }
+ }
+ }
+
if (intel_parent_vgpu_active(display))
goto out;
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 05/26] drm/i915/display: Move vblank put until after critical section
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (3 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 04/26] drm/intel/display: Convert vblank event handling to 2-stage arming Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 06/26] drm/i915/display: Remove locking from intel_vblank_evade " Maarten Lankhorst
` (27 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst, Uma Shankar
drm_crtc_vblank_put may take some locks, this should probably
not be the first thing we do after entering the time sensitive
part.
A better place is after programming is completed. Add a flag
to put the vblank after completion.
In the case of drm_vblank_work_schedule, we may not even need
to disable the vblank interrupt any more if it takes its own
reference.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_cursor.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 18d1014de3613..5248e478b64e8 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -817,6 +817,7 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
to_intel_crtc_state(crtc->base.state);
struct intel_crtc_state *new_crtc_state;
struct intel_vblank_evade_ctx evade;
+ bool has_vblank = false;
int ret;
/*
@@ -914,6 +915,8 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
intel_psr_lock(crtc_state);
if (!drm_WARN_ON(display->drm, drm_crtc_vblank_get(&crtc->base))) {
+ has_vblank = true;
+
/*
* TODO: maybe check if we're still in PSR
* and skip the vblank evasion entirely?
@@ -923,8 +926,6 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
local_irq_disable();
intel_vblank_evade(&evade);
-
- drm_crtc_vblank_put(&crtc->base);
} else {
local_irq_disable();
}
@@ -940,6 +941,9 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
intel_psr_unlock(crtc_state);
+ if (has_vblank)
+ drm_crtc_vblank_put(&crtc->base);
+
if (old_plane_state->ggtt_vma != new_plane_state->ggtt_vma) {
drm_vblank_work_init(&old_plane_state->unpin_work, &crtc->base,
intel_cursor_unpin_work);
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 06/26] drm/i915/display: Remove locking from intel_vblank_evade critical section
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (4 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 05/26] drm/i915/display: Move vblank put until after critical section Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 07/26] drm/i915/display: Handle vlv dsi workaround in scanline_in_safe_range too Maarten Lankhorst
` (26 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
finish_wait() may take a lock, which means that it can take any amount
of time. On PREEMPT-RT we should not be taking any lock after disabling
preemption, so ensure that the completion is done before disabling
interrupts.
This also has the benefit of making vblank evasion more deterministic,
by performing the final vblank check after all locking is done.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/display/intel_crtc.c | 2 +-
drivers/gpu/drm/i915/display/intel_vblank.c | 30 +++++++++------------
drivers/gpu/drm/i915/display/intel_vblank.h | 1 +
3 files changed, 15 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
index ca85b6fe50c6f..1022c2cf4eec2 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc.c
@@ -688,7 +688,7 @@ void intel_pipe_update_end(struct intel_atomic_state *state,
struct intel_crtc_state *new_crtc_state =
intel_atomic_get_new_crtc_state(state, crtc);
enum pipe pipe = crtc->pipe;
- int scanline_end = intel_get_crtc_scanline(crtc);
+ int scanline_end = __intel_get_crtc_scanline(crtc);
u32 end_vbl_count = intel_crtc_get_vblank_counter(crtc);
ktime_t end_vbl_time = ktime_get();
diff --git a/drivers/gpu/drm/i915/display/intel_vblank.c b/drivers/gpu/drm/i915/display/intel_vblank.c
index 1b7cfe226ff8f..73676d8ccec8b 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.c
+++ b/drivers/gpu/drm/i915/display/intel_vblank.c
@@ -241,7 +241,7 @@ int intel_crtc_scanline_offset(const struct intel_crtc_state *crtc_state)
* intel_de_read_fw(), only for fast reads of display block, no need for
* forcewake etc.
*/
-static int __intel_get_crtc_scanline(struct intel_crtc *crtc)
+int __intel_get_crtc_scanline(struct intel_crtc *crtc)
{
struct intel_display *display = to_intel_display(crtc);
struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(&crtc->base);
@@ -732,6 +732,16 @@ void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_state,
evade->min -= vblank_delay;
}
+static bool scanline_in_safe_range(struct intel_vblank_evade_ctx *evade, int *scanline, bool unlocked)
+{
+ if (unlocked)
+ *scanline = intel_get_crtc_scanline(evade->crtc);
+ else
+ *scanline = __intel_get_crtc_scanline(evade->crtc);
+
+ return *scanline < evade->min || *scanline > evade->max;
+}
+
/* must be called with vblank interrupt already enabled! */
int intel_vblank_evade(struct intel_vblank_evade_ctx *evade)
{
@@ -739,24 +749,12 @@ int intel_vblank_evade(struct intel_vblank_evade_ctx *evade)
struct intel_display *display = to_intel_display(crtc);
long timeout = msecs_to_jiffies_timeout(1);
wait_queue_head_t *wq = drm_crtc_vblank_waitqueue(&crtc->base);
- DEFINE_WAIT(wait);
int scanline;
if (evade->min <= 0 || evade->max <= 0)
return 0;
- for (;;) {
- /*
- * prepare_to_wait() has a memory barrier, which guarantees
- * other CPUs can see the task state update by the time we
- * read the scanline.
- */
- prepare_to_wait(wq, &wait, TASK_UNINTERRUPTIBLE);
-
- scanline = intel_get_crtc_scanline(crtc);
- if (scanline < evade->min || scanline > evade->max)
- break;
-
+ while (!scanline_in_safe_range(evade, &scanline, false)) {
if (!timeout) {
drm_dbg_kms(display->drm,
"Potential atomic update failure on pipe %c\n",
@@ -766,13 +764,11 @@ int intel_vblank_evade(struct intel_vblank_evade_ctx *evade)
local_irq_enable();
- timeout = schedule_timeout(timeout);
+ timeout = wait_event_timeout(*wq, scanline_in_safe_range(evade, &scanline, true), timeout);
local_irq_disable();
}
- finish_wait(wq, &wait);
-
/*
* On VLV/CHV DSI the scanline counter would appear to
* increment approx. 1/3 of a scanline before start of vblank.
diff --git a/drivers/gpu/drm/i915/display/intel_vblank.h b/drivers/gpu/drm/i915/display/intel_vblank.h
index 98d04cacd65f8..aa1974400e9fc 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.h
+++ b/drivers/gpu/drm/i915/display/intel_vblank.h
@@ -38,6 +38,7 @@ u32 g4x_get_vblank_counter(struct drm_crtc *crtc);
bool intel_crtc_get_vblank_timestamp(struct drm_crtc *crtc, int *max_error,
ktime_t *vblank_time, bool in_vblank_irq);
int intel_get_crtc_scanline(struct intel_crtc *crtc);
+int __intel_get_crtc_scanline(struct intel_crtc *crtc);
void intel_wait_for_pipe_scanline_stopped(struct intel_crtc *crtc);
void intel_wait_for_pipe_scanline_moving(struct intel_crtc *crtc);
void intel_crtc_update_active_timings(const struct intel_crtc_state *crtc_state,
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 07/26] drm/i915/display: Handle vlv dsi workaround in scanline_in_safe_range too
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (5 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 06/26] drm/i915/display: Remove locking from intel_vblank_evade " Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 08/26] drm/i915: Use preempt_disable/enable_rt() where recommended Maarten Lankhorst
` (25 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst, Uma Shankar
Now that we have a macro, might as well handle the VLV dsi workaround
too.
This makes the vblank evasion code slightly more deterministic, by not
looping with interrupts disabled.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_vblank.c | 36 ++++++++++-----------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_vblank.c b/drivers/gpu/drm/i915/display/intel_vblank.c
index 73676d8ccec8b..3eb6418723a84 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.c
+++ b/drivers/gpu/drm/i915/display/intel_vblank.c
@@ -739,6 +739,24 @@ static bool scanline_in_safe_range(struct intel_vblank_evade_ctx *evade, int *sc
else
*scanline = __intel_get_crtc_scanline(evade->crtc);
+ /*
+ * On VLV/CHV DSI the scanline counter would appear to
+ * increment approx. 1/3 of a scanline before start of vblank.
+ * The registers still get latched at start of vblank however.
+ * This means we must not write any registers on the first
+ * line of vblank (since not the whole line is actually in
+ * vblank). And unfortunately we can't use the interrupt to
+ * wait here since it will fire too soon. We could use the
+ * frame start interrupt instead since it will fire after the
+ * critical scanline, but that would require more changes
+ * in the interrupt code. So for now we'll just do the nasty
+ * thing and poll for the bad scanline to pass us by.
+ *
+ * FIXME figure out if BXT+ DSI suffers from this as well
+ */
+ if (evade->need_vlv_dsi_wa && *scanline == evade->vblank_start)
+ return false;
+
return *scanline < evade->min || *scanline > evade->max;
}
@@ -769,24 +787,6 @@ int intel_vblank_evade(struct intel_vblank_evade_ctx *evade)
local_irq_disable();
}
- /*
- * On VLV/CHV DSI the scanline counter would appear to
- * increment approx. 1/3 of a scanline before start of vblank.
- * The registers still get latched at start of vblank however.
- * This means we must not write any registers on the first
- * line of vblank (since not the whole line is actually in
- * vblank). And unfortunately we can't use the interrupt to
- * wait here since it will fire too soon. We could use the
- * frame start interrupt instead since it will fire after the
- * critical scanline, but that would require more changes
- * in the interrupt code. So for now we'll just do the nasty
- * thing and poll for the bad scanline to pass us by.
- *
- * FIXME figure out if BXT+ DSI suffers from this as well
- */
- while (evade->need_vlv_dsi_wa && scanline == evade->vblank_start)
- scanline = intel_get_crtc_scanline(crtc);
-
return scanline;
}
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 08/26] drm/i915: Use preempt_disable/enable_rt() where recommended
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (6 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 07/26] drm/i915/display: Handle vlv dsi workaround in scanline_in_safe_range too Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 09/26] drm/i915/display: Make get_vblank_counter use intel_de_read_fw() Maarten Lankhorst
` (24 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx
Cc: dri-devel, Mike Galbraith, Mario Kleiner, Thomas Gleixner,
Sebastian Andrzej Siewior, Maarten Lankhorst, Uma Shankar
From: Mike Galbraith <umgwanakikbuti@gmail.com>
Mario Kleiner suggest in commit
ad3543ede630f ("drm/intel: Push get_scanout_position() timestamping into kms driver.")
a spots where preemption should be disabled on PREEMPT_RT. The
difference is that on PREEMPT_RT the intel_uncore::lock disables neither
preemption nor interrupts and so region remains preemptible.
The area covers only register reads and writes. The part that worries me
is:
- __intel_get_crtc_scanline() the worst case is 100us if no match is
found.
- intel_crtc_scanlines_since_frame_timestamp() not sure how long this
may take in the worst case.
It was in the RT queue for a while and nobody complained.
Disable preemption on PREEPMPT_RT during timestamping.
[bigeasy: patch description.]
Cc: Mario Kleiner <mario.kleiner.de@gmail.com>
Signed-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_vblank.c | 43 ++++++++++++++++-----
1 file changed, 33 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_vblank.c b/drivers/gpu/drm/i915/display/intel_vblank.c
index 3eb6418723a84..8263cefaa0fb6 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.c
+++ b/drivers/gpu/drm/i915/display/intel_vblank.c
@@ -316,6 +316,20 @@ static void intel_vblank_section_exit(struct intel_display *display)
struct intel_uncore *uncore = to_intel_uncore(display->drm);
spin_unlock(&uncore->lock);
}
+
+static void intel_vblank_section_enter_irqf(struct intel_display *display, unsigned long *flags)
+ __acquires(i915->uncore.lock)
+{
+ struct intel_uncore *uncore = to_intel_uncore(display->drm);
+ spin_lock_irqsave(&uncore->lock, *flags);
+}
+
+static void intel_vblank_section_exit_irqf(struct intel_display *display, unsigned long flags)
+ __releases(i915->uncore.lock)
+{
+ struct intel_uncore *uncore = to_intel_uncore(display->drm);
+ spin_unlock_irqrestore(&uncore->lock, flags);
+}
#else
static void intel_vblank_section_enter(struct intel_display *display)
{
@@ -324,6 +338,17 @@ static void intel_vblank_section_enter(struct intel_display *display)
static void intel_vblank_section_exit(struct intel_display *display)
{
}
+
+static void intel_vblank_section_enter_irqf(struct intel_display *display, unsigned long *flags)
+{
+ *flags = 0;
+}
+
+static void intel_vblank_section_exit_irqf(struct intel_display *display, unsigned long flags)
+{
+ if (flags)
+ return;
+}
#endif
static bool i915_get_crtc_scanoutpos(struct drm_crtc *_crtc,
@@ -360,10 +385,10 @@ static bool i915_get_crtc_scanoutpos(struct drm_crtc *_crtc,
* timing critical raw register reads, potentially with
* preemption disabled, so the following code must not block.
*/
- local_irq_save(irqflags);
- intel_vblank_section_enter(display);
+ intel_vblank_section_enter_irqf(display, &irqflags);
- /* preempt_disable_rt() should go right here in PREEMPT_RT patchset. */
+ if (IS_ENABLED(CONFIG_PREEMPT_RT))
+ preempt_disable();
/* Get optional system timestamp before query. */
if (stime)
@@ -427,10 +452,10 @@ static bool i915_get_crtc_scanoutpos(struct drm_crtc *_crtc,
if (etime)
*etime = ktime_get();
- /* preempt_enable_rt() should go right here in PREEMPT_RT patchset. */
+ if (IS_ENABLED(CONFIG_PREEMPT_RT))
+ preempt_enable();
- intel_vblank_section_exit(display);
- local_irq_restore(irqflags);
+ intel_vblank_section_exit_irqf(display, irqflags);
/*
* While in vblank, position will be negative
@@ -468,13 +493,11 @@ int intel_get_crtc_scanline(struct intel_crtc *crtc)
unsigned long irqflags;
int position;
- local_irq_save(irqflags);
- intel_vblank_section_enter(display);
+ intel_vblank_section_enter_irqf(display, &irqflags);
position = __intel_get_crtc_scanline(crtc);
- intel_vblank_section_exit(display);
- local_irq_restore(irqflags);
+ intel_vblank_section_exit_irqf(display, irqflags);
return position;
}
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 09/26] drm/i915/display: Make get_vblank_counter use intel_de_read_fw()
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (7 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 08/26] drm/i915: Use preempt_disable/enable_rt() where recommended Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 10/26] drm/i915/display: Do not take uncore lock in i915_get_vblank_counter Maarten Lankhorst
` (23 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
Fixes the following lockdep splat on PREEMPT_RT:
<3> BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
<3> in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1373, name: xe_module_load
<3> preempt_count: 1, expected: 0
<3> RCU nest depth: 0, expected: 0
<4> 11 locks held by xe_module_load/1373:
<4> #0: ffff888107b691a0 (&dev->mutex){....}-{3:3}, at: __driver_attach+0x104/0x220
<4> #1: ffff88813cd30280 (&dev->clientlist_mutex){+.+.}-{3:3}, at: drm_client_register+0x32/0xe0
<4> #2: ffffffff837f88f8 (registration_lock){+.+.}-{3:3}, at: register_framebuffer+0x1b/0x50
<4> #3: ffffffff835985e0 (console_lock){+.+.}-{0:0}, at: fbcon_fb_registered+0x6f/0x90
<4> #4: ffff88812589e6a0 (&helper->lock){+.+.}-{3:3}, at: __drm_fb_helper_restore_fbdev_mode_unlocked+0x7b/0x110
<4> #5: ffff88813cd30158 (&dev->master_mutex){+.+.}-{3:3}, at: drm_master_internal_acquire+0x20/0x50
<4> #6: ffff88812589e488 (&client->modeset_mutex){+.+.}-{3:3}, at: drm_client_modeset_commit_locked+0x2a/0x1b0
<4> #7: ffffc9000031eef0 (crtc_ww_class_acquire){+.+.}-{0:0}, at: drm_client_modeset_commit_atomic+0x4c/0x2b0
<4> #8: ffffc9000031ef18 (crtc_ww_class_mutex){+.+.}-{3:3}, at: drm_client_modeset_commit_atomic+0x4c/0x2b0
<4> #9: ffff888114f7b8b8 (&intel_dp->psr.lock){+.+.}-{3:3}, at: intel_psr_lock+0xc5/0xf0 [xe]
<4> #10: ffff88812a0cbbc0 (&wl->lock){+.+.}-{2:2}, at: intel_dmc_wl_get+0x3c/0x140 [xe]
This splat will happen otherwise on all tracepoints too, for similar reasons.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/display/intel_vblank.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_vblank.c b/drivers/gpu/drm/i915/display/intel_vblank.c
index 8263cefaa0fb6..e204c260b9aef 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.c
+++ b/drivers/gpu/drm/i915/display/intel_vblank.c
@@ -132,7 +132,7 @@ u32 g4x_get_vblank_counter(struct drm_crtc *crtc)
if (!vblank->max_vblank_count)
return 0;
- return intel_de_read(display, PIPE_FRMCOUNT_G4X(display, pipe));
+ return intel_de_read_fw(display, PIPE_FRMCOUNT_G4X(display, pipe));
}
static u32 intel_crtc_scanlines_since_frame_timestamp(struct intel_crtc *crtc)
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 10/26] drm/i915/display: Do not take uncore lock in i915_get_vblank_counter
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (8 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 09/26] drm/i915/display: Make get_vblank_counter use intel_de_read_fw() Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 11/26] drm/i915/display: Make icl_dsi_frame_update use _fw too Maarten Lankhorst
` (22 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
This fixes a lockdep splat that occurs in the code that should be run
with interrupts disabled. The uncore lock should not be taken and
released repeatedly in a timing sensitive path.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/display/intel_de.h | 8 ++++++
drivers/gpu/drm/i915/display/intel_vblank.c | 4 +--
drivers/gpu/drm/i915/intel_uncore.h | 26 +++++++++++++------
| 7 +++++
4 files changed, 35 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
index f30f3f8ebee1d..8990c2c778efe 100644
--- a/drivers/gpu/drm/i915/display/intel_de.h
+++ b/drivers/gpu/drm/i915/display/intel_de.h
@@ -68,6 +68,14 @@ intel_de_read64_2x32(struct intel_display *display,
return val;
}
+static inline u64
+intel_de_read64_2x32_fw(struct intel_display *display,
+ i915_reg_t lower_reg, i915_reg_t upper_reg)
+{
+ return intel_uncore_read64_2x32_fw(__to_uncore(display),
+ lower_reg, upper_reg);
+}
+
static inline void
intel_de_posting_read(struct intel_display *display, i915_reg_t reg)
{
diff --git a/drivers/gpu/drm/i915/display/intel_vblank.c b/drivers/gpu/drm/i915/display/intel_vblank.c
index e204c260b9aef..749127ae7794c 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.c
+++ b/drivers/gpu/drm/i915/display/intel_vblank.c
@@ -109,8 +109,8 @@ u32 i915_get_vblank_counter(struct drm_crtc *crtc)
* we get a low value that's stable across two reads of the high
* register.
*/
- frame = intel_de_read64_2x32(display, PIPEFRAMEPIXEL(display, pipe),
- PIPEFRAME(display, pipe));
+ frame = intel_de_read64_2x32_fw(display, PIPEFRAMEPIXEL(display, pipe),
+ PIPEFRAME(display, pipe));
pixel = frame & PIPE_PIXEL_MASK;
frame = (frame >> PIPE_FRAME_LOW_SHIFT) & 0xffffff;
diff --git a/drivers/gpu/drm/i915/intel_uncore.h b/drivers/gpu/drm/i915/intel_uncore.h
index fafc2ca9a2376..507398a562649 100644
--- a/drivers/gpu/drm/i915/intel_uncore.h
+++ b/drivers/gpu/drm/i915/intel_uncore.h
@@ -449,13 +449,28 @@ static inline void intel_uncore_rmw_fw(struct intel_uncore *uncore,
intel_uncore_write_fw(uncore, reg, val);
}
+static inline u64
+intel_uncore_read64_2x32_fw(struct intel_uncore *uncore,
+ i915_reg_t lower_reg, i915_reg_t upper_reg)
+{
+ u32 upper, lower, old_upper, loop = 0;
+ upper = intel_uncore_read_fw(uncore, upper_reg);
+ do {
+ old_upper = upper;
+ lower = intel_uncore_read_fw(uncore, lower_reg);
+ upper = intel_uncore_read_fw(uncore, upper_reg);
+ } while (upper != old_upper && loop++ < 2);
+
+ return (u64)upper << 32 | lower;
+}
+
static inline u64
intel_uncore_read64_2x32(struct intel_uncore *uncore,
i915_reg_t lower_reg, i915_reg_t upper_reg)
{
- u32 upper, lower, old_upper, loop = 0;
enum forcewake_domains fw_domains;
unsigned long flags;
+ u64 ret;
fw_domains = intel_uncore_forcewake_for_reg(uncore, lower_reg,
FW_REG_READ);
@@ -466,17 +481,12 @@ intel_uncore_read64_2x32(struct intel_uncore *uncore,
spin_lock_irqsave(&uncore->lock, flags);
intel_uncore_forcewake_get__locked(uncore, fw_domains);
- upper = intel_uncore_read_fw(uncore, upper_reg);
- do {
- old_upper = upper;
- lower = intel_uncore_read_fw(uncore, lower_reg);
- upper = intel_uncore_read_fw(uncore, upper_reg);
- } while (upper != old_upper && loop++ < 2);
+ ret = intel_uncore_read64_2x32_fw(uncore, lower_reg, upper_reg);
intel_uncore_forcewake_put__locked(uncore, fw_domains);
spin_unlock_irqrestore(&uncore->lock, flags);
- return (u64)upper << 32 | lower;
+ return ret;
}
static inline int intel_uncore_write_and_verify(struct intel_uncore *uncore,
--git a/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
index a8cfd65119e09..6959a761fa06a 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
@@ -74,6 +74,13 @@ intel_uncore_read64_2x32(struct intel_uncore *uncore,
return (u64)upper << 32 | lower;
}
+static inline u64
+intel_uncore_read64_2x32_fw(struct intel_uncore *uncore,
+ i915_reg_t i915_lower_reg, i915_reg_t i915_upper_reg)
+{
+ return intel_uncore_read64_2x32(uncore, i915_lower_reg, i915_upper_reg);
+}
+
static inline void intel_uncore_posting_read(struct intel_uncore *uncore,
i915_reg_t i915_reg)
{
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 11/26] drm/i915/display: Make icl_dsi_frame_update use _fw too
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (9 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 10/26] drm/i915/display: Do not take uncore lock in i915_get_vblank_counter Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 12/26] drm/i915/display: Use intel_de_read/write_fw in colorops Maarten Lankhorst
` (21 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst, Uma Shankar
Don't use the dmc lock inside the vblank critical section,
not even as last call.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/icl_dsi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c b/drivers/gpu/drm/i915/display/icl_dsi.c
index c043279796781..ec4f5bb19450c 100644
--- a/drivers/gpu/drm/i915/display/icl_dsi.c
+++ b/drivers/gpu/drm/i915/display/icl_dsi.c
@@ -242,8 +242,8 @@ void icl_dsi_frame_update(struct intel_crtc_state *crtc_state)
else
return;
- intel_de_rmw(display, DSI_CMD_FRMCTL(port), 0,
- DSI_FRAME_UPDATE_REQUEST);
+ intel_de_rmw_fw(display, DSI_CMD_FRMCTL(port), 0,
+ DSI_FRAME_UPDATE_REQUEST);
}
static void dsi_program_swing_and_deemphasis(struct intel_encoder *encoder)
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 12/26] drm/i915/display: Use intel_de_read/write_fw in colorops
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (10 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 11/26] drm/i915/display: Make icl_dsi_frame_update use _fw too Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 13/26] drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset Maarten Lankhorst
` (20 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst, Uma Shankar
Using the _fw variants fixes a module load error on PTL:
<4> [363.690050] Call Trace:
<4> [363.690052] <TASK>
<4> [363.690055] dump_stack_lvl+0x91/0xf0
<4> [363.690067] dump_stack+0x10/0x20
<4> [363.690074] __might_resched+0x174/0x260
<4> [363.690087] rt_spin_lock+0x63/0x200
<4> [363.690092] ? intel_dmc_wl_get+0x3c/0x140 [xe]
<4> [363.690470] ? __lock_acquire+0x1195/0x2860
<4> [363.690487] intel_dmc_wl_get+0x3c/0x140 [xe]
<4> [363.690842] intel_color_plane_commit_arm+0xbc/0x140 [xe]
<4> [363.691246] icl_plane_update_arm+0x23f/0x280 [xe]
<4> [363.691605] intel_plane_update_arm+0x74/0x170 [xe]
<4> [363.691970] intel_crtc_planes_update_arm+0x3cb/0x4c0 [xe]
<4> [363.692338] intel_update_crtc+0x1c3/0x840 [xe]
<4> [363.692742] ? intel_pre_update_crtc+0x2ce/0x470 [xe]
<4> [363.693125] ? intel_enable_crtc+0x123/0x150 [xe]
<4> [363.693508] skl_commit_modeset_enables+0x4c4/0x720 [xe]
<4> [363.693888] intel_atomic_commit_tail+0xd9d/0x1b30 [xe]
<4> [363.694274] intel_atomic_commit+0x2e8/0x330 [xe]
<4> [363.694621] ? intel_atomic_commit+0x2e8/0x330 [xe]
<4> [363.694956] drm_atomic_commit+0xaf/0xf0
<4> [363.694962] ? __pfx___drm_printfn_info+0x10/0x10
<4> [363.694978] drm_client_modeset_commit_atomic+0x25c/0x2b0
<4> [363.695018] drm_client_modeset_commit_locked+0x63/0x1b0
<4> [363.695029] drm_client_modeset_commit+0x26/0x50
<4> [363.695035] __drm_fb_helper_restore_fbdev_mode_unlocked+0xdc/0x110
<4> [363.695045] drm_fb_helper_set_par+0x2f/0x50
<4> [363.695052] intel_fbdev_set_par+0x39/0x90 [xe]
<4> [363.695365] fbcon_init+0x283/0x680
<4> [363.695382] visual_init+0xf2/0x190
<4> [363.695396] do_bind_con_driver.isra.0+0x1f1/0x4c0
<4> [363.695416] do_take_over_console+0x181/0x220
<4> [363.695422] ? vprintk_default+0x1d/0x30
<4> [363.695436] do_fbcon_takeover+0x85/0x160
<4> [363.695447] do_fb_registered+0x24c/0x2b0
<4> [363.695460] fbcon_fb_registered+0x3a/0x90
<4> [363.695469] do_register_framebuffer+0x216/0x320
<4> [363.695488] register_framebuffer+0x23/0x50
<4> [363.695494] __drm_fb_helper_initial_config_and_unlock+0x3ea/0x670
<4> [363.695502] ? trace_hardirqs_on+0x1e/0xd0
<4> [363.695526] drm_fb_helper_initial_config+0x3f/0x50
<4> [363.695534] drm_fbdev_client_hotplug+0x80/0xd0
<4> [363.695543] drm_client_register+0x8a/0xe0
<4> [363.695556] drm_fbdev_client_setup+0x127/0x1f0
<4> [363.695563] drm_client_setup+0xa7/0xe0
<4> [363.695569] drm_client_setup_with_color_mode+0x24/0x40
<4> [363.695575] intel_fbdev_setup+0x1c6/0x510 [xe]
<4> [363.695857] intel_display_driver_register+0xb5/0x100 [xe]
<4> [363.696188] ? __pfx___drm_printfn_dbg+0x10/0x10
<4> [363.696194] ? intel_display_driver_register+0x2e/0x100 [xe]
<4> [363.696515] xe_display_register+0x29/0x40 [xe]
<4> [363.696858] xe_device_probe+0x51a/0x9e0 [xe]
<4> [363.697102] ? __drmm_add_action+0x98/0x110
<4> [363.697108] ? __pfx___drmm_mutex_release+0x10/0x10
<4> [363.697116] ? __drmm_add_action_or_reset+0x1e/0x50
<4> [363.697130] xe_pci_probe+0x396/0x620 [xe]
<4> [363.697423] local_pci_probe+0x47/0xb0
<4> [363.697431] pci_device_probe+0xf3/0x260
<4> [363.697444] really_probe+0xf1/0x3c0
<4> [363.697451] __driver_probe_device+0x8c/0x180
<4> [363.697458] driver_probe_device+0x24/0xd0
<4> [363.697464] __driver_attach+0x10f/0x220
<4> [363.697468] ? __pfx___driver_attach+0x10/0x10
<4> [363.697472] bus_for_each_dev+0x7f/0xe0
<4> [363.697484] driver_attach+0x1e/0x30
<4> [363.697487] bus_add_driver+0x154/0x290
<4> [363.697498] driver_register+0x5e/0x130
<4> [363.697504] __pci_register_driver+0x84/0xa0
<4> [363.697509] xe_register_pci_driver+0x23/0x30 [xe]
<4> [363.697762] xe_init+0x2c/0x110 [xe]
<4> [363.698007] ? __pfx_xe_init+0x10/0x10 [xe]
<4> [363.698239] do_one_initcall+0x60/0x3f0
<4> [363.698250] ? __kmalloc_cache_noprof+0x470/0x690
<4> [363.698267] do_init_module+0x97/0x2b0
<4> [363.698275] load_module+0x2d08/0x2e30
<4> [363.698280] ? __kernel_read+0x164/0x310
<4> [363.698312] ? kernel_read_file+0x2ca/0x340
<4> [363.698328] init_module_from_file+0x96/0xe0
<4> [363.698330] ? init_module_from_file+0x96/0xe0
<4> [363.698357] idempotent_init_module+0x11d/0x340
<4> [363.698384] __x64_sys_finit_module+0x73/0xe0
<4> [363.698393] x64_sys_call+0x1e3d/0x26a0
<4> [363.698399] do_syscall_64+0x93/0xab0
<4> [363.698413] ? ext4_llseek+0xc3/0x130
<4> [363.698425] ? ksys_lseek+0x55/0xd0
<4> [363.698438] ? do_syscall_64+0x1b7/0xab0
<4> [363.698444] ? switch_fpu_return+0xea/0x150
<4> [363.698454] ? do_syscall_64+0x1b7/0xab0
<4> [363.698465] ? kernfs_fop_read_iter+0x197/0x210
<4> [363.698470] ? rw_verify_area+0x16f/0x200
<4> [363.698482] ? vfs_read+0x22a/0x360
<4> [363.698498] ? do_syscall_64+0x1b7/0xab0
<4> [363.698506] ? ksys_read+0x72/0xf0
<4> [363.698520] ? do_syscall_64+0x1b7/0xab0
<4> [363.698526] ? do_syscall_64+0x1b7/0xab0
<4> [363.698532] ? do_syscall_64+0x1b7/0xab0
<4> [363.698535] ? exc_page_fault+0xbd/0x2c0
<4> [363.698545] entry_SYSCALL_64_after_hwframe+0x76/0x7e
<4> [363.698549] RIP: 0033:0x715af255025d
And a similar backtrace in hsw_color_commit_arm().
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_color.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
index e7950655434b8..9cbc719370456 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -1050,7 +1050,7 @@ static void hsw_color_commit_arm(struct intel_dsb *dsb,
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
struct intel_display *display = to_intel_display(crtc);
- intel_de_write(display, GAMMA_MODE(crtc->pipe),
+ intel_de_write_fw(display, GAMMA_MODE(crtc->pipe),
crtc_state->gamma_mode);
intel_de_write_fw(display, PIPE_CSC_MODE(crtc->pipe),
@@ -4078,7 +4078,7 @@ static void glk_load_lut_3d(struct intel_dsb *dsb,
int i, lut_size = drm_color_lut32_size(blob);
enum pipe pipe = crtc->pipe;
- if (!dsb && intel_de_read(display, LUT_3D_CTL(pipe)) & LUT_3D_READY) {
+ if (!dsb && intel_de_read_fw(display, LUT_3D_CTL(pipe)) & LUT_3D_READY) {
drm_err(display->drm, "[CRTC:%d:%s] 3D LUT not ready, not loading LUTs\n",
crtc->base.base.id, crtc->base.name);
return;
@@ -4096,7 +4096,7 @@ static void glk_lut_3d_commit(struct intel_dsb *dsb, struct intel_crtc *crtc, bo
enum pipe pipe = crtc->pipe;
u32 val = 0;
- if (!dsb && intel_de_read(display, LUT_3D_CTL(pipe)) & LUT_3D_READY) {
+ if (!dsb && intel_de_read_fw(display, LUT_3D_CTL(pipe)) & LUT_3D_READY) {
drm_err(display->drm, "[CRTC:%d:%s] 3D LUT not ready, not committing change\n",
crtc->base.base.id, crtc->base.name);
return;
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 13/26] drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (11 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 12/26] drm/i915/display: Use intel_de_read/write_fw in colorops Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 14/26] drm/i915/display: Make set_pipeconf use the fw variants Maarten Lankhorst
` (19 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
intel_set_pipe_src_size(), hsw_set_linetime_wm(),
intel_cpu_transcoder_set_m1_n1() and intel_set_transcoder_timings_lrr()
are called from an atomic context on PREEMPT_RT, and should be using the
_fw functions.
This likely prevents a deadlock on i915.
Again noticed when trying to disable preemption in vblank evasion:
<3> BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
<3> in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1505, name: kms_cursor_lega
<3> preempt_count: 1, expected: 0
<3> RCU nest depth: 0, expected: 0
<4> 4 locks held by kms_cursor_lega/1505:
<4> #0: ffffc90003c6f988 (crtc_ww_class_acquire){+.+.}-{0:0}, at: drm_mode_atomic_ioctl+0x13b/0xe90
<4> #1: ffffc90003c6f9b0 (crtc_ww_class_mutex){+.+.}-{3:3}, at: drm_mode_atomic_ioctl+0x13b/0xe90
<4> #2: ffff888135b838b8 (&intel_dp->psr.lock){+.+.}-{3:3}, at: intel_psr_lock+0xc5/0xf0 [xe]
<4> #3: ffff88812607bbc0 (&wl->lock){+.+.}-{2:2}, at: intel_dmc_wl_get+0x3c/0x140 [xe]
<4> CPU: 6 UID: 0 PID: 1505 Comm: kms_cursor_lega Tainted: G U 6.18.0-rc3-lgci-xe-xe-pw-156729v1+ #1 PREEMPT_{RT,(lazy)}
<4> Tainted: [U]=USER
<4> Hardware name: Intel Corporation Panther Lake Client Platform/PTL-UH LP5 T3 RVP1, BIOS PTLPFWI1.R00.3383.D02.2509240621 09/24/2025
<4> Call Trace:
<4> <TASK>
<4> dump_stack_lvl+0xc1/0xf0
<4> dump_stack+0x10/0x20
<4> __might_resched+0x174/0x260
<4> rt_spin_lock+0x63/0x200
<4> ? intel_dmc_wl_get+0x3c/0x140 [xe]
<4> intel_dmc_wl_get+0x3c/0x140 [xe]
<4> intel_set_pipe_src_size+0x89/0xe0 [xe]
<4> intel_update_crtc+0x3c1/0x950 [xe]
<4> ? intel_pre_update_crtc+0x258/0x400 [xe]
<4> skl_commit_modeset_enables+0x217/0x720 [xe]
<4> intel_atomic_commit_tail+0xd4e/0x1af0 [xe]
<4> ? lock_release+0xce/0x2a0
<4> intel_atomic_commit+0x2e5/0x330 [xe]
<4> ? intel_atomic_commit+0x2e5/0x330 [xe]
<4> drm_atomic_commit+0xaf/0xf0
<4> ? __pfx___drm_printfn_info+0x10/0x10
<4> drm_mode_atomic_ioctl+0xbd5/0xe90
<4> ? lock_acquire+0xc4/0x2e0
<4> ? __pfx_drm_mode_atomic_ioctl+0x10/0x10
<4> drm_ioctl_kernel+0xb6/0x120
<4> drm_ioctl+0x2d7/0x5a0
<4> ? __pfx_drm_mode_atomic_ioctl+0x10/0x10
<4> ? rt_spin_unlock+0xa0/0x140
<4> ? __pm_runtime_resume+0x53/0x90
<4> xe_drm_ioctl+0x56/0x90 [xe]
<4> __x64_sys_ioctl+0xa8/0x110
<4> ? lock_acquire+0xc4/0x2e0
<4> x64_sys_call+0x1144/0x26a0
<4> do_syscall_64+0x93/0xae0
<4> ? lock_release+0xce/0x2a0
<4> ? __task_pid_nr_ns+0xd9/0x270
<4> ? do_syscall_64+0x1b7/0xae0
<4> ? find_held_lock+0x31/0x90
<4> ? __task_pid_nr_ns+0xcf/0x270
<4> ? __lock_acquire+0x43e/0x2860
<4> ? __task_pid_nr_ns+0xd9/0x270
<4> ? lock_acquire+0xc4/0x2e0
<4> ? find_held_lock+0x31/0x90
<4> ? __task_pid_nr_ns+0xcf/0x270
<4> ? lock_release+0xce/0x2a0
<4> ? __task_pid_nr_ns+0xd9/0x270
<4> ? do_syscall_64+0x1b7/0xae0
<4> ? do_syscall_64+0x1b7/0xae0
<4> entry_SYSCALL_64_after_hwframe+0x76/0x7e
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/display/intel_display.c | 36 ++++++++++----------
drivers/gpu/drm/i915/display/intel_vrr.c | 18 +++++-----
2 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index b18ce0c36a649..9cfa3fa915cf5 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1606,9 +1606,9 @@ static void hsw_set_linetime_wm(const struct intel_crtc_state *crtc_state)
struct intel_display *display = to_intel_display(crtc_state);
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
- intel_de_write(display, WM_LINETIME(crtc->pipe),
- HSW_LINETIME(crtc_state->linetime) |
- HSW_IPS_LINETIME(crtc_state->ips_linetime));
+ intel_de_write_fw(display, WM_LINETIME(crtc->pipe),
+ HSW_LINETIME(crtc_state->linetime) |
+ HSW_IPS_LINETIME(crtc_state->ips_linetime));
}
static void hsw_set_frame_start_delay(const struct intel_crtc_state *crtc_state)
@@ -2604,14 +2604,14 @@ void intel_set_m_n(struct intel_display *display,
i915_reg_t data_m_reg, i915_reg_t data_n_reg,
i915_reg_t link_m_reg, i915_reg_t link_n_reg)
{
- intel_de_write(display, data_m_reg, TU_SIZE(m_n->tu) | m_n->data_m);
- intel_de_write(display, data_n_reg, m_n->data_n);
- intel_de_write(display, link_m_reg, m_n->link_m);
+ intel_de_write_fw(display, data_m_reg, TU_SIZE(m_n->tu) | m_n->data_m);
+ intel_de_write_fw(display, data_n_reg, m_n->data_n);
+ intel_de_write_fw(display, link_m_reg, m_n->link_m);
/*
* On BDW+ writing LINK_N arms the double buffered update
* of all the M/N registers, so it must be written last.
*/
- intel_de_write(display, link_n_reg, m_n->link_n);
+ intel_de_write_fw(display, link_n_reg, m_n->link_n);
}
bool intel_cpu_transcoder_has_m2_n2(struct intel_display *display,
@@ -2798,9 +2798,9 @@ static void intel_set_transcoder_timings_lrr(const struct intel_crtc_state *crtc
}
if (DISPLAY_VER(display) >= 13) {
- intel_de_write(display,
- TRANS_SET_CONTEXT_LATENCY(display, cpu_transcoder),
- crtc_state->set_context_latency);
+ intel_de_write_fw(display,
+ TRANS_SET_CONTEXT_LATENCY(display, cpu_transcoder),
+ crtc_state->set_context_latency);
/*
* VBLANK_START not used by hw, just clear it
@@ -2816,9 +2816,9 @@ static void intel_set_transcoder_timings_lrr(const struct intel_crtc_state *crtc
* The hardware actually ignores TRANS_VBLANK.VBLANK_END in DP mode.
* But let's write it anyway to keep the state checker happy.
*/
- intel_de_write(display, TRANS_VBLANK(display, cpu_transcoder),
- VBLANK_START(crtc_vblank_start - 1) |
- VBLANK_END(crtc_vblank_end - 1));
+ intel_de_write_fw(display, TRANS_VBLANK(display, cpu_transcoder),
+ VBLANK_START(crtc_vblank_start - 1) |
+ VBLANK_END(crtc_vblank_end - 1));
/*
* For platforms that always use VRR Timing Generator, the VTOTAL.Vtotal
* bits are not required. Since the support for these bits is going to
@@ -2832,9 +2832,9 @@ static void intel_set_transcoder_timings_lrr(const struct intel_crtc_state *crtc
* The double buffer latch point for TRANS_VTOTAL
* is the transcoder's undelayed vblank.
*/
- intel_de_write(display, TRANS_VTOTAL(display, cpu_transcoder),
- VACTIVE(crtc_vdisplay - 1) |
- VTOTAL(crtc_vtotal - 1));
+ intel_de_write_fw(display, TRANS_VTOTAL(display, cpu_transcoder),
+ VACTIVE(crtc_vdisplay - 1) |
+ VTOTAL(crtc_vtotal - 1));
intel_vrr_set_fixed_rr_timings(crtc_state);
intel_vrr_transcoder_enable(crtc_state);
@@ -2851,8 +2851,8 @@ static void intel_set_pipe_src_size(const struct intel_crtc_state *crtc_state)
/* pipesrc controls the size that is scaled from, which should
* always be the user's requested size.
*/
- intel_de_write(display, PIPESRC(display, pipe),
- PIPESRC_WIDTH(width - 1) | PIPESRC_HEIGHT(height - 1));
+ intel_de_write_fw(display, PIPESRC(display, pipe),
+ PIPESRC_WIDTH(width - 1) | PIPESRC_HEIGHT(height - 1));
}
static bool intel_pipe_is_interlaced(const struct intel_crtc_state *crtc_state)
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index 8a957804cb970..a2d507b238322 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -318,12 +318,12 @@ void intel_vrr_set_fixed_rr_timings(const struct intel_crtc_state *crtc_state)
if (!intel_vrr_possible(crtc_state))
return;
- intel_de_write(display, TRANS_VRR_VMIN(display, cpu_transcoder),
- intel_vrr_fixed_rr_hw_vmin(crtc_state) - 1);
- intel_de_write(display, TRANS_VRR_VMAX(display, cpu_transcoder),
- intel_vrr_fixed_rr_hw_vmax(crtc_state) - 1);
- intel_de_write(display, TRANS_VRR_FLIPLINE(display, cpu_transcoder),
- intel_vrr_fixed_rr_hw_flipline(crtc_state) - 1);
+ intel_de_write_fw(display, TRANS_VRR_VMIN(display, cpu_transcoder),
+ intel_vrr_fixed_rr_hw_vmin(crtc_state) - 1);
+ intel_de_write_fw(display, TRANS_VRR_VMAX(display, cpu_transcoder),
+ intel_vrr_fixed_rr_hw_vmax(crtc_state) - 1);
+ intel_de_write_fw(display, TRANS_VRR_FLIPLINE(display, cpu_transcoder),
+ intel_vrr_fixed_rr_hw_flipline(crtc_state) - 1);
}
static
@@ -908,8 +908,8 @@ static void intel_vrr_tg_enable(const struct intel_crtc_state *crtc_state,
enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
u32 vrr_ctl;
- intel_de_write(display, TRANS_PUSH(display, cpu_transcoder),
- trans_vrr_push(crtc_state, false));
+ intel_de_write_fw(display, TRANS_PUSH(display, cpu_transcoder),
+ trans_vrr_push(crtc_state, false));
vrr_ctl = VRR_CTL_VRR_ENABLE | trans_vrr_ctl(crtc_state);
@@ -921,7 +921,7 @@ static void intel_vrr_tg_enable(const struct intel_crtc_state *crtc_state,
if (cmrr_enable)
vrr_ctl |= VRR_CTL_CMRR_ENABLE;
- intel_de_write(display, TRANS_VRR_CTL(display, cpu_transcoder), vrr_ctl);
+ intel_de_write_fw(display, TRANS_VRR_CTL(display, cpu_transcoder), vrr_ctl);
}
static void intel_vrr_tg_disable(const struct intel_crtc_state *old_crtc_state)
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 14/26] drm/i915/display: Make set_pipeconf use the fw variants
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (12 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 13/26] drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 15/26] drm/i915/display: Fix intel_lpe_audio_irq_handler for PREEMPT-RT Maarten Lankhorst
` (18 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx
Cc: dri-devel, Maarten Lankhorst, Sebastian Andrzej Siewior
The calls are used inside the critical section when updating
the gamma mode, and thus should use the _fw variants to prevent
locks.
Fixes following splat:
| BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
| in_atomic(): 0, irqs_disabled(): 1, non_block: 0, pid: 2115, name: modprobe
| preempt_count: 0, expected: 0
| RCU nest depth: 0, expected: 0
| 4 locks held by modprobe/2115:
| #0: ffff99b9425161a0 (&dev->mutex){....}-{4:4}, at: __driver_attach+0xaf/0x1c0
| #1: ffffaa224810f6c0 (crtc_ww_class_acquire){+.+.}-{0:0}, at: intel_initial_commit+0x4c/0x200 [i915]
| #2: ffffaa224810f6e8 (crtc_ww_class_mutex){+.+.}-{4:4}, at: intel_initial_commit+0x4c/0x200 [i915]
| #3: ffff99b94a6c9030 (&uncore->lock){+.+.}-{3:3}, at: gen6_write32+0x50/0x290 [i915]
| irq event stamp: 513344
| hardirqs last enabled at (513343): [<ffffffff8ba8d84c>] _raw_spin_unlock_irqrestore+0x4c/0x60
| hardirqs last disabled at (513344): [<ffffffffc1543646>] intel_pipe_update_start+0x216/0x2c0 [i915]
| softirqs last enabled at (512766): [<ffffffff8af045cf>] __local_bh_enable_ip+0x10f/0x170
| softirqs last disabled at (512712): [<ffffffffc14dfb6a>] __i915_request_queue+0x3a/0x70 [i915]
| CPU: 3 UID: 0 PID: 2115 Comm: modprobe Tainted: G W 6.18.0-rc1+ #17 PREEMPT_{RT,(lazy)}
| Tainted: [W]=WARN
| Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./Z68 Pro3-M, BIOS P2.30 06/29/2012
| Call Trace:
| <TASK>
| dump_stack_lvl+0x68/0x90
| __might_resched.cold+0xf0/0x12b
| rt_spin_lock+0x5f/0x200
| gen6_write32+0x50/0x290 [i915]
| ilk_set_pipeconf+0x12d/0x230 [i915]
| ilk_color_commit_arm+0x2d/0x70 [i915]
| intel_update_crtc+0x15b/0x690 [i915]
| intel_commit_modeset_enables+0xa6/0xd0 [i915]
| intel_atomic_commit_tail+0xd55/0x19a0 [i915]
| intel_atomic_commit+0x25d/0x2a0 [i915]
| drm_atomic_commit+0xad/0xe0 [drm]
| intel_initial_commit+0x16c/0x200 [i915]
| intel_display_driver_probe+0x2e/0x80 [i915]
| i915_driver_probe+0x791/0xc10 [i915]
| i915_pci_probe+0xd7/0x190 [i915]
Reported-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/display/intel_display.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 9cfa3fa915cf5..3a0cab5db2490 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -3035,8 +3035,9 @@ void i9xx_set_pipeconf(const struct intel_crtc_state *crtc_state)
val |= TRANSCONF_FRAME_START_DELAY(crtc_state->framestart_delay - 1);
- intel_de_write(display, TRANSCONF(display, cpu_transcoder), val);
- intel_de_posting_read(display, TRANSCONF(display, cpu_transcoder));
+ intel_de_write_fw(display, TRANSCONF(display, cpu_transcoder), val);
+ /* posting read */
+ intel_de_read_fw(display, TRANSCONF(display, cpu_transcoder));
}
static enum intel_output_format
@@ -3231,8 +3232,9 @@ void ilk_set_pipeconf(const struct intel_crtc_state *crtc_state)
val |= TRANSCONF_FRAME_START_DELAY(crtc_state->framestart_delay - 1);
val |= TRANSCONF_MSA_TIMING_DELAY(crtc_state->msa_timing_delay);
- intel_de_write(display, TRANSCONF(display, cpu_transcoder), val);
- intel_de_posting_read(display, TRANSCONF(display, cpu_transcoder));
+ intel_de_write_fw(display, TRANSCONF(display, cpu_transcoder), val);
+ /* posting read */
+ intel_de_read_fw(display, TRANSCONF(display, cpu_transcoder));
}
static void hsw_set_transconf(const struct intel_crtc_state *crtc_state)
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 15/26] drm/i915/display: Fix intel_lpe_audio_irq_handler for PREEMPT-RT
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (13 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 14/26] drm/i915/display: Make set_pipeconf use the fw variants Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 16/26] drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() + spin_lock() Maarten Lankhorst
` (17 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx
Cc: dri-devel, Maarten Lankhorst, Matthew Brost, Uma Shankar
The LPE audio interrupt comes from the i915 interrupt handler. It
should be in irq disabled context.
With PREEMPT_RT enabled, the IRQ handler is threaded.
Because intel_lpe_audio_irq_handler() may be called in threaded IRQ context,
generic_handle_irq_safe API disables the interrupts before calling LPE's
interrupt top half handler.
This fixes braswell audio issues with RT enabled.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_lpe_audio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_lpe_audio.c b/drivers/gpu/drm/i915/display/intel_lpe_audio.c
index 117b60656ca19..306b16889bc92 100644
--- a/drivers/gpu/drm/i915/display/intel_lpe_audio.c
+++ b/drivers/gpu/drm/i915/display/intel_lpe_audio.c
@@ -262,7 +262,7 @@ void intel_lpe_audio_irq_handler(struct intel_display *display)
if (!HAS_LPE_AUDIO(display))
return;
- ret = generic_handle_irq(display->audio.lpe.irq);
+ ret = generic_handle_irq_safe(display->audio.lpe.irq);
if (ret)
drm_err_ratelimited(display->drm,
"error handling LPE audio irq: %d\n", ret);
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 16/26] drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() + spin_lock()
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (14 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 15/26] drm/i915/display: Fix intel_lpe_audio_irq_handler for PREEMPT-RT Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 17/26] drm/i915: Drop the irqs_disabled() check Maarten Lankhorst
` (16 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx
Cc: dri-devel, Sebastian Andrzej Siewior, Clark Williams,
Maarten Lankhorst, Maarten Lankhorst
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
execlists_dequeue() is invoked from a function which uses
local_irq_disable() to disable interrupts so the spin_lock() behaves
like spin_lock_irq().
This breaks PREEMPT_RT because local_irq_disable() + spin_lock() is not
the same as spin_lock_irq().
execlists_dequeue_irq() and execlists_dequeue() has each one caller
only. If intel_engine_cs::active::lock is acquired and released with the
_irq suffix then it behaves almost as if execlists_dequeue() would be
invoked with disabled interrupts. The difference is the last part of the
function which is then invoked with enabled interrupts.
I can't tell if this makes a difference. From looking at it, it might
work to move the last unlock at the end of the function as I didn't find
anything that would acquire the lock again.
Reported-by: Clark Williams <williams@redhat.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
.../drm/i915/gt/intel_execlists_submission.c | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
index 1359fc9cb88ef..e11db81dca9c5 100644
--- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
+++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c
@@ -1300,7 +1300,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
* and context switches) submission.
*/
- spin_lock(&sched_engine->lock);
+ spin_lock_irq(&sched_engine->lock);
/*
* If the queue is higher priority than the last
@@ -1400,7 +1400,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
* Even if ELSP[1] is occupied and not worthy
* of timeslices, our queue might be.
*/
- spin_unlock(&sched_engine->lock);
+ spin_unlock_irq(&sched_engine->lock);
return;
}
}
@@ -1426,7 +1426,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
if (last && !can_merge_rq(last, rq)) {
spin_unlock(&ve->base.sched_engine->lock);
- spin_unlock(&engine->sched_engine->lock);
+ spin_unlock_irq(&engine->sched_engine->lock);
return; /* leave this for another sibling */
}
@@ -1588,7 +1588,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
*/
sched_engine->queue_priority_hint = queue_prio(sched_engine);
i915_sched_engine_reset_on_empty(sched_engine);
- spin_unlock(&sched_engine->lock);
+ spin_unlock_irq(&sched_engine->lock);
/*
* We can skip poking the HW if we ended up with exactly the same set
@@ -1614,13 +1614,6 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
}
}
-static void execlists_dequeue_irq(struct intel_engine_cs *engine)
-{
- local_irq_disable(); /* Suspend interrupts across request submission */
- execlists_dequeue(engine);
- local_irq_enable(); /* flush irq_work (e.g. breadcrumb enabling) */
-}
-
static void clear_ports(struct i915_request **ports, int count)
{
memset_p((void **)ports, NULL, count);
@@ -2475,7 +2468,7 @@ static void execlists_submission_tasklet(struct tasklet_struct *t)
}
if (!engine->execlists.pending[0]) {
- execlists_dequeue_irq(engine);
+ execlists_dequeue(engine);
start_timeslice(engine);
}
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 17/26] drm/i915: Drop the irqs_disabled() check
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (15 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 16/26] drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() + spin_lock() Maarten Lankhorst
@ 2026-03-10 11:56 ` Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 18/26] drm/i915/guc: Consider also RCU depth in busy loop Maarten Lankhorst
` (15 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
To: intel-xe, intel-gfx
Cc: dri-devel, Sebastian Andrzej Siewior, Maarten Lankhorst,
Tvrtko Ursulin, Maarten Lankhorst
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
The !irqs_disabled() check triggers on PREEMPT_RT even with
i915_sched_engine::lock acquired. The reason is the lock is transformed
into a sleeping lock on PREEMPT_RT and does not disable interrupts.
There is no need to check for disabled interrupts. The lockdep
annotation below already check if the lock has been acquired by the
caller and will yell if the interrupts are not disabled.
Remove the !irqs_disabled() check.
Reported-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Acked-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/i915_request.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index d2c7b1090df08..f66f8efc70629 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -610,7 +610,6 @@ bool __i915_request_submit(struct i915_request *request)
RQ_TRACE(request, "\n");
- GEM_BUG_ON(!irqs_disabled());
lockdep_assert_held(&engine->sched_engine->lock);
/*
@@ -719,7 +718,6 @@ void __i915_request_unsubmit(struct i915_request *request)
*/
RQ_TRACE(request, "\n");
- GEM_BUG_ON(!irqs_disabled());
lockdep_assert_held(&engine->sched_engine->lock);
/*
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 18/26] drm/i915/guc: Consider also RCU depth in busy loop.
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (16 preceding siblings ...)
2026-03-10 11:56 ` [PATCH v7 17/26] drm/i915: Drop the irqs_disabled() check Maarten Lankhorst
@ 2026-03-10 11:57 ` Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 19/26] drm/i915/gt: Fix selftests on PREEMPT_RT Maarten Lankhorst
` (14 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:57 UTC (permalink / raw)
To: intel-xe, intel-gfx
Cc: dri-devel, Sebastian Andrzej Siewior, John B. Wyatt IV,
Rodrigo Vivi, Maarten Lankhorst
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
intel_guc_send_busy_loop() looks at in_atomic() and irqs_disabled() to
decide if it should busy-spin while waiting or if it may sleep.
Both checks will report false on PREEMPT_RT if sleeping spinlocks are
acquired leading to RCU splats while the function sleeps.
Check also if RCU has been disabled.
Reported-by: "John B. Wyatt IV" <jwyatt@redhat.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/gt/uc/intel_guc.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc.h b/drivers/gpu/drm/i915/gt/uc/intel_guc.h
index 053780f562c1a..b25fa8f4dc4bd 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc.h
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc.h
@@ -362,7 +362,7 @@ static inline int intel_guc_send_busy_loop(struct intel_guc *guc,
{
int err;
unsigned int sleep_period_ms = 1;
- bool not_atomic = !in_atomic() && !irqs_disabled();
+ bool not_atomic = !in_atomic() && !irqs_disabled() && !rcu_preempt_depth();
/*
* FIXME: Have caller pass in if we are in an atomic context to avoid
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 19/26] drm/i915/gt: Fix selftests on PREEMPT_RT
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (17 preceding siblings ...)
2026-03-10 11:57 ` [PATCH v7 18/26] drm/i915/guc: Consider also RCU depth in busy loop Maarten Lankhorst
@ 2026-03-10 11:57 ` Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 20/26] drm/i915/gt: Set stop_timeout() correctly on PREEMPT-RT Maarten Lankhorst
` (13 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:57 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/gt/selftest_engine_pm.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/selftest_engine_pm.c b/drivers/gpu/drm/i915/gt/selftest_engine_pm.c
index 10e556a7eac45..c1eff9edd8a5e 100644
--- a/drivers/gpu/drm/i915/gt/selftest_engine_pm.c
+++ b/drivers/gpu/drm/i915/gt/selftest_engine_pm.c
@@ -277,11 +277,11 @@ static int live_engine_busy_stats(void *arg)
st_engine_heartbeat_disable(engine);
ENGINE_TRACE(engine, "measuring idle time\n");
- preempt_disable();
+ migrate_disable();
de = intel_engine_get_busy_time(engine, &t[0]);
udelay(100);
de = ktime_sub(intel_engine_get_busy_time(engine, &t[1]), de);
- preempt_enable();
+ migrate_enable();
dt = ktime_sub(t[1], t[0]);
if (de < 0 || de > 10) {
pr_err("%s: reported %lldns [%d%%] busyness while sleeping [for %lldns]\n",
@@ -316,11 +316,11 @@ static int live_engine_busy_stats(void *arg)
}
ENGINE_TRACE(engine, "measuring busy time\n");
- preempt_disable();
+ migrate_disable();
de = intel_engine_get_busy_time(engine, &t[0]);
mdelay(100);
de = ktime_sub(intel_engine_get_busy_time(engine, &t[1]), de);
- preempt_enable();
+ migrate_enable();
dt = ktime_sub(t[1], t[0]);
if (100 * de < 95 * dt || 95 * de > 100 * dt) {
pr_err("%s: reported %lldns [%d%%] busyness while spinning [for %lldns]\n",
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 20/26] drm/i915/gt: Set stop_timeout() correctly on PREEMPT-RT
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (18 preceding siblings ...)
2026-03-10 11:57 ` [PATCH v7 19/26] drm/i915/gt: Fix selftests on PREEMPT_RT Maarten Lankhorst
@ 2026-03-10 11:57 ` Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 21/26] drm/i915/display: Remove uncore lock from vlv_atomic_update_fifo Maarten Lankhorst
` (12 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:57 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
Also check if RCU is disabled for PREEMPT-RT, which is the case when
local_bh_disable() is called.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/gt/intel_engine_cs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index c0fd349a4600c..9dd9665128caa 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -1607,7 +1607,7 @@ u64 intel_engine_get_last_batch_head(const struct intel_engine_cs *engine)
static unsigned long stop_timeout(const struct intel_engine_cs *engine)
{
- if (in_atomic() || irqs_disabled()) /* inside atomic preempt-reset? */
+ if (in_atomic() || irqs_disabled() || rcu_preempt_depth()) /* inside atomic preempt-reset? */
return 0;
/*
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 21/26] drm/i915/display: Remove uncore lock from vlv_atomic_update_fifo
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (19 preceding siblings ...)
2026-03-10 11:57 ` [PATCH v7 20/26] drm/i915/gt: Set stop_timeout() correctly on PREEMPT-RT Maarten Lankhorst
@ 2026-03-10 11:57 ` Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 22/26] drm/i915: Use sleeping selftests for igt_atomic on PREEMPT_RT Maarten Lankhorst
` (11 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:57 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
TODO: Grab uncore lock during entire vblank evasion before disabling
interrupts, and check what breaks?
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/display/i9xx_wm.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/i9xx_wm.c b/drivers/gpu/drm/i915/display/i9xx_wm.c
index 9e170e79dcf67..8e1b3aced9a98 100644
--- a/drivers/gpu/drm/i915/display/i9xx_wm.c
+++ b/drivers/gpu/drm/i915/display/i9xx_wm.c
@@ -1863,7 +1863,6 @@ static void vlv_atomic_update_fifo(struct intel_atomic_state *state,
struct intel_crtc *crtc)
{
struct intel_display *display = to_intel_display(crtc);
- struct intel_uncore *uncore = to_intel_uncore(display->drm);
const struct intel_crtc_state *crtc_state =
intel_atomic_get_new_crtc_state(state, crtc);
const struct vlv_fifo_state *fifo_state =
@@ -1892,7 +1891,6 @@ static void vlv_atomic_update_fifo(struct intel_atomic_state *state,
* intel_pipe_update_start() has already disabled interrupts
* for us, so a plain spin_lock() is sufficient here.
*/
- spin_lock(&uncore->lock);
switch (crtc->pipe) {
case PIPE_A:
@@ -1951,8 +1949,6 @@ static void vlv_atomic_update_fifo(struct intel_atomic_state *state,
}
intel_de_read_fw(display, DSPARB(display));
-
- spin_unlock(&uncore->lock);
}
#undef VLV_FIFO
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 22/26] drm/i915: Use sleeping selftests for igt_atomic on PREEMPT_RT
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (20 preceding siblings ...)
2026-03-10 11:57 ` [PATCH v7 21/26] drm/i915/display: Remove uncore lock from vlv_atomic_update_fifo Maarten Lankhorst
@ 2026-03-10 11:57 ` Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 23/26] Revert "drm/i915: Depend on !PREEMPT_RT." Maarten Lankhorst
` (10 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:57 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
This makes the i915 selftests slightly happier, especially
related to GPU reset.
I believe this may be a better approach than trying to convert
uncore->lock to raw_spinlock
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/selftests/igt_atomic.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/gpu/drm/i915/selftests/igt_atomic.c b/drivers/gpu/drm/i915/selftests/igt_atomic.c
index fb506b6990956..8ae39cf570b76 100644
--- a/drivers/gpu/drm/i915/selftests/igt_atomic.c
+++ b/drivers/gpu/drm/i915/selftests/igt_atomic.c
@@ -39,7 +39,14 @@ static void __hardirq_end(void)
local_irq_enable();
}
+static void __maybe_unused __nop(void)
+{}
+
const struct igt_atomic_section igt_atomic_phases[] = {
+#if IS_ENABLED(CONFIG_PREEMPT_RT)
+ { "sleeping", __nop, __nop },
+ { },
+#endif
{ "preempt", __preempt_begin, __preempt_end },
{ "softirq", __softirq_begin, __softirq_end },
{ "hardirq", __hardirq_begin, __hardirq_end },
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 23/26] Revert "drm/i915: Depend on !PREEMPT_RT."
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (21 preceding siblings ...)
2026-03-10 11:57 ` [PATCH v7 22/26] drm/i915: Use sleeping selftests for igt_atomic on PREEMPT_RT Maarten Lankhorst
@ 2026-03-10 11:57 ` Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 24/26] PREEMPT_RT injection Maarten Lankhorst
` (9 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:57 UTC (permalink / raw)
To: intel-xe, intel-gfx
Cc: dri-devel, Sebastian Andrzej Siewior, Tvrtko Ursulin,
Maarten Lankhorst
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Once the known issues are addressed, it should be safe to enable the
driver.
Acked-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/Kconfig | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index 5e939004b6463..40a9234e6e5dc 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -3,7 +3,6 @@ config DRM_I915
tristate "Intel 8xx/9xx/G3x/G4x/HD Graphics"
depends on DRM
depends on X86 && PCI
- depends on !PREEMPT_RT
select INTEL_GTT if X86
select INTERVAL_TREE
# we need shmfs for the swappable backing store, and in particular
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 24/26] PREEMPT_RT injection
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (22 preceding siblings ...)
2026-03-10 11:57 ` [PATCH v7 23/26] Revert "drm/i915: Depend on !PREEMPT_RT." Maarten Lankhorst
@ 2026-03-10 11:57 ` Maarten Lankhorst
2026-03-13 9:36 ` kernel test robot
2026-03-10 11:57 ` [PATCH v7 25/26] FOR-CI: bump MAX_STACK_TRACE_ENTRIES Maarten Lankhorst
` (8 subsequent siblings)
32 siblings, 1 reply; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:57 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/Kconfig.debug | 15 ---------------
drivers/gpu/drm/xe/Kconfig.debug | 5 +++++
kernel/Kconfig.preempt | 4 ++--
3 files changed, 7 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
index 3562a02ef7adc..0ab10ff41e38d 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -233,21 +233,6 @@ config DRM_I915_LOW_LEVEL_TRACEPOINTS
If in doubt, say "N".
-config DRM_I915_DEBUG_VBLANK_EVADE
- bool "Enable extra debug warnings for vblank evasion"
- depends on DRM_I915
- default n
- help
- Choose this option to turn on extra debug warnings for the
- vblank evade mechanism. This gives a warning every time the
- the deadline allotted for the vblank evade critical section
- is exceeded, even if there isn't an actual risk of missing
- the vblank.
-
- Recommended for driver developers only.
-
- If in doubt, say "N".
-
config DRM_I915_DEBUG_RUNTIME_PM
bool "Enable extra state checking for runtime PM"
depends on DRM_I915
diff --git a/drivers/gpu/drm/xe/Kconfig.debug b/drivers/gpu/drm/xe/Kconfig.debug
index 01227c77f6d70..1d5f11c6e88f3 100644
--- a/drivers/gpu/drm/xe/Kconfig.debug
+++ b/drivers/gpu/drm/xe/Kconfig.debug
@@ -30,6 +30,11 @@ config DRM_XE_DEBUG
If in doubt, say "N".
+config DRM_I915_DEBUG_VBLANK_EVADE
+ def_bool y
+ depends on DRM_XE
+
+
config DRM_XE_DEBUG_VM
bool "Enable extra VM debugging info"
default n
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index 88c594c6d7fcd..11bec9be95405 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -90,9 +90,9 @@ config PREEMPT_LAZY
endchoice
config PREEMPT_RT
- bool "Fully Preemptible Kernel (Real-Time)"
- depends on EXPERT && ARCH_SUPPORTS_RT && !COMPILE_TEST
+ def_bool y
select PREEMPTION
+ depends on ARCH_SUPPORTS_RT
help
This option turns the kernel into a real-time kernel by replacing
various locking primitives (spinlocks, rwlocks, etc.) with
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 25/26] FOR-CI: bump MAX_STACK_TRACE_ENTRIES
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (23 preceding siblings ...)
2026-03-10 11:57 ` [PATCH v7 24/26] PREEMPT_RT injection Maarten Lankhorst
@ 2026-03-10 11:57 ` Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work Maarten Lankhorst
` (7 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:57 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst
We're hitting a bug in CI where MAX_STACK_TRACE_ENTRIES is set too low.
My guess is the repeated loading/unloading is creating multiples of the
same entries. As a hack just reset lockdep. This might only be necessary
for CI + PREEMPT_RT.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
lib/Kconfig.debug | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 56ec7173cb7b6..b8d7e6dc345e9 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1625,8 +1625,8 @@ config LOCKDEP_CHAINS_BITS
config LOCKDEP_STACK_TRACE_BITS
int "Size for MAX_STACK_TRACE_ENTRIES (as Nth power of 2)"
depends on LOCKDEP && !LOCKDEP_SMALL
- range 10 26
- default 19
+ range 22 26
+ default 22
help
Try increasing this value if you hit "BUG: MAX_STACK_TRACE_ENTRIES too low!" message.
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (24 preceding siblings ...)
2026-03-10 11:57 ` [PATCH v7 25/26] FOR-CI: bump MAX_STACK_TRACE_ENTRIES Maarten Lankhorst
@ 2026-03-10 11:57 ` Maarten Lankhorst
2026-03-10 17:04 ` Sebastian Andrzej Siewior
2026-03-10 17:22 ` Sebastian Andrzej Siewior
2026-03-10 12:11 ` ✗ CI.checkpatch: warning for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14) Patchwork
` (6 subsequent siblings)
32 siblings, 2 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:57 UTC (permalink / raw)
To: intel-xe, intel-gfx
Cc: dri-devel, Sebastian Andrzej Siewior, Maarten Lankhorst
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
IRQ-Work (FIFO-1) will be preempted by the threaded-interrupt (FIFO-50)
and the interrupt will poll on signaler_active while the irq-work can't
make progress.
Solve this by adding a spinlock to prevent starvation and force
completion.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/gt/intel_breadcrumbs.c | 8 +++++++-
drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h | 1 +
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
index c10ac0ab3bfa8..c2b174bfa1418 100644
--- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
+++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
@@ -209,6 +209,7 @@ static void signal_irq_work(struct irq_work *work)
intel_breadcrumbs_disarm_irq(b);
rcu_read_lock();
+ spin_lock(&b->signaler_active_sync);
atomic_inc(&b->signaler_active);
list_for_each_entry_rcu(ce, &b->signalers, signal_link) {
struct i915_request *rq;
@@ -246,6 +247,7 @@ static void signal_irq_work(struct irq_work *work)
}
}
atomic_dec(&b->signaler_active);
+ spin_unlock(&b->signaler_active_sync);
rcu_read_unlock();
llist_for_each_safe(signal, sn, signal) {
@@ -290,6 +292,7 @@ intel_breadcrumbs_create(struct intel_engine_cs *irq_engine)
init_llist_head(&b->signaled_requests);
spin_lock_init(&b->irq_lock);
+ spin_lock_init(&b->signaler_active_sync);
init_irq_work(&b->irq_work, signal_irq_work);
b->irq_engine = irq_engine;
@@ -487,8 +490,11 @@ void intel_context_remove_breadcrumbs(struct intel_context *ce,
if (release)
intel_context_put(ce);
- while (atomic_read(&b->signaler_active))
+ while (atomic_read(&b->signaler_active)) {
+ spin_lock(&b->signaler_active_sync);
+ spin_unlock(&b->signaler_active_sync);
cpu_relax();
+ }
}
static void print_signals(struct intel_breadcrumbs *b, struct drm_printer *p)
diff --git a/drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h b/drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h
index bdf09fd67b6e7..28dae32628aab 100644
--- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h
@@ -40,6 +40,7 @@ struct intel_breadcrumbs {
struct list_head signalers;
struct llist_head signaled_requests;
atomic_t signaler_active;
+ spinlock_t signaler_active_sync;
spinlock_t irq_lock; /* protects the interrupt from hardirq context */
struct irq_work irq_work; /* for use from inside irq_lock */
--
2.51.0
^ permalink raw reply related [flat|nested] 45+ messages in thread
* ✗ CI.checkpatch: warning for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (25 preceding siblings ...)
2026-03-10 11:57 ` [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work Maarten Lankhorst
@ 2026-03-10 12:11 ` Patchwork
2026-03-10 12:12 ` ✓ CI.KUnit: success " Patchwork
` (5 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Patchwork @ 2026-03-10 12:11 UTC (permalink / raw)
To: Sebastian Andrzej Siewior; +Cc: intel-xe
== Series Details ==
Series: drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
URL : https://patchwork.freedesktop.org/series/159034/
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
1f57ba1afceae32108bd24770069f764d940a0e4
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 7fd9e411743903c36fc1e625dd8de6900d4f5acb
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: Tue Mar 10 12:57:08 2026 +0100
drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
IRQ-Work (FIFO-1) will be preempted by the threaded-interrupt (FIFO-50)
and the interrupt will poll on signaler_active while the irq-work can't
make progress.
Solve this by adding a spinlock to prevent starvation and force
completion.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
+ /mt/dim checkpatch 77e176657e782bb81270c230d1cfec91f7707162 drm-intel
79bd7d0764c3 drm/vblank_work: Add methods to schedule vblank_work in 2 stages
-:116: CHECK:LINE_SPACING: Please don't use multiple blank lines
#116: FILE: drivers/gpu/drm/drm_vblank_work.c:180:
+
total: 0 errors, 0 warnings, 1 checks, 162 lines checked
639b9c115d50 drm/vblank: Add a 2-stage version of drm_crtc_arm_vblank_event
652ee2c41511 drm/intel/display: Make intel_crtc_arm_vblank_event static
3986bb1e7e09 drm/intel/display: Convert vblank event handling to 2-stage arming
-:139: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#139: FILE: drivers/gpu/drm/i915/display/intel_crtc.c:752:
+ drm_crtc_accurate_vblank_count(&crtc->base) + 1,
-:142: WARNING:LONG_LINE_COMMENT: line length of 110 exceeds 100 columns
#142: FILE: drivers/gpu/drm/i915/display/intel_crtc.c:755:
+ /* Remove plane from atomic state, cleanup/free is done from vblank worker. */
total: 0 errors, 2 warnings, 0 checks, 120 lines checked
722856e23869 drm/i915/display: Move vblank put until after critical section
e576e647adfe drm/i915/display: Remove locking from intel_vblank_evade critical section
-:47: WARNING:LONG_LINE: line length of 102 exceeds 100 columns
#47: FILE: drivers/gpu/drm/i915/display/intel_vblank.c:735:
+static bool scanline_in_safe_range(struct intel_vblank_evade_ctx *evade, int *scanline, bool unlocked)
-:91: WARNING:LONG_LINE: line length of 107 exceeds 100 columns
#91: FILE: drivers/gpu/drm/i915/display/intel_vblank.c:767:
+ timeout = wait_event_timeout(*wq, scanline_in_safe_range(evade, &scanline, true), timeout);
total: 0 errors, 2 warnings, 0 checks, 78 lines checked
4183ddfb90b6 drm/i915/display: Handle vlv dsi workaround in scanline_in_safe_range too
b86bc8bd77b0 drm/i915: Use preempt_disable/enable_rt() where recommended
-:7: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#7:
ad3543ede630f ("drm/intel: Push get_scanout_position() timestamping into kms driver.")
-:46: WARNING:LINE_SPACING: Missing a blank line after declarations
#46: FILE: drivers/gpu/drm/i915/display/intel_vblank.c:324:
+ struct intel_uncore *uncore = to_intel_uncore(display->drm);
+ spin_lock_irqsave(&uncore->lock, *flags);
-:53: WARNING:LINE_SPACING: Missing a blank line after declarations
#53: FILE: drivers/gpu/drm/i915/display/intel_vblank.c:331:
+ struct intel_uncore *uncore = to_intel_uncore(display->drm);
+ spin_unlock_irqrestore(&uncore->lock, flags);
total: 0 errors, 3 warnings, 0 checks, 78 lines checked
5cb67d624443 drm/i915/display: Make get_vblank_counter use intel_de_read_fw()
-:8: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#8:
<3> BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
total: 0 errors, 1 warnings, 0 checks, 8 lines checked
fa92857210d4 drm/i915/display: Do not take uncore lock in i915_get_vblank_counter
-:43: ERROR:CODE_INDENT: code indent should use tabs where possible
#43: FILE: drivers/gpu/drm/i915/display/intel_vblank.c:113:
+^I^I^I^I PIPEFRAME(display, pipe));$
-:43: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#43: FILE: drivers/gpu/drm/i915/display/intel_vblank.c:113:
+ frame = intel_de_read64_2x32_fw(display, PIPEFRAMEPIXEL(display, pipe),
+ PIPEFRAME(display, pipe));
-:60: WARNING:LINE_SPACING: Missing a blank line after declarations
#60: FILE: drivers/gpu/drm/i915/intel_uncore.h:457:
+ u32 upper, lower, old_upper, loop = 0;
+ upper = intel_uncore_read_fw(uncore, upper_reg);
total: 1 errors, 1 warnings, 1 checks, 85 lines checked
3ca6b97d05b4 drm/i915/display: Make icl_dsi_frame_update use _fw too
4cd533806948 drm/i915/display: Use intel_de_read/write_fw in colorops
-:123: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#123: FILE: drivers/gpu/drm/i915/display/intel_color.c:1054:
+ intel_de_write_fw(display, GAMMA_MODE(crtc->pipe),
crtc_state->gamma_mode);
-:143: WARNING:MISSING_FIXES_TAG: The commit message has 'Call Trace:', perhaps it also needs a 'Fixes:' tag?
total: 0 errors, 1 warnings, 1 checks, 24 lines checked
765abf38cf39 drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset
-:14: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#14:
<3> BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
-:203: WARNING:MISSING_FIXES_TAG: The commit message has 'Call Trace:', perhaps it also needs a 'Fixes:' tag?
total: 0 errors, 2 warnings, 0 checks, 112 lines checked
ae5a92ca1c69 drm/i915/display: Make set_pipeconf use the fw variants
-:11: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#11:
| BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
-:46: WARNING:BAD_REPORTED_BY_LINK: Reported-by: should be immediately followed by Closes: with a URL to the report
#46:
Reported-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
-:76: WARNING:MISSING_FIXES_TAG: The commit message has 'Call Trace:', perhaps it also needs a 'Fixes:' tag?
total: 0 errors, 3 warnings, 0 checks, 22 lines checked
d1a9944e7d20 drm/i915/display: Fix intel_lpe_audio_irq_handler for PREEMPT-RT
-:11: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#11:
Because intel_lpe_audio_irq_handler() may be called in threaded IRQ context,
total: 0 errors, 1 warnings, 0 checks, 8 lines checked
dd15c45c1bf3 drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() + spin_lock()
-:22: WARNING:BAD_REPORTED_BY_LINK: Reported-by: should be immediately followed by Closes: with a URL to the report
#22:
Reported-by: Clark Williams <williams@redhat.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
total: 0 errors, 1 warnings, 0 checks, 53 lines checked
de19a909607a drm/i915: Drop the irqs_disabled() check
-:16: WARNING:BAD_REPORTED_BY_LINK: Reported-by: should be immediately followed by Closes: with a URL to the report
#16:
Reported-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Acked-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
total: 0 errors, 1 warnings, 0 checks, 14 lines checked
0d88e188d794 drm/i915/guc: Consider also RCU depth in busy loop.
-:13: WARNING:BAD_REPORTED_BY_LINK: Reported-by: should be immediately followed by Closes: with a URL to the report
#13:
Reported-by: "John B. Wyatt IV" <jwyatt@redhat.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
-:27: ERROR:IN_ATOMIC: do not use in_atomic in drivers
#27: FILE: drivers/gpu/drm/i915/gt/uc/intel_guc.h:365:
+ bool not_atomic = !in_atomic() && !irqs_disabled() && !rcu_preempt_depth();
total: 1 errors, 1 warnings, 0 checks, 8 lines checked
196c87b569a0 drm/i915/gt: Fix selftests on PREEMPT_RT
-:7: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one
total: 0 errors, 1 warnings, 0 checks, 26 lines checked
ed35927713c8 drm/i915/gt: Set stop_timeout() correctly on PREEMPT-RT
-:20: WARNING:LONG_LINE_COMMENT: line length of 101 exceeds 100 columns
#20: FILE: drivers/gpu/drm/i915/gt/intel_engine_cs.c:1610:
+ if (in_atomic() || irqs_disabled() || rcu_preempt_depth()) /* inside atomic preempt-reset? */
-:20: ERROR:IN_ATOMIC: do not use in_atomic in drivers
#20: FILE: drivers/gpu/drm/i915/gt/intel_engine_cs.c:1610:
+ if (in_atomic() || irqs_disabled() || rcu_preempt_depth()) /* inside atomic preempt-reset? */
total: 1 errors, 1 warnings, 0 checks, 8 lines checked
b11495d3f633 drm/i915/display: Remove uncore lock from vlv_atomic_update_fifo
f7913847b960 drm/i915: Use sleeping selftests for igt_atomic on PREEMPT_RT
86cd54693e7e Revert "drm/i915: Depend on !PREEMPT_RT."
e1708d8ad928 PREEMPT_RT injection
-:7: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one
total: 0 errors, 1 warnings, 0 checks, 43 lines checked
c5087b289fb2 FOR-CI: bump MAX_STACK_TRACE_ENTRIES
7fd9e4117439 drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
-:65: CHECK:UNCOMMENTED_DEFINITION: spinlock_t definition without comment
#65: FILE: drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h:43:
+ spinlock_t signaler_active_sync;
-:68: ERROR:NO_AUTHOR_SIGN_OFF: Missing Signed-off-by: line by nominal patch author 'Sebastian Andrzej Siewior <bigeasy@linutronix.de>'
total: 1 errors, 0 warnings, 1 checks, 40 lines checked
^ permalink raw reply [flat|nested] 45+ messages in thread
* ✓ CI.KUnit: success for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (26 preceding siblings ...)
2026-03-10 12:11 ` ✗ CI.checkpatch: warning for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14) Patchwork
@ 2026-03-10 12:12 ` Patchwork
2026-03-10 12:27 ` ✗ CI.checksparse: warning " Patchwork
` (4 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Patchwork @ 2026-03-10 12:12 UTC (permalink / raw)
To: Sebastian Andrzej Siewior; +Cc: intel-xe
== Series Details ==
Series: drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
URL : https://patchwork.freedesktop.org/series/159034/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[12:11:32] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:11:37] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[12:12:07] Starting KUnit Kernel (1/1)...
[12:12:07] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:12:07] ================== guc_buf (11 subtests) ===================
[12:12:07] [PASSED] test_smallest
[12:12:07] [PASSED] test_largest
[12:12:07] [PASSED] test_granular
[12:12:07] [PASSED] test_unique
[12:12:07] [PASSED] test_overlap
[12:12:07] [PASSED] test_reusable
[12:12:07] [PASSED] test_too_big
[12:12:07] [PASSED] test_flush
[12:12:07] [PASSED] test_lookup
[12:12:07] [PASSED] test_data
[12:12:07] [PASSED] test_class
[12:12:07] ===================== [PASSED] guc_buf =====================
[12:12:07] =================== guc_dbm (7 subtests) ===================
[12:12:07] [PASSED] test_empty
[12:12:07] [PASSED] test_default
[12:12:07] ======================== test_size ========================
[12:12:07] [PASSED] 4
[12:12:07] [PASSED] 8
[12:12:07] [PASSED] 32
[12:12:07] [PASSED] 256
[12:12:07] ==================== [PASSED] test_size ====================
[12:12:07] ======================= test_reuse ========================
[12:12:07] [PASSED] 4
[12:12:07] [PASSED] 8
[12:12:07] [PASSED] 32
[12:12:07] [PASSED] 256
[12:12:07] =================== [PASSED] test_reuse ====================
[12:12:07] =================== test_range_overlap ====================
[12:12:07] [PASSED] 4
[12:12:07] [PASSED] 8
[12:12:07] [PASSED] 32
[12:12:07] [PASSED] 256
[12:12:07] =============== [PASSED] test_range_overlap ================
[12:12:07] =================== test_range_compact ====================
[12:12:07] [PASSED] 4
[12:12:07] [PASSED] 8
[12:12:07] [PASSED] 32
[12:12:07] [PASSED] 256
[12:12:07] =============== [PASSED] test_range_compact ================
[12:12:07] ==================== test_range_spare =====================
[12:12:07] [PASSED] 4
[12:12:07] [PASSED] 8
[12:12:07] [PASSED] 32
[12:12:07] [PASSED] 256
[12:12:07] ================ [PASSED] test_range_spare =================
[12:12:07] ===================== [PASSED] guc_dbm =====================
[12:12:07] =================== guc_idm (6 subtests) ===================
[12:12:07] [PASSED] bad_init
[12:12:07] [PASSED] no_init
[12:12:07] [PASSED] init_fini
[12:12:07] [PASSED] check_used
[12:12:07] [PASSED] check_quota
[12:12:07] [PASSED] check_all
[12:12:07] ===================== [PASSED] guc_idm =====================
[12:12:07] ================== no_relay (3 subtests) ===================
[12:12:07] [PASSED] xe_drops_guc2pf_if_not_ready
[12:12:07] [PASSED] xe_drops_guc2vf_if_not_ready
[12:12:07] [PASSED] xe_rejects_send_if_not_ready
[12:12:07] ==================== [PASSED] no_relay =====================
[12:12:07] ================== pf_relay (14 subtests) ==================
[12:12:07] [PASSED] pf_rejects_guc2pf_too_short
[12:12:07] [PASSED] pf_rejects_guc2pf_too_long
[12:12:07] [PASSED] pf_rejects_guc2pf_no_payload
[12:12:07] [PASSED] pf_fails_no_payload
[12:12:07] [PASSED] pf_fails_bad_origin
[12:12:07] [PASSED] pf_fails_bad_type
[12:12:07] [PASSED] pf_txn_reports_error
[12:12:07] [PASSED] pf_txn_sends_pf2guc
[12:12:07] [PASSED] pf_sends_pf2guc
[12:12:07] [SKIPPED] pf_loopback_nop
[12:12:07] [SKIPPED] pf_loopback_echo
[12:12:07] [SKIPPED] pf_loopback_fail
[12:12:07] [SKIPPED] pf_loopback_busy
[12:12:07] [SKIPPED] pf_loopback_retry
[12:12:07] ==================== [PASSED] pf_relay =====================
[12:12:07] ================== vf_relay (3 subtests) ===================
[12:12:07] [PASSED] vf_rejects_guc2vf_too_short
[12:12:07] [PASSED] vf_rejects_guc2vf_too_long
[12:12:07] [PASSED] vf_rejects_guc2vf_no_payload
[12:12:07] ==================== [PASSED] vf_relay =====================
[12:12:07] ================ pf_gt_config (9 subtests) =================
[12:12:07] [PASSED] fair_contexts_1vf
[12:12:07] [PASSED] fair_doorbells_1vf
[12:12:07] [PASSED] fair_ggtt_1vf
[12:12:08] ====================== fair_vram_1vf ======================
[12:12:08] [PASSED] 3.50 GiB
[12:12:08] [PASSED] 11.5 GiB
[12:12:08] [PASSED] 15.5 GiB
[12:12:08] [PASSED] 31.5 GiB
[12:12:08] [PASSED] 63.5 GiB
[12:12:08] [PASSED] 1.91 GiB
[12:12:08] ================== [PASSED] fair_vram_1vf ==================
[12:12:08] ================ fair_vram_1vf_admin_only =================
[12:12:08] [PASSED] 3.50 GiB
[12:12:08] [PASSED] 11.5 GiB
[12:12:08] [PASSED] 15.5 GiB
[12:12:08] [PASSED] 31.5 GiB
[12:12:08] [PASSED] 63.5 GiB
[12:12:08] [PASSED] 1.91 GiB
[12:12:08] ============ [PASSED] fair_vram_1vf_admin_only =============
[12:12:08] ====================== fair_contexts ======================
[12:12:08] [PASSED] 1 VF
[12:12:08] [PASSED] 2 VFs
[12:12:08] [PASSED] 3 VFs
[12:12:08] [PASSED] 4 VFs
[12:12:08] [PASSED] 5 VFs
[12:12:08] [PASSED] 6 VFs
[12:12:08] [PASSED] 7 VFs
[12:12:08] [PASSED] 8 VFs
[12:12:08] [PASSED] 9 VFs
[12:12:08] [PASSED] 10 VFs
[12:12:08] [PASSED] 11 VFs
[12:12:08] [PASSED] 12 VFs
[12:12:08] [PASSED] 13 VFs
[12:12:08] [PASSED] 14 VFs
[12:12:08] [PASSED] 15 VFs
[12:12:08] [PASSED] 16 VFs
[12:12:08] [PASSED] 17 VFs
[12:12:08] [PASSED] 18 VFs
[12:12:08] [PASSED] 19 VFs
[12:12:08] [PASSED] 20 VFs
[12:12:08] [PASSED] 21 VFs
[12:12:08] [PASSED] 22 VFs
[12:12:08] [PASSED] 23 VFs
[12:12:08] [PASSED] 24 VFs
[12:12:08] [PASSED] 25 VFs
[12:12:08] [PASSED] 26 VFs
[12:12:08] [PASSED] 27 VFs
[12:12:08] [PASSED] 28 VFs
[12:12:08] [PASSED] 29 VFs
[12:12:08] [PASSED] 30 VFs
[12:12:08] [PASSED] 31 VFs
[12:12:08] [PASSED] 32 VFs
[12:12:08] [PASSED] 33 VFs
[12:12:08] [PASSED] 34 VFs
[12:12:08] [PASSED] 35 VFs
[12:12:08] [PASSED] 36 VFs
[12:12:08] [PASSED] 37 VFs
[12:12:08] [PASSED] 38 VFs
[12:12:08] [PASSED] 39 VFs
[12:12:08] [PASSED] 40 VFs
[12:12:08] [PASSED] 41 VFs
[12:12:08] [PASSED] 42 VFs
[12:12:08] [PASSED] 43 VFs
[12:12:08] [PASSED] 44 VFs
[12:12:08] [PASSED] 45 VFs
[12:12:08] [PASSED] 46 VFs
[12:12:08] [PASSED] 47 VFs
[12:12:08] [PASSED] 48 VFs
[12:12:08] [PASSED] 49 VFs
[12:12:08] [PASSED] 50 VFs
[12:12:08] [PASSED] 51 VFs
[12:12:08] [PASSED] 52 VFs
[12:12:08] [PASSED] 53 VFs
[12:12:08] [PASSED] 54 VFs
[12:12:08] [PASSED] 55 VFs
[12:12:08] [PASSED] 56 VFs
[12:12:08] [PASSED] 57 VFs
[12:12:08] [PASSED] 58 VFs
[12:12:08] [PASSED] 59 VFs
[12:12:08] [PASSED] 60 VFs
[12:12:08] [PASSED] 61 VFs
[12:12:08] [PASSED] 62 VFs
[12:12:08] [PASSED] 63 VFs
[12:12:08] ================== [PASSED] fair_contexts ==================
[12:12:08] ===================== fair_doorbells ======================
[12:12:08] [PASSED] 1 VF
[12:12:08] [PASSED] 2 VFs
[12:12:08] [PASSED] 3 VFs
[12:12:08] [PASSED] 4 VFs
[12:12:08] [PASSED] 5 VFs
[12:12:08] [PASSED] 6 VFs
[12:12:08] [PASSED] 7 VFs
[12:12:08] [PASSED] 8 VFs
[12:12:08] [PASSED] 9 VFs
[12:12:08] [PASSED] 10 VFs
[12:12:08] [PASSED] 11 VFs
[12:12:08] [PASSED] 12 VFs
[12:12:08] [PASSED] 13 VFs
[12:12:08] [PASSED] 14 VFs
[12:12:08] [PASSED] 15 VFs
[12:12:08] [PASSED] 16 VFs
[12:12:08] [PASSED] 17 VFs
[12:12:08] [PASSED] 18 VFs
[12:12:08] [PASSED] 19 VFs
[12:12:08] [PASSED] 20 VFs
[12:12:08] [PASSED] 21 VFs
[12:12:08] [PASSED] 22 VFs
[12:12:08] [PASSED] 23 VFs
[12:12:08] [PASSED] 24 VFs
[12:12:08] [PASSED] 25 VFs
[12:12:08] [PASSED] 26 VFs
[12:12:08] [PASSED] 27 VFs
[12:12:08] [PASSED] 28 VFs
[12:12:08] [PASSED] 29 VFs
[12:12:08] [PASSED] 30 VFs
[12:12:08] [PASSED] 31 VFs
[12:12:08] [PASSED] 32 VFs
[12:12:08] [PASSED] 33 VFs
[12:12:08] [PASSED] 34 VFs
[12:12:08] [PASSED] 35 VFs
[12:12:08] [PASSED] 36 VFs
[12:12:08] [PASSED] 37 VFs
[12:12:08] [PASSED] 38 VFs
[12:12:08] [PASSED] 39 VFs
[12:12:08] [PASSED] 40 VFs
[12:12:08] [PASSED] 41 VFs
[12:12:08] [PASSED] 42 VFs
[12:12:08] [PASSED] 43 VFs
[12:12:08] [PASSED] 44 VFs
[12:12:08] [PASSED] 45 VFs
[12:12:08] [PASSED] 46 VFs
[12:12:08] [PASSED] 47 VFs
[12:12:08] [PASSED] 48 VFs
[12:12:08] [PASSED] 49 VFs
[12:12:08] [PASSED] 50 VFs
[12:12:08] [PASSED] 51 VFs
[12:12:08] [PASSED] 52 VFs
[12:12:08] [PASSED] 53 VFs
[12:12:08] [PASSED] 54 VFs
[12:12:08] [PASSED] 55 VFs
[12:12:08] [PASSED] 56 VFs
[12:12:08] [PASSED] 57 VFs
[12:12:08] [PASSED] 58 VFs
[12:12:08] [PASSED] 59 VFs
[12:12:08] [PASSED] 60 VFs
[12:12:08] [PASSED] 61 VFs
[12:12:08] [PASSED] 62 VFs
[12:12:08] [PASSED] 63 VFs
[12:12:08] ================= [PASSED] fair_doorbells ==================
[12:12:08] ======================== fair_ggtt ========================
[12:12:08] [PASSED] 1 VF
[12:12:08] [PASSED] 2 VFs
[12:12:08] [PASSED] 3 VFs
[12:12:08] [PASSED] 4 VFs
[12:12:08] [PASSED] 5 VFs
[12:12:08] [PASSED] 6 VFs
[12:12:08] [PASSED] 7 VFs
[12:12:08] [PASSED] 8 VFs
[12:12:08] [PASSED] 9 VFs
[12:12:08] [PASSED] 10 VFs
[12:12:08] [PASSED] 11 VFs
[12:12:08] [PASSED] 12 VFs
[12:12:08] [PASSED] 13 VFs
[12:12:08] [PASSED] 14 VFs
[12:12:08] [PASSED] 15 VFs
[12:12:08] [PASSED] 16 VFs
[12:12:08] [PASSED] 17 VFs
[12:12:08] [PASSED] 18 VFs
[12:12:08] [PASSED] 19 VFs
[12:12:08] [PASSED] 20 VFs
[12:12:08] [PASSED] 21 VFs
[12:12:08] [PASSED] 22 VFs
[12:12:08] [PASSED] 23 VFs
[12:12:08] [PASSED] 24 VFs
[12:12:08] [PASSED] 25 VFs
[12:12:08] [PASSED] 26 VFs
[12:12:08] [PASSED] 27 VFs
[12:12:08] [PASSED] 28 VFs
[12:12:08] [PASSED] 29 VFs
[12:12:08] [PASSED] 30 VFs
[12:12:08] [PASSED] 31 VFs
[12:12:08] [PASSED] 32 VFs
[12:12:08] [PASSED] 33 VFs
[12:12:08] [PASSED] 34 VFs
[12:12:08] [PASSED] 35 VFs
[12:12:08] [PASSED] 36 VFs
[12:12:08] [PASSED] 37 VFs
[12:12:08] [PASSED] 38 VFs
[12:12:08] [PASSED] 39 VFs
[12:12:08] [PASSED] 40 VFs
[12:12:08] [PASSED] 41 VFs
[12:12:08] [PASSED] 42 VFs
[12:12:08] [PASSED] 43 VFs
[12:12:08] [PASSED] 44 VFs
[12:12:08] [PASSED] 45 VFs
[12:12:08] [PASSED] 46 VFs
[12:12:08] [PASSED] 47 VFs
[12:12:08] [PASSED] 48 VFs
[12:12:08] [PASSED] 49 VFs
[12:12:08] [PASSED] 50 VFs
[12:12:08] [PASSED] 51 VFs
[12:12:08] [PASSED] 52 VFs
[12:12:08] [PASSED] 53 VFs
[12:12:08] [PASSED] 54 VFs
[12:12:08] [PASSED] 55 VFs
[12:12:08] [PASSED] 56 VFs
[12:12:08] [PASSED] 57 VFs
[12:12:08] [PASSED] 58 VFs
[12:12:08] [PASSED] 59 VFs
[12:12:08] [PASSED] 60 VFs
[12:12:08] [PASSED] 61 VFs
[12:12:08] [PASSED] 62 VFs
[12:12:08] [PASSED] 63 VFs
[12:12:08] ==================== [PASSED] fair_ggtt ====================
[12:12:08] ======================== fair_vram ========================
[12:12:08] [PASSED] 1 VF
[12:12:08] [PASSED] 2 VFs
[12:12:08] [PASSED] 3 VFs
[12:12:08] [PASSED] 4 VFs
[12:12:08] [PASSED] 5 VFs
[12:12:08] [PASSED] 6 VFs
[12:12:08] [PASSED] 7 VFs
[12:12:08] [PASSED] 8 VFs
[12:12:08] [PASSED] 9 VFs
[12:12:08] [PASSED] 10 VFs
[12:12:08] [PASSED] 11 VFs
[12:12:08] [PASSED] 12 VFs
[12:12:08] [PASSED] 13 VFs
[12:12:08] [PASSED] 14 VFs
[12:12:08] [PASSED] 15 VFs
[12:12:08] [PASSED] 16 VFs
[12:12:08] [PASSED] 17 VFs
[12:12:08] [PASSED] 18 VFs
[12:12:08] [PASSED] 19 VFs
[12:12:08] [PASSED] 20 VFs
[12:12:08] [PASSED] 21 VFs
[12:12:08] [PASSED] 22 VFs
[12:12:08] [PASSED] 23 VFs
[12:12:08] [PASSED] 24 VFs
[12:12:08] [PASSED] 25 VFs
[12:12:08] [PASSED] 26 VFs
[12:12:08] [PASSED] 27 VFs
[12:12:08] [PASSED] 28 VFs
[12:12:08] [PASSED] 29 VFs
[12:12:08] [PASSED] 30 VFs
[12:12:08] [PASSED] 31 VFs
[12:12:08] [PASSED] 32 VFs
[12:12:08] [PASSED] 33 VFs
[12:12:08] [PASSED] 34 VFs
[12:12:08] [PASSED] 35 VFs
[12:12:08] [PASSED] 36 VFs
[12:12:08] [PASSED] 37 VFs
[12:12:08] [PASSED] 38 VFs
[12:12:08] [PASSED] 39 VFs
[12:12:08] [PASSED] 40 VFs
[12:12:08] [PASSED] 41 VFs
[12:12:08] [PASSED] 42 VFs
[12:12:08] [PASSED] 43 VFs
[12:12:08] [PASSED] 44 VFs
[12:12:08] [PASSED] 45 VFs
[12:12:08] [PASSED] 46 VFs
[12:12:08] [PASSED] 47 VFs
[12:12:08] [PASSED] 48 VFs
[12:12:08] [PASSED] 49 VFs
[12:12:08] [PASSED] 50 VFs
[12:12:08] [PASSED] 51 VFs
[12:12:08] [PASSED] 52 VFs
[12:12:08] [PASSED] 53 VFs
[12:12:08] [PASSED] 54 VFs
[12:12:08] [PASSED] 55 VFs
[12:12:08] [PASSED] 56 VFs
[12:12:08] [PASSED] 57 VFs
[12:12:08] [PASSED] 58 VFs
[12:12:08] [PASSED] 59 VFs
[12:12:08] [PASSED] 60 VFs
[12:12:08] [PASSED] 61 VFs
[12:12:08] [PASSED] 62 VFs
[12:12:08] [PASSED] 63 VFs
[12:12:08] ==================== [PASSED] fair_vram ====================
[12:12:08] ================== [PASSED] pf_gt_config ===================
[12:12:08] ===================== lmtt (1 subtest) =====================
[12:12:08] ======================== test_ops =========================
[12:12:08] [PASSED] 2-level
[12:12:08] [PASSED] multi-level
[12:12:08] ==================== [PASSED] test_ops =====================
[12:12:08] ====================== [PASSED] lmtt =======================
[12:12:08] ================= pf_service (11 subtests) =================
[12:12:08] [PASSED] pf_negotiate_any
[12:12:08] [PASSED] pf_negotiate_base_match
[12:12:08] [PASSED] pf_negotiate_base_newer
[12:12:08] [PASSED] pf_negotiate_base_next
[12:12:08] [SKIPPED] pf_negotiate_base_older
[12:12:08] [PASSED] pf_negotiate_base_prev
[12:12:08] [PASSED] pf_negotiate_latest_match
[12:12:08] [PASSED] pf_negotiate_latest_newer
[12:12:08] [PASSED] pf_negotiate_latest_next
[12:12:08] [SKIPPED] pf_negotiate_latest_older
[12:12:08] [SKIPPED] pf_negotiate_latest_prev
[12:12:08] =================== [PASSED] pf_service ====================
[12:12:08] ================= xe_guc_g2g (2 subtests) ==================
[12:12:08] ============== xe_live_guc_g2g_kunit_default ==============
[12:12:08] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[12:12:08] ============== xe_live_guc_g2g_kunit_allmem ===============
[12:12:08] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[12:12:08] =================== [SKIPPED] xe_guc_g2g ===================
[12:12:08] =================== xe_mocs (2 subtests) ===================
[12:12:08] ================ xe_live_mocs_kernel_kunit ================
[12:12:08] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[12:12:08] ================ xe_live_mocs_reset_kunit =================
[12:12:08] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[12:12:08] ==================== [SKIPPED] xe_mocs =====================
[12:12:08] ================= xe_migrate (2 subtests) ==================
[12:12:08] ================= xe_migrate_sanity_kunit =================
[12:12:08] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[12:12:08] ================== xe_validate_ccs_kunit ==================
[12:12:08] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[12:12:08] =================== [SKIPPED] xe_migrate ===================
[12:12:08] ================== xe_dma_buf (1 subtest) ==================
[12:12:08] ==================== xe_dma_buf_kunit =====================
[12:12:08] ================ [SKIPPED] xe_dma_buf_kunit ================
[12:12:08] =================== [SKIPPED] xe_dma_buf ===================
[12:12:08] ================= xe_bo_shrink (1 subtest) =================
[12:12:08] =================== xe_bo_shrink_kunit ====================
[12:12:08] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[12:12:08] ================== [SKIPPED] xe_bo_shrink ==================
[12:12:08] ==================== xe_bo (2 subtests) ====================
[12:12:08] ================== xe_ccs_migrate_kunit ===================
[12:12:08] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[12:12:08] ==================== xe_bo_evict_kunit ====================
[12:12:08] =============== [SKIPPED] xe_bo_evict_kunit ================
[12:12:08] ===================== [SKIPPED] xe_bo ======================
[12:12:08] ==================== args (13 subtests) ====================
[12:12:08] [PASSED] count_args_test
[12:12:08] [PASSED] call_args_example
[12:12:08] [PASSED] call_args_test
[12:12:08] [PASSED] drop_first_arg_example
[12:12:08] [PASSED] drop_first_arg_test
[12:12:08] [PASSED] first_arg_example
[12:12:08] [PASSED] first_arg_test
[12:12:08] [PASSED] last_arg_example
[12:12:08] [PASSED] last_arg_test
[12:12:08] [PASSED] pick_arg_example
[12:12:08] [PASSED] if_args_example
[12:12:08] [PASSED] if_args_test
[12:12:08] [PASSED] sep_comma_example
[12:12:08] ====================== [PASSED] args =======================
[12:12:08] =================== xe_pci (3 subtests) ====================
[12:12:08] ==================== check_graphics_ip ====================
[12:12:08] [PASSED] 12.00 Xe_LP
[12:12:08] [PASSED] 12.10 Xe_LP+
[12:12:08] [PASSED] 12.55 Xe_HPG
[12:12:08] [PASSED] 12.60 Xe_HPC
[12:12:08] [PASSED] 12.70 Xe_LPG
[12:12:08] [PASSED] 12.71 Xe_LPG
[12:12:08] [PASSED] 12.74 Xe_LPG+
[12:12:08] [PASSED] 20.01 Xe2_HPG
[12:12:08] [PASSED] 20.02 Xe2_HPG
[12:12:08] [PASSED] 20.04 Xe2_LPG
[12:12:08] [PASSED] 30.00 Xe3_LPG
[12:12:08] [PASSED] 30.01 Xe3_LPG
[12:12:08] [PASSED] 30.03 Xe3_LPG
[12:12:08] [PASSED] 30.04 Xe3_LPG
[12:12:08] [PASSED] 30.05 Xe3_LPG
[12:12:08] [PASSED] 35.10 Xe3p_LPG
[12:12:08] [PASSED] 35.11 Xe3p_XPC
[12:12:08] ================ [PASSED] check_graphics_ip ================
[12:12:08] ===================== check_media_ip ======================
[12:12:08] [PASSED] 12.00 Xe_M
[12:12:08] [PASSED] 12.55 Xe_HPM
[12:12:08] [PASSED] 13.00 Xe_LPM+
[12:12:08] [PASSED] 13.01 Xe2_HPM
[12:12:08] [PASSED] 20.00 Xe2_LPM
[12:12:08] [PASSED] 30.00 Xe3_LPM
[12:12:08] [PASSED] 30.02 Xe3_LPM
[12:12:08] [PASSED] 35.00 Xe3p_LPM
[12:12:08] [PASSED] 35.03 Xe3p_HPM
[12:12:08] ================= [PASSED] check_media_ip ==================
[12:12:08] =================== check_platform_desc ===================
[12:12:08] [PASSED] 0x9A60 (TIGERLAKE)
[12:12:08] [PASSED] 0x9A68 (TIGERLAKE)
[12:12:08] [PASSED] 0x9A70 (TIGERLAKE)
[12:12:08] [PASSED] 0x9A40 (TIGERLAKE)
[12:12:08] [PASSED] 0x9A49 (TIGERLAKE)
[12:12:08] [PASSED] 0x9A59 (TIGERLAKE)
[12:12:08] [PASSED] 0x9A78 (TIGERLAKE)
[12:12:08] [PASSED] 0x9AC0 (TIGERLAKE)
[12:12:08] [PASSED] 0x9AC9 (TIGERLAKE)
[12:12:08] [PASSED] 0x9AD9 (TIGERLAKE)
[12:12:08] [PASSED] 0x9AF8 (TIGERLAKE)
[12:12:08] [PASSED] 0x4C80 (ROCKETLAKE)
[12:12:08] [PASSED] 0x4C8A (ROCKETLAKE)
[12:12:08] [PASSED] 0x4C8B (ROCKETLAKE)
[12:12:08] [PASSED] 0x4C8C (ROCKETLAKE)
[12:12:08] [PASSED] 0x4C90 (ROCKETLAKE)
[12:12:08] [PASSED] 0x4C9A (ROCKETLAKE)
[12:12:08] [PASSED] 0x4680 (ALDERLAKE_S)
[12:12:08] [PASSED] 0x4682 (ALDERLAKE_S)
[12:12:08] [PASSED] 0x4688 (ALDERLAKE_S)
[12:12:08] [PASSED] 0x468A (ALDERLAKE_S)
[12:12:08] [PASSED] 0x468B (ALDERLAKE_S)
[12:12:08] [PASSED] 0x4690 (ALDERLAKE_S)
[12:12:08] [PASSED] 0x4692 (ALDERLAKE_S)
[12:12:08] [PASSED] 0x4693 (ALDERLAKE_S)
[12:12:08] [PASSED] 0x46A0 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46A1 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46A2 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46A3 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46A6 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46A8 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46AA (ALDERLAKE_P)
[12:12:08] [PASSED] 0x462A (ALDERLAKE_P)
[12:12:08] [PASSED] 0x4626 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x4628 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46B0 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46B1 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46B2 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46B3 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46C0 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46C1 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46C2 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46C3 (ALDERLAKE_P)
[12:12:08] [PASSED] 0x46D0 (ALDERLAKE_N)
[12:12:08] [PASSED] 0x46D1 (ALDERLAKE_N)
[12:12:08] [PASSED] 0x46D2 (ALDERLAKE_N)
[12:12:08] [PASSED] 0x46D3 (ALDERLAKE_N)
[12:12:08] [PASSED] 0x46D4 (ALDERLAKE_N)
[12:12:08] [PASSED] 0xA721 (ALDERLAKE_P)
[12:12:08] [PASSED] 0xA7A1 (ALDERLAKE_P)
[12:12:08] [PASSED] 0xA7A9 (ALDERLAKE_P)
[12:12:08] [PASSED] 0xA7AC (ALDERLAKE_P)
[12:12:08] [PASSED] 0xA7AD (ALDERLAKE_P)
[12:12:08] [PASSED] 0xA720 (ALDERLAKE_P)
[12:12:08] [PASSED] 0xA7A0 (ALDERLAKE_P)
[12:12:08] [PASSED] 0xA7A8 (ALDERLAKE_P)
[12:12:08] [PASSED] 0xA7AA (ALDERLAKE_P)
[12:12:08] [PASSED] 0xA7AB (ALDERLAKE_P)
[12:12:08] [PASSED] 0xA780 (ALDERLAKE_S)
[12:12:08] [PASSED] 0xA781 (ALDERLAKE_S)
[12:12:08] [PASSED] 0xA782 (ALDERLAKE_S)
[12:12:08] [PASSED] 0xA783 (ALDERLAKE_S)
[12:12:08] [PASSED] 0xA788 (ALDERLAKE_S)
[12:12:08] [PASSED] 0xA789 (ALDERLAKE_S)
[12:12:08] [PASSED] 0xA78A (ALDERLAKE_S)
[12:12:08] [PASSED] 0xA78B (ALDERLAKE_S)
[12:12:08] [PASSED] 0x4905 (DG1)
[12:12:08] [PASSED] 0x4906 (DG1)
[12:12:08] [PASSED] 0x4907 (DG1)
[12:12:08] [PASSED] 0x4908 (DG1)
[12:12:08] [PASSED] 0x4909 (DG1)
[12:12:08] [PASSED] 0x56C0 (DG2)
[12:12:08] [PASSED] 0x56C2 (DG2)
[12:12:08] [PASSED] 0x56C1 (DG2)
[12:12:08] [PASSED] 0x7D51 (METEORLAKE)
[12:12:08] [PASSED] 0x7DD1 (METEORLAKE)
[12:12:08] [PASSED] 0x7D41 (METEORLAKE)
[12:12:08] [PASSED] 0x7D67 (METEORLAKE)
[12:12:08] [PASSED] 0xB640 (METEORLAKE)
[12:12:08] [PASSED] 0x56A0 (DG2)
[12:12:08] [PASSED] 0x56A1 (DG2)
[12:12:08] [PASSED] 0x56A2 (DG2)
[12:12:08] [PASSED] 0x56BE (DG2)
[12:12:08] [PASSED] 0x56BF (DG2)
[12:12:08] [PASSED] 0x5690 (DG2)
[12:12:08] [PASSED] 0x5691 (DG2)
[12:12:08] [PASSED] 0x5692 (DG2)
[12:12:08] [PASSED] 0x56A5 (DG2)
[12:12:08] [PASSED] 0x56A6 (DG2)
[12:12:08] [PASSED] 0x56B0 (DG2)
[12:12:08] [PASSED] 0x56B1 (DG2)
[12:12:08] [PASSED] 0x56BA (DG2)
[12:12:08] [PASSED] 0x56BB (DG2)
[12:12:08] [PASSED] 0x56BC (DG2)
[12:12:08] [PASSED] 0x56BD (DG2)
[12:12:08] [PASSED] 0x5693 (DG2)
[12:12:08] [PASSED] 0x5694 (DG2)
[12:12:08] [PASSED] 0x5695 (DG2)
[12:12:08] [PASSED] 0x56A3 (DG2)
[12:12:08] [PASSED] 0x56A4 (DG2)
[12:12:08] [PASSED] 0x56B2 (DG2)
[12:12:08] [PASSED] 0x56B3 (DG2)
[12:12:08] [PASSED] 0x5696 (DG2)
[12:12:08] [PASSED] 0x5697 (DG2)
[12:12:08] [PASSED] 0xB69 (PVC)
[12:12:08] [PASSED] 0xB6E (PVC)
[12:12:08] [PASSED] 0xBD4 (PVC)
[12:12:08] [PASSED] 0xBD5 (PVC)
[12:12:08] [PASSED] 0xBD6 (PVC)
[12:12:08] [PASSED] 0xBD7 (PVC)
[12:12:08] [PASSED] 0xBD8 (PVC)
[12:12:08] [PASSED] 0xBD9 (PVC)
[12:12:08] [PASSED] 0xBDA (PVC)
[12:12:08] [PASSED] 0xBDB (PVC)
[12:12:08] [PASSED] 0xBE0 (PVC)
[12:12:08] [PASSED] 0xBE1 (PVC)
[12:12:08] [PASSED] 0xBE5 (PVC)
[12:12:08] [PASSED] 0x7D40 (METEORLAKE)
[12:12:08] [PASSED] 0x7D45 (METEORLAKE)
[12:12:08] [PASSED] 0x7D55 (METEORLAKE)
[12:12:08] [PASSED] 0x7D60 (METEORLAKE)
[12:12:08] [PASSED] 0x7DD5 (METEORLAKE)
[12:12:08] [PASSED] 0x6420 (LUNARLAKE)
[12:12:08] [PASSED] 0x64A0 (LUNARLAKE)
[12:12:08] [PASSED] 0x64B0 (LUNARLAKE)
[12:12:08] [PASSED] 0xE202 (BATTLEMAGE)
[12:12:08] [PASSED] 0xE209 (BATTLEMAGE)
[12:12:08] [PASSED] 0xE20B (BATTLEMAGE)
[12:12:08] [PASSED] 0xE20C (BATTLEMAGE)
[12:12:08] [PASSED] 0xE20D (BATTLEMAGE)
[12:12:08] [PASSED] 0xE210 (BATTLEMAGE)
[12:12:08] [PASSED] 0xE211 (BATTLEMAGE)
[12:12:08] [PASSED] 0xE212 (BATTLEMAGE)
[12:12:08] [PASSED] 0xE216 (BATTLEMAGE)
[12:12:08] [PASSED] 0xE220 (BATTLEMAGE)
[12:12:08] [PASSED] 0xE221 (BATTLEMAGE)
[12:12:08] [PASSED] 0xE222 (BATTLEMAGE)
[12:12:08] [PASSED] 0xE223 (BATTLEMAGE)
[12:12:08] [PASSED] 0xB080 (PANTHERLAKE)
[12:12:08] [PASSED] 0xB081 (PANTHERLAKE)
[12:12:08] [PASSED] 0xB082 (PANTHERLAKE)
[12:12:08] [PASSED] 0xB083 (PANTHERLAKE)
[12:12:08] [PASSED] 0xB084 (PANTHERLAKE)
[12:12:08] [PASSED] 0xB085 (PANTHERLAKE)
[12:12:08] [PASSED] 0xB086 (PANTHERLAKE)
[12:12:08] [PASSED] 0xB087 (PANTHERLAKE)
[12:12:08] [PASSED] 0xB08F (PANTHERLAKE)
[12:12:08] [PASSED] 0xB090 (PANTHERLAKE)
[12:12:08] [PASSED] 0xB0A0 (PANTHERLAKE)
[12:12:08] [PASSED] 0xB0B0 (PANTHERLAKE)
[12:12:08] [PASSED] 0xFD80 (PANTHERLAKE)
[12:12:08] [PASSED] 0xFD81 (PANTHERLAKE)
[12:12:08] [PASSED] 0xD740 (NOVALAKE_S)
[12:12:08] [PASSED] 0xD741 (NOVALAKE_S)
[12:12:08] [PASSED] 0xD742 (NOVALAKE_S)
[12:12:08] [PASSED] 0xD743 (NOVALAKE_S)
[12:12:08] [PASSED] 0xD744 (NOVALAKE_S)
[12:12:08] [PASSED] 0xD745 (NOVALAKE_S)
[12:12:08] [PASSED] 0x674C (CRESCENTISLAND)
[12:12:08] [PASSED] 0xD750 (NOVALAKE_P)
[12:12:08] [PASSED] 0xD751 (NOVALAKE_P)
[12:12:08] [PASSED] 0xD752 (NOVALAKE_P)
[12:12:08] [PASSED] 0xD753 (NOVALAKE_P)
[12:12:08] [PASSED] 0xD754 (NOVALAKE_P)
[12:12:08] [PASSED] 0xD755 (NOVALAKE_P)
[12:12:08] [PASSED] 0xD756 (NOVALAKE_P)
[12:12:08] [PASSED] 0xD757 (NOVALAKE_P)
[12:12:08] [PASSED] 0xD75F (NOVALAKE_P)
[12:12:08] =============== [PASSED] check_platform_desc ===============
[12:12:08] ===================== [PASSED] xe_pci ======================
[12:12:08] =================== xe_rtp (2 subtests) ====================
[12:12:08] =============== xe_rtp_process_to_sr_tests ================
[12:12:08] [PASSED] coalesce-same-reg
[12:12:08] [PASSED] no-match-no-add
[12:12:08] [PASSED] match-or
[12:12:08] [PASSED] match-or-xfail
[12:12:08] [PASSED] no-match-no-add-multiple-rules
[12:12:08] [PASSED] two-regs-two-entries
[12:12:08] [PASSED] clr-one-set-other
[12:12:08] [PASSED] set-field
[12:12:08] [PASSED] conflict-duplicate
stty: 'standard input': Inappropriate ioctl for device
[12:12:08] [PASSED] conflict-not-disjoint
[12:12:08] [PASSED] conflict-reg-type
[12:12:08] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[12:12:08] ================== xe_rtp_process_tests ===================
[12:12:08] [PASSED] active1
[12:12:08] [PASSED] active2
[12:12:08] [PASSED] active-inactive
[12:12:08] [PASSED] inactive-active
[12:12:08] [PASSED] inactive-1st_or_active-inactive
[12:12:08] [PASSED] inactive-2nd_or_active-inactive
[12:12:08] [PASSED] inactive-last_or_active-inactive
[12:12:08] [PASSED] inactive-no_or_active-inactive
[12:12:08] ============== [PASSED] xe_rtp_process_tests ===============
[12:12:08] ===================== [PASSED] xe_rtp ======================
[12:12:08] ==================== xe_wa (1 subtest) =====================
[12:12:08] ======================== xe_wa_gt =========================
[12:12:08] [PASSED] TIGERLAKE B0
[12:12:08] [PASSED] DG1 A0
[12:12:08] [PASSED] DG1 B0
[12:12:08] [PASSED] ALDERLAKE_S A0
[12:12:08] [PASSED] ALDERLAKE_S B0
[12:12:08] [PASSED] ALDERLAKE_S C0
[12:12:08] [PASSED] ALDERLAKE_S D0
[12:12:08] [PASSED] ALDERLAKE_P A0
[12:12:08] [PASSED] ALDERLAKE_P B0
[12:12:08] [PASSED] ALDERLAKE_P C0
[12:12:08] [PASSED] ALDERLAKE_S RPLS D0
[12:12:08] [PASSED] ALDERLAKE_P RPLU E0
[12:12:08] [PASSED] DG2 G10 C0
[12:12:08] [PASSED] DG2 G11 B1
[12:12:08] [PASSED] DG2 G12 A1
[12:12:08] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[12:12:08] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[12:12:08] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[12:12:08] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[12:12:08] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[12:12:08] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[12:12:08] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[12:12:08] ==================== [PASSED] xe_wa_gt =====================
[12:12:08] ====================== [PASSED] xe_wa ======================
[12:12:08] ============================================================
[12:12:08] Testing complete. Ran 597 tests: passed: 579, skipped: 18
[12:12:08] Elapsed time: 35.368s total, 4.257s configuring, 30.494s building, 0.608s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[12:12:08] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:12:10] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[12:12:34] Starting KUnit Kernel (1/1)...
[12:12:34] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:12:34] ============ drm_test_pick_cmdline (2 subtests) ============
[12:12:34] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[12:12:34] =============== drm_test_pick_cmdline_named ===============
[12:12:34] [PASSED] NTSC
[12:12:34] [PASSED] NTSC-J
[12:12:34] [PASSED] PAL
[12:12:34] [PASSED] PAL-M
[12:12:34] =========== [PASSED] drm_test_pick_cmdline_named ===========
[12:12:34] ============== [PASSED] drm_test_pick_cmdline ==============
[12:12:34] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[12:12:34] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[12:12:34] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[12:12:34] =========== drm_validate_clone_mode (2 subtests) ===========
[12:12:34] ============== drm_test_check_in_clone_mode ===============
[12:12:34] [PASSED] in_clone_mode
[12:12:34] [PASSED] not_in_clone_mode
[12:12:34] ========== [PASSED] drm_test_check_in_clone_mode ===========
[12:12:34] =============== drm_test_check_valid_clones ===============
[12:12:34] [PASSED] not_in_clone_mode
[12:12:34] [PASSED] valid_clone
[12:12:34] [PASSED] invalid_clone
[12:12:34] =========== [PASSED] drm_test_check_valid_clones ===========
[12:12:34] ============= [PASSED] drm_validate_clone_mode =============
[12:12:34] ============= drm_validate_modeset (1 subtest) =============
[12:12:34] [PASSED] drm_test_check_connector_changed_modeset
[12:12:34] ============== [PASSED] drm_validate_modeset ===============
[12:12:34] ====== drm_test_bridge_get_current_state (2 subtests) ======
[12:12:34] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[12:12:34] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[12:12:34] ======== [PASSED] drm_test_bridge_get_current_state ========
[12:12:34] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[12:12:34] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[12:12:34] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[12:12:34] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[12:12:34] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[12:12:34] ============== drm_bridge_alloc (2 subtests) ===============
[12:12:34] [PASSED] drm_test_drm_bridge_alloc_basic
[12:12:34] [PASSED] drm_test_drm_bridge_alloc_get_put
[12:12:34] ================ [PASSED] drm_bridge_alloc =================
[12:12:34] ============= drm_cmdline_parser (40 subtests) =============
[12:12:34] [PASSED] drm_test_cmdline_force_d_only
[12:12:34] [PASSED] drm_test_cmdline_force_D_only_dvi
[12:12:34] [PASSED] drm_test_cmdline_force_D_only_hdmi
[12:12:34] [PASSED] drm_test_cmdline_force_D_only_not_digital
[12:12:34] [PASSED] drm_test_cmdline_force_e_only
[12:12:34] [PASSED] drm_test_cmdline_res
[12:12:34] [PASSED] drm_test_cmdline_res_vesa
[12:12:34] [PASSED] drm_test_cmdline_res_vesa_rblank
[12:12:34] [PASSED] drm_test_cmdline_res_rblank
[12:12:34] [PASSED] drm_test_cmdline_res_bpp
[12:12:34] [PASSED] drm_test_cmdline_res_refresh
[12:12:34] [PASSED] drm_test_cmdline_res_bpp_refresh
[12:12:34] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[12:12:34] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[12:12:34] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[12:12:34] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[12:12:34] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[12:12:34] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[12:12:34] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[12:12:34] [PASSED] drm_test_cmdline_res_margins_force_on
[12:12:34] [PASSED] drm_test_cmdline_res_vesa_margins
[12:12:34] [PASSED] drm_test_cmdline_name
[12:12:34] [PASSED] drm_test_cmdline_name_bpp
[12:12:34] [PASSED] drm_test_cmdline_name_option
[12:12:34] [PASSED] drm_test_cmdline_name_bpp_option
[12:12:34] [PASSED] drm_test_cmdline_rotate_0
[12:12:34] [PASSED] drm_test_cmdline_rotate_90
[12:12:34] [PASSED] drm_test_cmdline_rotate_180
[12:12:34] [PASSED] drm_test_cmdline_rotate_270
[12:12:34] [PASSED] drm_test_cmdline_hmirror
[12:12:34] [PASSED] drm_test_cmdline_vmirror
[12:12:34] [PASSED] drm_test_cmdline_margin_options
[12:12:34] [PASSED] drm_test_cmdline_multiple_options
[12:12:34] [PASSED] drm_test_cmdline_bpp_extra_and_option
[12:12:34] [PASSED] drm_test_cmdline_extra_and_option
[12:12:34] [PASSED] drm_test_cmdline_freestanding_options
[12:12:34] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[12:12:34] [PASSED] drm_test_cmdline_panel_orientation
[12:12:34] ================ drm_test_cmdline_invalid =================
[12:12:34] [PASSED] margin_only
[12:12:34] [PASSED] interlace_only
[12:12:34] [PASSED] res_missing_x
[12:12:34] [PASSED] res_missing_y
[12:12:34] [PASSED] res_bad_y
[12:12:34] [PASSED] res_missing_y_bpp
[12:12:34] [PASSED] res_bad_bpp
[12:12:34] [PASSED] res_bad_refresh
[12:12:34] [PASSED] res_bpp_refresh_force_on_off
[12:12:34] [PASSED] res_invalid_mode
[12:12:34] [PASSED] res_bpp_wrong_place_mode
[12:12:34] [PASSED] name_bpp_refresh
[12:12:34] [PASSED] name_refresh
[12:12:34] [PASSED] name_refresh_wrong_mode
[12:12:34] [PASSED] name_refresh_invalid_mode
[12:12:34] [PASSED] rotate_multiple
[12:12:34] [PASSED] rotate_invalid_val
[12:12:34] [PASSED] rotate_truncated
[12:12:34] [PASSED] invalid_option
[12:12:34] [PASSED] invalid_tv_option
[12:12:34] [PASSED] truncated_tv_option
[12:12:34] ============ [PASSED] drm_test_cmdline_invalid =============
[12:12:34] =============== drm_test_cmdline_tv_options ===============
[12:12:34] [PASSED] NTSC
[12:12:34] [PASSED] NTSC_443
[12:12:34] [PASSED] NTSC_J
[12:12:34] [PASSED] PAL
[12:12:34] [PASSED] PAL_M
[12:12:34] [PASSED] PAL_N
[12:12:34] [PASSED] SECAM
[12:12:34] [PASSED] MONO_525
[12:12:34] [PASSED] MONO_625
[12:12:34] =========== [PASSED] drm_test_cmdline_tv_options ===========
[12:12:34] =============== [PASSED] drm_cmdline_parser ================
[12:12:34] ========== drmm_connector_hdmi_init (20 subtests) ==========
[12:12:34] [PASSED] drm_test_connector_hdmi_init_valid
[12:12:34] [PASSED] drm_test_connector_hdmi_init_bpc_8
[12:12:34] [PASSED] drm_test_connector_hdmi_init_bpc_10
[12:12:34] [PASSED] drm_test_connector_hdmi_init_bpc_12
[12:12:34] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[12:12:34] [PASSED] drm_test_connector_hdmi_init_bpc_null
[12:12:34] [PASSED] drm_test_connector_hdmi_init_formats_empty
[12:12:34] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[12:12:34] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[12:12:34] [PASSED] supported_formats=0x9 yuv420_allowed=1
[12:12:34] [PASSED] supported_formats=0x9 yuv420_allowed=0
[12:12:34] [PASSED] supported_formats=0x3 yuv420_allowed=1
[12:12:34] [PASSED] supported_formats=0x3 yuv420_allowed=0
[12:12:34] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[12:12:34] [PASSED] drm_test_connector_hdmi_init_null_ddc
[12:12:34] [PASSED] drm_test_connector_hdmi_init_null_product
[12:12:34] [PASSED] drm_test_connector_hdmi_init_null_vendor
[12:12:34] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[12:12:34] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[12:12:34] [PASSED] drm_test_connector_hdmi_init_product_valid
[12:12:34] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[12:12:34] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[12:12:34] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[12:12:34] ========= drm_test_connector_hdmi_init_type_valid =========
[12:12:34] [PASSED] HDMI-A
[12:12:34] [PASSED] HDMI-B
[12:12:34] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[12:12:34] ======== drm_test_connector_hdmi_init_type_invalid ========
[12:12:34] [PASSED] Unknown
[12:12:34] [PASSED] VGA
[12:12:34] [PASSED] DVI-I
[12:12:34] [PASSED] DVI-D
[12:12:34] [PASSED] DVI-A
[12:12:34] [PASSED] Composite
[12:12:34] [PASSED] SVIDEO
[12:12:34] [PASSED] LVDS
[12:12:34] [PASSED] Component
[12:12:34] [PASSED] DIN
[12:12:34] [PASSED] DP
[12:12:34] [PASSED] TV
[12:12:34] [PASSED] eDP
[12:12:34] [PASSED] Virtual
[12:12:34] [PASSED] DSI
[12:12:34] [PASSED] DPI
[12:12:34] [PASSED] Writeback
[12:12:34] [PASSED] SPI
[12:12:34] [PASSED] USB
[12:12:34] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[12:12:34] ============ [PASSED] drmm_connector_hdmi_init =============
[12:12:34] ============= drmm_connector_init (3 subtests) =============
[12:12:34] [PASSED] drm_test_drmm_connector_init
[12:12:34] [PASSED] drm_test_drmm_connector_init_null_ddc
[12:12:34] ========= drm_test_drmm_connector_init_type_valid =========
[12:12:34] [PASSED] Unknown
[12:12:34] [PASSED] VGA
[12:12:34] [PASSED] DVI-I
[12:12:34] [PASSED] DVI-D
[12:12:34] [PASSED] DVI-A
[12:12:34] [PASSED] Composite
[12:12:34] [PASSED] SVIDEO
[12:12:34] [PASSED] LVDS
[12:12:34] [PASSED] Component
[12:12:34] [PASSED] DIN
[12:12:34] [PASSED] DP
[12:12:34] [PASSED] HDMI-A
[12:12:34] [PASSED] HDMI-B
[12:12:34] [PASSED] TV
[12:12:34] [PASSED] eDP
[12:12:34] [PASSED] Virtual
[12:12:34] [PASSED] DSI
[12:12:34] [PASSED] DPI
[12:12:34] [PASSED] Writeback
[12:12:34] [PASSED] SPI
[12:12:34] [PASSED] USB
[12:12:34] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[12:12:34] =============== [PASSED] drmm_connector_init ===============
[12:12:34] ========= drm_connector_dynamic_init (6 subtests) ==========
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_init
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_init_properties
[12:12:34] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[12:12:34] [PASSED] Unknown
[12:12:34] [PASSED] VGA
[12:12:34] [PASSED] DVI-I
[12:12:34] [PASSED] DVI-D
[12:12:34] [PASSED] DVI-A
[12:12:34] [PASSED] Composite
[12:12:34] [PASSED] SVIDEO
[12:12:34] [PASSED] LVDS
[12:12:34] [PASSED] Component
[12:12:34] [PASSED] DIN
[12:12:34] [PASSED] DP
[12:12:34] [PASSED] HDMI-A
[12:12:34] [PASSED] HDMI-B
[12:12:34] [PASSED] TV
[12:12:34] [PASSED] eDP
[12:12:34] [PASSED] Virtual
[12:12:34] [PASSED] DSI
[12:12:34] [PASSED] DPI
[12:12:34] [PASSED] Writeback
[12:12:34] [PASSED] SPI
[12:12:34] [PASSED] USB
[12:12:34] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[12:12:34] ======== drm_test_drm_connector_dynamic_init_name =========
[12:12:34] [PASSED] Unknown
[12:12:34] [PASSED] VGA
[12:12:34] [PASSED] DVI-I
[12:12:34] [PASSED] DVI-D
[12:12:34] [PASSED] DVI-A
[12:12:34] [PASSED] Composite
[12:12:34] [PASSED] SVIDEO
[12:12:34] [PASSED] LVDS
[12:12:34] [PASSED] Component
[12:12:34] [PASSED] DIN
[12:12:34] [PASSED] DP
[12:12:34] [PASSED] HDMI-A
[12:12:34] [PASSED] HDMI-B
[12:12:34] [PASSED] TV
[12:12:34] [PASSED] eDP
[12:12:34] [PASSED] Virtual
[12:12:34] [PASSED] DSI
[12:12:34] [PASSED] DPI
[12:12:34] [PASSED] Writeback
[12:12:34] [PASSED] SPI
[12:12:34] [PASSED] USB
[12:12:34] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[12:12:34] =========== [PASSED] drm_connector_dynamic_init ============
[12:12:34] ==== drm_connector_dynamic_register_early (4 subtests) =====
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[12:12:34] ====== [PASSED] drm_connector_dynamic_register_early =======
[12:12:34] ======= drm_connector_dynamic_register (7 subtests) ========
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[12:12:34] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[12:12:34] ========= [PASSED] drm_connector_dynamic_register ==========
[12:12:34] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[12:12:34] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[12:12:34] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[12:12:34] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[12:12:34] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[12:12:34] ========== drm_test_get_tv_mode_from_name_valid ===========
[12:12:34] [PASSED] NTSC
[12:12:34] [PASSED] NTSC-443
[12:12:34] [PASSED] NTSC-J
[12:12:34] [PASSED] PAL
[12:12:34] [PASSED] PAL-M
[12:12:34] [PASSED] PAL-N
[12:12:34] [PASSED] SECAM
[12:12:34] [PASSED] Mono
[12:12:34] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[12:12:34] [PASSED] drm_test_get_tv_mode_from_name_truncated
[12:12:34] ============ [PASSED] drm_get_tv_mode_from_name ============
[12:12:34] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[12:12:34] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[12:12:34] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[12:12:34] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[12:12:34] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[12:12:34] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[12:12:34] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[12:12:34] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[12:12:34] [PASSED] VIC 96
[12:12:34] [PASSED] VIC 97
[12:12:34] [PASSED] VIC 101
[12:12:34] [PASSED] VIC 102
[12:12:34] [PASSED] VIC 106
[12:12:34] [PASSED] VIC 107
[12:12:34] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[12:12:34] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[12:12:34] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[12:12:34] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[12:12:34] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[12:12:34] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[12:12:34] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[12:12:34] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[12:12:34] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[12:12:34] [PASSED] Automatic
[12:12:34] [PASSED] Full
[12:12:34] [PASSED] Limited 16:235
[12:12:34] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[12:12:34] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[12:12:34] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[12:12:34] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[12:12:34] === drm_test_drm_hdmi_connector_get_output_format_name ====
[12:12:34] [PASSED] RGB
[12:12:34] [PASSED] YUV 4:2:0
[12:12:34] [PASSED] YUV 4:2:2
[12:12:34] [PASSED] YUV 4:4:4
[12:12:34] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[12:12:34] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[12:12:34] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[12:12:34] ============= drm_damage_helper (21 subtests) ==============
[12:12:34] [PASSED] drm_test_damage_iter_no_damage
[12:12:34] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[12:12:34] [PASSED] drm_test_damage_iter_no_damage_src_moved
[12:12:34] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[12:12:34] [PASSED] drm_test_damage_iter_no_damage_not_visible
[12:12:34] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[12:12:34] [PASSED] drm_test_damage_iter_no_damage_no_fb
[12:12:34] [PASSED] drm_test_damage_iter_simple_damage
[12:12:34] [PASSED] drm_test_damage_iter_single_damage
[12:12:34] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[12:12:34] [PASSED] drm_test_damage_iter_single_damage_outside_src
[12:12:34] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[12:12:34] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[12:12:34] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[12:12:34] [PASSED] drm_test_damage_iter_single_damage_src_moved
[12:12:34] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[12:12:34] [PASSED] drm_test_damage_iter_damage
[12:12:34] [PASSED] drm_test_damage_iter_damage_one_intersect
[12:12:34] [PASSED] drm_test_damage_iter_damage_one_outside
[12:12:34] [PASSED] drm_test_damage_iter_damage_src_moved
[12:12:34] [PASSED] drm_test_damage_iter_damage_not_visible
[12:12:34] ================ [PASSED] drm_damage_helper ================
[12:12:34] ============== drm_dp_mst_helper (3 subtests) ==============
[12:12:34] ============== drm_test_dp_mst_calc_pbn_mode ==============
[12:12:34] [PASSED] Clock 154000 BPP 30 DSC disabled
[12:12:34] [PASSED] Clock 234000 BPP 30 DSC disabled
[12:12:34] [PASSED] Clock 297000 BPP 24 DSC disabled
[12:12:34] [PASSED] Clock 332880 BPP 24 DSC enabled
[12:12:34] [PASSED] Clock 324540 BPP 24 DSC enabled
[12:12:34] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[12:12:34] ============== drm_test_dp_mst_calc_pbn_div ===============
[12:12:34] [PASSED] Link rate 2000000 lane count 4
[12:12:34] [PASSED] Link rate 2000000 lane count 2
[12:12:34] [PASSED] Link rate 2000000 lane count 1
[12:12:34] [PASSED] Link rate 1350000 lane count 4
[12:12:34] [PASSED] Link rate 1350000 lane count 2
[12:12:34] [PASSED] Link rate 1350000 lane count 1
[12:12:34] [PASSED] Link rate 1000000 lane count 4
[12:12:34] [PASSED] Link rate 1000000 lane count 2
[12:12:34] [PASSED] Link rate 1000000 lane count 1
[12:12:34] [PASSED] Link rate 810000 lane count 4
[12:12:34] [PASSED] Link rate 810000 lane count 2
[12:12:34] [PASSED] Link rate 810000 lane count 1
[12:12:34] [PASSED] Link rate 540000 lane count 4
[12:12:34] [PASSED] Link rate 540000 lane count 2
[12:12:34] [PASSED] Link rate 540000 lane count 1
[12:12:34] [PASSED] Link rate 270000 lane count 4
[12:12:34] [PASSED] Link rate 270000 lane count 2
[12:12:34] [PASSED] Link rate 270000 lane count 1
[12:12:34] [PASSED] Link rate 162000 lane count 4
[12:12:34] [PASSED] Link rate 162000 lane count 2
[12:12:34] [PASSED] Link rate 162000 lane count 1
[12:12:34] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[12:12:34] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[12:12:34] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[12:12:34] [PASSED] DP_POWER_UP_PHY with port number
[12:12:34] [PASSED] DP_POWER_DOWN_PHY with port number
[12:12:34] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[12:12:34] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[12:12:34] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[12:12:34] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[12:12:34] [PASSED] DP_QUERY_PAYLOAD with port number
[12:12:34] [PASSED] DP_QUERY_PAYLOAD with VCPI
[12:12:34] [PASSED] DP_REMOTE_DPCD_READ with port number
[12:12:34] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[12:12:34] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[12:12:34] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[12:12:34] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[12:12:34] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[12:12:34] [PASSED] DP_REMOTE_I2C_READ with port number
[12:12:34] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[12:12:34] [PASSED] DP_REMOTE_I2C_READ with transactions array
[12:12:34] [PASSED] DP_REMOTE_I2C_WRITE with port number
[12:12:34] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[12:12:34] [PASSED] DP_REMOTE_I2C_WRITE with data array
[12:12:34] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[12:12:34] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[12:12:34] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[12:12:34] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[12:12:34] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[12:12:34] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[12:12:34] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[12:12:34] ================ [PASSED] drm_dp_mst_helper ================
[12:12:34] ================== drm_exec (7 subtests) ===================
[12:12:34] [PASSED] sanitycheck
[12:12:34] [PASSED] test_lock
[12:12:34] [PASSED] test_lock_unlock
[12:12:34] [PASSED] test_duplicates
[12:12:34] [PASSED] test_prepare
[12:12:34] [PASSED] test_prepare_array
[12:12:34] [PASSED] test_multiple_loops
[12:12:34] ==================== [PASSED] drm_exec =====================
[12:12:34] =========== drm_format_helper_test (17 subtests) ===========
[12:12:34] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[12:12:34] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[12:12:34] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[12:12:34] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[12:12:34] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[12:12:34] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[12:12:34] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[12:12:34] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[12:12:34] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[12:12:34] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[12:12:34] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[12:12:34] ============== drm_test_fb_xrgb8888_to_mono ===============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[12:12:34] ==================== drm_test_fb_swab =====================
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ================ [PASSED] drm_test_fb_swab =================
[12:12:34] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[12:12:34] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[12:12:34] [PASSED] single_pixel_source_buffer
[12:12:34] [PASSED] single_pixel_clip_rectangle
[12:12:34] [PASSED] well_known_colors
[12:12:34] [PASSED] destination_pitch
[12:12:34] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[12:12:34] ================= drm_test_fb_clip_offset =================
[12:12:34] [PASSED] pass through
[12:12:34] [PASSED] horizontal offset
[12:12:34] [PASSED] vertical offset
[12:12:34] [PASSED] horizontal and vertical offset
[12:12:34] [PASSED] horizontal offset (custom pitch)
[12:12:34] [PASSED] vertical offset (custom pitch)
[12:12:34] [PASSED] horizontal and vertical offset (custom pitch)
[12:12:34] ============= [PASSED] drm_test_fb_clip_offset =============
[12:12:34] =================== drm_test_fb_memcpy ====================
[12:12:34] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[12:12:34] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[12:12:34] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[12:12:34] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[12:12:34] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[12:12:34] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[12:12:34] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[12:12:34] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[12:12:34] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[12:12:34] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[12:12:34] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[12:12:34] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[12:12:34] =============== [PASSED] drm_test_fb_memcpy ================
[12:12:34] ============= [PASSED] drm_format_helper_test ==============
[12:12:34] ================= drm_format (18 subtests) =================
[12:12:34] [PASSED] drm_test_format_block_width_invalid
[12:12:34] [PASSED] drm_test_format_block_width_one_plane
[12:12:34] [PASSED] drm_test_format_block_width_two_plane
[12:12:34] [PASSED] drm_test_format_block_width_three_plane
[12:12:34] [PASSED] drm_test_format_block_width_tiled
[12:12:34] [PASSED] drm_test_format_block_height_invalid
[12:12:34] [PASSED] drm_test_format_block_height_one_plane
[12:12:34] [PASSED] drm_test_format_block_height_two_plane
[12:12:34] [PASSED] drm_test_format_block_height_three_plane
[12:12:34] [PASSED] drm_test_format_block_height_tiled
[12:12:34] [PASSED] drm_test_format_min_pitch_invalid
[12:12:34] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[12:12:34] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[12:12:34] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[12:12:34] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[12:12:34] [PASSED] drm_test_format_min_pitch_two_plane
[12:12:34] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[12:12:34] [PASSED] drm_test_format_min_pitch_tiled
[12:12:34] =================== [PASSED] drm_format ====================
[12:12:34] ============== drm_framebuffer (10 subtests) ===============
[12:12:34] ========== drm_test_framebuffer_check_src_coords ==========
[12:12:34] [PASSED] Success: source fits into fb
[12:12:34] [PASSED] Fail: overflowing fb with x-axis coordinate
[12:12:34] [PASSED] Fail: overflowing fb with y-axis coordinate
[12:12:34] [PASSED] Fail: overflowing fb with source width
[12:12:34] [PASSED] Fail: overflowing fb with source height
[12:12:34] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[12:12:34] [PASSED] drm_test_framebuffer_cleanup
[12:12:34] =============== drm_test_framebuffer_create ===============
[12:12:34] [PASSED] ABGR8888 normal sizes
[12:12:34] [PASSED] ABGR8888 max sizes
[12:12:34] [PASSED] ABGR8888 pitch greater than min required
[12:12:34] [PASSED] ABGR8888 pitch less than min required
[12:12:34] [PASSED] ABGR8888 Invalid width
[12:12:34] [PASSED] ABGR8888 Invalid buffer handle
[12:12:34] [PASSED] No pixel format
[12:12:34] [PASSED] ABGR8888 Width 0
[12:12:34] [PASSED] ABGR8888 Height 0
[12:12:34] [PASSED] ABGR8888 Out of bound height * pitch combination
[12:12:34] [PASSED] ABGR8888 Large buffer offset
[12:12:34] [PASSED] ABGR8888 Buffer offset for inexistent plane
[12:12:34] [PASSED] ABGR8888 Invalid flag
[12:12:34] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[12:12:34] [PASSED] ABGR8888 Valid buffer modifier
[12:12:34] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[12:12:34] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[12:12:34] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[12:12:34] [PASSED] NV12 Normal sizes
[12:12:34] [PASSED] NV12 Max sizes
[12:12:34] [PASSED] NV12 Invalid pitch
[12:12:34] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[12:12:34] [PASSED] NV12 different modifier per-plane
[12:12:34] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[12:12:34] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[12:12:34] [PASSED] NV12 Modifier for inexistent plane
[12:12:34] [PASSED] NV12 Handle for inexistent plane
[12:12:34] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[12:12:34] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[12:12:34] [PASSED] YVU420 Normal sizes
[12:12:34] [PASSED] YVU420 Max sizes
[12:12:34] [PASSED] YVU420 Invalid pitch
[12:12:34] [PASSED] YVU420 Different pitches
[12:12:34] [PASSED] YVU420 Different buffer offsets/pitches
[12:12:34] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[12:12:34] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[12:12:34] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[12:12:34] [PASSED] YVU420 Valid modifier
[12:12:34] [PASSED] YVU420 Different modifiers per plane
[12:12:34] [PASSED] YVU420 Modifier for inexistent plane
[12:12:34] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[12:12:34] [PASSED] X0L2 Normal sizes
[12:12:34] [PASSED] X0L2 Max sizes
[12:12:34] [PASSED] X0L2 Invalid pitch
[12:12:34] [PASSED] X0L2 Pitch greater than minimum required
[12:12:34] [PASSED] X0L2 Handle for inexistent plane
[12:12:34] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[12:12:34] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[12:12:34] [PASSED] X0L2 Valid modifier
[12:12:34] [PASSED] X0L2 Modifier for inexistent plane
[12:12:34] =========== [PASSED] drm_test_framebuffer_create ===========
[12:12:34] [PASSED] drm_test_framebuffer_free
[12:12:34] [PASSED] drm_test_framebuffer_init
[12:12:34] [PASSED] drm_test_framebuffer_init_bad_format
[12:12:34] [PASSED] drm_test_framebuffer_init_dev_mismatch
[12:12:34] [PASSED] drm_test_framebuffer_lookup
[12:12:34] [PASSED] drm_test_framebuffer_lookup_inexistent
[12:12:34] [PASSED] drm_test_framebuffer_modifiers_not_supported
[12:12:34] ================= [PASSED] drm_framebuffer =================
[12:12:34] ================ drm_gem_shmem (8 subtests) ================
[12:12:34] [PASSED] drm_gem_shmem_test_obj_create
[12:12:34] [PASSED] drm_gem_shmem_test_obj_create_private
[12:12:34] [PASSED] drm_gem_shmem_test_pin_pages
[12:12:34] [PASSED] drm_gem_shmem_test_vmap
[12:12:34] [PASSED] drm_gem_shmem_test_get_sg_table
[12:12:34] [PASSED] drm_gem_shmem_test_get_pages_sgt
[12:12:34] [PASSED] drm_gem_shmem_test_madvise
[12:12:34] [PASSED] drm_gem_shmem_test_purge
[12:12:34] ================== [PASSED] drm_gem_shmem ==================
[12:12:34] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[12:12:34] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[12:12:34] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[12:12:34] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[12:12:34] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[12:12:34] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[12:12:34] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[12:12:34] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[12:12:34] [PASSED] Automatic
[12:12:34] [PASSED] Full
[12:12:34] [PASSED] Limited 16:235
[12:12:34] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[12:12:34] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[12:12:34] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[12:12:34] [PASSED] drm_test_check_disable_connector
[12:12:34] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[12:12:34] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[12:12:34] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[12:12:34] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[12:12:34] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[12:12:34] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[12:12:34] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[12:12:34] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[12:12:34] [PASSED] drm_test_check_output_bpc_dvi
[12:12:34] [PASSED] drm_test_check_output_bpc_format_vic_1
[12:12:34] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[12:12:34] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[12:12:34] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[12:12:34] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[12:12:34] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[12:12:34] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[12:12:34] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[12:12:34] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[12:12:34] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[12:12:34] [PASSED] drm_test_check_broadcast_rgb_value
[12:12:34] [PASSED] drm_test_check_bpc_8_value
[12:12:34] [PASSED] drm_test_check_bpc_10_value
[12:12:34] [PASSED] drm_test_check_bpc_12_value
[12:12:34] [PASSED] drm_test_check_format_value
[12:12:34] [PASSED] drm_test_check_tmds_char_value
[12:12:34] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[12:12:34] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[12:12:34] [PASSED] drm_test_check_mode_valid
[12:12:34] [PASSED] drm_test_check_mode_valid_reject
[12:12:34] [PASSED] drm_test_check_mode_valid_reject_rate
[12:12:34] [PASSED] drm_test_check_mode_valid_reject_max_clock
[12:12:34] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[12:12:34] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[12:12:34] [PASSED] drm_test_check_infoframes
[12:12:34] [PASSED] drm_test_check_reject_avi_infoframe
[12:12:34] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[12:12:34] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[12:12:34] [PASSED] drm_test_check_reject_audio_infoframe
[12:12:34] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[12:12:34] ================= drm_managed (2 subtests) =================
[12:12:34] [PASSED] drm_test_managed_release_action
[12:12:34] [PASSED] drm_test_managed_run_action
[12:12:34] =================== [PASSED] drm_managed ===================
[12:12:34] =================== drm_mm (6 subtests) ====================
[12:12:34] [PASSED] drm_test_mm_init
[12:12:34] [PASSED] drm_test_mm_debug
[12:12:34] [PASSED] drm_test_mm_align32
[12:12:34] [PASSED] drm_test_mm_align64
[12:12:34] [PASSED] drm_test_mm_lowest
[12:12:34] [PASSED] drm_test_mm_highest
[12:12:34] ===================== [PASSED] drm_mm ======================
[12:12:34] ============= drm_modes_analog_tv (5 subtests) =============
[12:12:34] [PASSED] drm_test_modes_analog_tv_mono_576i
[12:12:34] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[12:12:34] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[12:12:34] [PASSED] drm_test_modes_analog_tv_pal_576i
[12:12:34] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[12:12:34] =============== [PASSED] drm_modes_analog_tv ===============
[12:12:34] ============== drm_plane_helper (2 subtests) ===============
[12:12:34] =============== drm_test_check_plane_state ================
[12:12:34] [PASSED] clipping_simple
[12:12:34] [PASSED] clipping_rotate_reflect
[12:12:34] [PASSED] positioning_simple
[12:12:34] [PASSED] upscaling
[12:12:34] [PASSED] downscaling
[12:12:34] [PASSED] rounding1
[12:12:34] [PASSED] rounding2
[12:12:34] [PASSED] rounding3
[12:12:34] [PASSED] rounding4
[12:12:34] =========== [PASSED] drm_test_check_plane_state ============
[12:12:34] =========== drm_test_check_invalid_plane_state ============
[12:12:34] [PASSED] positioning_invalid
[12:12:34] [PASSED] upscaling_invalid
[12:12:34] [PASSED] downscaling_invalid
[12:12:34] ======= [PASSED] drm_test_check_invalid_plane_state ========
[12:12:34] ================ [PASSED] drm_plane_helper =================
[12:12:34] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[12:12:34] ====== drm_test_connector_helper_tv_get_modes_check =======
[12:12:34] [PASSED] None
[12:12:34] [PASSED] PAL
[12:12:34] [PASSED] NTSC
[12:12:34] [PASSED] Both, NTSC Default
[12:12:34] [PASSED] Both, PAL Default
[12:12:34] [PASSED] Both, NTSC Default, with PAL on command-line
[12:12:34] [PASSED] Both, PAL Default, with NTSC on command-line
[12:12:34] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[12:12:34] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[12:12:34] ================== drm_rect (9 subtests) ===================
[12:12:34] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[12:12:34] [PASSED] drm_test_rect_clip_scaled_not_clipped
[12:12:34] [PASSED] drm_test_rect_clip_scaled_clipped
[12:12:34] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[12:12:34] ================= drm_test_rect_intersect =================
[12:12:34] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[12:12:34] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[12:12:34] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[12:12:34] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[12:12:34] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[12:12:34] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[12:12:34] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[12:12:34] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[12:12:34] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[12:12:34] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[12:12:34] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[12:12:34] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[12:12:34] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[12:12:34] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[12:12:34] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[12:12:34] ============= [PASSED] drm_test_rect_intersect =============
[12:12:34] ================ drm_test_rect_calc_hscale ================
[12:12:34] [PASSED] normal use
[12:12:34] [PASSED] out of max range
[12:12:34] [PASSED] out of min range
[12:12:34] [PASSED] zero dst
[12:12:34] [PASSED] negative src
[12:12:34] [PASSED] negative dst
[12:12:34] ============ [PASSED] drm_test_rect_calc_hscale ============
[12:12:34] ================ drm_test_rect_calc_vscale ================
[12:12:34] [PASSED] normal use
[12:12:34] [PASSED] out of max range
[12:12:34] [PASSED] out of min range
[12:12:34] [PASSED] zero dst
[12:12:34] [PASSED] negative src
[12:12:34] [PASSED] negative dst
stty: 'standard input': Inappropriate ioctl for device
[12:12:34] ============ [PASSED] drm_test_rect_calc_vscale ============
[12:12:34] ================== drm_test_rect_rotate ===================
[12:12:34] [PASSED] reflect-x
[12:12:34] [PASSED] reflect-y
[12:12:34] [PASSED] rotate-0
[12:12:34] [PASSED] rotate-90
[12:12:34] [PASSED] rotate-180
[12:12:34] [PASSED] rotate-270
[12:12:34] ============== [PASSED] drm_test_rect_rotate ===============
[12:12:34] ================ drm_test_rect_rotate_inv =================
[12:12:34] [PASSED] reflect-x
[12:12:34] [PASSED] reflect-y
[12:12:34] [PASSED] rotate-0
[12:12:34] [PASSED] rotate-90
[12:12:34] [PASSED] rotate-180
[12:12:34] [PASSED] rotate-270
[12:12:34] ============ [PASSED] drm_test_rect_rotate_inv =============
[12:12:34] ==================== [PASSED] drm_rect =====================
[12:12:34] ============ drm_sysfb_modeset_test (1 subtest) ============
[12:12:34] ============ drm_test_sysfb_build_fourcc_list =============
[12:12:34] [PASSED] no native formats
[12:12:34] [PASSED] XRGB8888 as native format
[12:12:34] [PASSED] remove duplicates
[12:12:34] [PASSED] convert alpha formats
[12:12:34] [PASSED] random formats
[12:12:34] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[12:12:34] ============= [PASSED] drm_sysfb_modeset_test ==============
[12:12:34] ================== drm_fixp (2 subtests) ===================
[12:12:34] [PASSED] drm_test_int2fixp
[12:12:34] [PASSED] drm_test_sm2fixp
[12:12:34] ==================== [PASSED] drm_fixp =====================
[12:12:34] ============================================================
[12:12:34] Testing complete. Ran 621 tests: passed: 621
[12:12:34] Elapsed time: 26.240s total, 1.722s configuring, 24.301s building, 0.182s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[12:12:34] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:12:36] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[12:12:46] Starting KUnit Kernel (1/1)...
[12:12:46] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:12:46] ================= ttm_device (5 subtests) ==================
[12:12:46] [PASSED] ttm_device_init_basic
[12:12:46] [PASSED] ttm_device_init_multiple
[12:12:46] [PASSED] ttm_device_fini_basic
[12:12:46] [PASSED] ttm_device_init_no_vma_man
[12:12:46] ================== ttm_device_init_pools ==================
[12:12:46] [PASSED] No DMA allocations, no DMA32 required
[12:12:46] [PASSED] DMA allocations, DMA32 required
[12:12:46] [PASSED] No DMA allocations, DMA32 required
[12:12:46] [PASSED] DMA allocations, no DMA32 required
[12:12:46] ============== [PASSED] ttm_device_init_pools ==============
[12:12:46] =================== [PASSED] ttm_device ====================
[12:12:46] ================== ttm_pool (8 subtests) ===================
[12:12:46] ================== ttm_pool_alloc_basic ===================
[12:12:46] [PASSED] One page
[12:12:46] [PASSED] More than one page
[12:12:46] [PASSED] Above the allocation limit
[12:12:46] [PASSED] One page, with coherent DMA mappings enabled
[12:12:46] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[12:12:46] ============== [PASSED] ttm_pool_alloc_basic ===============
[12:12:46] ============== ttm_pool_alloc_basic_dma_addr ==============
[12:12:46] [PASSED] One page
[12:12:46] [PASSED] More than one page
[12:12:46] [PASSED] Above the allocation limit
[12:12:46] [PASSED] One page, with coherent DMA mappings enabled
[12:12:46] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[12:12:46] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[12:12:46] [PASSED] ttm_pool_alloc_order_caching_match
[12:12:46] [PASSED] ttm_pool_alloc_caching_mismatch
[12:12:46] [PASSED] ttm_pool_alloc_order_mismatch
[12:12:46] [PASSED] ttm_pool_free_dma_alloc
[12:12:46] [PASSED] ttm_pool_free_no_dma_alloc
[12:12:46] [PASSED] ttm_pool_fini_basic
[12:12:46] ==================== [PASSED] ttm_pool =====================
[12:12:46] ================ ttm_resource (8 subtests) =================
[12:12:46] ================= ttm_resource_init_basic =================
[12:12:46] [PASSED] Init resource in TTM_PL_SYSTEM
[12:12:46] [PASSED] Init resource in TTM_PL_VRAM
[12:12:46] [PASSED] Init resource in a private placement
[12:12:46] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[12:12:46] ============= [PASSED] ttm_resource_init_basic =============
[12:12:46] [PASSED] ttm_resource_init_pinned
[12:12:46] [PASSED] ttm_resource_fini_basic
[12:12:46] [PASSED] ttm_resource_manager_init_basic
[12:12:46] [PASSED] ttm_resource_manager_usage_basic
[12:12:46] [PASSED] ttm_resource_manager_set_used_basic
[12:12:46] [PASSED] ttm_sys_man_alloc_basic
[12:12:46] [PASSED] ttm_sys_man_free_basic
[12:12:46] ================== [PASSED] ttm_resource ===================
[12:12:46] =================== ttm_tt (15 subtests) ===================
[12:12:46] ==================== ttm_tt_init_basic ====================
[12:12:46] [PASSED] Page-aligned size
[12:12:46] [PASSED] Extra pages requested
[12:12:46] ================ [PASSED] ttm_tt_init_basic ================
[12:12:46] [PASSED] ttm_tt_init_misaligned
[12:12:46] [PASSED] ttm_tt_fini_basic
[12:12:46] [PASSED] ttm_tt_fini_sg
[12:12:46] [PASSED] ttm_tt_fini_shmem
[12:12:46] [PASSED] ttm_tt_create_basic
[12:12:46] [PASSED] ttm_tt_create_invalid_bo_type
[12:12:46] [PASSED] ttm_tt_create_ttm_exists
[12:12:46] [PASSED] ttm_tt_create_failed
[12:12:46] [PASSED] ttm_tt_destroy_basic
[12:12:46] [PASSED] ttm_tt_populate_null_ttm
[12:12:46] [PASSED] ttm_tt_populate_populated_ttm
[12:12:46] [PASSED] ttm_tt_unpopulate_basic
[12:12:46] [PASSED] ttm_tt_unpopulate_empty_ttm
[12:12:46] [PASSED] ttm_tt_swapin_basic
[12:12:46] ===================== [PASSED] ttm_tt ======================
[12:12:46] =================== ttm_bo (14 subtests) ===================
[12:12:46] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[12:12:46] [PASSED] Cannot be interrupted and sleeps
[12:12:46] [PASSED] Cannot be interrupted, locks straight away
[12:12:46] [PASSED] Can be interrupted, sleeps
[12:12:46] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[12:12:46] [PASSED] ttm_bo_reserve_locked_no_sleep
[12:12:46] [PASSED] ttm_bo_reserve_no_wait_ticket
[12:12:46] [PASSED] ttm_bo_reserve_double_resv
[12:12:46] [PASSED] ttm_bo_reserve_interrupted
[12:12:46] [PASSED] ttm_bo_reserve_deadlock
[12:12:46] [PASSED] ttm_bo_unreserve_basic
[12:12:46] [PASSED] ttm_bo_unreserve_pinned
[12:12:46] [PASSED] ttm_bo_unreserve_bulk
[12:12:46] [PASSED] ttm_bo_fini_basic
[12:12:46] [PASSED] ttm_bo_fini_shared_resv
[12:12:46] [PASSED] ttm_bo_pin_basic
[12:12:46] [PASSED] ttm_bo_pin_unpin_resource
[12:12:46] [PASSED] ttm_bo_multiple_pin_one_unpin
[12:12:46] ===================== [PASSED] ttm_bo ======================
[12:12:46] ============== ttm_bo_validate (21 subtests) ===============
[12:12:46] ============== ttm_bo_init_reserved_sys_man ===============
[12:12:46] [PASSED] Buffer object for userspace
[12:12:46] [PASSED] Kernel buffer object
[12:12:46] [PASSED] Shared buffer object
[12:12:46] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[12:12:46] ============== ttm_bo_init_reserved_mock_man ==============
[12:12:46] [PASSED] Buffer object for userspace
[12:12:46] [PASSED] Kernel buffer object
[12:12:46] [PASSED] Shared buffer object
[12:12:46] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[12:12:46] [PASSED] ttm_bo_init_reserved_resv
[12:12:46] ================== ttm_bo_validate_basic ==================
[12:12:46] [PASSED] Buffer object for userspace
[12:12:46] [PASSED] Kernel buffer object
[12:12:46] [PASSED] Shared buffer object
[12:12:46] ============== [PASSED] ttm_bo_validate_basic ==============
[12:12:46] [PASSED] ttm_bo_validate_invalid_placement
[12:12:46] ============= ttm_bo_validate_same_placement ==============
[12:12:46] [PASSED] System manager
[12:12:46] [PASSED] VRAM manager
[12:12:46] ========= [PASSED] ttm_bo_validate_same_placement ==========
[12:12:46] [PASSED] ttm_bo_validate_failed_alloc
[12:12:46] [PASSED] ttm_bo_validate_pinned
[12:12:46] [PASSED] ttm_bo_validate_busy_placement
[12:12:46] ================ ttm_bo_validate_multihop =================
[12:12:46] [PASSED] Buffer object for userspace
[12:12:46] [PASSED] Kernel buffer object
[12:12:46] [PASSED] Shared buffer object
[12:12:46] ============ [PASSED] ttm_bo_validate_multihop =============
[12:12:46] ========== ttm_bo_validate_no_placement_signaled ==========
[12:12:46] [PASSED] Buffer object in system domain, no page vector
[12:12:46] [PASSED] Buffer object in system domain with an existing page vector
[12:12:46] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[12:12:46] ======== ttm_bo_validate_no_placement_not_signaled ========
[12:12:46] [PASSED] Buffer object for userspace
[12:12:46] [PASSED] Kernel buffer object
[12:12:46] [PASSED] Shared buffer object
[12:12:46] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[12:12:46] [PASSED] ttm_bo_validate_move_fence_signaled
[12:12:46] ========= ttm_bo_validate_move_fence_not_signaled =========
[12:12:46] [PASSED] Waits for GPU
[12:12:46] [PASSED] Tries to lock straight away
[12:12:46] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[12:12:46] [PASSED] ttm_bo_validate_happy_evict
[12:12:46] [PASSED] ttm_bo_validate_all_pinned_evict
[12:12:46] [PASSED] ttm_bo_validate_allowed_only_evict
[12:12:46] [PASSED] ttm_bo_validate_deleted_evict
[12:12:46] [PASSED] ttm_bo_validate_busy_domain_evict
[12:12:46] [PASSED] ttm_bo_validate_evict_gutting
[12:12:46] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[12:12:46] ================= [PASSED] ttm_bo_validate =================
[12:12:46] ============================================================
[12:12:46] Testing complete. Ran 101 tests: passed: 101
[12:12:46] Elapsed time: 11.518s total, 1.765s configuring, 9.537s building, 0.181s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 45+ messages in thread
* ✗ CI.checksparse: warning for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (27 preceding siblings ...)
2026-03-10 12:12 ` ✓ CI.KUnit: success " Patchwork
@ 2026-03-10 12:27 ` Patchwork
2026-03-10 13:24 ` ✓ Xe.CI.BAT: success " Patchwork
` (3 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Patchwork @ 2026-03-10 12:27 UTC (permalink / raw)
To: Sebastian Andrzej Siewior; +Cc: intel-xe
== Series Details ==
Series: drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
URL : https://patchwork.freedesktop.org/series/159034/
State : warning
== Summary ==
+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 77e176657e782bb81270c230d1cfec91f7707162
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
+/kernel/Makefile:1204: C=1 specified, but sparse is not available or not up to date
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 45+ messages in thread
* ✓ Xe.CI.BAT: success for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (28 preceding siblings ...)
2026-03-10 12:27 ` ✗ CI.checksparse: warning " Patchwork
@ 2026-03-10 13:24 ` Patchwork
2026-03-10 14:20 ` ✗ i915.CI.BAT: failure " Patchwork
` (2 subsequent siblings)
32 siblings, 0 replies; 45+ messages in thread
From: Patchwork @ 2026-03-10 13:24 UTC (permalink / raw)
To: Sebastian Andrzej Siewior; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1690 bytes --]
== Series Details ==
Series: drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
URL : https://patchwork.freedesktop.org/series/159034/
State : success
== Summary ==
CI Bug Log - changes from xe-4686-77e176657e782bb81270c230d1cfec91f7707162_BAT -> xe-pw-159034v14_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (14 -> 13)
------------------------------
Missing (1): bat-dg2-oem2
Known issues
------------
Here are the changes found in xe-pw-159034v14_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@core_hotunplug@unbind-rebind:
- bat-bmg-1: [PASS][1] -> [ABORT][2] ([Intel XE#7249])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/bat-bmg-1/igt@core_hotunplug@unbind-rebind.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/bat-bmg-1/igt@core_hotunplug@unbind-rebind.html
[Intel XE#7249]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7249
Build changes
-------------
* IGT: IGT_8788 -> IGT_8790
* Linux: xe-4686-77e176657e782bb81270c230d1cfec91f7707162 -> xe-pw-159034v14
IGT_8788: 476cbad7c600b2779022bf8771b3ab4efeaa3db5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8790: 4626b8c809cf894b9f512d9a17d5ce0f8682a235 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4686-77e176657e782bb81270c230d1cfec91f7707162: 77e176657e782bb81270c230d1cfec91f7707162
xe-pw-159034v14: 159034v14
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/index.html
[-- Attachment #2: Type: text/html, Size: 2270 bytes --]
^ permalink raw reply [flat|nested] 45+ messages in thread
* ✗ i915.CI.BAT: failure for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (29 preceding siblings ...)
2026-03-10 13:24 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2026-03-10 14:20 ` Patchwork
2026-03-10 17:31 ` ✗ Xe.CI.FULL: " Patchwork
2026-03-10 17:35 ` ✗ Fi.CI.BUILD: failure for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev15) Patchwork
32 siblings, 0 replies; 45+ messages in thread
From: Patchwork @ 2026-03-10 14:20 UTC (permalink / raw)
To: Sebastian Andrzej Siewior; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 9360 bytes --]
== Series Details ==
Series: drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
URL : https://patchwork.freedesktop.org/series/159035/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_18116 -> Patchwork_159035v14
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_159035v14 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_159035v14, 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.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/index.html
Participating hosts (41 -> 37)
------------------------------
Missing (4): bat-dg2-13 fi-glk-j4005 fi-snb-2520m fi-pnv-d510
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_159035v14:
### IGT changes ###
#### Possible regressions ####
* igt@dmabuf@all-tests:
- fi-ilk-650: [PASS][1] -> [ABORT][2] +1 other test abort
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/fi-ilk-650/igt@dmabuf@all-tests.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/fi-ilk-650/igt@dmabuf@all-tests.html
* igt@gem_lmem_swapping@basic:
- bat-atsm-1: [PASS][3] -> [TIMEOUT][4] +1 other test timeout
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/bat-atsm-1/igt@gem_lmem_swapping@basic.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/bat-atsm-1/igt@gem_lmem_swapping@basic.html
* igt@i915_selftest@live:
- bat-adls-6: [PASS][5] -> [ABORT][6] +1 other test abort
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/bat-adls-6/igt@i915_selftest@live.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/bat-adls-6/igt@i915_selftest@live.html
- fi-bsw-n3050: [PASS][7] -> [ABORT][8] +1 other test abort
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/fi-bsw-n3050/igt@i915_selftest@live.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/fi-bsw-n3050/igt@i915_selftest@live.html
- fi-kbl-7567u: [PASS][9] -> [DMESG-FAIL][10] +1 other test dmesg-fail
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/fi-kbl-7567u/igt@i915_selftest@live.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/fi-kbl-7567u/igt@i915_selftest@live.html
- bat-apl-1: [PASS][11] -> [ABORT][12] +1 other test abort
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/bat-apl-1/igt@i915_selftest@live.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/bat-apl-1/igt@i915_selftest@live.html
- fi-rkl-11600: [PASS][13] -> [ABORT][14] +1 other test abort
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/fi-rkl-11600/igt@i915_selftest@live.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/fi-rkl-11600/igt@i915_selftest@live.html
- fi-cfl-8109u: [PASS][15] -> [DMESG-FAIL][16] +1 other test dmesg-fail
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/fi-cfl-8109u/igt@i915_selftest@live.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/fi-cfl-8109u/igt@i915_selftest@live.html
- fi-kbl-8809g: [PASS][17] -> [DMESG-FAIL][18] +1 other test dmesg-fail
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/fi-kbl-8809g/igt@i915_selftest@live.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/fi-kbl-8809g/igt@i915_selftest@live.html
* igt@i915_selftest@live@execlists:
- bat-kbl-2: [PASS][19] -> [INCOMPLETE][20] +1 other test incomplete
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/bat-kbl-2/igt@i915_selftest@live@execlists.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/bat-kbl-2/igt@i915_selftest@live@execlists.html
* igt@i915_selftest@live@gt_timelines:
- bat-atsm-1: [PASS][21] -> [ABORT][22]
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/bat-atsm-1/igt@i915_selftest@live@gt_timelines.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/bat-atsm-1/igt@i915_selftest@live@gt_timelines.html
* igt@i915_selftest@live@migrate:
- fi-bsw-nick: [PASS][23] -> [DMESG-FAIL][24]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/fi-bsw-nick/igt@i915_selftest@live@migrate.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/fi-bsw-nick/igt@i915_selftest@live@migrate.html
* igt@i915_selftest@live@perf:
- fi-bsw-nick: [PASS][25] -> [ABORT][26] +1 other test abort
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/fi-bsw-nick/igt@i915_selftest@live@perf.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/fi-bsw-nick/igt@i915_selftest@live@perf.html
* igt@kms_flip@basic-flip-vs-dpms@c-hdmi-a1:
- bat-jsl-5: [PASS][27] -> [ABORT][28] +1 other test abort
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/bat-jsl-5/igt@kms_flip@basic-flip-vs-dpms@c-hdmi-a1.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/bat-jsl-5/igt@kms_flip@basic-flip-vs-dpms@c-hdmi-a1.html
#### Warnings ####
* igt@i915_selftest@live:
- bat-atsm-1: [DMESG-FAIL][29] ([i915#12061]) -> [ABORT][30]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/bat-atsm-1/igt@i915_selftest@live.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/bat-atsm-1/igt@i915_selftest@live.html
New tests
---------
New tests have been introduced between CI_DRM_18116 and Patchwork_159035v14:
### New IGT tests (13) ###
* igt@i915_selftest@allocator-basic:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@bad-close:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@basic:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@basic-auth:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@basic-fence-mmap:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@basic-fence-read:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@basic-files:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@basic-llseek-size:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@basic-process:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@basic-threads:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@busy:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@create-close:
- Statuses :
- Exec time: [None] s
* igt@i915_selftest@create-fd-close:
- Statuses :
- Exec time: [None] s
Known issues
------------
Here are the changes found in Patchwork_159035v14 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@core_hotunplug@unbind-rebind:
- bat-rpls-4: [PASS][31] -> [DMESG-WARN][32] ([i915#13400])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/bat-rpls-4/igt@core_hotunplug@unbind-rebind.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/bat-rpls-4/igt@core_hotunplug@unbind-rebind.html
* igt@kms_pipe_crc_basic@read-crc:
- fi-cfl-8109u: [PASS][33] -> [DMESG-WARN][34] ([i915#15673]) +48 other tests dmesg-warn
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/fi-cfl-8109u/igt@kms_pipe_crc_basic@read-crc.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/fi-cfl-8109u/igt@kms_pipe_crc_basic@read-crc.html
#### Possible fixes ####
* igt@i915_selftest@live:
- bat-dg2-8: [DMESG-FAIL][35] ([i915#12061]) -> [PASS][36] +1 other test pass
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/bat-dg2-8/igt@i915_selftest@live.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/bat-dg2-8/igt@i915_selftest@live.html
* igt@i915_selftest@live@workarounds:
- bat-arls-6: [DMESG-FAIL][37] ([i915#12061]) -> [PASS][38] +1 other test pass
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18116/bat-arls-6/igt@i915_selftest@live@workarounds.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/bat-arls-6/igt@i915_selftest@live@workarounds.html
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#13400]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13400
[i915#15673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15673
Build changes
-------------
* Linux: CI_DRM_18116 -> Patchwork_159035v14
CI-20190529: 20190529
CI_DRM_18116: 77e176657e782bb81270c230d1cfec91f7707162 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8788: 476cbad7c600b2779022bf8771b3ab4efeaa3db5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_159035v14: 77e176657e782bb81270c230d1cfec91f7707162 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_159035v14/index.html
[-- Attachment #2: Type: text/html, Size: 10889 bytes --]
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
2026-03-10 11:57 ` [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work Maarten Lankhorst
@ 2026-03-10 17:04 ` Sebastian Andrzej Siewior
2026-03-10 18:14 ` Maarten Lankhorst
2026-03-10 17:22 ` Sebastian Andrzej Siewior
1 sibling, 1 reply; 45+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-03-10 17:04 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx, dri-devel
On 2026-03-10 12:57:08 [+0100], Maarten Lankhorst wrote:
> From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
>
> IRQ-Work (FIFO-1) will be preempted by the threaded-interrupt (FIFO-50)
> and the interrupt will poll on signaler_active while the irq-work can't
> make progress.
The threaded-interrupt is the interrupt.
| On PREEMPT_RT the irq_work can be preempted by threaded-interrupt which
| will be poll for completion but the irq_work routine can't make
| progress.
> Solve this by adding a spinlock to prevent starvation and force
> completion.
| Solve this by adding a spinlock_t to prevent starvation by forcing a
| context switch if lock is held based on `signaler_active'. On
| !PREEMPT_RT `signaler_active' can only be non-zero if multiple CPUs are
| involved and spinning on the lock leds to the same result.
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
If I am the From: then I should have the Signed-off-by, too. Let me do
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
so it can be picked up.
You did suggest the following:
--- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
+++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
@@ -209,7 +209,7 @@ static void signal_irq_work(struct irq_work *work)
intel_breadcrumbs_disarm_irq(b);
rcu_read_lock();
- atomic_inc(&b->signaler_active);
+ spin_lock(&b->signaler_active_sync);
list_for_each_entry_rcu(ce, &b->signalers, signal_link) {
struct i915_request *rq;
@@ -245,7 +245,7 @@ static void signal_irq_work(struct irq_work *work)
i915_request_put(rq);
}
}
- atomic_dec(&b->signaler_active);
+ spin_unlock(&b->signaler_active_sync);
rcu_read_unlock();
llist_for_each_safe(signal, sn, signal) {
@@ -290,6 +290,7 @@ intel_breadcrumbs_create(struct intel_engine_cs *irq_engine)
init_llist_head(&b->signaled_requests);
spin_lock_init(&b->irq_lock);
+ spin_lock_init(&b->signaler_active_sync);
init_irq_work(&b->irq_work, signal_irq_work);
b->irq_engine = irq_engine;
@@ -487,8 +488,10 @@ void intel_context_remove_breadcrumbs(struct intel_context *ce,
if (release)
intel_context_put(ce);
- while (atomic_read(&b->signaler_active))
- cpu_relax();
+ while (spin_is_locked(&b->signaler_active_sync)) {
+ spin_lock_irqsave(&b->signaler_active_sync, flags);
+ spin_unlock_irqrestore(&b->signaler_active_sync, flags);
And this does not work because spin_is_locked() returns true and spins
forever. This fails because there is a "corner case" where
spin_is_locked() returns but the lock has no lock owner as in locked.
This happens if there is a waiter which did not yet acquire the lock.
So if you happy with this, we could keep it ;)
+ }
}
static void print_signals(struct intel_breadcrumbs *b, struct drm_printer *p)
diff --git a/drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h b/drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h
index bdf09fd67b6e7..d071f4f1b1910 100644
--- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h
@@ -39,7 +39,7 @@ struct intel_breadcrumbs {
spinlock_t signalers_lock; /* protects the list of signalers */
struct list_head signalers;
struct llist_head signaled_requests;
- atomic_t signaler_active;
+ spinlock_t signaler_active_sync;
spinlock_t irq_lock; /* protects the interrupt from hardirq context */
struct irq_work irq_work; /* for use from inside irq_lock */
Sebastian
^ permalink raw reply related [flat|nested] 45+ messages in thread
* Re: [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
2026-03-10 11:57 ` [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work Maarten Lankhorst
2026-03-10 17:04 ` Sebastian Andrzej Siewior
@ 2026-03-10 17:22 ` Sebastian Andrzej Siewior
2026-03-10 19:03 ` Maarten Lankhorst
1 sibling, 1 reply; 45+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-03-10 17:22 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx, dri-devel
On 2026-03-10 12:57:08 [+0100], Maarten Lankhorst wrote:
> --- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> @@ -487,8 +490,11 @@ void intel_context_remove_breadcrumbs(struct intel_context *ce,
> if (release)
> intel_context_put(ce);
>
> - while (atomic_read(&b->signaler_active))
> + while (atomic_read(&b->signaler_active)) {
> + spin_lock(&b->signaler_active_sync);
> + spin_unlock(&b->signaler_active_sync);
> cpu_relax();
Forgot to mention: This is fine on PREEMPT_RT but on !RT you might need
spin_lock_irqsave(&b->signaler_active_sync, flags);
spin_unlock_irqrestore(&b->signaler_active_sync, flags);
if the function can be called from !IRQ context which might be the case
due to the irqsave() earlier in this function.
> + }
> }
Sebastian
^ permalink raw reply [flat|nested] 45+ messages in thread
* ✗ Xe.CI.FULL: failure for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (30 preceding siblings ...)
2026-03-10 14:20 ` ✗ i915.CI.BAT: failure " Patchwork
@ 2026-03-10 17:31 ` Patchwork
2026-03-10 17:35 ` ✗ Fi.CI.BUILD: failure for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev15) Patchwork
32 siblings, 0 replies; 45+ messages in thread
From: Patchwork @ 2026-03-10 17:31 UTC (permalink / raw)
To: Sebastian Andrzej Siewior; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 55384 bytes --]
== Series Details ==
Series: drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14)
URL : https://patchwork.freedesktop.org/series/159034/
State : failure
== Summary ==
CI Bug Log - changes from xe-4686-77e176657e782bb81270c230d1cfec91f7707162_FULL -> xe-pw-159034v14_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-159034v14_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-159034v14_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-159034v14_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_flip@flip-vs-expired-vblank@c-dp2:
- shard-bmg: [PASS][1] -> [FAIL][2] +4 other tests fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-8/igt@kms_flip@flip-vs-expired-vblank@c-dp2.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_flip@flip-vs-expired-vblank@c-dp2.html
* igt@xe_exec_fault_mode@many-execqueues-userptr-imm:
- shard-lnl: [PASS][3] -> [DMESG-WARN][4] +4 other tests dmesg-warn
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-4/igt@xe_exec_fault_mode@many-execqueues-userptr-imm.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-4/igt@xe_exec_fault_mode@many-execqueues-userptr-imm.html
* igt@xe_exec_system_allocator@prefetch-sys-benchmark:
- shard-bmg: [PASS][5] -> [TIMEOUT][6]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-7/igt@xe_exec_system_allocator@prefetch-sys-benchmark.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@xe_exec_system_allocator@prefetch-sys-benchmark.html
* igt@xe_pm@s4-vm-bind-userptr:
- shard-lnl: NOTRUN -> [DMESG-WARN][7]
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-5/igt@xe_pm@s4-vm-bind-userptr.html
* igt@xe_pxp@pxp-stale-bo-bind-post-rpm:
- shard-lnl: [PASS][8] -> [FAIL][9]
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-2/igt@xe_pxp@pxp-stale-bo-bind-post-rpm.html
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-4/igt@xe_pxp@pxp-stale-bo-bind-post-rpm.html
Known issues
------------
Here are the changes found in xe-pw-159034v14_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_async_flips@alternate-sync-async-flip:
- shard-bmg: [PASS][10] -> [FAIL][11] ([Intel XE#3718] / [Intel XE#6078])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-3/igt@kms_async_flips@alternate-sync-async-flip.html
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-4/igt@kms_async_flips@alternate-sync-async-flip.html
* igt@kms_async_flips@alternate-sync-async-flip@pipe-a-dp-2:
- shard-bmg: [PASS][12] -> [FAIL][13] ([Intel XE#6078]) +5 other tests fail
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-3/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-dp-2.html
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-4/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-dp-2.html
* igt@kms_async_flips@alternate-sync-async-flip@pipe-a-edp-1:
- shard-lnl: [PASS][14] -> [FAIL][15] ([Intel XE#3718] / [Intel XE#7265]) +1 other test fail
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-3/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-edp-1.html
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-5/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-edp-1.html
* igt@kms_async_flips@alternate-sync-async-flip@pipe-c-edp-1:
- shard-lnl: [PASS][16] -> [FAIL][17] ([Intel XE#7265])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-3/igt@kms_async_flips@alternate-sync-async-flip@pipe-c-edp-1.html
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-5/igt@kms_async_flips@alternate-sync-async-flip@pipe-c-edp-1.html
* igt@kms_async_flips@async-flip-with-page-flip-events-linear:
- shard-lnl: [PASS][18] -> [FAIL][19] ([Intel XE#5993] / [Intel XE#6054]) +3 other tests fail
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-3/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-6/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
* igt@kms_big_fb@4-tiled-64bpp-rotate-270:
- shard-lnl: NOTRUN -> [SKIP][20] ([Intel XE#1407]) +1 other test skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-4/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@linear-32bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#2327]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-10/igt@kms_big_fb@linear-32bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
- shard-lnl: [PASS][22] -> [FAIL][23] ([Intel XE#1231])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-1/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-8/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#1124]) +4 other tests skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-7/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
- shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#1124]) +2 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-1/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
* igt@kms_bw@linear-tiling-3-displays-1920x1080p:
- shard-lnl: NOTRUN -> [SKIP][26] ([Intel XE#367] / [Intel XE#7354])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-5/igt@kms_bw@linear-tiling-3-displays-1920x1080p.html
* igt@kms_bw@linear-tiling-4-displays-3840x2160p:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#367] / [Intel XE#7354]) +3 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_bw@linear-tiling-4-displays-3840x2160p.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc:
- shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#2887]) +1 other test skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-4/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#2652]) +17 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs@pipe-c-dp-2.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#2887]) +5 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-3/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs.html
* igt@kms_chamelium_color@ctm-0-75:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2325] / [Intel XE#7358])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-8/igt@kms_chamelium_color@ctm-0-75.html
* igt@kms_chamelium_edid@dp-edid-change-during-hibernate:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#2252]) +6 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-7/igt@kms_chamelium_edid@dp-edid-change-during-hibernate.html
* igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode:
- shard-lnl: NOTRUN -> [SKIP][33] ([Intel XE#373]) +2 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-4/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html
* igt@kms_color_pipeline@plane-lut1d-post-ctm3x4@pipe-a-plane-0:
- shard-lnl: NOTRUN -> [FAIL][34] ([Intel XE#7305]) +9 other tests fail
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-7/igt@kms_color_pipeline@plane-lut1d-post-ctm3x4@pipe-a-plane-0.html
* igt@kms_content_protection@atomic-dpms-hdcp14@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][35] ([Intel XE#3304] / [Intel XE#7374])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-8/igt@kms_content_protection@atomic-dpms-hdcp14@pipe-a-dp-2.html
* igt@kms_content_protection@dp-mst-type-0-suspend-resume:
- shard-lnl: NOTRUN -> [SKIP][36] ([Intel XE#6974])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-3/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#6974])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html
* igt@kms_content_protection@lic-type-0-hdcp14@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][38] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +2 other tests fail
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_content_protection@lic-type-0-hdcp14@pipe-a-dp-2.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#2321] / [Intel XE#7355])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-7/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-onscreen-max-size:
- shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#2320]) +1 other test skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-10/igt@kms_cursor_crc@cursor-onscreen-max-size.html
* igt@kms_cursor_crc@cursor-sliding-max-size:
- shard-lnl: NOTRUN -> [SKIP][41] ([Intel XE#1424]) +1 other test skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-8/igt@kms_cursor_crc@cursor-sliding-max-size.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#2291])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size:
- shard-bmg: NOTRUN -> [DMESG-WARN][43] ([Intel XE#5354])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
- shard-bmg: [PASS][44] -> [SKIP][45] ([Intel XE#2291]) +2 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-8/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-legacy:
- shard-lnl: NOTRUN -> [SKIP][46] ([Intel XE#309] / [Intel XE#7343])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-5/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html
* igt@kms_cursor_legacy@flip-vs-cursor-varying-size:
- shard-bmg: [PASS][47] -> [DMESG-WARN][48] ([Intel XE#5354])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-1/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
* igt@kms_dirtyfb@fbc-dirtyfb-ioctl:
- shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#4210] / [Intel XE#7467])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html
* igt@kms_display_modes@extended-mode-basic:
- shard-bmg: [PASS][50] -> [SKIP][51] ([Intel XE#4302])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-6/igt@kms_display_modes@extended-mode-basic.html
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_display_modes@extended-mode-basic.html
* igt@kms_dp_link_training@uhbr-mst:
- shard-bmg: NOTRUN -> [SKIP][52] ([Intel XE#4354] / [Intel XE#7386])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_dp_link_training@uhbr-mst.html
* igt@kms_dp_linktrain_fallback@dsc-fallback:
- shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#4331] / [Intel XE#7227])
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-3/igt@kms_dp_linktrain_fallback@dsc-fallback.html
- shard-bmg: NOTRUN -> [SKIP][54] ([Intel XE#4331] / [Intel XE#7227])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_dp_linktrain_fallback@dsc-fallback.html
* igt@kms_dsc@dsc-with-output-formats-with-bpc:
- shard-bmg: NOTRUN -> [SKIP][55] ([Intel XE#2244])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-8/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
* igt@kms_feature_discovery@display-4x:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#1138] / [Intel XE#7344])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_feature_discovery@display-4x.html
* igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible:
- shard-bmg: NOTRUN -> [SKIP][57] ([Intel XE#2316]) +1 other test skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible.html
* igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3:
- shard-bmg: [PASS][58] -> [FAIL][59] ([Intel XE#3321]) +5 other tests fail
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-10/igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3.html
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3.html
* igt@kms_flip@2x-modeset-vs-vblank-race-interruptible:
- shard-bmg: [PASS][60] -> [SKIP][61] ([Intel XE#2316]) +2 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-3/igt@kms_flip@2x-modeset-vs-vblank-race-interruptible.html
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_flip@2x-modeset-vs-vblank-race-interruptible.html
* igt@kms_flip@flip-vs-expired-vblank:
- shard-bmg: [PASS][62] -> [FAIL][63] ([Intel XE#3149] / [Intel XE#3321]) +1 other test fail
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-8/igt@kms_flip@flip-vs-expired-vblank.html
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_flip@flip-vs-expired-vblank.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
- shard-lnl: [PASS][64] -> [FAIL][65] ([Intel XE#301]) +1 other test fail
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-hdmi-a3:
- shard-bmg: [PASS][66] -> [FAIL][67] ([Intel XE#3321] / [Intel XE#7545])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-hdmi-a3.html
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-hdmi-a3.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@c-hdmi-a3:
- shard-bmg: [PASS][68] -> [FAIL][69] ([Intel XE#7545])
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-hdmi-a3.html
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-hdmi-a3.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a3:
- shard-bmg: [PASS][70] -> [FAIL][71] ([Intel XE#3149]) +2 other tests fail
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a3.html
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a3.html
* igt@kms_flip@flip-vs-expired-vblank@c-edp1:
- shard-lnl: [PASS][72] -> [FAIL][73] ([Intel XE#301] / [Intel XE#3149]) +2 other tests fail
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
* igt@kms_flip@flip-vs-suspend:
- shard-bmg: [PASS][74] -> [INCOMPLETE][75] ([Intel XE#2049] / [Intel XE#2597]) +1 other test incomplete
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-1/igt@kms_flip@flip-vs-suspend.html
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-4/igt@kms_flip@flip-vs-suspend.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][76] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385])
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-1/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][77] ([Intel XE#1397] / [Intel XE#7385])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-1/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
- shard-bmg: NOTRUN -> [SKIP][78] ([Intel XE#7178] / [Intel XE#7351]) +2 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-8/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html
* igt@kms_frontbuffer_tracking@drrs-1p-offscreen-pri-indfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][79] ([Intel XE#6312])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-7/igt@kms_frontbuffer_tracking@drrs-1p-offscreen-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][80] ([Intel XE#6312] / [Intel XE#651])
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-2/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move:
- shard-bmg: NOTRUN -> [SKIP][81] ([Intel XE#2311]) +18 other tests skip
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][82] ([Intel XE#2312]) +3 other tests skip
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][83] ([Intel XE#656]) +6 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][84] ([Intel XE#4141]) +9 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-argb161616f-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][85] ([Intel XE#7061] / [Intel XE#7356])
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-5/igt@kms_frontbuffer_tracking@fbc-argb161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff:
- shard-bmg: NOTRUN -> [SKIP][86] ([Intel XE#2313]) +18 other tests skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][87] ([Intel XE#7061] / [Intel XE#7356]) +2 other tests skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-blt.html
* igt@kms_hdmi_inject@inject-audio:
- shard-bmg: [PASS][88] -> [SKIP][89] ([Intel XE#7308])
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-6/igt@kms_hdmi_inject@inject-audio.html
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_hdmi_inject@inject-audio.html
* igt@kms_hdr@static-toggle-suspend:
- shard-bmg: [PASS][90] -> [SKIP][91] ([Intel XE#1503]) +1 other test skip
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-1/igt@kms_hdr@static-toggle-suspend.html
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_hdr@static-toggle-suspend.html
* igt@kms_joiner@basic-force-ultra-joiner:
- shard-bmg: NOTRUN -> [SKIP][92] ([Intel XE#6911] / [Intel XE#7466])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-8/igt@kms_joiner@basic-force-ultra-joiner.html
* igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier-source-clamping:
- shard-lnl: NOTRUN -> [SKIP][93] ([Intel XE#7283])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-2/igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier-source-clamping.html
* igt@kms_plane@pixel-format-y-tiled-modifier-source-clamping:
- shard-bmg: NOTRUN -> [SKIP][94] ([Intel XE#7283]) +1 other test skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_plane@pixel-format-y-tiled-modifier-source-clamping.html
* igt@kms_plane_multiple@2x-tiling-y:
- shard-lnl: NOTRUN -> [SKIP][95] ([Intel XE#4596] / [Intel XE#5854])
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-2/igt@kms_plane_multiple@2x-tiling-y.html
- shard-bmg: NOTRUN -> [SKIP][96] ([Intel XE#5021] / [Intel XE#7377])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-8/igt@kms_plane_multiple@2x-tiling-y.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b:
- shard-lnl: NOTRUN -> [SKIP][97] ([Intel XE#2763] / [Intel XE#6886]) +1 other test skip
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b.html
* igt@kms_pm_dc@deep-pkgc:
- shard-bmg: NOTRUN -> [SKIP][98] ([Intel XE#2505] / [Intel XE#7447])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-7/igt@kms_pm_dc@deep-pkgc.html
* igt@kms_pm_rpm@package-g7:
- shard-bmg: NOTRUN -> [SKIP][99] ([Intel XE#6814] / [Intel XE#7428])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-4/igt@kms_pm_rpm@package-g7.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf:
- shard-bmg: NOTRUN -> [SKIP][100] ([Intel XE#1489]) +3 other tests skip
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area:
- shard-lnl: NOTRUN -> [SKIP][101] ([Intel XE#2893] / [Intel XE#7304])
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-8/igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area.html
* igt@kms_psr@fbc-psr-suspend:
- shard-bmg: NOTRUN -> [SKIP][102] ([Intel XE#2234] / [Intel XE#2850]) +7 other tests skip
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_psr@fbc-psr-suspend.html
* igt@kms_psr@psr2-primary-render:
- shard-bmg: NOTRUN -> [SKIP][103] ([Intel XE#2234])
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_psr@psr2-primary-render.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-bmg: NOTRUN -> [SKIP][104] ([Intel XE#1406] / [Intel XE#2414])
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
- shard-lnl: [PASS][105] -> [SKIP][106] ([Intel XE#4692] / [Intel XE#7508])
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-8/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-3/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_rotation_crc@sprite-rotation-90:
- shard-bmg: NOTRUN -> [SKIP][107] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342])
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_rotation_crc@sprite-rotation-90.html
* igt@kms_sharpness_filter@filter-formats:
- shard-bmg: NOTRUN -> [SKIP][108] ([Intel XE#6503]) +1 other test skip
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-3/igt@kms_sharpness_filter@filter-formats.html
* igt@kms_vrr@flip-dpms:
- shard-bmg: NOTRUN -> [SKIP][109] ([Intel XE#1499]) +1 other test skip
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_vrr@flip-dpms.html
* igt@xe_compute@ccs-mode-compute-kernel:
- shard-bmg: NOTRUN -> [SKIP][110] ([Intel XE#6599])
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-8/igt@xe_compute@ccs-mode-compute-kernel.html
* igt@xe_eudebug@basic-vm-access:
- shard-lnl: NOTRUN -> [SKIP][111] ([Intel XE#4837])
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-7/igt@xe_eudebug@basic-vm-access.html
* igt@xe_eudebug@vm-bind-clear:
- shard-bmg: NOTRUN -> [SKIP][112] ([Intel XE#4837]) +7 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-10/igt@xe_eudebug@vm-bind-clear.html
* igt@xe_eudebug_online@interrupt-all:
- shard-lnl: NOTRUN -> [SKIP][113] ([Intel XE#4837] / [Intel XE#6665]) +1 other test skip
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-1/igt@xe_eudebug_online@interrupt-all.html
* igt@xe_eudebug_online@single-step:
- shard-bmg: NOTRUN -> [SKIP][114] ([Intel XE#4837] / [Intel XE#6665]) +3 other tests skip
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@xe_eudebug_online@single-step.html
* igt@xe_evict_ccs@evict-overcommit-simple:
- shard-lnl: NOTRUN -> [SKIP][115] ([Intel XE#6540] / [Intel XE#688]) +3 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-6/igt@xe_evict_ccs@evict-overcommit-simple.html
* igt@xe_exec_balancer@once-cm-parallel-rebind:
- shard-lnl: NOTRUN -> [SKIP][116] ([Intel XE#7482]) +3 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-8/igt@xe_exec_balancer@once-cm-parallel-rebind.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap:
- shard-bmg: NOTRUN -> [SKIP][117] ([Intel XE#2322] / [Intel XE#7372]) +5 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap.html
- shard-lnl: NOTRUN -> [SKIP][118] ([Intel XE#1392]) +2 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-4/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap.html
* igt@xe_exec_fault_mode@many-multi-queue-userptr-rebind-prefetch:
- shard-bmg: NOTRUN -> [SKIP][119] ([Intel XE#7136]) +9 other tests skip
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@xe_exec_fault_mode@many-multi-queue-userptr-rebind-prefetch.html
* igt@xe_exec_fault_mode@twice-multi-queue-userptr-invalidate-race-imm:
- shard-lnl: NOTRUN -> [SKIP][120] ([Intel XE#7136]) +3 other tests skip
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-4/igt@xe_exec_fault_mode@twice-multi-queue-userptr-invalidate-race-imm.html
* igt@xe_exec_multi_queue@few-execs-preempt-mode-basic:
- shard-bmg: NOTRUN -> [SKIP][121] ([Intel XE#6874]) +20 other tests skip
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@xe_exec_multi_queue@few-execs-preempt-mode-basic.html
* igt@xe_exec_multi_queue@one-queue-priority:
- shard-lnl: NOTRUN -> [SKIP][122] ([Intel XE#6874]) +4 other tests skip
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-2/igt@xe_exec_multi_queue@one-queue-priority.html
* igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma:
- shard-lnl: [PASS][123] -> [FAIL][124] ([Intel XE#5625])
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-8/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-2/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-large-mmap-remap-madvise:
- shard-bmg: [PASS][125] -> [INCOMPLETE][126] ([Intel XE#2594])
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-8/igt@xe_exec_system_allocator@threads-shared-vm-many-large-mmap-remap-madvise.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-6/igt@xe_exec_system_allocator@threads-shared-vm-many-large-mmap-remap-madvise.html
* igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-basic:
- shard-lnl: NOTRUN -> [SKIP][127] ([Intel XE#7138])
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-4/igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-basic.html
* igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate:
- shard-bmg: NOTRUN -> [SKIP][128] ([Intel XE#7138]) +1 other test skip
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate.html
* igt@xe_multigpu_svm@mgpu-concurrent-access-prefetch:
- shard-bmg: NOTRUN -> [SKIP][129] ([Intel XE#6964]) +1 other test skip
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-3/igt@xe_multigpu_svm@mgpu-concurrent-access-prefetch.html
- shard-lnl: NOTRUN -> [SKIP][130] ([Intel XE#6964])
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-8/igt@xe_multigpu_svm@mgpu-concurrent-access-prefetch.html
* igt@xe_pm@d3cold-basic-exec:
- shard-bmg: NOTRUN -> [SKIP][131] ([Intel XE#2284] / [Intel XE#7370])
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-8/igt@xe_pm@d3cold-basic-exec.html
* igt@xe_pm@d3cold-i2c:
- shard-bmg: NOTRUN -> [SKIP][132] ([Intel XE#5694] / [Intel XE#7370])
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@xe_pm@d3cold-i2c.html
* igt@xe_pxp@pxp-stale-bo-bind-post-suspend:
- shard-bmg: NOTRUN -> [SKIP][133] ([Intel XE#4733] / [Intel XE#7417])
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-6/igt@xe_pxp@pxp-stale-bo-bind-post-suspend.html
* igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
- shard-bmg: NOTRUN -> [SKIP][134] ([Intel XE#944]) +2 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-7/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html
- shard-lnl: NOTRUN -> [SKIP][135] ([Intel XE#944])
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-5/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html
* igt@xe_sriov_admin@sched-priority-write-readback-vfs-disabled:
- shard-lnl: NOTRUN -> [SKIP][136] ([Intel XE#7174])
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-3/igt@xe_sriov_admin@sched-priority-write-readback-vfs-disabled.html
* igt@xe_sriov_flr@flr-twice:
- shard-bmg: [PASS][137] -> [FAIL][138] ([Intel XE#6569])
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-1/igt@xe_sriov_flr@flr-twice.html
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-4/igt@xe_sriov_flr@flr-twice.html
* igt@xe_survivability@runtime-survivability:
- shard-bmg: [PASS][139] -> [DMESG-WARN][140] ([Intel XE#6627] / [Intel XE#7419])
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@xe_survivability@runtime-survivability.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-7/igt@xe_survivability@runtime-survivability.html
#### Possible fixes ####
* igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1:
- shard-lnl: [FAIL][141] ([Intel XE#6054]) -> [PASS][142] +3 other tests pass
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-4/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-5/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-toggle:
- shard-bmg: [SKIP][143] ([Intel XE#2291] / [Intel XE#7343]) -> [PASS][144] +1 other test pass
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@kms_cursor_legacy@cursorb-vs-flipb-toggle.html
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-10/igt@kms_cursor_legacy@cursorb-vs-flipb-toggle.html
* igt@kms_dp_link_training@non-uhbr-sst:
- shard-bmg: [SKIP][145] ([Intel XE#4354]) -> [PASS][146]
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@kms_dp_link_training@non-uhbr-sst.html
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-10/igt@kms_dp_link_training@non-uhbr-sst.html
* igt@kms_flip@2x-flip-vs-suspend-interruptible@cd-dp2-hdmi-a3:
- shard-bmg: [INCOMPLETE][147] ([Intel XE#2049] / [Intel XE#2597]) -> [PASS][148] +1 other test pass
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-6/igt@kms_flip@2x-flip-vs-suspend-interruptible@cd-dp2-hdmi-a3.html
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-6/igt@kms_flip@2x-flip-vs-suspend-interruptible@cd-dp2-hdmi-a3.html
* igt@kms_flip@2x-nonexisting-fb:
- shard-bmg: [SKIP][149] ([Intel XE#2316]) -> [PASS][150] +3 other tests pass
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@kms_flip@2x-nonexisting-fb.html
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_flip@2x-nonexisting-fb.html
* igt@kms_plane_multiple@2x-tiling-none:
- shard-bmg: [SKIP][151] ([Intel XE#4596]) -> [PASS][152]
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@kms_plane_multiple@2x-tiling-none.html
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-7/igt@kms_plane_multiple@2x-tiling-none.html
* igt@kms_vrr@negative-basic:
- shard-bmg: [SKIP][153] ([Intel XE#1499]) -> [PASS][154]
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@kms_vrr@negative-basic.html
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-8/igt@kms_vrr@negative-basic.html
#### Warnings ####
* igt@kms_content_protection@atomic-dpms-hdcp14:
- shard-bmg: [SKIP][155] ([Intel XE#7194]) -> [FAIL][156] ([Intel XE#3304] / [Intel XE#7374])
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@kms_content_protection@atomic-dpms-hdcp14.html
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-8/igt@kms_content_protection@atomic-dpms-hdcp14.html
* igt@kms_content_protection@legacy:
- shard-bmg: [SKIP][157] ([Intel XE#2341]) -> [FAIL][158] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +1 other test fail
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@kms_content_protection@legacy.html
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-4/igt@kms_content_protection@legacy.html
* igt@kms_content_protection@lic-type-0-hdcp14:
- shard-bmg: [SKIP][159] ([Intel XE#7194]) -> [FAIL][160] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374])
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@kms_content_protection@lic-type-0-hdcp14.html
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_content_protection@lic-type-0-hdcp14.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-lnl: [FAIL][161] ([Intel XE#301]) -> [FAIL][162] ([Intel XE#301] / [Intel XE#3149])
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
- shard-bmg: [FAIL][163] ([Intel XE#7545]) -> [FAIL][164] ([Intel XE#3149] / [Intel XE#7545])
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-7/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-7/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt:
- shard-bmg: [SKIP][165] ([Intel XE#4141]) -> [SKIP][166] ([Intel XE#2312]) +5 other tests skip
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt.html
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-render:
- shard-bmg: [SKIP][167] ([Intel XE#2312]) -> [SKIP][168] ([Intel XE#4141]) +3 other tests skip
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-render.html
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt:
- shard-bmg: [SKIP][169] ([Intel XE#2312]) -> [SKIP][170] ([Intel XE#2311]) +6 other tests skip
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt.html
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-pgflip-blt:
- shard-bmg: [SKIP][171] ([Intel XE#2311]) -> [SKIP][172] ([Intel XE#2312]) +4 other tests skip
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-pgflip-blt.html
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt:
- shard-bmg: [SKIP][173] ([Intel XE#2313]) -> [SKIP][174] ([Intel XE#2312]) +11 other tests skip
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt.html
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt:
- shard-bmg: [SKIP][175] ([Intel XE#2312]) -> [SKIP][176] ([Intel XE#2313]) +8 other tests skip
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
* igt@kms_plane_multiple@2x-tiling-yf:
- shard-bmg: [SKIP][177] ([Intel XE#5021] / [Intel XE#7377]) -> [SKIP][178] ([Intel XE#4596])
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-7/igt@kms_plane_multiple@2x-tiling-yf.html
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-5/igt@kms_plane_multiple@2x-tiling-yf.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][179] ([Intel XE#2426] / [Intel XE#5848]) -> [SKIP][180] ([Intel XE#2509] / [Intel XE#7437])
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4686-77e176657e782bb81270c230d1cfec91f7707162/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1231
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[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#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
[Intel XE#2414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2414
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2505]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2505
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2594]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2594
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4210]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4210
[Intel XE#4302]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4302
[Intel XE#4331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4331
[Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
[Intel XE#4692]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4692
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
[Intel XE#5354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5354
[Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
[Intel XE#5694]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5694
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#5854]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5854
[Intel XE#5993]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5993
[Intel XE#6054]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6054
[Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
[Intel XE#6599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6599
[Intel XE#6627]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6627
[Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665
[Intel XE#6814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6814
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
[Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
[Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
[Intel XE#7174]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7174
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7194]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7194
[Intel XE#7227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7227
[Intel XE#7265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7265
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
[Intel XE#7305]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7305
[Intel XE#7308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7308
[Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
[Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
[Intel XE#7344]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7344
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7354
[Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
[Intel XE#7377]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7377
[Intel XE#7385]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7385
[Intel XE#7386]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7386
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7419]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7419
[Intel XE#7428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7428
[Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
[Intel XE#7447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7447
[Intel XE#7466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7466
[Intel XE#7467]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7467
[Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
[Intel XE#7508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7508
[Intel XE#7545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7545
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* IGT: IGT_8788 -> IGT_8790
* Linux: xe-4686-77e176657e782bb81270c230d1cfec91f7707162 -> xe-pw-159034v14
IGT_8788: 476cbad7c600b2779022bf8771b3ab4efeaa3db5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8790: 4626b8c809cf894b9f512d9a17d5ce0f8682a235 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4686-77e176657e782bb81270c230d1cfec91f7707162: 77e176657e782bb81270c230d1cfec91f7707162
xe-pw-159034v14: 159034v14
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159034v14/index.html
[-- Attachment #2: Type: text/html, Size: 63861 bytes --]
^ permalink raw reply [flat|nested] 45+ messages in thread
* ✗ Fi.CI.BUILD: failure for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev15)
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
` (31 preceding siblings ...)
2026-03-10 17:31 ` ✗ Xe.CI.FULL: " Patchwork
@ 2026-03-10 17:35 ` Patchwork
32 siblings, 0 replies; 45+ messages in thread
From: Patchwork @ 2026-03-10 17:35 UTC (permalink / raw)
To: Sebastian Andrzej Siewior; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev15)
URL : https://patchwork.freedesktop.org/series/159035/
State : failure
== Summary ==
Error: patch https://patchwork.freedesktop.org/api/1.0/series/159035/revisions/15/mbox/ not applied
Applying: drm/vblank_work: Add methods to schedule vblank_work in 2 stages
Applying: drm/vblank: Add a 2-stage version of drm_crtc_arm_vblank_event
Applying: drm/intel/display: Make intel_crtc_arm_vblank_event static
Applying: drm/intel/display: Convert vblank event handling to 2-stage arming
Applying: drm/i915/display: Move vblank put until after critical section
Applying: drm/i915/display: Remove locking from intel_vblank_evade critical section
Applying: drm/i915/display: Handle vlv dsi workaround in scanline_in_safe_range too
Applying: drm/i915: Use preempt_disable/enable_rt() where recommended
Applying: drm/i915/display: Make get_vblank_counter use intel_de_read_fw()
Applying: drm/i915/display: Do not take uncore lock in i915_get_vblank_counter
Applying: drm/i915/display: Make icl_dsi_frame_update use _fw too
Applying: drm/i915/display: Use intel_de_read/write_fw in colorops
Applying: drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset
Applying: drm/i915/display: Make set_pipeconf use the fw variants
Applying: drm/i915/display: Fix intel_lpe_audio_irq_handler for PREEMPT-RT
Applying: drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() + spin_lock()
Applying: drm/i915: Drop the irqs_disabled() check
Applying: drm/i915/guc: Consider also RCU depth in busy loop.
Applying: drm/i915/gt: Fix selftests on PREEMPT_RT
Applying: drm/i915/gt: Set stop_timeout() correctly on PREEMPT-RT
Applying: drm/i915/display: Remove uncore lock from vlv_atomic_update_fifo
Applying: drm/i915: Use sleeping selftests for igt_atomic on PREEMPT_RT
Applying: Revert "drm/i915: Depend on !PREEMPT_RT."
Applying: PREEMPT_RT injection
Applying: FOR-CI: bump MAX_STACK_TRACE_ENTRIES
Applying: drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
error: corrupt patch at line 39
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0026 drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Build failed, no error log produced
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
2026-03-10 17:04 ` Sebastian Andrzej Siewior
@ 2026-03-10 18:14 ` Maarten Lankhorst
2026-03-12 11:35 ` Sebastian Andrzej Siewior
0 siblings, 1 reply; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 18:14 UTC (permalink / raw)
To: Sebastian Andrzej Siewior; +Cc: intel-xe, intel-gfx, dri-devel
Hey,
Den 2026-03-10 kl. 18:04, skrev Sebastian Andrzej Siewior:
> On 2026-03-10 12:57:08 [+0100], Maarten Lankhorst wrote:
>> From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
>>
>> IRQ-Work (FIFO-1) will be preempted by the threaded-interrupt (FIFO-50)
>> and the interrupt will poll on signaler_active while the irq-work can't
>> make progress.
>
> The threaded-interrupt is the interrupt.
>
> | On PREEMPT_RT the irq_work can be preempted by threaded-interrupt which
> | will be poll for completion but the irq_work routine can't make
> | progress.
>
>> Solve this by adding a spinlock to prevent starvation and force
>> completion.
>
> | Solve this by adding a spinlock_t to prevent starvation by forcing a
> | context switch if lock is held based on `signaler_active'. On
> | !PREEMPT_RT `signaler_active' can only be non-zero if multiple CPUs are
> | involved and spinning on the lock leds to the same result.
>
>> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
>
> If I am the From: then I should have the Signed-off-by, too. Let me do
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
>
> so it can be picked up.
>
> You did suggest the following:
>
> --- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> @@ -209,7 +209,7 @@ static void signal_irq_work(struct irq_work *work)
> intel_breadcrumbs_disarm_irq(b);
>
> rcu_read_lock();
> - atomic_inc(&b->signaler_active);
> + spin_lock(&b->signaler_active_sync);
> list_for_each_entry_rcu(ce, &b->signalers, signal_link) {
> struct i915_request *rq;
>
> @@ -245,7 +245,7 @@ static void signal_irq_work(struct irq_work *work)
> i915_request_put(rq);
> }
> }
> - atomic_dec(&b->signaler_active);
> + spin_unlock(&b->signaler_active_sync);
> rcu_read_unlock();
>
> llist_for_each_safe(signal, sn, signal) {
> @@ -290,6 +290,7 @@ intel_breadcrumbs_create(struct intel_engine_cs *irq_engine)
> init_llist_head(&b->signaled_requests);
>
> spin_lock_init(&b->irq_lock);
> + spin_lock_init(&b->signaler_active_sync);
> init_irq_work(&b->irq_work, signal_irq_work);
>
> b->irq_engine = irq_engine;
> @@ -487,8 +488,10 @@ void intel_context_remove_breadcrumbs(struct intel_context *ce,
> if (release)
> intel_context_put(ce);
>
> - while (atomic_read(&b->signaler_active))
> - cpu_relax();
> + while (spin_is_locked(&b->signaler_active_sync)) {
> + spin_lock_irqsave(&b->signaler_active_sync, flags);
> + spin_unlock_irqrestore(&b->signaler_active_sync, flags);
>
> And this does not work because spin_is_locked() returns true and spins
> forever. This fails because there is a "corner case" where
> spin_is_locked() returns but the lock has no lock owner as in locked.
> This happens if there is a waiter which did not yet acquire the lock.
>
> So if you happy with this, we could keep it ;)
It seems CI is a lot happier too now.
Xe:
https://patchwork.freedesktop.org/series/159034/#rev14
BAT passes, the full run has some minor issues but only kms_vblank systematic.
Likely due to the fundamental changes of the PREEMPT_RT kernel itself, nothing driver specific.
i915:
https://patchwork.freedesktop.org/series/159035/#rev14
A few new warnings, and some noise. The most worrying part is the i915 execlists selftest
failing on nearly all platforms:
<3>[ 504.279024] i915/intel_execlists_live_selftests: live_preempt_user failed with error -62
...
<7>[ 506.799685] [IGT] i915_selftest: finished subtest execlists, FAIL
I don't know what's going on there yet, likely needs more debugging. Could be the test itself
being written incorrectly or something else entirely.
Otherwise things are looking good! Have you uncovered anything else?
Kind regards,
~Maarten Lankhorst
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
2026-03-10 17:22 ` Sebastian Andrzej Siewior
@ 2026-03-10 19:03 ` Maarten Lankhorst
2026-03-12 11:38 ` Sebastian Andrzej Siewior
0 siblings, 1 reply; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 19:03 UTC (permalink / raw)
To: Sebastian Andrzej Siewior; +Cc: intel-xe, intel-gfx, dri-devel
Hey,
Den 2026-03-10 kl. 18:22, skrev Sebastian Andrzej Siewior:
> On 2026-03-10 12:57:08 [+0100], Maarten Lankhorst wrote:
>> --- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
>> +++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
>> @@ -487,8 +490,11 @@ void intel_context_remove_breadcrumbs(struct intel_context *ce,
>> if (release)
>> intel_context_put(ce);
>>
>> - while (atomic_read(&b->signaler_active))
>> + while (atomic_read(&b->signaler_active)) {
>> + spin_lock(&b->signaler_active_sync);
>> + spin_unlock(&b->signaler_active_sync);
>> cpu_relax();
>
> Forgot to mention: This is fine on PREEMPT_RT but on !RT you might need
>
> spin_lock_irqsave(&b->signaler_active_sync, flags);
> spin_unlock_irqrestore(&b->signaler_active_sync, flags);
>
> if the function can be called from !IRQ context which might be the case
> due to the irqsave() earlier in this function.
Yeah seems a bit of an oversight. I'll change it to use flags.
Is it correct to assume that irq_work disables interrupts on !RT?
Kind regards,
~Maarten Lankhorst
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [PATCH v7 24/26] PREEMPT_RT injection
@ 2026-03-11 0:52 kernel test robot
0 siblings, 0 replies; 45+ messages in thread
From: kernel test robot @ 2026-03-11 0:52 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp
::::::
:::::: Manual check reason: "low confidence bisect report"
::::::
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260310115709.2276203-25-dev@lankhorst.se>
References: <20260310115709.2276203-25-dev@lankhorst.se>
TO: Maarten Lankhorst <dev@lankhorst.se>
TO: intel-xe@lists.freedesktop.org
TO: intel-gfx@lists.freedesktop.org
CC: dri-devel@lists.freedesktop.org
CC: Maarten Lankhorst <dev@lankhorst.se>
Hi Maarten,
kernel test robot noticed the following build errors:
[auto build test ERROR on drm-i915/for-linux-next]
[also build test ERROR on next-20260310]
[cannot apply to drm-i915/for-linux-next-fixes drm-misc/drm-misc-next drm-xe/drm-xe-next linus/master v7.0-rc3]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Maarten-Lankhorst/drm-vblank_work-Add-methods-to-schedule-vblank_work-in-2-stages/20260310-205630
base: https://gitlab.freedesktop.org/drm/i915/kernel.git for-linux-next
patch link: https://lore.kernel.org/r/20260310115709.2276203-25-dev%40lankhorst.se
patch subject: [PATCH v7 24/26] PREEMPT_RT injection
:::::: branch date: 12 hours ago
:::::: commit date: 12 hours ago
config: i386-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260311/202603110102.VTpPsvel-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260311/202603110102.VTpPsvel-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202603110102.VTpPsvel-lkp@intel.com/
All errors (new ones prefixed by >>, old ones prefixed by <<):
WARNING: Module.symvers is missing.
Modules may not have dependencies or modversions.
You may get many unresolved symbol errors.
You can set KBUILD_MODPOST_WARN=1 to turn errors into warning
if you want to proceed at your own risk.
ERROR: modpost: "libnvdimm_test" [test/nfit_test.ko] undefined!
ERROR: modpost: "nd_region_provider_data" [test/nfit_test.ko] undefined!
ERROR: modpost: "devm_kmalloc" [test/nfit_test.ko] undefined!
ERROR: modpost: "platform_driver_unregister" [test/nfit_test.ko] undefined!
ERROR: modpost: "to_nvdimm" [test/nfit_test.ko] undefined!
ERROR: modpost: "gen_pool_create" [test/nfit_test.ko] undefined!
ERROR: modpost: "seq_buf_printf" [test/nfit_test.ko] undefined!
ERROR: modpost: "device_unregister" [test/nfit_test.ko] undefined!
>> ERROR: modpost: "rt_mutex_base_init" [test/nfit_test.ko] undefined!
ERROR: modpost: "__nvdimm_create" [test/nfit_test.ko] undefined!
WARNING: modpost: suppressed 82 unresolved symbol warnings because there were too many)
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [PATCH v7 24/26] PREEMPT_RT injection
@ 2026-03-11 22:37 kernel test robot
0 siblings, 0 replies; 45+ messages in thread
From: kernel test robot @ 2026-03-11 22:37 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260310115709.2276203-25-dev@lankhorst.se>
References: <20260310115709.2276203-25-dev@lankhorst.se>
TO: Maarten Lankhorst <dev@lankhorst.se>
TO: intel-xe@lists.freedesktop.org
TO: intel-gfx@lists.freedesktop.org
CC: dri-devel@lists.freedesktop.org
CC: Maarten Lankhorst <dev@lankhorst.se>
Hi Maarten,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-i915/for-linux-next]
[also build test WARNING on next-20260311]
[cannot apply to drm-i915/for-linux-next-fixes drm-misc/drm-misc-next drm-xe/drm-xe-next linus/master v7.0-rc3]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Maarten-Lankhorst/drm-vblank_work-Add-methods-to-schedule-vblank_work-in-2-stages/20260310-205630
base: https://gitlab.freedesktop.org/drm/i915/kernel.git for-linux-next
patch link: https://lore.kernel.org/r/20260310115709.2276203-25-dev%40lankhorst.se
patch subject: [PATCH v7 24/26] PREEMPT_RT injection
:::::: branch date: 34 hours ago
:::::: commit date: 34 hours ago
config: arm64-randconfig-r073-20260311 (https://download.01.org/0day-ci/archive/20260312/202603120612.2C8AakgY-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
smatch: v0.5.0-9004-gb810ac53
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202603120612.2C8AakgY-lkp@intel.com/
New smatch warnings:
drivers/staging/most/dim2/dim2.c:535 configure_channel() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:378 qcom_glink_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:519 qcom_glink_send_open_req() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:592 qcom_glink_rx_done_work() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:1508 __qcom_glink_send() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:1702 qcom_glink_rx_open() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/block/zloop.c:462 zloop_rw() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/block/zloop.c:773 zloop_report_zones() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/net/caif/caif_virtio.c:586 cfv_netdev_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:652 stm32_gpio_domain_alloc() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:972 stm32_pmx_set_mode() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:1110 stm32_pconf_set_driving() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:1156 stm32_pconf_set_speed() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:1202 stm32_pconf_set_bias() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:1258 stm32_pconf_set_advcfgr() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:1344 stm32_pconf_set_skew_delay() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/crypto/atmel-aes.c:911 atmel_aes_handle_queue() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/vfio/platform/vfio_platform_irq.c:165 vfio_automasked_irq_handler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/tee/optee/notif.c:83 optee_notif_wait() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/rpmsg_char.c:236 rpmsg_eptdev_read_iter() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/clk/stm32/clk-stm32mp1.c:1006 timer_ker_set_rate() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/staging/nvec/nvec.c:407 nvec_request_master() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/staging/nvec/nvec.c:467 nvec_dispatch() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/firmware/arm_scmi/transports/virtio.c:292 scmi_vio_complete_cb() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c:3011 arm_smmu_attach_prepare() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/net/ieee802154/cc2520.c:531 cc2520_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/firmware/arm_scmi/raw_mode.c:729 scmi_raw_message_dequeue() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/firmware/arm_scmi/raw_mode.c:875 scmi_test_dbg_raw_common_poll() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c:811 wave5_vpu_dec_stop() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c:879 wave5_vpu_dec_start() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/clk/tegra/clk-pll.c:1533 clk_pllc_set_rate() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/iommu/sun50i-iommu.c:489 sun50i_iommu_enable() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/i2c/busses/i2c-rk3x.c:1131 rk3x_i2c_xfer_common() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/i2c/busses/i2c-uniphier-f.c:357 uniphier_fi2c_xfer_one() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpio/gpio-mvebu.c:639 mvebu_pwm_request() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpio/gpio-mvebu.c:1295 mvebu_gpio_probe() warn: 'mvchip->clk' from clk_prepare_enable() not released on lines: 1183,1242.
drivers/nvdimm/nd_virtio.c:92 virtio_pmem_flush() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/scsi_transport_iscsi.c:1718 iscsi_is_session_online() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/scsi_transport_iscsi.c:1862 iscsi_block_scsi_eh() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/scsi_transport_iscsi.c:1987 __iscsi_unbind_session() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/aha152x.c:1468 busfree_run() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c:2473 slot_complete_v2_hw() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi-tegra114.c:991 tegra_spi_setup() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi-tegra210-quad.c:1278 tegra_qspi_combined_seq_xfer() error: calling 'spin_unlock_irqrestore()' with bogus flags
lib/test_context-analysis.c:110 test_spinlock() error: calling 'spin_unlock_irqrestore()' with bogus flags
lib/test_context-analysis.c:127 test_spinlock_trylock_extra() error: calling 'spin_unlock_irqrestore()' with bogus flags
Old smatch warnings:
drivers/staging/most/dim2/dim2.c:550 configure_channel() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:393 qcom_glink_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:504 qcom_glink_send_open_req() error: strcpy() 'channel->name' too large for 'req->data' (1010102 vs 32)
drivers/block/zloop.c:487 zloop_rw() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/net/caif/caif_virtio.c:594 cfv_netdev_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/net/caif/caif_virtio.c:747 cfv_probe() error: we previously assumed 'vdev->vringh_config' could be null (see line 668)
drivers/crypto/atmel-aes.c:918 atmel_aes_handle_queue() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/firmware/arm_scmi/transports/virtio.c:298 scmi_vio_complete_cb() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c:854 wave5_vpu_dec_stop() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/iommu/sun50i-iommu.c:496 sun50i_iommu_enable() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/nvdimm/nd_virtio.c:106 virtio_pmem_flush() warn: '&req_data->list' not removed from list
drivers/scsi/scsi_transport_iscsi.c:1866 iscsi_block_scsi_eh() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/scsi_transport_iscsi.c:1997 __iscsi_unbind_session() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/scsi_transport_iscsi.c:2011 __iscsi_unbind_session() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/aha152x.c:1488 busfree_run() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/aha152x.c:1503 busfree_run() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi-tegra210-quad.c:696 tegra_qspi_start_dma_based_transfer() error: we previously assumed 'tqspi->tx_dma_chan' could be null (see line 652)
lib/test_context-analysis.c:103 test_raw_spinlock_trylock_extra() warn: mixing irq and irqsave
include/linux/spinlock.h:540 class_raw_spinlock_try_constructor() warn: passing zero to 'ERR_PTR'
lib/test_context-analysis.c:127 test_spinlock_trylock_extra() warn: mixing irq and irqsave
include/linux/spinlock.h:592 class_spinlock_try_constructor() warn: passing zero to 'ERR_PTR'
include/linux/mutex.h:254 class_mutex_try_constructor() warn: passing zero to 'ERR_PTR'
include/linux/rwsem.h:260 class_rwsem_read_try_constructor() warn: passing zero to 'ERR_PTR'
include/linux/rwsem.h:271 class_rwsem_write_try_constructor() warn: passing zero to 'ERR_PTR'
vim +535 drivers/staging/most/dim2/dim2.c
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 437
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 438 /**
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 439 * configure_channel - initialize a channel
6f4d367f335666 drivers/staging/most/dim2/dim2.c Lee Jones 2021-04-14 440 * @most_iface: interface the channel belongs to
6f4d367f335666 drivers/staging/most/dim2/dim2.c Lee Jones 2021-04-14 441 * @ch_idx: channel index to be configured
6f4d367f335666 drivers/staging/most/dim2/dim2.c Lee Jones 2021-04-14 442 * @ccfg: structure that holds the configuration information
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 443 *
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 444 * Receives configuration information from mostcore and initialize
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 445 * the corresponding channel. Return 0 on success, negative on failure.
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 446 */
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 447 static int configure_channel(struct most_interface *most_iface, int ch_idx,
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 448 struct most_channel_config *ccfg)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 449 {
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 450 struct dim2_hdm *dev = iface_to_hdm(most_iface);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 451 bool const is_tx = ccfg->direction == MOST_CH_TX;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 452 u16 const sub_size = ccfg->subbuffer_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 453 u16 const buf_size = ccfg->buffer_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 454 u16 new_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 455 unsigned long flags;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 456 u8 hal_ret;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 457 int const ch_addr = ch_idx * 2 + 2;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 458 struct hdm_channel *const hdm_ch = dev->hch + ch_idx;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 459
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 460 BUG_ON(ch_idx < 0 || ch_idx >= DMA_CHANNELS);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 461
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 462 if (hdm_ch->is_initialized)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 463 return -EPERM;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 464
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c Christian Gromm 2018-05-08 465 /* do not reset if the property was set by user, see poison_channel */
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c Christian Gromm 2018-05-08 466 hdm_ch->reset_dbr_size = ccfg->dbr_size ? NULL : &ccfg->dbr_size;
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c Christian Gromm 2018-05-08 467
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c Christian Gromm 2018-05-08 468 /* zero value is default dbr_size, see dim2 hal */
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c Christian Gromm 2018-05-08 469 hdm_ch->ch.dbr_size = ccfg->dbr_size;
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c Christian Gromm 2018-05-08 470
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 471 switch (ccfg->data_type) {
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 472 case MOST_CH_CONTROL:
c64c6073e8fe1c drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim 2015-11-02 473 new_size = dim_norm_ctrl_async_buffer_size(buf_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 474 if (new_size == 0) {
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 475 pr_err("%s: too small buffer size\n", hdm_ch->name);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 476 return -EINVAL;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 477 }
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 478 ccfg->buffer_size = new_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 479 if (new_size != buf_size)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 480 pr_warn("%s: fixed buffer size (%d -> %d)\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 481 hdm_ch->name, buf_size, new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 482 spin_lock_irqsave(&dim_lock, flags);
a3f3e921194710 drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim 2015-11-02 483 hal_ret = dim_init_control(&hdm_ch->ch, is_tx, ch_addr,
6631c5c9b0c369 drivers/staging/most/hdm-dim2/dim2_hdm.c Andrey Shvetsov 2016-09-15 484 is_tx ? new_size * 2 : new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 485 break;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 486 case MOST_CH_ASYNC:
c64c6073e8fe1c drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim 2015-11-02 487 new_size = dim_norm_ctrl_async_buffer_size(buf_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 488 if (new_size == 0) {
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 489 pr_err("%s: too small buffer size\n", hdm_ch->name);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 490 return -EINVAL;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 491 }
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 492 ccfg->buffer_size = new_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 493 if (new_size != buf_size)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 494 pr_warn("%s: fixed buffer size (%d -> %d)\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 495 hdm_ch->name, buf_size, new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 496 spin_lock_irqsave(&dim_lock, flags);
6631c5c9b0c369 drivers/staging/most/hdm-dim2/dim2_hdm.c Andrey Shvetsov 2016-09-15 497 hal_ret = dim_init_async(&hdm_ch->ch, is_tx, ch_addr,
6631c5c9b0c369 drivers/staging/most/hdm-dim2/dim2_hdm.c Andrey Shvetsov 2016-09-15 498 is_tx ? new_size * 2 : new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 499 break;
0540609fe217c3 drivers/staging/most/hdm-dim2/dim2_hdm.c Andrey Shvetsov 2016-09-21 500 case MOST_CH_ISOC:
e302ca47b59f02 drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim 2015-11-02 501 new_size = dim_norm_isoc_buffer_size(buf_size, sub_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 502 if (new_size == 0) {
9158d33a5d38d1 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-10-15 503 pr_err("%s: invalid sub-buffer size or too small buffer size\n",
9158d33a5d38d1 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-10-15 504 hdm_ch->name);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 505 return -EINVAL;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 506 }
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 507 ccfg->buffer_size = new_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 508 if (new_size != buf_size)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 509 pr_warn("%s: fixed buffer size (%d -> %d)\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 510 hdm_ch->name, buf_size, new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 511 spin_lock_irqsave(&dim_lock, flags);
f1383176c92801 drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim 2015-11-02 512 hal_ret = dim_init_isoc(&hdm_ch->ch, is_tx, ch_addr, sub_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 513 break;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 514 case MOST_CH_SYNC:
aff1924508e880 drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim 2015-11-02 515 new_size = dim_norm_sync_buffer_size(buf_size, sub_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 516 if (new_size == 0) {
9158d33a5d38d1 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-10-15 517 pr_err("%s: invalid sub-buffer size or too small buffer size\n",
9158d33a5d38d1 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-10-15 518 hdm_ch->name);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 519 return -EINVAL;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 520 }
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 521 ccfg->buffer_size = new_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 522 if (new_size != buf_size)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 523 pr_warn("%s: fixed buffer size (%d -> %d)\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 524 hdm_ch->name, buf_size, new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 525 spin_lock_irqsave(&dim_lock, flags);
10e5efb7b51f30 drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim 2015-11-02 526 hal_ret = dim_init_sync(&hdm_ch->ch, is_tx, ch_addr, sub_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 527 break;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 528 default:
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 529 pr_err("%s: configure failed, bad channel type: %d\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 530 hdm_ch->name, ccfg->data_type);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 531 return -EINVAL;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 532 }
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 533
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 534 if (hal_ret != DIM_NO_ERROR) {
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 @535 spin_unlock_irqrestore(&dim_lock, flags);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 536 pr_err("%s: configure failed (%d), type: %d, is_tx: %d\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 537 hdm_ch->name, hal_ret, ccfg->data_type, (int)is_tx);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 538 return -ENODEV;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 539 }
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 540
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 541 hdm_ch->data_type = ccfg->data_type;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 542 hdm_ch->direction = ccfg->direction;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 543 hdm_ch->is_initialized = true;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 544
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 545 if (hdm_ch->data_type == MOST_CH_ASYNC &&
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 546 hdm_ch->direction == MOST_CH_TX &&
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 547 dev->atx_idx < 0)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 548 dev->atx_idx = ch_idx;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 549
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 550 spin_unlock_irqrestore(&dim_lock, flags);
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c Christian Gromm 2018-05-08 551 ccfg->dbr_size = hdm_ch->ch.dbr_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 552
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 553 return 0;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 554 }
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 555
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [PATCH v7 24/26] PREEMPT_RT injection
@ 2026-03-11 22:58 kernel test robot
0 siblings, 0 replies; 45+ messages in thread
From: kernel test robot @ 2026-03-11 22:58 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260310115709.2276203-25-dev@lankhorst.se>
References: <20260310115709.2276203-25-dev@lankhorst.se>
TO: Maarten Lankhorst <dev@lankhorst.se>
TO: intel-xe@lists.freedesktop.org
TO: intel-gfx@lists.freedesktop.org
CC: dri-devel@lists.freedesktop.org
CC: Maarten Lankhorst <dev@lankhorst.se>
Hi Maarten,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-i915/for-linux-next]
[also build test WARNING on next-20260311]
[cannot apply to drm-i915/for-linux-next-fixes drm-misc/drm-misc-next drm-xe/drm-xe-next linus/master v7.0-rc3]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Maarten-Lankhorst/drm-vblank_work-Add-methods-to-schedule-vblank_work-in-2-stages/20260310-205630
base: https://gitlab.freedesktop.org/drm/i915/kernel.git for-linux-next
patch link: https://lore.kernel.org/r/20260310115709.2276203-25-dev%40lankhorst.se
patch subject: [PATCH v7 24/26] PREEMPT_RT injection
:::::: branch date: 34 hours ago
:::::: commit date: 34 hours ago
config: i386-randconfig-141-20260311 (https://download.01.org/0day-ci/archive/20260312/202603120645.BoJHrUED-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch: v0.5.0-9004-gb810ac53
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202603120645.BoJHrUED-lkp@intel.com/
New smatch warnings:
drivers/hte/hte.c:221 hte_ts_put() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/hte/hte.c:301 hte_ts_dis_en_common() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/input/touchscreen/ad7877.c:402 ad7877_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/accessibility/speakup/speakup_acntpc.c:237 do_catch_up() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptscsih.c:1125 mptscsih_search_running_cmds() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptbase.c:2096 mpt_detach() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptbase.c:7016 mpt_SoftResetHandler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptbase.c:7216 mpt_HardResetHandler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/char/applicom.c:479 ac_write() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/media/pci/tw5864/tw5864-video.c:1328 tw5864_handle_frame_work() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/ata/libata-pmp.c:864 sata_pmp_eh_handle_disabled_links() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/ata/libata-core.c:5345 ata_port_request_pm() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptsas.c:385 mptsas_cleanup_fw_event_q() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/char/sonypi.c:766 input_keyrelease() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/char/sonypi.c:915 sonypi_misc_read() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/accessibility/speakup/speakup_dtlk.c:239 do_catch_up() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/accessibility/speakup/speakup_keypc.c:243 do_catch_up() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/tty/serial/jsm/jsm_neo.c:778 neo_parse_isr() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi.c:1921 __spi_pump_messages() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi.c:4589 spi_async() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi.c:4689 __spi_sync() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/media/rc/serial_ir.c:667 serial_ir_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/libsas/sas_ata.c:481 sas_ata_internal_abort() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/qxl/qxl_cmd.c:148 qxl_ring_push() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rtc/rtc-m48t59.c:133 m48t59_rtc_set_time() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rtc/rtc-m48t59.c:335 m48t59_nvram_write() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/i2c/busses/i2c-elektor.c:116 pcf_isa_waitforpin() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/video/fbdev/via/via-gpio.c:242 viafb_gpio_probe() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/misc/hpilo.c:605 ilo_open() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/virtio/virtio_input.c:56 virtinput_recv_events() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/virtio/virtio_input.c:333 virtinput_probe() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/virtio/virtio_rtc_driver.c:253 viortc_do_cb() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/intel_uncore.c:502 intel_uncore_forcewake_reset() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/radeon/radeon_display.c:601 radeon_crtc_page_flip_target() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/i915_sw_fence.c:391 __i915_sw_fence_await_sw_fence() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c:285 amdgpu_display_crtc_page_flip_target() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/i915_pmu.c:256 get_rc6() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi-topcliff-pch.c:1424 pch_spi_pd_remove() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:2988 amdgpu_vm_handle_fault() error: calling 'spin_unlock_irqrestore()' with bogus flags
mm/slub.c:3812 get_from_partial_node() error: calling 'spin_unlock_irqrestore()' with bogus flags
mm/slub.c:4323 alloc_from_new_slab() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci224.c:466 pci224_ao_stop() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci224.c:984 pci224_interrupt() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci230.c:1045 pci230_ao_stop() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci230.c:1280 pci230_ao_start() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci230.c:1843 pci230_ai_stop() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci230.c:2329 pci230_interrupt() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/misc/mchp_pci1xxxx/mchp_pci1xxxx_gpio.c:310 pci1xxxx_gpio_irq_handler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/gt/intel_execlists_submission.c:897 assert_pending_valid() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/cb_pcidas64.c:2657 ai_cmd() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/ni_pcidio.c:352 setup_mite_dma() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pc236_common.c:53 pc236_intr_check() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c:108 amdgpu_userq_fence_driver_alloc() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:245 i915_gem_shrink() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/i915_active.c:992 i915_request_add_active_barriers() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/i915_active.c:1094 __i915_active_fence_set() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c:2411 pin_guc_id() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c:7321 gfx_v9_0_reset_kcq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c:9562 gfx_v10_0_reset_kgq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c:9632 gfx_v10_0_reset_kcq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:3603 gfx_v9_4_3_reset_kcq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c:6466 gfx_v11_0_eop_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c:4832 gfx_v12_0_eop_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c:3622 gfx_v12_1_eop_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c:1669 sdma_v6_0_process_fence_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c:1601 sdma_v7_0_process_fence_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_irq.c:515 amdgpu_dm_irq_suspend() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:11132 amdgpu_dm_atomic_commit_tail() error: calling 'spin_unlock_irqrestore()' with bogus flags
Old smatch warnings:
drivers/message/fusion/mptscsih.c:766 mptscsih_io_done() warn: inconsistent indenting
drivers/message/fusion/mptscsih.c:841 mptscsih_io_done() warn: inconsistent indenting
drivers/message/fusion/mptbase.c:2621 mpt_do_ioc_recovery() warn: 'ioc->pcidev->irq' from request_irq() not released on lines: 2621.
drivers/message/fusion/mptbase.c:7019 mpt_SoftResetHandler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptbase.c:7080 mpt_SoftResetHandler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/char/applicom.c:348 applicom_init() warn: 'RamIO' from ioremap() not released on lines: 253,338,348.
drivers/char/applicom.c:348 applicom_init() warn: 'RamIO' from ioremap() not released on lines: 338,348.
drivers/media/pci/tw5864/tw5864-video.c:1343 tw5864_handle_frame_work() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/ata/libata-pmp.c:964 sata_pmp_eh_recover() warn: missing error code 'rc'
drivers/ata/libata-pmp.c:964 sata_pmp_eh_recover() warn: missing error code 'rc'
drivers/ata/libata-core.c:6280 ata_port_detach() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/virtio/virtio_rtc_driver.c:259 viortc_do_cb() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/intel_uncore.c:515 intel_uncore_forcewake_reset() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi-topcliff-pch.c:580 pch_spi_set_tx() error: we previously assumed 'data->pkt_tx_buff' could be null (see line 553)
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:830 amdgpu_vm_flush() error: we previously assumed 'ring->funcs->emit_vm_flush' could be null (see line 803)
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1381 amdgpu_vm_bo_update() error: we previously assumed 'bo' could be null (see line 1320)
drivers/comedi/drivers/amplc_pci230.c:2539 pci230_auto_attach() warn: 'pci_dev->irq' from request_irq() not released on lines: 2481,2485,2524,2534.
drivers/gpu/drm/i915/gt/intel_execlists_submission.c:1613 execlists_dequeue() warn: inconsistent returns '&sched_engine->lock'.
drivers/gpu/drm/i915/gt/intel_execlists_submission.c:3941 execlists_create_virtual() warn: assigning (-2) to unsigned variable 've->base.instance'
drivers/gpu/drm/i915/gt/intel_execlists_submission.c:3942 execlists_create_virtual() warn: assigning (-2) to unsigned variable 've->base.uabi_instance'
drivers/comedi/drivers/cb_pcidas64.c:4039 auto_attach() warn: 'pcidev->irq' from request_irq() not released on lines: 4037.
drivers/gpu/drm/i915/gem/i915_gem_object.h:183 __i915_gem_object_lock() error: we previously assumed 'ww' could be null (see line 172)
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c:5377 intel_guc_engine_failure_process_msg() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c:5920 guc_create_virtual() warn: assigning (-2) to unsigned variable 've->base.instance'
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c:5921 guc_create_virtual() warn: assigning (-2) to unsigned variable 've->base.uabi_instance'
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c:7327 gfx_v9_0_reset_kcq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c:4292 gfx_v10_0_init_microcode() warn: 'adev->gfx.rlc_fw' from request_firmware() not released on lines: 4292.
drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:3609 gfx_v9_4_3_reset_kcq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:13132 parse_edid_displayid_vrr() warn: variable dereferenced before check 'edid_ext' (see line 13128)
vim +221 drivers/hte/hte.c
31ab09b4218879b Dipen Patel 2022-04-22 140
31ab09b4218879b Dipen Patel 2022-04-22 141 /**
31ab09b4218879b Dipen Patel 2022-04-22 142 * hte_ts_put() - Release and disable timestamp for the given desc.
31ab09b4218879b Dipen Patel 2022-04-22 143 *
31ab09b4218879b Dipen Patel 2022-04-22 144 * @desc: timestamp descriptor.
31ab09b4218879b Dipen Patel 2022-04-22 145 *
31ab09b4218879b Dipen Patel 2022-04-22 146 * Context: debugfs_remove_recursive() function call may use sleeping locks,
31ab09b4218879b Dipen Patel 2022-04-22 147 * not suitable from atomic context.
31ab09b4218879b Dipen Patel 2022-04-22 148 * Returns: 0 on success or a negative error code on failure.
31ab09b4218879b Dipen Patel 2022-04-22 149 */
31ab09b4218879b Dipen Patel 2022-04-22 150 int hte_ts_put(struct hte_ts_desc *desc)
31ab09b4218879b Dipen Patel 2022-04-22 151 {
31ab09b4218879b Dipen Patel 2022-04-22 152 int ret = 0;
31ab09b4218879b Dipen Patel 2022-04-22 153 unsigned long flag;
31ab09b4218879b Dipen Patel 2022-04-22 154 struct hte_device *gdev;
31ab09b4218879b Dipen Patel 2022-04-22 155 struct hte_ts_info *ei;
31ab09b4218879b Dipen Patel 2022-04-22 156
31ab09b4218879b Dipen Patel 2022-04-22 157 if (!desc)
31ab09b4218879b Dipen Patel 2022-04-22 158 return -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22 159
31ab09b4218879b Dipen Patel 2022-04-22 160 ei = desc->hte_data;
31ab09b4218879b Dipen Patel 2022-04-22 161
31ab09b4218879b Dipen Patel 2022-04-22 162 if (!ei || !ei->gdev)
31ab09b4218879b Dipen Patel 2022-04-22 163 return -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22 164
31ab09b4218879b Dipen Patel 2022-04-22 165 gdev = ei->gdev;
31ab09b4218879b Dipen Patel 2022-04-22 166
31ab09b4218879b Dipen Patel 2022-04-22 167 mutex_lock(&ei->req_mlock);
31ab09b4218879b Dipen Patel 2022-04-22 168
31ab09b4218879b Dipen Patel 2022-04-22 169 if (unlikely(!test_bit(HTE_TS_REQ, &ei->flags) &&
31ab09b4218879b Dipen Patel 2022-04-22 170 !test_bit(HTE_TS_REGISTERED, &ei->flags))) {
31ab09b4218879b Dipen Patel 2022-04-22 171 dev_info(gdev->sdev, "id:%d is not requested\n",
31ab09b4218879b Dipen Patel 2022-04-22 172 desc->attr.line_id);
31ab09b4218879b Dipen Patel 2022-04-22 173 ret = -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22 174 goto unlock;
31ab09b4218879b Dipen Patel 2022-04-22 175 }
31ab09b4218879b Dipen Patel 2022-04-22 176
31ab09b4218879b Dipen Patel 2022-04-22 177 if (unlikely(!test_bit(HTE_TS_REQ, &ei->flags) &&
31ab09b4218879b Dipen Patel 2022-04-22 178 test_bit(HTE_TS_REGISTERED, &ei->flags))) {
31ab09b4218879b Dipen Patel 2022-04-22 179 dev_info(gdev->sdev, "id:%d is registered but not requested\n",
31ab09b4218879b Dipen Patel 2022-04-22 180 desc->attr.line_id);
31ab09b4218879b Dipen Patel 2022-04-22 181 ret = -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22 182 goto unlock;
31ab09b4218879b Dipen Patel 2022-04-22 183 }
31ab09b4218879b Dipen Patel 2022-04-22 184
31ab09b4218879b Dipen Patel 2022-04-22 185 if (test_bit(HTE_TS_REQ, &ei->flags) &&
31ab09b4218879b Dipen Patel 2022-04-22 186 !test_bit(HTE_TS_REGISTERED, &ei->flags)) {
31ab09b4218879b Dipen Patel 2022-04-22 187 clear_bit(HTE_TS_REQ, &ei->flags);
31ab09b4218879b Dipen Patel 2022-04-22 188 desc->hte_data = NULL;
31ab09b4218879b Dipen Patel 2022-04-22 189 ret = 0;
31ab09b4218879b Dipen Patel 2022-04-22 190 goto mod_put;
31ab09b4218879b Dipen Patel 2022-04-22 191 }
31ab09b4218879b Dipen Patel 2022-04-22 192
31ab09b4218879b Dipen Patel 2022-04-22 193 ret = gdev->chip->ops->release(gdev->chip, desc, ei->xlated_id);
31ab09b4218879b Dipen Patel 2022-04-22 194 if (ret) {
31ab09b4218879b Dipen Patel 2022-04-22 195 dev_err(gdev->sdev, "id: %d free failed\n",
31ab09b4218879b Dipen Patel 2022-04-22 196 desc->attr.line_id);
31ab09b4218879b Dipen Patel 2022-04-22 197 goto unlock;
31ab09b4218879b Dipen Patel 2022-04-22 198 }
31ab09b4218879b Dipen Patel 2022-04-22 199
31ab09b4218879b Dipen Patel 2022-04-22 200 kfree(ei->line_name);
31ab09b4218879b Dipen Patel 2022-04-22 201 if (ei->free_attr_name)
31ab09b4218879b Dipen Patel 2022-04-22 202 kfree_const(desc->attr.name);
31ab09b4218879b Dipen Patel 2022-04-22 203
31ab09b4218879b Dipen Patel 2022-04-22 204 debugfs_remove_recursive(ei->ts_dbg_root);
31ab09b4218879b Dipen Patel 2022-04-22 205
31ab09b4218879b Dipen Patel 2022-04-22 206 spin_lock_irqsave(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22 207
31ab09b4218879b Dipen Patel 2022-04-22 208 if (test_bit(HTE_TS_QUEUE_WK, &ei->flags)) {
31ab09b4218879b Dipen Patel 2022-04-22 209 spin_unlock_irqrestore(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22 210 flush_work(&ei->cb_work);
31ab09b4218879b Dipen Patel 2022-04-22 211 spin_lock_irqsave(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22 212 }
31ab09b4218879b Dipen Patel 2022-04-22 213
31ab09b4218879b Dipen Patel 2022-04-22 214 atomic_dec(&gdev->ts_req);
31ab09b4218879b Dipen Patel 2022-04-22 215 atomic_set(&ei->dropped_ts, 0);
31ab09b4218879b Dipen Patel 2022-04-22 216
31ab09b4218879b Dipen Patel 2022-04-22 217 ei->seq = 1;
31ab09b4218879b Dipen Patel 2022-04-22 218 ei->flags = 0;
31ab09b4218879b Dipen Patel 2022-04-22 219 desc->hte_data = NULL;
31ab09b4218879b Dipen Patel 2022-04-22 220
31ab09b4218879b Dipen Patel 2022-04-22 @221 spin_unlock_irqrestore(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22 222
31ab09b4218879b Dipen Patel 2022-04-22 223 ei->cb = NULL;
31ab09b4218879b Dipen Patel 2022-04-22 224 ei->tcb = NULL;
31ab09b4218879b Dipen Patel 2022-04-22 225 ei->cl_data = NULL;
31ab09b4218879b Dipen Patel 2022-04-22 226
31ab09b4218879b Dipen Patel 2022-04-22 227 mod_put:
31ab09b4218879b Dipen Patel 2022-04-22 228 module_put(gdev->owner);
31ab09b4218879b Dipen Patel 2022-04-22 229 unlock:
31ab09b4218879b Dipen Patel 2022-04-22 230 mutex_unlock(&ei->req_mlock);
31ab09b4218879b Dipen Patel 2022-04-22 231 dev_dbg(gdev->sdev, "release id: %d\n", desc->attr.line_id);
31ab09b4218879b Dipen Patel 2022-04-22 232
31ab09b4218879b Dipen Patel 2022-04-22 233 return ret;
31ab09b4218879b Dipen Patel 2022-04-22 234 }
31ab09b4218879b Dipen Patel 2022-04-22 235 EXPORT_SYMBOL_GPL(hte_ts_put);
31ab09b4218879b Dipen Patel 2022-04-22 236
31ab09b4218879b Dipen Patel 2022-04-22 237 static int hte_ts_dis_en_common(struct hte_ts_desc *desc, bool en)
31ab09b4218879b Dipen Patel 2022-04-22 238 {
31ab09b4218879b Dipen Patel 2022-04-22 239 u32 ts_id;
31ab09b4218879b Dipen Patel 2022-04-22 240 struct hte_device *gdev;
31ab09b4218879b Dipen Patel 2022-04-22 241 struct hte_ts_info *ei;
31ab09b4218879b Dipen Patel 2022-04-22 242 int ret;
31ab09b4218879b Dipen Patel 2022-04-22 243 unsigned long flag;
31ab09b4218879b Dipen Patel 2022-04-22 244
31ab09b4218879b Dipen Patel 2022-04-22 245 if (!desc)
31ab09b4218879b Dipen Patel 2022-04-22 246 return -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22 247
31ab09b4218879b Dipen Patel 2022-04-22 248 ei = desc->hte_data;
31ab09b4218879b Dipen Patel 2022-04-22 249
31ab09b4218879b Dipen Patel 2022-04-22 250 if (!ei || !ei->gdev)
31ab09b4218879b Dipen Patel 2022-04-22 251 return -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22 252
31ab09b4218879b Dipen Patel 2022-04-22 253 gdev = ei->gdev;
31ab09b4218879b Dipen Patel 2022-04-22 254 ts_id = desc->attr.line_id;
31ab09b4218879b Dipen Patel 2022-04-22 255
31ab09b4218879b Dipen Patel 2022-04-22 256 mutex_lock(&ei->req_mlock);
31ab09b4218879b Dipen Patel 2022-04-22 257
31ab09b4218879b Dipen Patel 2022-04-22 258 if (!test_bit(HTE_TS_REGISTERED, &ei->flags)) {
31ab09b4218879b Dipen Patel 2022-04-22 259 dev_dbg(gdev->sdev, "id:%d is not registered", ts_id);
31ab09b4218879b Dipen Patel 2022-04-22 260 ret = -EUSERS;
31ab09b4218879b Dipen Patel 2022-04-22 261 goto out;
31ab09b4218879b Dipen Patel 2022-04-22 262 }
31ab09b4218879b Dipen Patel 2022-04-22 263
31ab09b4218879b Dipen Patel 2022-04-22 264 spin_lock_irqsave(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22 265
31ab09b4218879b Dipen Patel 2022-04-22 266 if (en) {
31ab09b4218879b Dipen Patel 2022-04-22 267 if (!test_bit(HTE_TS_DISABLE, &ei->flags)) {
31ab09b4218879b Dipen Patel 2022-04-22 268 ret = 0;
31ab09b4218879b Dipen Patel 2022-04-22 269 goto out_unlock;
31ab09b4218879b Dipen Patel 2022-04-22 270 }
31ab09b4218879b Dipen Patel 2022-04-22 271
31ab09b4218879b Dipen Patel 2022-04-22 272 spin_unlock_irqrestore(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22 273 ret = gdev->chip->ops->enable(gdev->chip, ei->xlated_id);
31ab09b4218879b Dipen Patel 2022-04-22 274 if (ret) {
31ab09b4218879b Dipen Patel 2022-04-22 275 dev_warn(gdev->sdev, "id: %d enable failed\n",
31ab09b4218879b Dipen Patel 2022-04-22 276 ts_id);
31ab09b4218879b Dipen Patel 2022-04-22 277 goto out;
31ab09b4218879b Dipen Patel 2022-04-22 278 }
31ab09b4218879b Dipen Patel 2022-04-22 279
31ab09b4218879b Dipen Patel 2022-04-22 280 spin_lock_irqsave(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22 281 clear_bit(HTE_TS_DISABLE, &ei->flags);
31ab09b4218879b Dipen Patel 2022-04-22 282 } else {
31ab09b4218879b Dipen Patel 2022-04-22 283 if (test_bit(HTE_TS_DISABLE, &ei->flags)) {
31ab09b4218879b Dipen Patel 2022-04-22 284 ret = 0;
31ab09b4218879b Dipen Patel 2022-04-22 285 goto out_unlock;
31ab09b4218879b Dipen Patel 2022-04-22 286 }
31ab09b4218879b Dipen Patel 2022-04-22 287
31ab09b4218879b Dipen Patel 2022-04-22 288 spin_unlock_irqrestore(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22 289 ret = gdev->chip->ops->disable(gdev->chip, ei->xlated_id);
31ab09b4218879b Dipen Patel 2022-04-22 290 if (ret) {
31ab09b4218879b Dipen Patel 2022-04-22 291 dev_warn(gdev->sdev, "id: %d disable failed\n",
31ab09b4218879b Dipen Patel 2022-04-22 292 ts_id);
31ab09b4218879b Dipen Patel 2022-04-22 293 goto out;
31ab09b4218879b Dipen Patel 2022-04-22 294 }
31ab09b4218879b Dipen Patel 2022-04-22 295
31ab09b4218879b Dipen Patel 2022-04-22 296 spin_lock_irqsave(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22 297 set_bit(HTE_TS_DISABLE, &ei->flags);
31ab09b4218879b Dipen Patel 2022-04-22 298 }
31ab09b4218879b Dipen Patel 2022-04-22 299
31ab09b4218879b Dipen Patel 2022-04-22 300 out_unlock:
31ab09b4218879b Dipen Patel 2022-04-22 @301 spin_unlock_irqrestore(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22 302 out:
31ab09b4218879b Dipen Patel 2022-04-22 303 mutex_unlock(&ei->req_mlock);
31ab09b4218879b Dipen Patel 2022-04-22 304 return ret;
31ab09b4218879b Dipen Patel 2022-04-22 305 }
31ab09b4218879b Dipen Patel 2022-04-22 306
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
2026-03-10 18:14 ` Maarten Lankhorst
@ 2026-03-12 11:35 ` Sebastian Andrzej Siewior
0 siblings, 0 replies; 45+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-03-12 11:35 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx, dri-devel
On 2026-03-10 19:14:18 [+0100], Maarten Lankhorst wrote:
> Hey,
Hi,
>
> Otherwise things are looking good! Have you uncovered anything else?
I would swap the ordering 23 <-> 26 in
| ├─>[PATCH v7 23/26] Revert "drm/i915: Depend on !PREEMPT_RT."
| ├─>[PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
but other than that it all looks good. I tested it by using it on my two
boxes with i915 compatible hw and didn't notice anything.
I've been using -next + this series.
> Kind regards,
> ~Maarten Lankhorst
Sebastian
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work.
2026-03-10 19:03 ` Maarten Lankhorst
@ 2026-03-12 11:38 ` Sebastian Andrzej Siewior
0 siblings, 0 replies; 45+ messages in thread
From: Sebastian Andrzej Siewior @ 2026-03-12 11:38 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx, dri-devel
On 2026-03-10 20:03:14 [+0100], Maarten Lankhorst wrote:
> Hey,
Hi,
> Den 2026-03-10 kl. 18:22, skrev Sebastian Andrzej Siewior:
> > On 2026-03-10 12:57:08 [+0100], Maarten Lankhorst wrote:
> >> --- a/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> >> +++ b/drivers/gpu/drm/i915/gt/intel_breadcrumbs.c
> >> @@ -487,8 +490,11 @@ void intel_context_remove_breadcrumbs(struct intel_context *ce,
> >> if (release)
> >> intel_context_put(ce);
> >>
> >> - while (atomic_read(&b->signaler_active))
> >> + while (atomic_read(&b->signaler_active)) {
> >> + spin_lock(&b->signaler_active_sync);
> >> + spin_unlock(&b->signaler_active_sync);
> >> cpu_relax();
> >
> > Forgot to mention: This is fine on PREEMPT_RT but on !RT you might need
> >
> > spin_lock_irqsave(&b->signaler_active_sync, flags);
> > spin_unlock_irqrestore(&b->signaler_active_sync, flags);
> >
> > if the function can be called from !IRQ context which might be the case
> > due to the irqsave() earlier in this function.
> Yeah seems a bit of an oversight. I'll change it to use flags.
>
> Is it correct to assume that irq_work disables interrupts on !RT?
Yes. It runs either directly as an interrupt or gets kicked from the
timer interrupt. Either way, interrupts are always disabled. Only on RT
interrupts are enabled unless the IRQ-work has been explicitly requested
to be run in interrupt context.
> Kind regards,
> ~Maarten Lankhorst
Sebastian
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [PATCH v7 24/26] PREEMPT_RT injection
2026-03-10 11:57 ` [PATCH v7 24/26] PREEMPT_RT injection Maarten Lankhorst
@ 2026-03-13 9:36 ` kernel test robot
0 siblings, 0 replies; 45+ messages in thread
From: kernel test robot @ 2026-03-13 9:36 UTC (permalink / raw)
To: Maarten Lankhorst
Cc: oe-lkp, lkp, intel-gfx, intel-xe, linux-kernel, dri-devel,
Maarten Lankhorst, oliver.sang
Hello,
we made a similar report two weeks ago. again, we cannot understand well the
purpose of this patch set, this report is just FYI what we observed in our
tests.
by this commit, a big config diff is introduced comparing to parent [1]
then a boot test which can pass on parent commit (previous patch) now fails
persistently.
=========================================================================================
tbox_group/testcase/rootfs/kconfig/compiler/sleep:
vm-snb/boot/debian-13-x86_64-20250902.cgz/x86_64-rhel-9.4/gcc-14/1
24a93cdeef1153e2 20d2f07d259d55c5b2f1e8c97da
---------------- ---------------------------
fail:runs %reproduction fail:runs
| | |
:6 100% 6:6 dmesg.BUG:kernel_reboot-without-warning_in_test_stage
:6 100% 6:6 dmesg.boot_failures
unfortunately, we cannot find more useful information in dmesg.
below is full report FYI.
kernel test robot noticed "BUG:kernel_reboot-without-warning_in_test_stage" on:
commit: 20d2f07d259d55c5b2f1e8c97daa270b48b8554e ("[PATCH v7 24/26] PREEMPT_RT injection")
url: https://github.com/intel-lab-lkp/linux/commits/Maarten-Lankhorst/drm-vblank_work-Add-methods-to-schedule-vblank_work-in-2-stages/20260310-205630
base: https://gitlab.freedesktop.org/drm/i915/kernel.git for-linux-next
patch link: https://lore.kernel.org/all/20260310115709.2276203-25-dev@lankhorst.se/
patch subject: [PATCH v7 24/26] PREEMPT_RT injection
in testcase: boot
config: x86_64-rhel-9.4
compiler: gcc-14
test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 32G
(please refer to attached dmesg/kmsg for entire log/backtrace)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202603131728.1fedee25-lkp@intel.com
[ 12.960487][ T186] scsi 1:0:0:0: Attached scsi generic sg0 type 5
[ 12.985908][ T186] sr 1:0:0:0: [sr0] scsi3-mmc drive: 4x/4x cd/rw xa/form2 tray
[ 12.985917][ T186] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 13.001113][ T186] sr 1:0:0:0: Attached scsi CD-ROM sr0
LKP: ttyS0: 213: LKP: tbox cant kexec and rebooting forcely
BUG: kernel reboot-without-warning in test stage
The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20260313/202603131728.1fedee25-lkp@intel.com
[1]
--- /pkg/linux/x86_64-rhel-9.4/gcc-14/24a93cdeef1153e28b6157b6fd805b02ca23dd64/.config 2026-03-12 11:30:32.108505780 +0800
+++ /pkg/linux/x86_64-rhel-9.4/gcc-14/20d2f07d259d55c5b2f1e8c97daa270b48b8554e/.config 2026-03-12 12:24:04.187019016 +0800
@@ -131,7 +131,8 @@ CONFIG_PREEMPT_BUILD=y
CONFIG_ARCH_HAS_PREEMPT_LAZY=y
# CONFIG_PREEMPT is not set
CONFIG_PREEMPT_LAZY=y
-# CONFIG_PREEMPT_RT is not set
+CONFIG_PREEMPT_RT=y
+# CONFIG_PREEMPT_RT_NEEDS_BH_LOCK is not set
CONFIG_PREEMPT_COUNT=y
CONFIG_PREEMPTION=y
# CONFIG_PREEMPT_DYNAMIC is not set
@@ -160,6 +161,7 @@ CONFIG_CPU_ISOLATION=y
# RCU Subsystem
#
CONFIG_TREE_RCU=y
+CONFIG_PREEMPT_RCU=y
# CONFIG_RCU_EXPERT is not set
CONFIG_TREE_SRCU=y
CONFIG_TASKS_RCU_GENERIC=y
@@ -169,8 +171,11 @@ CONFIG_TASKS_RUDE_RCU=y
CONFIG_TASKS_TRACE_RCU=y
CONFIG_RCU_STALL_COMMON=y
CONFIG_RCU_NEED_SEGCBLIST=y
+CONFIG_RCU_BOOST=y
+CONFIG_RCU_BOOST_DELAY=500
CONFIG_RCU_NOCB_CPU=y
# CONFIG_RCU_NOCB_CPU_DEFAULT_ALL is not set
+CONFIG_RCU_NOCB_CPU_CB_BOOST=y
# CONFIG_RCU_LAZY is not set
# end of RCU Subsystem
@@ -186,7 +191,6 @@ CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
# Scheduler features
#
# CONFIG_UCLAMP_TASK is not set
-# CONFIG_SCHED_PROXY_EXEC is not set
# end of Scheduler features
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
@@ -198,8 +202,6 @@ CONFIG_CC_NO_ARRAY_BOUNDS=y
CONFIG_GCC_NO_STRINGOP_OVERFLOW=y
CONFIG_CC_NO_STRINGOP_OVERFLOW=y
CONFIG_ARCH_SUPPORTS_INT128=y
-CONFIG_NUMA_BALANCING=y
-CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
CONFIG_SLAB_OBJ_EXT=y
CONFIG_CGROUPS=y
CONFIG_PAGE_COUNTER=y
@@ -928,14 +930,12 @@ CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PU
CONFIG_HAVE_ARCH_HUGE_VMAP=y
CONFIG_HAVE_ARCH_HUGE_VMALLOC=y
CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
-CONFIG_ARCH_WANT_PMD_MKWRITE=y
CONFIG_HAVE_ARCH_SOFT_DIRTY=y
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
CONFIG_MODULES_USE_ELF_RELA=y
CONFIG_ARCH_HAS_EXECMEM_ROX=y
CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y
-CONFIG_SOFTIRQ_ON_OWN_STACK=y
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
CONFIG_HAVE_EXIT_THREAD=y
@@ -1100,7 +1100,6 @@ CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
CONFIG_QUEUED_SPINLOCKS=y
CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
-CONFIG_QUEUED_RWLOCKS=y
CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y
CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y
CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
@@ -1189,12 +1188,11 @@ CONFIG_SPLIT_PMD_PTLOCKS=y
CONFIG_BALLOON=y
CONFIG_BALLOON_MIGRATION=y
CONFIG_COMPACTION=y
-CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=0
CONFIG_PAGE_REPORTING=y
CONFIG_MIGRATION=y
CONFIG_DEVICE_MIGRATION=y
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
-CONFIG_ARCH_ENABLE_THP_MIGRATION=y
CONFIG_CONTIG_ALLOC=y
CONFIG_PCP_BATCH_SCALE_MAX=5
CONFIG_PHYS_ADDR_T_64BIT=y
@@ -1206,30 +1204,10 @@ CONFIG_MEMORY_FAILURE=y
CONFIG_HWPOISON_INJECT=m
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
CONFIG_ARCH_WANTS_THP_SWAP=y
-# CONFIG_PERSISTENT_HUGE_ZERO_FOLIO is not set
-CONFIG_MM_ID=y
-CONFIG_TRANSPARENT_HUGEPAGE=y
-CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
-# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
-# CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set
-CONFIG_TRANSPARENT_HUGEPAGE_SHMEM_HUGE_NEVER=y
-# CONFIG_TRANSPARENT_HUGEPAGE_SHMEM_HUGE_ALWAYS is not set
-# CONFIG_TRANSPARENT_HUGEPAGE_SHMEM_HUGE_WITHIN_SIZE is not set
-# CONFIG_TRANSPARENT_HUGEPAGE_SHMEM_HUGE_ADVISE is not set
-CONFIG_TRANSPARENT_HUGEPAGE_TMPFS_HUGE_NEVER=y
-# CONFIG_TRANSPARENT_HUGEPAGE_TMPFS_HUGE_ALWAYS is not set
-# CONFIG_TRANSPARENT_HUGEPAGE_TMPFS_HUGE_WITHIN_SIZE is not set
-# CONFIG_TRANSPARENT_HUGEPAGE_TMPFS_HUGE_ADVISE is not set
-CONFIG_THP_SWAP=y
-# CONFIG_READ_ONLY_THP_FOR_FS is not set
-# CONFIG_NO_PAGE_MAPCOUNT is not set
CONFIG_PAGE_MAPCOUNT=y
CONFIG_PGTABLE_HAS_HUGE_LEAVES=y
CONFIG_HAVE_GIGANTIC_FOLIOS=y
CONFIG_ASYNC_KERNEL_PGTABLE_FREE=y
-CONFIG_ARCH_SUPPORTS_HUGE_PFNMAP=y
-CONFIG_ARCH_SUPPORTS_PMD_PFNMAP=y
-CONFIG_ARCH_SUPPORTS_PUD_PFNMAP=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_USE_PERCPU_NUMA_NODE_ID=y
@@ -1531,7 +1509,6 @@ CONFIG_NF_FLOW_TABLE_INET=m
CONFIG_NF_FLOW_TABLE=m
CONFIG_NF_FLOW_TABLE_PROCFS=y
CONFIG_NETFILTER_XTABLES=y
-# CONFIG_NETFILTER_XTABLES_LEGACY is not set
#
# Xtables combined modules
@@ -2842,7 +2819,6 @@ CONFIG_DM_INTEGRITY=m
# CONFIG_DM_ZONED is not set
CONFIG_DM_AUDIT=y
# CONFIG_DM_VDO is not set
-# CONFIG_DM_PCACHE is not set
CONFIG_TARGET_CORE=m
CONFIG_TCM_IBLOCK=m
CONFIG_TCM_FILEIO=m
@@ -5412,7 +5388,6 @@ CONFIG_DRM_I915_DP_TUNNEL=y
# CONFIG_DRM_I915_DEBUG_GUC is not set
# CONFIG_DRM_I915_SELFTEST is not set
# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set
-# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set
# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set
# CONFIG_DRM_I915_DEBUG_WAKEREF is not set
# end of drm/i915 Debugging
@@ -5432,6 +5407,7 @@ CONFIG_DRM_I915_TIMESLICE_DURATION=1
# end of drm/i915 Profile Guided Optimisation
CONFIG_DRM_MGAG200=m
+# CONFIG_DRM_MGAG200_DISABLE_WRITECOMBINE is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
@@ -7014,7 +6990,6 @@ CONFIG_LEDS_TRIGGER_DISK=y
# CONFIG_LEDS_TRIGGER_MTD is not set
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
-# CONFIG_LEDS_TRIGGER_CPU is not set
# CONFIG_LEDS_TRIGGER_ACTIVITY is not set
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
@@ -8441,12 +8416,8 @@ CONFIG_RAMDAX=m
CONFIG_NVDIMM_KEYS=y
# CONFIG_NVDIMM_SECURITY_TEST is not set
CONFIG_DAX=y
-CONFIG_DEV_DAX=m
-CONFIG_DEV_DAX_PMEM=m
CONFIG_DEV_DAX_HMEM=m
-CONFIG_DEV_DAX_CXL=m
CONFIG_DEV_DAX_HMEM_DEVICES=y
-CONFIG_DEV_DAX_KMEM=m
CONFIG_NVMEM=y
CONFIG_NVMEM_SYSFS=y
# CONFIG_NVMEM_LAYOUTS is not set
@@ -8543,7 +8514,6 @@ CONFIG_F2FS_IOSTAT=y
# CONFIG_F2FS_UNFAIR_RWSEM is not set
# CONFIG_ZONEFS_FS is not set
CONFIG_FS_DAX=y
-CONFIG_FS_DAX_PMD=y
CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
CONFIG_EXPORTFS_BLOCK_OPS=y
@@ -9571,7 +9541,6 @@ CONFIG_BOOTPARAM_HARDLOCKUP_PANIC=y
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=480
CONFIG_BOOTPARAM_HUNG_TASK_PANIC=0
-CONFIG_DETECT_HUNG_TASK_BLOCKER=y
CONFIG_WQ_WATCHDOG=y
CONFIG_BOOTPARAM_WQ_STALL_PANIC=0
# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set
@@ -9596,9 +9565,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
-# CONFIG_DEBUG_RWSEMS is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [PATCH v7 24/26] PREEMPT_RT injection
@ 2026-03-13 17:52 kernel test robot
0 siblings, 0 replies; 45+ messages in thread
From: kernel test robot @ 2026-03-13 17:52 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260310115709.2276203-25-dev@lankhorst.se>
References: <20260310115709.2276203-25-dev@lankhorst.se>
TO: Maarten Lankhorst <dev@lankhorst.se>
TO: intel-xe@lists.freedesktop.org
TO: intel-gfx@lists.freedesktop.org
CC: dri-devel@lists.freedesktop.org
CC: Maarten Lankhorst <dev@lankhorst.se>
Hi Maarten,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-i915/for-linux-next]
[also build test WARNING on next-20260311]
[cannot apply to drm-i915/for-linux-next-fixes drm-misc/drm-misc-next drm-xe/drm-xe-next linus/master v7.0-rc3]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Maarten-Lankhorst/drm-vblank_work-Add-methods-to-schedule-vblank_work-in-2-stages/20260310-205630
base: https://gitlab.freedesktop.org/drm/i915/kernel.git for-linux-next
patch link: https://lore.kernel.org/r/20260310115709.2276203-25-dev%40lankhorst.se
patch subject: [PATCH v7 24/26] PREEMPT_RT injection
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: i386-randconfig-141-20260311 (https://download.01.org/0day-ci/archive/20260314/202603140159.q9J8zmoL-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch: v0.5.0-9004-gb810ac53
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202603140159.q9J8zmoL-lkp@intel.com/
New smatch warnings:
drivers/char/ipmi/ssif_bmc.c:155 ssif_bmc_read() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/char/ipmi/ssif_bmc.c:226 ssif_bmc_write() error: calling 'spin_unlock_irqrestore()' with bogus flags
Old smatch warnings:
drivers/char/ipmi/ssif_bmc.c:163 ssif_bmc_read() error: calling 'spin_unlock_irqrestore()' with bogus flags
vim +155 drivers/char/ipmi/ssif_bmc.c
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 131
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 132 /* Handle SSIF message that will be sent to user */
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 133 static ssize_t ssif_bmc_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 134 {
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 135 struct ssif_bmc_ctx *ssif_bmc = to_ssif_bmc(file);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 136 struct ipmi_ssif_msg msg;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 137 unsigned long flags;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 138 ssize_t ret;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 139
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 140 spin_lock_irqsave(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 141 while (!ssif_bmc->request_available) {
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 142 spin_unlock_irqrestore(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 143 if (file->f_flags & O_NONBLOCK)
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 144 return -EAGAIN;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 145 ret = wait_event_interruptible(ssif_bmc->wait_queue,
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 146 ssif_bmc->request_available);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 147 if (ret)
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 148 return ret;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 149 spin_lock_irqsave(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 150 }
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 151
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 152 if (count < min_t(ssize_t,
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 153 sizeof_field(struct ipmi_ssif_msg, len) + ssif_bmc->request.len,
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 154 sizeof(struct ipmi_ssif_msg))) {
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 @155 spin_unlock_irqrestore(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 156 ret = -EINVAL;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 157 } else {
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 158 count = min_t(ssize_t,
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 159 sizeof_field(struct ipmi_ssif_msg, len) + ssif_bmc->request.len,
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 160 sizeof(struct ipmi_ssif_msg));
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 161 memcpy(&msg, &ssif_bmc->request, count);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 162 ssif_bmc->request_available = false;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 163 spin_unlock_irqrestore(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 164
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 165 ret = copy_to_user(buf, &msg, count);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 166 }
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 167
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 168 return (ret < 0) ? ret : count;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 169 }
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 170
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 171 /* Handle SSIF message that is written by user */
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 172 static ssize_t ssif_bmc_write(struct file *file, const char __user *buf, size_t count,
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 173 loff_t *ppos)
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 174 {
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 175 struct ssif_bmc_ctx *ssif_bmc = to_ssif_bmc(file);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 176 struct ipmi_ssif_msg msg;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 177 unsigned long flags;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 178 ssize_t ret;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 179
0627cef36145c9 Dan Carpenter 2024-06-14 180 if (count < sizeof(msg.len) ||
0627cef36145c9 Dan Carpenter 2024-06-14 181 count > sizeof(struct ipmi_ssif_msg))
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 182 return -EINVAL;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 183
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 184 if (copy_from_user(&msg, buf, count))
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 185 return -EFAULT;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 186
0627cef36145c9 Dan Carpenter 2024-06-14 187 if (!msg.len || msg.len > IPMI_SSIF_PAYLOAD_MAX ||
0627cef36145c9 Dan Carpenter 2024-06-14 188 count < sizeof_field(struct ipmi_ssif_msg, len) + msg.len)
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 189 return -EINVAL;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 190
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 191 spin_lock_irqsave(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 192 while (ssif_bmc->response_in_progress) {
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 193 spin_unlock_irqrestore(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 194 if (file->f_flags & O_NONBLOCK)
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 195 return -EAGAIN;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 196 ret = wait_event_interruptible(ssif_bmc->wait_queue,
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 197 !ssif_bmc->response_in_progress);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 198 if (ret)
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 199 return ret;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 200 spin_lock_irqsave(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 201 }
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 202
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 203 /*
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 204 * The write must complete before the response timeout fired, otherwise
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 205 * the response is aborted and wait for next request
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 206 * Return -EINVAL if the response is aborted
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 207 */
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 208 ret = (ssif_bmc->response_timer_inited) ? 0 : -EINVAL;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 209 if (ret)
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 210 goto exit;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 211
8fa7292fee5c52 Thomas Gleixner 2025-04-05 212 timer_delete(&ssif_bmc->response_timer);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 213 ssif_bmc->response_timer_inited = false;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 214
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 215 memcpy(&ssif_bmc->response, &msg, count);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 216 ssif_bmc->is_singlepart_read = (msg.len <= MAX_PAYLOAD_PER_TRANSACTION);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 217
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 218 ssif_bmc->response_in_progress = true;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 219
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 220 /* ssif_bmc not busy */
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 221 ssif_bmc->busy = false;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 222
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 223 /* Clean old request buffer */
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 224 memset(&ssif_bmc->request, 0, sizeof(struct ipmi_ssif_msg));
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 225 exit:
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 @226 spin_unlock_irqrestore(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 227
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 228 return (ret < 0) ? ret : count;
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 229 }
dd2bc5cc9e2555 Quan Nguyen 2022-10-04 230
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 45+ messages in thread
end of thread, other threads:[~2026-03-13 17:52 UTC | newest]
Thread overview: 45+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 01/26] drm/vblank_work: Add methods to schedule vblank_work in 2 stages Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 02/26] drm/vblank: Add a 2-stage version of drm_crtc_arm_vblank_event Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 03/26] drm/intel/display: Make intel_crtc_arm_vblank_event static Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 04/26] drm/intel/display: Convert vblank event handling to 2-stage arming Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 05/26] drm/i915/display: Move vblank put until after critical section Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 06/26] drm/i915/display: Remove locking from intel_vblank_evade " Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 07/26] drm/i915/display: Handle vlv dsi workaround in scanline_in_safe_range too Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 08/26] drm/i915: Use preempt_disable/enable_rt() where recommended Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 09/26] drm/i915/display: Make get_vblank_counter use intel_de_read_fw() Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 10/26] drm/i915/display: Do not take uncore lock in i915_get_vblank_counter Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 11/26] drm/i915/display: Make icl_dsi_frame_update use _fw too Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 12/26] drm/i915/display: Use intel_de_read/write_fw in colorops Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 13/26] drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 14/26] drm/i915/display: Make set_pipeconf use the fw variants Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 15/26] drm/i915/display: Fix intel_lpe_audio_irq_handler for PREEMPT-RT Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 16/26] drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() + spin_lock() Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 17/26] drm/i915: Drop the irqs_disabled() check Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 18/26] drm/i915/guc: Consider also RCU depth in busy loop Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 19/26] drm/i915/gt: Fix selftests on PREEMPT_RT Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 20/26] drm/i915/gt: Set stop_timeout() correctly on PREEMPT-RT Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 21/26] drm/i915/display: Remove uncore lock from vlv_atomic_update_fifo Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 22/26] drm/i915: Use sleeping selftests for igt_atomic on PREEMPT_RT Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 23/26] Revert "drm/i915: Depend on !PREEMPT_RT." Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 24/26] PREEMPT_RT injection Maarten Lankhorst
2026-03-13 9:36 ` kernel test robot
2026-03-10 11:57 ` [PATCH v7 25/26] FOR-CI: bump MAX_STACK_TRACE_ENTRIES Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work Maarten Lankhorst
2026-03-10 17:04 ` Sebastian Andrzej Siewior
2026-03-10 18:14 ` Maarten Lankhorst
2026-03-12 11:35 ` Sebastian Andrzej Siewior
2026-03-10 17:22 ` Sebastian Andrzej Siewior
2026-03-10 19:03 ` Maarten Lankhorst
2026-03-12 11:38 ` Sebastian Andrzej Siewior
2026-03-10 12:11 ` ✗ CI.checkpatch: warning for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14) Patchwork
2026-03-10 12:12 ` ✓ CI.KUnit: success " Patchwork
2026-03-10 12:27 ` ✗ CI.checksparse: warning " Patchwork
2026-03-10 13:24 ` ✓ Xe.CI.BAT: success " Patchwork
2026-03-10 14:20 ` ✗ i915.CI.BAT: failure " Patchwork
2026-03-10 17:31 ` ✗ Xe.CI.FULL: " Patchwork
2026-03-10 17:35 ` ✗ Fi.CI.BUILD: failure for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev15) Patchwork
-- strict thread matches above, loose matches on Subject: below --
2026-03-11 0:52 [PATCH v7 24/26] PREEMPT_RT injection kernel test robot
2026-03-11 22:37 kernel test robot
2026-03-11 22:58 kernel test robot
2026-03-13 17:52 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.