* [PATCH 1/7] drm/i915/display: Make get_vblank_counter use intel_de_read_fw()
2025-11-03 17:47 [PATCH 0/7] drm/i915/display: Enable CONFIG_PREEMPT_RT Maarten Lankhorst
@ 2025-11-03 17:47 ` Maarten Lankhorst
2025-11-26 19:01 ` Shankar, Uma
2025-11-03 17:47 ` [PATCH 2/7] drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset Maarten Lankhorst
` (7 subsequent siblings)
8 siblings, 1 reply; 11+ messages in thread
From: Maarten Lankhorst @ 2025-11-03 17:47 UTC (permalink / raw)
To: intel-xe
Cc: Maarten Lankhorst, Mario Kleiner, Mike Galbraith, Thomas Gleixner,
Sebastian Andrzej Siewior
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 671f357c65638..2b106ffa3f5f5 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.c
+++ b/drivers/gpu/drm/i915/display/intel_vblank.c
@@ -133,7 +133,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] 11+ messages in thread* RE: [PATCH 1/7] drm/i915/display: Make get_vblank_counter use intel_de_read_fw()
2025-11-03 17:47 ` [PATCH 1/7] drm/i915/display: Make get_vblank_counter use intel_de_read_fw() Maarten Lankhorst
@ 2025-11-26 19:01 ` Shankar, Uma
0 siblings, 0 replies; 11+ messages in thread
From: Shankar, Uma @ 2025-11-26 19:01 UTC (permalink / raw)
To: Maarten Lankhorst, intel-xe@lists.freedesktop.org
Cc: Mario Kleiner, Mike Galbraith, Thomas Gleixner,
Sebastian Andrzej Siewior
> -----Original Message-----
> From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Maarten
> Lankhorst
> Sent: Monday, November 3, 2025 11:17 PM
> To: intel-xe@lists.freedesktop.org
> Cc: Maarten Lankhorst <dev@lankhorst.se>; Mario Kleiner
> <mario.kleiner.de@gmail.com>; Mike Galbraith <umgwanakikbuti@gmail.com>;
> Thomas Gleixner <tglx@linutronix.de>; Sebastian Andrzej Siewior
> <bigeasy@linutronix.de>
> Subject: [PATCH 1/7] drm/i915/display: Make get_vblank_counter use
> intel_de_read_fw()
>
> 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 671f357c65638..2b106ffa3f5f5 100644
> --- a/drivers/gpu/drm/i915/display/intel_vblank.c
> +++ b/drivers/gpu/drm/i915/display/intel_vblank.c
> @@ -133,7 +133,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));
I think we ensure that power domains etc are up and locking would have been handled by caller,
so this should be ok. Will verify for any corner case and get back.
Regards,
Uma Shankar
> }
>
> static u32 intel_crtc_scanlines_since_frame_timestamp(struct intel_crtc *crtc)
> --
> 2.51.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/7] drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset
2025-11-03 17:47 [PATCH 0/7] drm/i915/display: Enable CONFIG_PREEMPT_RT Maarten Lankhorst
2025-11-03 17:47 ` [PATCH 1/7] drm/i915/display: Make get_vblank_counter use intel_de_read_fw() Maarten Lankhorst
@ 2025-11-03 17:47 ` Maarten Lankhorst
2025-11-03 17:47 ` [PATCH 3/7] drm/i915/display: Move vblank put until after critical section Maarten Lankhorst
` (6 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Maarten Lankhorst @ 2025-11-03 17:47 UTC (permalink / raw)
To: intel-xe
Cc: Maarten Lankhorst, Mario Kleiner, Mike Galbraith, Thomas Gleixner,
Sebastian Andrzej Siewior
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 | 16 ++++-----
2 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 42ec787986666..1bff1148fe9d7 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1573,9 +1573,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)
@@ -2543,14 +2543,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,
@@ -2737,9 +2737,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
@@ -2755,9 +2755,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
@@ -2771,9 +2771,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);
@@ -2790,8 +2790,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 00cbc126fb366..2e19673697fa4 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -300,12 +300,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
@@ -693,7 +693,7 @@ 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_PUSH_EN);
+ intel_de_write_fw(display, TRANS_PUSH(display, cpu_transcoder), TRANS_PUSH_EN);
vrr_ctl = VRR_CTL_VRR_ENABLE | trans_vrr_ctl(crtc_state);
@@ -705,7 +705,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] 11+ messages in thread* [PATCH 3/7] drm/i915/display: Move vblank put until after critical section
2025-11-03 17:47 [PATCH 0/7] drm/i915/display: Enable CONFIG_PREEMPT_RT Maarten Lankhorst
2025-11-03 17:47 ` [PATCH 1/7] drm/i915/display: Make get_vblank_counter use intel_de_read_fw() Maarten Lankhorst
2025-11-03 17:47 ` [PATCH 2/7] drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset Maarten Lankhorst
@ 2025-11-03 17:47 ` Maarten Lankhorst
2025-11-03 17:47 ` [PATCH 4/7] drm/i915/display: Remove locking from intel_vblank_evade " Maarten Lankhorst
` (5 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Maarten Lankhorst @ 2025-11-03 17:47 UTC (permalink / raw)
To: intel-xe
Cc: Maarten Lankhorst, Mario Kleiner, Mike Galbraith, Thomas Gleixner,
Sebastian Andrzej Siewior
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>
---
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 7aa14348aa6d4..6b3bc8d94e51a 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -816,6 +816,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;
/*
@@ -913,6 +914,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?
@@ -922,8 +925,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();
}
@@ -939,6 +940,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] 11+ messages in thread* [PATCH 4/7] drm/i915/display: Remove locking from intel_vblank_evade critical section
2025-11-03 17:47 [PATCH 0/7] drm/i915/display: Enable CONFIG_PREEMPT_RT Maarten Lankhorst
` (2 preceding siblings ...)
2025-11-03 17:47 ` [PATCH 3/7] drm/i915/display: Move vblank put until after critical section Maarten Lankhorst
@ 2025-11-03 17:47 ` Maarten Lankhorst
2025-11-03 17:47 ` [PATCH 5/7] drm/i915/display: Make icl_dsi_frame_update use _fw too Maarten Lankhorst
` (4 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Maarten Lankhorst @ 2025-11-03 17:47 UTC (permalink / raw)
To: intel-xe
Cc: Maarten Lankhorst, Mario Kleiner, Mike Galbraith, Thomas Gleixner,
Sebastian Andrzej Siewior
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_vblank.c | 35 ++++++++++-----------
1 file changed, 17 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_vblank.c b/drivers/gpu/drm/i915/display/intel_vblank.c
index 2b106ffa3f5f5..3628d2a1b8f38 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.c
+++ b/drivers/gpu/drm/i915/display/intel_vblank.c
@@ -708,6 +708,13 @@ void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_state,
evade->min -= vblank_delay;
}
+static inline int vblank_evadable(struct intel_vblank_evade_ctx *evade, int *scanline)
+{
+ *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)
{
@@ -715,23 +722,22 @@ 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);
+ while (!vblank_evadable(evade, &scanline)) {
+ local_irq_enable();
- scanline = intel_get_crtc_scanline(crtc);
- if (scanline < evade->min || scanline > evade->max)
- break;
+ DEFINE_WAIT(wait);
+ while (!vblank_evadable(evade, &scanline) && timeout > 0) {
+ prepare_to_wait(wq, &wait, TASK_UNINTERRUPTIBLE);
+ timeout = schedule_timeout(timeout);
+ }
+ finish_wait(wq, &wait);
+
+ local_irq_disable();
if (!timeout) {
drm_dbg_kms(display->drm,
@@ -740,15 +746,8 @@ int intel_vblank_evade(struct intel_vblank_evade_ctx *evade)
break;
}
- local_irq_enable();
-
- timeout = schedule_timeout(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.
--
2.51.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH 5/7] drm/i915/display: Make icl_dsi_frame_update use _fw too
2025-11-03 17:47 [PATCH 0/7] drm/i915/display: Enable CONFIG_PREEMPT_RT Maarten Lankhorst
` (3 preceding siblings ...)
2025-11-03 17:47 ` [PATCH 4/7] drm/i915/display: Remove locking from intel_vblank_evade " Maarten Lankhorst
@ 2025-11-03 17:47 ` Maarten Lankhorst
2025-11-03 17:47 ` [PATCH 6/7] drm/i915/display: Enable interrupts earlier on PREEMPT_RT Maarten Lankhorst
` (3 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Maarten Lankhorst @ 2025-11-03 17:47 UTC (permalink / raw)
To: intel-xe
Cc: Maarten Lankhorst, Mario Kleiner, Mike Galbraith, Thomas Gleixner,
Sebastian Andrzej Siewior
Don't use the dmc lock inside the vblank critical section,
not even as last call.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/display/icl_dsi.c | 4 ++--
drivers/gpu/drm/i915/display/intel_de.h | 6 ++++++
| 2 ++
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c b/drivers/gpu/drm/i915/display/icl_dsi.c
index 70d4c1bc70fc3..e52b434ac8f11 100644
--- a/drivers/gpu/drm/i915/display/icl_dsi.c
+++ b/drivers/gpu/drm/i915/display/icl_dsi.c
@@ -243,8 +243,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)
diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
index 9ecdcf6b73e4d..b7d1df02a9319 100644
--- a/drivers/gpu/drm/i915/display/intel_de.h
+++ b/drivers/gpu/drm/i915/display/intel_de.h
@@ -214,6 +214,12 @@ intel_de_write_fw(struct intel_display *display, i915_reg_t reg, u32 val)
intel_uncore_write_fw(__to_uncore(display), reg, val);
}
+static inline u32
+intel_de_rmw_fw(struct intel_display *display, i915_reg_t reg, u32 clear, u32 set)
+{
+ return intel_uncore_rmw_fw(__to_uncore(display), reg, clear, set);
+}
+
static inline u32
intel_de_read_notrace(struct intel_display *display, i915_reg_t reg)
{
--git a/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
index d012f02bc84f7..57d5ffabf2d52 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
@@ -91,6 +91,8 @@ static inline u32 intel_uncore_rmw(struct intel_uncore *uncore,
return xe_mmio_rmw32(__compat_uncore_to_mmio(uncore), reg, clear, set);
}
+#define intel_uncore_rmw_fw intel_uncore_rmw
+
static inline int intel_wait_for_register(struct intel_uncore *uncore,
i915_reg_t i915_reg, u32 mask,
u32 value, unsigned int timeout)
--
2.51.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH 6/7] drm/i915/display: Enable interrupts earlier on PREEMPT_RT
2025-11-03 17:47 [PATCH 0/7] drm/i915/display: Enable CONFIG_PREEMPT_RT Maarten Lankhorst
` (4 preceding siblings ...)
2025-11-03 17:47 ` [PATCH 5/7] drm/i915/display: Make icl_dsi_frame_update use _fw too Maarten Lankhorst
@ 2025-11-03 17:47 ` Maarten Lankhorst
2025-11-03 17:47 ` [PATCH 7/7] drm/i915: Use preempt_disable/enable_rt() where recommended Maarten Lankhorst
` (2 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Maarten Lankhorst @ 2025-11-03 17:47 UTC (permalink / raw)
To: intel-xe
Cc: Maarten Lankhorst, Mario Kleiner, Mike Galbraith, Thomas Gleixner,
Sebastian Andrzej Siewior
The last part of the vblank evasion is about updating bookkeeping,
not programming hardware registers.
The interrupts cannot stay disabled here on PREEMPT_RT since the
spinlocks get converted to mutexes.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/i915/display/intel_crtc.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
index 9d2a23c96c61b..b87f6b4a4f3d7 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc.c
@@ -688,6 +688,14 @@ void intel_pipe_update_end(struct intel_atomic_state *state,
intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI))
icl_dsi_frame_update(new_crtc_state);
+#if IS_ENABLED(CONFIG_PREEMPT_RT)
+ /*
+ * Timing sensitive register writing completed, non-deterministic
+ * locking from here on out.
+ */
+ local_irq_enable();
+#endif
+
/* We're still in the vblank-evade critical section, this can't race.
* Would be slightly nice to just grab the vblank count and arm the
* event outside of the critical section - the spinlock might spin for a
@@ -735,7 +743,9 @@ void intel_pipe_update_end(struct intel_atomic_state *state,
if (!state->base.legacy_cursor_update)
intel_vrr_send_push(NULL, new_crtc_state);
+#if !IS_ENABLED(CONFIG_PREEMPT_RT)
local_irq_enable();
+#endif
if (intel_vgpu_active(dev_priv))
goto out;
--
2.51.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH 7/7] drm/i915: Use preempt_disable/enable_rt() where recommended
2025-11-03 17:47 [PATCH 0/7] drm/i915/display: Enable CONFIG_PREEMPT_RT Maarten Lankhorst
` (5 preceding siblings ...)
2025-11-03 17:47 ` [PATCH 6/7] drm/i915/display: Enable interrupts earlier on PREEMPT_RT Maarten Lankhorst
@ 2025-11-03 17:47 ` Maarten Lankhorst
2025-11-03 21:17 ` ✗ CI.checkpatch: warning for drm/i915/display: Enable CONFIG_PREEMPT_RT Patchwork
2025-11-03 21:18 ` ✓ CI.KUnit: success " Patchwork
8 siblings, 0 replies; 11+ messages in thread
From: Maarten Lankhorst @ 2025-11-03 17:47 UTC (permalink / raw)
To: intel-xe
Cc: Maarten Lankhorst, Mario Kleiner, Mike Galbraith, Thomas Gleixner,
Sebastian Andrzej Siewior
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>
---
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 3628d2a1b8f38..dd95336e6d792 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.c
+++ b/drivers/gpu/drm/i915/display/intel_vblank.c
@@ -317,6 +317,20 @@ static void intel_vblank_section_exit(struct intel_display *display)
struct drm_i915_private *i915 = to_i915(display->drm);
spin_unlock(&i915->uncore.lock);
}
+
+static void intel_vblank_section_enter_irqf(struct intel_display *display, unsigned long *flags)
+ __acquires(i915->uncore.lock)
+{
+ struct drm_i915_private *i915 = to_i915(display->drm);
+ spin_lock_irqsave(&i915->uncore.lock, *flags);
+}
+
+static void intel_vblank_section_exit_irqf(struct intel_display *display, unsigned long flags)
+ __releases(i915->uncore.lock)
+{
+ struct drm_i915_private *i915 = to_i915(display->drm);
+ spin_unlock_irqrestore(&i915->uncore.lock, flags);
+}
#else
static void intel_vblank_section_enter(struct intel_display *display)
{
@@ -325,6 +339,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,
@@ -361,10 +386,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)
@@ -428,10 +453,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
@@ -469,13 +494,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] 11+ messages in thread* ✗ CI.checkpatch: warning for drm/i915/display: Enable CONFIG_PREEMPT_RT
2025-11-03 17:47 [PATCH 0/7] drm/i915/display: Enable CONFIG_PREEMPT_RT Maarten Lankhorst
` (6 preceding siblings ...)
2025-11-03 17:47 ` [PATCH 7/7] drm/i915: Use preempt_disable/enable_rt() where recommended Maarten Lankhorst
@ 2025-11-03 21:17 ` Patchwork
2025-11-03 21:18 ` ✓ CI.KUnit: success " Patchwork
8 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2025-11-03 21:17 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
== Series Details ==
Series: drm/i915/display: Enable CONFIG_PREEMPT_RT
URL : https://patchwork.freedesktop.org/series/156948/
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
f867e605613af1770f90c4b0afd4a8f06424d1f0
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 06c0ac1719727541af655b57d598639e06b789b8
Author: Mike Galbraith <umgwanakikbuti@gmail.com>
Date: Mon Nov 3 18:47:10 2025 +0100
drm/i915: Use preempt_disable/enable_rt() where recommended
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>
+ /mt/dim checkpatch 3d82a6cdc5241dbae65a59cf1197ff3bfd90ec2c drm-intel
e96ae6d3e06a 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
160aaf554183 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
-:201: WARNING:MISSING_FIXES_TAG: The commit message has 'Call Trace:', perhaps it also needs a 'Fixes:' tag?
total: 0 errors, 2 warnings, 0 checks, 110 lines checked
20eebcac8aa8 drm/i915/display: Move vblank put until after critical section
5cc8da5e489e drm/i915/display: Remove locking from intel_vblank_evade critical section
-:59: WARNING:LINE_SPACING: Missing a blank line after declarations
#59: FILE: drivers/gpu/drm/i915/display/intel_vblank.c:734:
+ DEFINE_WAIT(wait);
+ while (!vblank_evadable(evade, &scanline) && timeout > 0) {
total: 0 errors, 1 warnings, 0 checks, 61 lines checked
dbd00e64edd4 drm/i915/display: Make icl_dsi_frame_update use _fw too
c8763e722758 drm/i915/display: Enable interrupts earlier on PREEMPT_RT
06c0ac171972 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.")
-:45: WARNING:LINE_SPACING: Missing a blank line after declarations
#45: FILE: drivers/gpu/drm/i915/display/intel_vblank.c:325:
+ struct drm_i915_private *i915 = to_i915(display->drm);
+ spin_lock_irqsave(&i915->uncore.lock, *flags);
-:52: WARNING:LINE_SPACING: Missing a blank line after declarations
#52: FILE: drivers/gpu/drm/i915/display/intel_vblank.c:332:
+ struct drm_i915_private *i915 = to_i915(display->drm);
+ spin_unlock_irqrestore(&i915->uncore.lock, flags);
total: 0 errors, 3 warnings, 0 checks, 78 lines checked
^ permalink raw reply [flat|nested] 11+ messages in thread* ✓ CI.KUnit: success for drm/i915/display: Enable CONFIG_PREEMPT_RT
2025-11-03 17:47 [PATCH 0/7] drm/i915/display: Enable CONFIG_PREEMPT_RT Maarten Lankhorst
` (7 preceding siblings ...)
2025-11-03 21:17 ` ✗ CI.checkpatch: warning for drm/i915/display: Enable CONFIG_PREEMPT_RT Patchwork
@ 2025-11-03 21:18 ` Patchwork
8 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2025-11-03 21:18 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
== Series Details ==
Series: drm/i915/display: Enable CONFIG_PREEMPT_RT
URL : https://patchwork.freedesktop.org/series/156948/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[21:17:42] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:17:46] 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
[21:18:17] Starting KUnit Kernel (1/1)...
[21:18:17] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:18:17] ================== guc_buf (11 subtests) ===================
[21:18:17] [PASSED] test_smallest
[21:18:17] [PASSED] test_largest
[21:18:17] [PASSED] test_granular
[21:18:17] [PASSED] test_unique
[21:18:17] [PASSED] test_overlap
[21:18:17] [PASSED] test_reusable
[21:18:17] [PASSED] test_too_big
[21:18:17] [PASSED] test_flush
[21:18:17] [PASSED] test_lookup
[21:18:17] [PASSED] test_data
[21:18:17] [PASSED] test_class
[21:18:17] ===================== [PASSED] guc_buf =====================
[21:18:17] =================== guc_dbm (7 subtests) ===================
[21:18:17] [PASSED] test_empty
[21:18:17] [PASSED] test_default
[21:18:17] ======================== test_size ========================
[21:18:17] [PASSED] 4
[21:18:17] [PASSED] 8
[21:18:17] [PASSED] 32
[21:18:17] [PASSED] 256
[21:18:17] ==================== [PASSED] test_size ====================
[21:18:17] ======================= test_reuse ========================
[21:18:17] [PASSED] 4
[21:18:17] [PASSED] 8
[21:18:17] [PASSED] 32
[21:18:17] [PASSED] 256
[21:18:17] =================== [PASSED] test_reuse ====================
[21:18:17] =================== test_range_overlap ====================
[21:18:17] [PASSED] 4
[21:18:17] [PASSED] 8
[21:18:17] [PASSED] 32
[21:18:17] [PASSED] 256
[21:18:17] =============== [PASSED] test_range_overlap ================
[21:18:17] =================== test_range_compact ====================
[21:18:17] [PASSED] 4
[21:18:17] [PASSED] 8
[21:18:17] [PASSED] 32
[21:18:17] [PASSED] 256
[21:18:17] =============== [PASSED] test_range_compact ================
[21:18:17] ==================== test_range_spare =====================
[21:18:17] [PASSED] 4
[21:18:17] [PASSED] 8
[21:18:17] [PASSED] 32
[21:18:17] [PASSED] 256
[21:18:17] ================ [PASSED] test_range_spare =================
[21:18:17] ===================== [PASSED] guc_dbm =====================
[21:18:17] =================== guc_idm (6 subtests) ===================
[21:18:17] [PASSED] bad_init
[21:18:17] [PASSED] no_init
[21:18:17] [PASSED] init_fini
[21:18:17] [PASSED] check_used
[21:18:17] [PASSED] check_quota
[21:18:17] [PASSED] check_all
[21:18:17] ===================== [PASSED] guc_idm =====================
[21:18:17] ================== no_relay (3 subtests) ===================
[21:18:17] [PASSED] xe_drops_guc2pf_if_not_ready
[21:18:17] [PASSED] xe_drops_guc2vf_if_not_ready
[21:18:17] [PASSED] xe_rejects_send_if_not_ready
[21:18:17] ==================== [PASSED] no_relay =====================
[21:18:17] ================== pf_relay (14 subtests) ==================
[21:18:17] [PASSED] pf_rejects_guc2pf_too_short
[21:18:17] [PASSED] pf_rejects_guc2pf_too_long
[21:18:17] [PASSED] pf_rejects_guc2pf_no_payload
[21:18:17] [PASSED] pf_fails_no_payload
[21:18:17] [PASSED] pf_fails_bad_origin
[21:18:17] [PASSED] pf_fails_bad_type
[21:18:17] [PASSED] pf_txn_reports_error
[21:18:17] [PASSED] pf_txn_sends_pf2guc
[21:18:17] [PASSED] pf_sends_pf2guc
[21:18:17] [SKIPPED] pf_loopback_nop
[21:18:17] [SKIPPED] pf_loopback_echo
[21:18:17] [SKIPPED] pf_loopback_fail
[21:18:17] [SKIPPED] pf_loopback_busy
[21:18:17] [SKIPPED] pf_loopback_retry
[21:18:17] ==================== [PASSED] pf_relay =====================
[21:18:17] ================== vf_relay (3 subtests) ===================
[21:18:17] [PASSED] vf_rejects_guc2vf_too_short
[21:18:17] [PASSED] vf_rejects_guc2vf_too_long
[21:18:17] [PASSED] vf_rejects_guc2vf_no_payload
[21:18:17] ==================== [PASSED] vf_relay =====================
[21:18:17] ===================== lmtt (1 subtest) =====================
[21:18:17] ======================== test_ops =========================
[21:18:17] [PASSED] 2-level
[21:18:17] [PASSED] multi-level
[21:18:17] ==================== [PASSED] test_ops =====================
[21:18:17] ====================== [PASSED] lmtt =======================
[21:18:17] ================= pf_service (11 subtests) =================
[21:18:17] [PASSED] pf_negotiate_any
[21:18:17] [PASSED] pf_negotiate_base_match
[21:18:17] [PASSED] pf_negotiate_base_newer
[21:18:17] [PASSED] pf_negotiate_base_next
[21:18:17] [SKIPPED] pf_negotiate_base_older
[21:18:17] [PASSED] pf_negotiate_base_prev
[21:18:17] [PASSED] pf_negotiate_latest_match
[21:18:17] [PASSED] pf_negotiate_latest_newer
[21:18:17] [PASSED] pf_negotiate_latest_next
[21:18:17] [SKIPPED] pf_negotiate_latest_older
[21:18:17] [SKIPPED] pf_negotiate_latest_prev
[21:18:17] =================== [PASSED] pf_service ====================
[21:18:17] ================= xe_guc_g2g (2 subtests) ==================
[21:18:17] ============== xe_live_guc_g2g_kunit_default ==============
[21:18:17] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[21:18:17] ============== xe_live_guc_g2g_kunit_allmem ===============
[21:18:17] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[21:18:17] =================== [SKIPPED] xe_guc_g2g ===================
[21:18:17] =================== xe_mocs (2 subtests) ===================
[21:18:17] ================ xe_live_mocs_kernel_kunit ================
[21:18:17] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[21:18:17] ================ xe_live_mocs_reset_kunit =================
[21:18:17] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[21:18:17] ==================== [SKIPPED] xe_mocs =====================
[21:18:17] ================= xe_migrate (2 subtests) ==================
[21:18:17] ================= xe_migrate_sanity_kunit =================
[21:18:17] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[21:18:17] ================== xe_validate_ccs_kunit ==================
[21:18:17] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[21:18:17] =================== [SKIPPED] xe_migrate ===================
[21:18:17] ================== xe_dma_buf (1 subtest) ==================
[21:18:17] ==================== xe_dma_buf_kunit =====================
[21:18:17] ================ [SKIPPED] xe_dma_buf_kunit ================
[21:18:17] =================== [SKIPPED] xe_dma_buf ===================
[21:18:17] ================= xe_bo_shrink (1 subtest) =================
[21:18:17] =================== xe_bo_shrink_kunit ====================
[21:18:17] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[21:18:17] ================== [SKIPPED] xe_bo_shrink ==================
[21:18:17] ==================== xe_bo (2 subtests) ====================
[21:18:17] ================== xe_ccs_migrate_kunit ===================
[21:18:17] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[21:18:17] ==================== xe_bo_evict_kunit ====================
[21:18:17] =============== [SKIPPED] xe_bo_evict_kunit ================
[21:18:17] ===================== [SKIPPED] xe_bo ======================
[21:18:17] ==================== args (11 subtests) ====================
[21:18:17] [PASSED] count_args_test
[21:18:17] [PASSED] call_args_example
[21:18:17] [PASSED] call_args_test
[21:18:17] [PASSED] drop_first_arg_example
[21:18:17] [PASSED] drop_first_arg_test
[21:18:17] [PASSED] first_arg_example
[21:18:17] [PASSED] first_arg_test
[21:18:17] [PASSED] last_arg_example
[21:18:17] [PASSED] last_arg_test
[21:18:17] [PASSED] pick_arg_example
[21:18:17] [PASSED] sep_comma_example
[21:18:17] ====================== [PASSED] args =======================
[21:18:17] =================== xe_pci (3 subtests) ====================
[21:18:17] ==================== check_graphics_ip ====================
[21:18:17] [PASSED] 12.00 Xe_LP
[21:18:17] [PASSED] 12.10 Xe_LP+
[21:18:17] [PASSED] 12.55 Xe_HPG
[21:18:17] [PASSED] 12.60 Xe_HPC
[21:18:17] [PASSED] 12.70 Xe_LPG
[21:18:17] [PASSED] 12.71 Xe_LPG
[21:18:17] [PASSED] 12.74 Xe_LPG+
[21:18:17] [PASSED] 20.01 Xe2_HPG
[21:18:17] [PASSED] 20.02 Xe2_HPG
[21:18:17] [PASSED] 20.04 Xe2_LPG
[21:18:17] [PASSED] 30.00 Xe3_LPG
[21:18:17] [PASSED] 30.01 Xe3_LPG
[21:18:17] [PASSED] 30.03 Xe3_LPG
[21:18:17] [PASSED] 30.04 Xe3_LPG
[21:18:17] [PASSED] 30.05 Xe3_LPG
[21:18:17] [PASSED] 35.11 Xe3p_XPC
[21:18:17] ================ [PASSED] check_graphics_ip ================
[21:18:17] ===================== check_media_ip ======================
[21:18:17] [PASSED] 12.00 Xe_M
[21:18:17] [PASSED] 12.55 Xe_HPM
[21:18:17] [PASSED] 13.00 Xe_LPM+
[21:18:17] [PASSED] 13.01 Xe2_HPM
[21:18:17] [PASSED] 20.00 Xe2_LPM
[21:18:17] [PASSED] 30.00 Xe3_LPM
[21:18:17] [PASSED] 30.02 Xe3_LPM
[21:18:17] [PASSED] 35.00 Xe3p_LPM
[21:18:17] [PASSED] 35.03 Xe3p_HPM
[21:18:17] ================= [PASSED] check_media_ip ==================
[21:18:17] =================== check_platform_desc ===================
[21:18:17] [PASSED] 0x9A60 (TIGERLAKE)
[21:18:17] [PASSED] 0x9A68 (TIGERLAKE)
[21:18:17] [PASSED] 0x9A70 (TIGERLAKE)
[21:18:17] [PASSED] 0x9A40 (TIGERLAKE)
[21:18:17] [PASSED] 0x9A49 (TIGERLAKE)
[21:18:17] [PASSED] 0x9A59 (TIGERLAKE)
[21:18:17] [PASSED] 0x9A78 (TIGERLAKE)
[21:18:17] [PASSED] 0x9AC0 (TIGERLAKE)
[21:18:17] [PASSED] 0x9AC9 (TIGERLAKE)
[21:18:17] [PASSED] 0x9AD9 (TIGERLAKE)
[21:18:17] [PASSED] 0x9AF8 (TIGERLAKE)
[21:18:17] [PASSED] 0x4C80 (ROCKETLAKE)
[21:18:17] [PASSED] 0x4C8A (ROCKETLAKE)
[21:18:17] [PASSED] 0x4C8B (ROCKETLAKE)
[21:18:17] [PASSED] 0x4C8C (ROCKETLAKE)
[21:18:17] [PASSED] 0x4C90 (ROCKETLAKE)
[21:18:17] [PASSED] 0x4C9A (ROCKETLAKE)
[21:18:17] [PASSED] 0x4680 (ALDERLAKE_S)
[21:18:17] [PASSED] 0x4682 (ALDERLAKE_S)
[21:18:17] [PASSED] 0x4688 (ALDERLAKE_S)
[21:18:17] [PASSED] 0x468A (ALDERLAKE_S)
[21:18:17] [PASSED] 0x468B (ALDERLAKE_S)
[21:18:17] [PASSED] 0x4690 (ALDERLAKE_S)
[21:18:17] [PASSED] 0x4692 (ALDERLAKE_S)
[21:18:17] [PASSED] 0x4693 (ALDERLAKE_S)
[21:18:17] [PASSED] 0x46A0 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46A1 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46A2 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46A3 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46A6 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46A8 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46AA (ALDERLAKE_P)
[21:18:17] [PASSED] 0x462A (ALDERLAKE_P)
[21:18:17] [PASSED] 0x4626 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x4628 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46B0 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46B1 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46B2 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46B3 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46C0 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46C1 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46C2 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46C3 (ALDERLAKE_P)
[21:18:17] [PASSED] 0x46D0 (ALDERLAKE_N)
[21:18:17] [PASSED] 0x46D1 (ALDERLAKE_N)
[21:18:17] [PASSED] 0x46D2 (ALDERLAKE_N)
[21:18:17] [PASSED] 0x46D3 (ALDERLAKE_N)
[21:18:17] [PASSED] 0x46D4 (ALDERLAKE_N)
[21:18:17] [PASSED] 0xA721 (ALDERLAKE_P)
[21:18:17] [PASSED] 0xA7A1 (ALDERLAKE_P)
[21:18:17] [PASSED] 0xA7A9 (ALDERLAKE_P)
[21:18:17] [PASSED] 0xA7AC (ALDERLAKE_P)
[21:18:17] [PASSED] 0xA7AD (ALDERLAKE_P)
[21:18:17] [PASSED] 0xA720 (ALDERLAKE_P)
[21:18:17] [PASSED] 0xA7A0 (ALDERLAKE_P)
[21:18:17] [PASSED] 0xA7A8 (ALDERLAKE_P)
[21:18:17] [PASSED] 0xA7AA (ALDERLAKE_P)
[21:18:17] [PASSED] 0xA7AB (ALDERLAKE_P)
[21:18:17] [PASSED] 0xA780 (ALDERLAKE_S)
[21:18:17] [PASSED] 0xA781 (ALDERLAKE_S)
[21:18:17] [PASSED] 0xA782 (ALDERLAKE_S)
[21:18:17] [PASSED] 0xA783 (ALDERLAKE_S)
[21:18:17] [PASSED] 0xA788 (ALDERLAKE_S)
[21:18:17] [PASSED] 0xA789 (ALDERLAKE_S)
[21:18:17] [PASSED] 0xA78A (ALDERLAKE_S)
[21:18:17] [PASSED] 0xA78B (ALDERLAKE_S)
[21:18:17] [PASSED] 0x4905 (DG1)
[21:18:17] [PASSED] 0x4906 (DG1)
[21:18:17] [PASSED] 0x4907 (DG1)
[21:18:17] [PASSED] 0x4908 (DG1)
[21:18:17] [PASSED] 0x4909 (DG1)
[21:18:17] [PASSED] 0x56C0 (DG2)
[21:18:17] [PASSED] 0x56C2 (DG2)
[21:18:17] [PASSED] 0x56C1 (DG2)
[21:18:17] [PASSED] 0x7D51 (METEORLAKE)
[21:18:17] [PASSED] 0x7DD1 (METEORLAKE)
[21:18:17] [PASSED] 0x7D41 (METEORLAKE)
[21:18:17] [PASSED] 0x7D67 (METEORLAKE)
[21:18:17] [PASSED] 0xB640 (METEORLAKE)
[21:18:17] [PASSED] 0x56A0 (DG2)
[21:18:17] [PASSED] 0x56A1 (DG2)
[21:18:17] [PASSED] 0x56A2 (DG2)
[21:18:17] [PASSED] 0x56BE (DG2)
[21:18:17] [PASSED] 0x56BF (DG2)
[21:18:17] [PASSED] 0x5690 (DG2)
[21:18:17] [PASSED] 0x5691 (DG2)
[21:18:17] [PASSED] 0x5692 (DG2)
[21:18:17] [PASSED] 0x56A5 (DG2)
[21:18:17] [PASSED] 0x56A6 (DG2)
[21:18:17] [PASSED] 0x56B0 (DG2)
[21:18:17] [PASSED] 0x56B1 (DG2)
[21:18:17] [PASSED] 0x56BA (DG2)
[21:18:17] [PASSED] 0x56BB (DG2)
[21:18:17] [PASSED] 0x56BC (DG2)
[21:18:17] [PASSED] 0x56BD (DG2)
[21:18:17] [PASSED] 0x5693 (DG2)
[21:18:17] [PASSED] 0x5694 (DG2)
[21:18:17] [PASSED] 0x5695 (DG2)
[21:18:17] [PASSED] 0x56A3 (DG2)
[21:18:17] [PASSED] 0x56A4 (DG2)
[21:18:17] [PASSED] 0x56B2 (DG2)
[21:18:17] [PASSED] 0x56B3 (DG2)
[21:18:17] [PASSED] 0x5696 (DG2)
[21:18:17] [PASSED] 0x5697 (DG2)
[21:18:17] [PASSED] 0xB69 (PVC)
[21:18:17] [PASSED] 0xB6E (PVC)
[21:18:17] [PASSED] 0xBD4 (PVC)
[21:18:17] [PASSED] 0xBD5 (PVC)
[21:18:17] [PASSED] 0xBD6 (PVC)
[21:18:17] [PASSED] 0xBD7 (PVC)
[21:18:17] [PASSED] 0xBD8 (PVC)
[21:18:17] [PASSED] 0xBD9 (PVC)
[21:18:17] [PASSED] 0xBDA (PVC)
[21:18:17] [PASSED] 0xBDB (PVC)
[21:18:17] [PASSED] 0xBE0 (PVC)
[21:18:17] [PASSED] 0xBE1 (PVC)
[21:18:17] [PASSED] 0xBE5 (PVC)
[21:18:17] [PASSED] 0x7D40 (METEORLAKE)
[21:18:17] [PASSED] 0x7D45 (METEORLAKE)
[21:18:17] [PASSED] 0x7D55 (METEORLAKE)
[21:18:17] [PASSED] 0x7D60 (METEORLAKE)
[21:18:17] [PASSED] 0x7DD5 (METEORLAKE)
[21:18:17] [PASSED] 0x6420 (LUNARLAKE)
[21:18:17] [PASSED] 0x64A0 (LUNARLAKE)
[21:18:17] [PASSED] 0x64B0 (LUNARLAKE)
[21:18:17] [PASSED] 0xE202 (BATTLEMAGE)
[21:18:17] [PASSED] 0xE209 (BATTLEMAGE)
[21:18:17] [PASSED] 0xE20B (BATTLEMAGE)
[21:18:17] [PASSED] 0xE20C (BATTLEMAGE)
[21:18:17] [PASSED] 0xE20D (BATTLEMAGE)
[21:18:17] [PASSED] 0xE210 (BATTLEMAGE)
[21:18:17] [PASSED] 0xE211 (BATTLEMAGE)
[21:18:17] [PASSED] 0xE212 (BATTLEMAGE)
[21:18:17] [PASSED] 0xE216 (BATTLEMAGE)
[21:18:17] [PASSED] 0xE220 (BATTLEMAGE)
[21:18:17] [PASSED] 0xE221 (BATTLEMAGE)
[21:18:17] [PASSED] 0xE222 (BATTLEMAGE)
[21:18:17] [PASSED] 0xE223 (BATTLEMAGE)
[21:18:17] [PASSED] 0xB080 (PANTHERLAKE)
[21:18:17] [PASSED] 0xB081 (PANTHERLAKE)
[21:18:17] [PASSED] 0xB082 (PANTHERLAKE)
[21:18:17] [PASSED] 0xB083 (PANTHERLAKE)
[21:18:17] [PASSED] 0xB084 (PANTHERLAKE)
[21:18:17] [PASSED] 0xB085 (PANTHERLAKE)
[21:18:17] [PASSED] 0xB086 (PANTHERLAKE)
[21:18:17] [PASSED] 0xB087 (PANTHERLAKE)
[21:18:17] [PASSED] 0xB08F (PANTHERLAKE)
[21:18:17] [PASSED] 0xB090 (PANTHERLAKE)
[21:18:17] [PASSED] 0xB0A0 (PANTHERLAKE)
[21:18:17] [PASSED] 0xB0B0 (PANTHERLAKE)
[21:18:17] [PASSED] 0xD740 (NOVALAKE_S)
[21:18:17] [PASSED] 0xD741 (NOVALAKE_S)
[21:18:17] [PASSED] 0xD742 (NOVALAKE_S)
[21:18:17] [PASSED] 0xD743 (NOVALAKE_S)
[21:18:17] [PASSED] 0xD744 (NOVALAKE_S)
[21:18:17] [PASSED] 0xD745 (NOVALAKE_S)
[21:18:17] [PASSED] 0x674C (CRESCENTISLAND)
[21:18:17] [PASSED] 0xFD80 (PANTHERLAKE)
[21:18:17] [PASSED] 0xFD81 (PANTHERLAKE)
[21:18:17] =============== [PASSED] check_platform_desc ===============
[21:18:17] ===================== [PASSED] xe_pci ======================
[21:18:17] =================== xe_rtp (2 subtests) ====================
[21:18:17] =============== xe_rtp_process_to_sr_tests ================
[21:18:17] [PASSED] coalesce-same-reg
[21:18:17] [PASSED] no-match-no-add
[21:18:17] [PASSED] match-or
[21:18:17] [PASSED] match-or-xfail
[21:18:17] [PASSED] no-match-no-add-multiple-rules
[21:18:17] [PASSED] two-regs-two-entries
[21:18:17] [PASSED] clr-one-set-other
[21:18:17] [PASSED] set-field
[21:18:17] [PASSED] conflict-duplicate
[21:18:17] [PASSED] conflict-not-disjoint
[21:18:17] [PASSED] conflict-reg-type
[21:18:17] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[21:18:17] ================== xe_rtp_process_tests ===================
[21:18:17] [PASSED] active1
[21:18:17] [PASSED] active2
[21:18:17] [PASSED] active-inactive
[21:18:17] [PASSED] inactive-active
[21:18:17] [PASSED] inactive-1st_or_active-inactive
[21:18:17] [PASSED] inactive-2nd_or_active-inactive
[21:18:17] [PASSED] inactive-last_or_active-inactive
stty: 'standard input': Inappropriate ioctl for device
[21:18:17] [PASSED] inactive-no_or_active-inactive
[21:18:17] ============== [PASSED] xe_rtp_process_tests ===============
[21:18:17] ===================== [PASSED] xe_rtp ======================
[21:18:17] ==================== xe_wa (1 subtest) =====================
[21:18:17] ======================== xe_wa_gt =========================
[21:18:17] [PASSED] TIGERLAKE B0
[21:18:17] [PASSED] DG1 A0
[21:18:17] [PASSED] DG1 B0
[21:18:17] [PASSED] ALDERLAKE_S A0
[21:18:17] [PASSED] ALDERLAKE_S B0
[21:18:17] [PASSED] ALDERLAKE_S C0
[21:18:17] [PASSED] ALDERLAKE_S D0
[21:18:17] [PASSED] ALDERLAKE_P A0
[21:18:17] [PASSED] ALDERLAKE_P B0
[21:18:17] [PASSED] ALDERLAKE_P C0
[21:18:17] [PASSED] ALDERLAKE_S RPLS D0
[21:18:17] [PASSED] ALDERLAKE_P RPLU E0
[21:18:17] [PASSED] DG2 G10 C0
[21:18:17] [PASSED] DG2 G11 B1
[21:18:17] [PASSED] DG2 G12 A1
[21:18:17] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[21:18:17] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[21:18:17] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[21:18:17] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[21:18:17] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[21:18:17] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[21:18:17] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[21:18:17] ==================== [PASSED] xe_wa_gt =====================
[21:18:17] ====================== [PASSED] xe_wa ======================
[21:18:17] ============================================================
[21:18:17] Testing complete. Ran 318 tests: passed: 300, skipped: 18
[21:18:17] Elapsed time: 35.222s total, 4.217s configuring, 30.639s building, 0.333s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[21:18:17] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:18:19] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[21:18:44] Starting KUnit Kernel (1/1)...
[21:18:44] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:18:44] ============ drm_test_pick_cmdline (2 subtests) ============
[21:18:44] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[21:18:44] =============== drm_test_pick_cmdline_named ===============
[21:18:44] [PASSED] NTSC
[21:18:44] [PASSED] NTSC-J
[21:18:44] [PASSED] PAL
[21:18:44] [PASSED] PAL-M
[21:18:44] =========== [PASSED] drm_test_pick_cmdline_named ===========
[21:18:44] ============== [PASSED] drm_test_pick_cmdline ==============
[21:18:44] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[21:18:44] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[21:18:44] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[21:18:44] =========== drm_validate_clone_mode (2 subtests) ===========
[21:18:44] ============== drm_test_check_in_clone_mode ===============
[21:18:44] [PASSED] in_clone_mode
[21:18:44] [PASSED] not_in_clone_mode
[21:18:44] ========== [PASSED] drm_test_check_in_clone_mode ===========
[21:18:44] =============== drm_test_check_valid_clones ===============
[21:18:44] [PASSED] not_in_clone_mode
[21:18:44] [PASSED] valid_clone
[21:18:44] [PASSED] invalid_clone
[21:18:44] =========== [PASSED] drm_test_check_valid_clones ===========
[21:18:44] ============= [PASSED] drm_validate_clone_mode =============
[21:18:44] ============= drm_validate_modeset (1 subtest) =============
[21:18:44] [PASSED] drm_test_check_connector_changed_modeset
[21:18:44] ============== [PASSED] drm_validate_modeset ===============
[21:18:44] ====== drm_test_bridge_get_current_state (2 subtests) ======
[21:18:44] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[21:18:44] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[21:18:44] ======== [PASSED] drm_test_bridge_get_current_state ========
[21:18:44] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[21:18:44] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[21:18:44] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[21:18:44] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[21:18:44] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[21:18:44] ============== drm_bridge_alloc (2 subtests) ===============
[21:18:44] [PASSED] drm_test_drm_bridge_alloc_basic
[21:18:44] [PASSED] drm_test_drm_bridge_alloc_get_put
[21:18:44] ================ [PASSED] drm_bridge_alloc =================
[21:18:44] ================== drm_buddy (8 subtests) ==================
[21:18:44] [PASSED] drm_test_buddy_alloc_limit
[21:18:44] [PASSED] drm_test_buddy_alloc_optimistic
[21:18:44] [PASSED] drm_test_buddy_alloc_pessimistic
[21:18:44] [PASSED] drm_test_buddy_alloc_pathological
[21:18:44] [PASSED] drm_test_buddy_alloc_contiguous
[21:18:44] [PASSED] drm_test_buddy_alloc_clear
[21:18:44] [PASSED] drm_test_buddy_alloc_range_bias
[21:18:44] [PASSED] drm_test_buddy_fragmentation_performance
[21:18:44] ==================== [PASSED] drm_buddy ====================
[21:18:44] ============= drm_cmdline_parser (40 subtests) =============
[21:18:44] [PASSED] drm_test_cmdline_force_d_only
[21:18:44] [PASSED] drm_test_cmdline_force_D_only_dvi
[21:18:44] [PASSED] drm_test_cmdline_force_D_only_hdmi
[21:18:44] [PASSED] drm_test_cmdline_force_D_only_not_digital
[21:18:44] [PASSED] drm_test_cmdline_force_e_only
[21:18:44] [PASSED] drm_test_cmdline_res
[21:18:44] [PASSED] drm_test_cmdline_res_vesa
[21:18:44] [PASSED] drm_test_cmdline_res_vesa_rblank
[21:18:44] [PASSED] drm_test_cmdline_res_rblank
[21:18:44] [PASSED] drm_test_cmdline_res_bpp
[21:18:44] [PASSED] drm_test_cmdline_res_refresh
[21:18:44] [PASSED] drm_test_cmdline_res_bpp_refresh
[21:18:44] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[21:18:44] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[21:18:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[21:18:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[21:18:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[21:18:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[21:18:44] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[21:18:44] [PASSED] drm_test_cmdline_res_margins_force_on
[21:18:44] [PASSED] drm_test_cmdline_res_vesa_margins
[21:18:44] [PASSED] drm_test_cmdline_name
[21:18:44] [PASSED] drm_test_cmdline_name_bpp
[21:18:44] [PASSED] drm_test_cmdline_name_option
[21:18:44] [PASSED] drm_test_cmdline_name_bpp_option
[21:18:44] [PASSED] drm_test_cmdline_rotate_0
[21:18:44] [PASSED] drm_test_cmdline_rotate_90
[21:18:44] [PASSED] drm_test_cmdline_rotate_180
[21:18:44] [PASSED] drm_test_cmdline_rotate_270
[21:18:44] [PASSED] drm_test_cmdline_hmirror
[21:18:44] [PASSED] drm_test_cmdline_vmirror
[21:18:44] [PASSED] drm_test_cmdline_margin_options
[21:18:44] [PASSED] drm_test_cmdline_multiple_options
[21:18:44] [PASSED] drm_test_cmdline_bpp_extra_and_option
[21:18:44] [PASSED] drm_test_cmdline_extra_and_option
[21:18:44] [PASSED] drm_test_cmdline_freestanding_options
[21:18:44] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[21:18:44] [PASSED] drm_test_cmdline_panel_orientation
[21:18:44] ================ drm_test_cmdline_invalid =================
[21:18:44] [PASSED] margin_only
[21:18:44] [PASSED] interlace_only
[21:18:44] [PASSED] res_missing_x
[21:18:44] [PASSED] res_missing_y
[21:18:44] [PASSED] res_bad_y
[21:18:44] [PASSED] res_missing_y_bpp
[21:18:44] [PASSED] res_bad_bpp
[21:18:44] [PASSED] res_bad_refresh
[21:18:44] [PASSED] res_bpp_refresh_force_on_off
[21:18:44] [PASSED] res_invalid_mode
[21:18:44] [PASSED] res_bpp_wrong_place_mode
[21:18:44] [PASSED] name_bpp_refresh
[21:18:44] [PASSED] name_refresh
[21:18:44] [PASSED] name_refresh_wrong_mode
[21:18:44] [PASSED] name_refresh_invalid_mode
[21:18:44] [PASSED] rotate_multiple
[21:18:44] [PASSED] rotate_invalid_val
[21:18:44] [PASSED] rotate_truncated
[21:18:44] [PASSED] invalid_option
[21:18:44] [PASSED] invalid_tv_option
[21:18:44] [PASSED] truncated_tv_option
[21:18:44] ============ [PASSED] drm_test_cmdline_invalid =============
[21:18:44] =============== drm_test_cmdline_tv_options ===============
[21:18:44] [PASSED] NTSC
[21:18:44] [PASSED] NTSC_443
[21:18:44] [PASSED] NTSC_J
[21:18:44] [PASSED] PAL
[21:18:44] [PASSED] PAL_M
[21:18:44] [PASSED] PAL_N
[21:18:44] [PASSED] SECAM
[21:18:44] [PASSED] MONO_525
[21:18:44] [PASSED] MONO_625
[21:18:44] =========== [PASSED] drm_test_cmdline_tv_options ===========
[21:18:44] =============== [PASSED] drm_cmdline_parser ================
[21:18:44] ========== drmm_connector_hdmi_init (20 subtests) ==========
[21:18:44] [PASSED] drm_test_connector_hdmi_init_valid
[21:18:44] [PASSED] drm_test_connector_hdmi_init_bpc_8
[21:18:44] [PASSED] drm_test_connector_hdmi_init_bpc_10
[21:18:44] [PASSED] drm_test_connector_hdmi_init_bpc_12
[21:18:44] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[21:18:44] [PASSED] drm_test_connector_hdmi_init_bpc_null
[21:18:44] [PASSED] drm_test_connector_hdmi_init_formats_empty
[21:18:44] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[21:18:44] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[21:18:44] [PASSED] supported_formats=0x9 yuv420_allowed=1
[21:18:44] [PASSED] supported_formats=0x9 yuv420_allowed=0
[21:18:44] [PASSED] supported_formats=0x3 yuv420_allowed=1
[21:18:44] [PASSED] supported_formats=0x3 yuv420_allowed=0
[21:18:44] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[21:18:44] [PASSED] drm_test_connector_hdmi_init_null_ddc
[21:18:44] [PASSED] drm_test_connector_hdmi_init_null_product
[21:18:44] [PASSED] drm_test_connector_hdmi_init_null_vendor
[21:18:44] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[21:18:44] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[21:18:44] [PASSED] drm_test_connector_hdmi_init_product_valid
[21:18:44] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[21:18:44] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[21:18:44] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[21:18:44] ========= drm_test_connector_hdmi_init_type_valid =========
[21:18:44] [PASSED] HDMI-A
[21:18:44] [PASSED] HDMI-B
[21:18:44] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[21:18:44] ======== drm_test_connector_hdmi_init_type_invalid ========
[21:18:44] [PASSED] Unknown
[21:18:44] [PASSED] VGA
[21:18:44] [PASSED] DVI-I
[21:18:44] [PASSED] DVI-D
[21:18:44] [PASSED] DVI-A
[21:18:44] [PASSED] Composite
[21:18:44] [PASSED] SVIDEO
[21:18:44] [PASSED] LVDS
[21:18:44] [PASSED] Component
[21:18:44] [PASSED] DIN
[21:18:44] [PASSED] DP
[21:18:44] [PASSED] TV
[21:18:44] [PASSED] eDP
[21:18:44] [PASSED] Virtual
[21:18:44] [PASSED] DSI
[21:18:44] [PASSED] DPI
[21:18:44] [PASSED] Writeback
[21:18:44] [PASSED] SPI
[21:18:44] [PASSED] USB
[21:18:44] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[21:18:44] ============ [PASSED] drmm_connector_hdmi_init =============
[21:18:44] ============= drmm_connector_init (3 subtests) =============
[21:18:44] [PASSED] drm_test_drmm_connector_init
[21:18:44] [PASSED] drm_test_drmm_connector_init_null_ddc
[21:18:44] ========= drm_test_drmm_connector_init_type_valid =========
[21:18:44] [PASSED] Unknown
[21:18:44] [PASSED] VGA
[21:18:44] [PASSED] DVI-I
[21:18:44] [PASSED] DVI-D
[21:18:44] [PASSED] DVI-A
[21:18:44] [PASSED] Composite
[21:18:44] [PASSED] SVIDEO
[21:18:44] [PASSED] LVDS
[21:18:44] [PASSED] Component
[21:18:44] [PASSED] DIN
[21:18:44] [PASSED] DP
[21:18:44] [PASSED] HDMI-A
[21:18:44] [PASSED] HDMI-B
[21:18:44] [PASSED] TV
[21:18:44] [PASSED] eDP
[21:18:44] [PASSED] Virtual
[21:18:44] [PASSED] DSI
[21:18:44] [PASSED] DPI
[21:18:44] [PASSED] Writeback
[21:18:44] [PASSED] SPI
[21:18:44] [PASSED] USB
[21:18:44] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[21:18:44] =============== [PASSED] drmm_connector_init ===============
[21:18:44] ========= drm_connector_dynamic_init (6 subtests) ==========
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_init
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_init_properties
[21:18:44] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[21:18:44] [PASSED] Unknown
[21:18:44] [PASSED] VGA
[21:18:44] [PASSED] DVI-I
[21:18:44] [PASSED] DVI-D
[21:18:44] [PASSED] DVI-A
[21:18:44] [PASSED] Composite
[21:18:44] [PASSED] SVIDEO
[21:18:44] [PASSED] LVDS
[21:18:44] [PASSED] Component
[21:18:44] [PASSED] DIN
[21:18:44] [PASSED] DP
[21:18:44] [PASSED] HDMI-A
[21:18:44] [PASSED] HDMI-B
[21:18:44] [PASSED] TV
[21:18:44] [PASSED] eDP
[21:18:44] [PASSED] Virtual
[21:18:44] [PASSED] DSI
[21:18:44] [PASSED] DPI
[21:18:44] [PASSED] Writeback
[21:18:44] [PASSED] SPI
[21:18:44] [PASSED] USB
[21:18:44] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[21:18:44] ======== drm_test_drm_connector_dynamic_init_name =========
[21:18:44] [PASSED] Unknown
[21:18:44] [PASSED] VGA
[21:18:44] [PASSED] DVI-I
[21:18:44] [PASSED] DVI-D
[21:18:44] [PASSED] DVI-A
[21:18:44] [PASSED] Composite
[21:18:44] [PASSED] SVIDEO
[21:18:44] [PASSED] LVDS
[21:18:44] [PASSED] Component
[21:18:44] [PASSED] DIN
[21:18:44] [PASSED] DP
[21:18:44] [PASSED] HDMI-A
[21:18:44] [PASSED] HDMI-B
[21:18:44] [PASSED] TV
[21:18:44] [PASSED] eDP
[21:18:44] [PASSED] Virtual
[21:18:44] [PASSED] DSI
[21:18:44] [PASSED] DPI
[21:18:44] [PASSED] Writeback
[21:18:44] [PASSED] SPI
[21:18:44] [PASSED] USB
[21:18:44] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[21:18:44] =========== [PASSED] drm_connector_dynamic_init ============
[21:18:44] ==== drm_connector_dynamic_register_early (4 subtests) =====
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[21:18:44] ====== [PASSED] drm_connector_dynamic_register_early =======
[21:18:44] ======= drm_connector_dynamic_register (7 subtests) ========
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[21:18:44] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[21:18:44] ========= [PASSED] drm_connector_dynamic_register ==========
[21:18:44] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[21:18:44] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[21:18:44] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[21:18:44] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[21:18:44] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[21:18:44] ========== drm_test_get_tv_mode_from_name_valid ===========
[21:18:44] [PASSED] NTSC
[21:18:44] [PASSED] NTSC-443
[21:18:44] [PASSED] NTSC-J
[21:18:44] [PASSED] PAL
[21:18:44] [PASSED] PAL-M
[21:18:44] [PASSED] PAL-N
[21:18:44] [PASSED] SECAM
[21:18:44] [PASSED] Mono
[21:18:44] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[21:18:44] [PASSED] drm_test_get_tv_mode_from_name_truncated
[21:18:44] ============ [PASSED] drm_get_tv_mode_from_name ============
[21:18:44] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[21:18:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[21:18:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[21:18:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[21:18:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[21:18:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[21:18:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[21:18:44] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[21:18:44] [PASSED] VIC 96
[21:18:44] [PASSED] VIC 97
[21:18:44] [PASSED] VIC 101
[21:18:44] [PASSED] VIC 102
[21:18:44] [PASSED] VIC 106
[21:18:44] [PASSED] VIC 107
[21:18:44] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[21:18:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[21:18:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[21:18:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[21:18:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[21:18:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[21:18:44] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[21:18:44] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[21:18:44] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[21:18:44] [PASSED] Automatic
[21:18:44] [PASSED] Full
[21:18:44] [PASSED] Limited 16:235
[21:18:44] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[21:18:44] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[21:18:44] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[21:18:44] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[21:18:44] === drm_test_drm_hdmi_connector_get_output_format_name ====
[21:18:44] [PASSED] RGB
[21:18:44] [PASSED] YUV 4:2:0
[21:18:44] [PASSED] YUV 4:2:2
[21:18:44] [PASSED] YUV 4:4:4
[21:18:44] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[21:18:44] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[21:18:44] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[21:18:44] ============= drm_damage_helper (21 subtests) ==============
[21:18:44] [PASSED] drm_test_damage_iter_no_damage
[21:18:44] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[21:18:44] [PASSED] drm_test_damage_iter_no_damage_src_moved
[21:18:44] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[21:18:44] [PASSED] drm_test_damage_iter_no_damage_not_visible
[21:18:44] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[21:18:44] [PASSED] drm_test_damage_iter_no_damage_no_fb
[21:18:44] [PASSED] drm_test_damage_iter_simple_damage
[21:18:44] [PASSED] drm_test_damage_iter_single_damage
[21:18:44] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[21:18:44] [PASSED] drm_test_damage_iter_single_damage_outside_src
[21:18:44] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[21:18:44] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[21:18:44] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[21:18:44] [PASSED] drm_test_damage_iter_single_damage_src_moved
[21:18:44] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[21:18:44] [PASSED] drm_test_damage_iter_damage
[21:18:44] [PASSED] drm_test_damage_iter_damage_one_intersect
[21:18:44] [PASSED] drm_test_damage_iter_damage_one_outside
[21:18:44] [PASSED] drm_test_damage_iter_damage_src_moved
[21:18:44] [PASSED] drm_test_damage_iter_damage_not_visible
[21:18:44] ================ [PASSED] drm_damage_helper ================
[21:18:44] ============== drm_dp_mst_helper (3 subtests) ==============
[21:18:44] ============== drm_test_dp_mst_calc_pbn_mode ==============
[21:18:44] [PASSED] Clock 154000 BPP 30 DSC disabled
[21:18:44] [PASSED] Clock 234000 BPP 30 DSC disabled
[21:18:44] [PASSED] Clock 297000 BPP 24 DSC disabled
[21:18:44] [PASSED] Clock 332880 BPP 24 DSC enabled
[21:18:44] [PASSED] Clock 324540 BPP 24 DSC enabled
[21:18:44] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[21:18:44] ============== drm_test_dp_mst_calc_pbn_div ===============
[21:18:44] [PASSED] Link rate 2000000 lane count 4
[21:18:44] [PASSED] Link rate 2000000 lane count 2
[21:18:44] [PASSED] Link rate 2000000 lane count 1
[21:18:44] [PASSED] Link rate 1350000 lane count 4
[21:18:44] [PASSED] Link rate 1350000 lane count 2
[21:18:44] [PASSED] Link rate 1350000 lane count 1
[21:18:44] [PASSED] Link rate 1000000 lane count 4
[21:18:44] [PASSED] Link rate 1000000 lane count 2
[21:18:44] [PASSED] Link rate 1000000 lane count 1
[21:18:44] [PASSED] Link rate 810000 lane count 4
[21:18:44] [PASSED] Link rate 810000 lane count 2
[21:18:44] [PASSED] Link rate 810000 lane count 1
[21:18:44] [PASSED] Link rate 540000 lane count 4
[21:18:44] [PASSED] Link rate 540000 lane count 2
[21:18:44] [PASSED] Link rate 540000 lane count 1
[21:18:44] [PASSED] Link rate 270000 lane count 4
[21:18:44] [PASSED] Link rate 270000 lane count 2
[21:18:44] [PASSED] Link rate 270000 lane count 1
[21:18:44] [PASSED] Link rate 162000 lane count 4
[21:18:44] [PASSED] Link rate 162000 lane count 2
[21:18:44] [PASSED] Link rate 162000 lane count 1
[21:18:44] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[21:18:44] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[21:18:44] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[21:18:44] [PASSED] DP_POWER_UP_PHY with port number
[21:18:44] [PASSED] DP_POWER_DOWN_PHY with port number
[21:18:44] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[21:18:44] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[21:18:44] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[21:18:44] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[21:18:44] [PASSED] DP_QUERY_PAYLOAD with port number
[21:18:44] [PASSED] DP_QUERY_PAYLOAD with VCPI
[21:18:44] [PASSED] DP_REMOTE_DPCD_READ with port number
[21:18:44] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[21:18:44] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[21:18:44] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[21:18:44] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[21:18:44] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[21:18:44] [PASSED] DP_REMOTE_I2C_READ with port number
[21:18:44] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[21:18:44] [PASSED] DP_REMOTE_I2C_READ with transactions array
[21:18:44] [PASSED] DP_REMOTE_I2C_WRITE with port number
[21:18:44] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[21:18:44] [PASSED] DP_REMOTE_I2C_WRITE with data array
[21:18:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[21:18:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[21:18:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[21:18:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[21:18:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[21:18:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[21:18:44] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[21:18:44] ================ [PASSED] drm_dp_mst_helper ================
[21:18:44] ================== drm_exec (7 subtests) ===================
[21:18:44] [PASSED] sanitycheck
[21:18:44] [PASSED] test_lock
[21:18:44] [PASSED] test_lock_unlock
[21:18:44] [PASSED] test_duplicates
[21:18:44] [PASSED] test_prepare
[21:18:44] [PASSED] test_prepare_array
[21:18:44] [PASSED] test_multiple_loops
[21:18:44] ==================== [PASSED] drm_exec =====================
[21:18:44] =========== drm_format_helper_test (17 subtests) ===========
[21:18:44] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[21:18:44] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[21:18:44] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[21:18:44] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[21:18:44] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[21:18:44] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[21:18:44] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[21:18:44] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[21:18:44] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[21:18:44] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[21:18:44] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[21:18:44] ============== drm_test_fb_xrgb8888_to_mono ===============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[21:18:44] ==================== drm_test_fb_swab =====================
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ================ [PASSED] drm_test_fb_swab =================
[21:18:44] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[21:18:44] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[21:18:44] [PASSED] single_pixel_source_buffer
[21:18:44] [PASSED] single_pixel_clip_rectangle
[21:18:44] [PASSED] well_known_colors
[21:18:44] [PASSED] destination_pitch
[21:18:44] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[21:18:44] ================= drm_test_fb_clip_offset =================
[21:18:44] [PASSED] pass through
[21:18:44] [PASSED] horizontal offset
[21:18:44] [PASSED] vertical offset
[21:18:44] [PASSED] horizontal and vertical offset
[21:18:44] [PASSED] horizontal offset (custom pitch)
[21:18:44] [PASSED] vertical offset (custom pitch)
[21:18:44] [PASSED] horizontal and vertical offset (custom pitch)
[21:18:44] ============= [PASSED] drm_test_fb_clip_offset =============
[21:18:44] =================== drm_test_fb_memcpy ====================
[21:18:44] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[21:18:44] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[21:18:44] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[21:18:44] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[21:18:44] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[21:18:44] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[21:18:44] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[21:18:44] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[21:18:44] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[21:18:44] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[21:18:44] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[21:18:44] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[21:18:44] =============== [PASSED] drm_test_fb_memcpy ================
[21:18:44] ============= [PASSED] drm_format_helper_test ==============
[21:18:44] ================= drm_format (18 subtests) =================
[21:18:44] [PASSED] drm_test_format_block_width_invalid
[21:18:44] [PASSED] drm_test_format_block_width_one_plane
[21:18:44] [PASSED] drm_test_format_block_width_two_plane
[21:18:44] [PASSED] drm_test_format_block_width_three_plane
[21:18:44] [PASSED] drm_test_format_block_width_tiled
[21:18:44] [PASSED] drm_test_format_block_height_invalid
[21:18:44] [PASSED] drm_test_format_block_height_one_plane
[21:18:44] [PASSED] drm_test_format_block_height_two_plane
[21:18:44] [PASSED] drm_test_format_block_height_three_plane
[21:18:44] [PASSED] drm_test_format_block_height_tiled
[21:18:44] [PASSED] drm_test_format_min_pitch_invalid
[21:18:44] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[21:18:44] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[21:18:44] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[21:18:44] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[21:18:44] [PASSED] drm_test_format_min_pitch_two_plane
[21:18:44] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[21:18:44] [PASSED] drm_test_format_min_pitch_tiled
[21:18:44] =================== [PASSED] drm_format ====================
[21:18:44] ============== drm_framebuffer (10 subtests) ===============
[21:18:44] ========== drm_test_framebuffer_check_src_coords ==========
[21:18:44] [PASSED] Success: source fits into fb
[21:18:44] [PASSED] Fail: overflowing fb with x-axis coordinate
[21:18:44] [PASSED] Fail: overflowing fb with y-axis coordinate
[21:18:44] [PASSED] Fail: overflowing fb with source width
[21:18:44] [PASSED] Fail: overflowing fb with source height
[21:18:44] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[21:18:44] [PASSED] drm_test_framebuffer_cleanup
[21:18:44] =============== drm_test_framebuffer_create ===============
[21:18:44] [PASSED] ABGR8888 normal sizes
[21:18:44] [PASSED] ABGR8888 max sizes
[21:18:44] [PASSED] ABGR8888 pitch greater than min required
[21:18:44] [PASSED] ABGR8888 pitch less than min required
[21:18:44] [PASSED] ABGR8888 Invalid width
[21:18:44] [PASSED] ABGR8888 Invalid buffer handle
[21:18:44] [PASSED] No pixel format
[21:18:44] [PASSED] ABGR8888 Width 0
[21:18:44] [PASSED] ABGR8888 Height 0
[21:18:44] [PASSED] ABGR8888 Out of bound height * pitch combination
[21:18:44] [PASSED] ABGR8888 Large buffer offset
[21:18:44] [PASSED] ABGR8888 Buffer offset for inexistent plane
[21:18:44] [PASSED] ABGR8888 Invalid flag
[21:18:44] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[21:18:44] [PASSED] ABGR8888 Valid buffer modifier
[21:18:44] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[21:18:44] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[21:18:44] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[21:18:44] [PASSED] NV12 Normal sizes
[21:18:44] [PASSED] NV12 Max sizes
[21:18:44] [PASSED] NV12 Invalid pitch
[21:18:44] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[21:18:44] [PASSED] NV12 different modifier per-plane
[21:18:44] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[21:18:44] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[21:18:44] [PASSED] NV12 Modifier for inexistent plane
[21:18:44] [PASSED] NV12 Handle for inexistent plane
[21:18:44] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[21:18:44] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[21:18:44] [PASSED] YVU420 Normal sizes
[21:18:44] [PASSED] YVU420 Max sizes
[21:18:44] [PASSED] YVU420 Invalid pitch
[21:18:44] [PASSED] YVU420 Different pitches
[21:18:44] [PASSED] YVU420 Different buffer offsets/pitches
[21:18:44] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[21:18:44] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[21:18:44] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[21:18:44] [PASSED] YVU420 Valid modifier
[21:18:44] [PASSED] YVU420 Different modifiers per plane
[21:18:44] [PASSED] YVU420 Modifier for inexistent plane
[21:18:44] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[21:18:44] [PASSED] X0L2 Normal sizes
[21:18:44] [PASSED] X0L2 Max sizes
[21:18:44] [PASSED] X0L2 Invalid pitch
[21:18:44] [PASSED] X0L2 Pitch greater than minimum required
[21:18:44] [PASSED] X0L2 Handle for inexistent plane
[21:18:44] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[21:18:44] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[21:18:44] [PASSED] X0L2 Valid modifier
[21:18:44] [PASSED] X0L2 Modifier for inexistent plane
[21:18:44] =========== [PASSED] drm_test_framebuffer_create ===========
[21:18:44] [PASSED] drm_test_framebuffer_free
[21:18:44] [PASSED] drm_test_framebuffer_init
[21:18:44] [PASSED] drm_test_framebuffer_init_bad_format
[21:18:44] [PASSED] drm_test_framebuffer_init_dev_mismatch
[21:18:44] [PASSED] drm_test_framebuffer_lookup
[21:18:44] [PASSED] drm_test_framebuffer_lookup_inexistent
[21:18:44] [PASSED] drm_test_framebuffer_modifiers_not_supported
[21:18:44] ================= [PASSED] drm_framebuffer =================
[21:18:44] ================ drm_gem_shmem (8 subtests) ================
[21:18:44] [PASSED] drm_gem_shmem_test_obj_create
[21:18:44] [PASSED] drm_gem_shmem_test_obj_create_private
[21:18:44] [PASSED] drm_gem_shmem_test_pin_pages
[21:18:44] [PASSED] drm_gem_shmem_test_vmap
[21:18:44] [PASSED] drm_gem_shmem_test_get_pages_sgt
[21:18:44] [PASSED] drm_gem_shmem_test_get_sg_table
[21:18:44] [PASSED] drm_gem_shmem_test_madvise
[21:18:44] [PASSED] drm_gem_shmem_test_purge
[21:18:44] ================== [PASSED] drm_gem_shmem ==================
[21:18:44] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[21:18:44] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[21:18:44] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[21:18:44] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[21:18:44] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[21:18:44] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[21:18:44] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[21:18:44] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[21:18:44] [PASSED] Automatic
[21:18:44] [PASSED] Full
[21:18:44] [PASSED] Limited 16:235
[21:18:44] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[21:18:44] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[21:18:44] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[21:18:44] [PASSED] drm_test_check_disable_connector
[21:18:44] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[21:18:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[21:18:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[21:18:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[21:18:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[21:18:44] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[21:18:44] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[21:18:44] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[21:18:44] [PASSED] drm_test_check_output_bpc_dvi
[21:18:44] [PASSED] drm_test_check_output_bpc_format_vic_1
[21:18:44] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[21:18:44] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[21:18:44] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[21:18:44] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[21:18:44] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[21:18:44] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[21:18:44] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[21:18:44] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[21:18:44] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[21:18:44] [PASSED] drm_test_check_broadcast_rgb_value
[21:18:44] [PASSED] drm_test_check_bpc_8_value
[21:18:44] [PASSED] drm_test_check_bpc_10_value
[21:18:44] [PASSED] drm_test_check_bpc_12_value
[21:18:44] [PASSED] drm_test_check_format_value
[21:18:44] [PASSED] drm_test_check_tmds_char_value
[21:18:44] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[21:18:44] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[21:18:44] [PASSED] drm_test_check_mode_valid
[21:18:44] [PASSED] drm_test_check_mode_valid_reject
[21:18:44] [PASSED] drm_test_check_mode_valid_reject_rate
[21:18:44] [PASSED] drm_test_check_mode_valid_reject_max_clock
[21:18:44] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[21:18:44] ================= drm_managed (2 subtests) =================
[21:18:44] [PASSED] drm_test_managed_release_action
[21:18:44] [PASSED] drm_test_managed_run_action
[21:18:44] =================== [PASSED] drm_managed ===================
[21:18:44] =================== drm_mm (6 subtests) ====================
[21:18:44] [PASSED] drm_test_mm_init
[21:18:44] [PASSED] drm_test_mm_debug
[21:18:44] [PASSED] drm_test_mm_align32
[21:18:44] [PASSED] drm_test_mm_align64
[21:18:44] [PASSED] drm_test_mm_lowest
[21:18:44] [PASSED] drm_test_mm_highest
[21:18:44] ===================== [PASSED] drm_mm ======================
[21:18:44] ============= drm_modes_analog_tv (5 subtests) =============
[21:18:44] [PASSED] drm_test_modes_analog_tv_mono_576i
[21:18:44] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[21:18:44] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[21:18:44] [PASSED] drm_test_modes_analog_tv_pal_576i
[21:18:44] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[21:18:44] =============== [PASSED] drm_modes_analog_tv ===============
[21:18:44] ============== drm_plane_helper (2 subtests) ===============
[21:18:44] =============== drm_test_check_plane_state ================
[21:18:44] [PASSED] clipping_simple
[21:18:44] [PASSED] clipping_rotate_reflect
[21:18:44] [PASSED] positioning_simple
[21:18:44] [PASSED] upscaling
[21:18:44] [PASSED] downscaling
[21:18:44] [PASSED] rounding1
[21:18:44] [PASSED] rounding2
[21:18:44] [PASSED] rounding3
[21:18:44] [PASSED] rounding4
[21:18:44] =========== [PASSED] drm_test_check_plane_state ============
[21:18:44] =========== drm_test_check_invalid_plane_state ============
[21:18:44] [PASSED] positioning_invalid
[21:18:44] [PASSED] upscaling_invalid
[21:18:44] [PASSED] downscaling_invalid
[21:18:44] ======= [PASSED] drm_test_check_invalid_plane_state ========
[21:18:44] ================ [PASSED] drm_plane_helper =================
[21:18:44] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[21:18:44] ====== drm_test_connector_helper_tv_get_modes_check =======
[21:18:44] [PASSED] None
[21:18:44] [PASSED] PAL
[21:18:44] [PASSED] NTSC
[21:18:44] [PASSED] Both, NTSC Default
[21:18:44] [PASSED] Both, PAL Default
[21:18:44] [PASSED] Both, NTSC Default, with PAL on command-line
[21:18:44] [PASSED] Both, PAL Default, with NTSC on command-line
[21:18:44] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[21:18:44] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[21:18:44] ================== drm_rect (9 subtests) ===================
[21:18:44] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[21:18:44] [PASSED] drm_test_rect_clip_scaled_not_clipped
[21:18:44] [PASSED] drm_test_rect_clip_scaled_clipped
[21:18:44] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[21:18:44] ================= drm_test_rect_intersect =================
[21:18:44] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[21:18:44] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[21:18:44] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[21:18:44] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[21:18:44] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[21:18:44] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[21:18:44] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[21:18:44] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[21:18:44] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[21:18:44] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[21:18:44] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[21:18:44] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[21:18:44] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[21:18:44] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[21:18:44] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[21:18:44] ============= [PASSED] drm_test_rect_intersect =============
[21:18:44] ================ drm_test_rect_calc_hscale ================
[21:18:44] [PASSED] normal use
[21:18:44] [PASSED] out of max range
[21:18:44] [PASSED] out of min range
[21:18:44] [PASSED] zero dst
[21:18:44] [PASSED] negative src
[21:18:44] [PASSED] negative dst
[21:18:44] ============ [PASSED] drm_test_rect_calc_hscale ============
[21:18:44] ================ drm_test_rect_calc_vscale ================
[21:18:44] [PASSED] normal use
stty: 'standard input': Inappropriate ioctl for device
[21:18:44] [PASSED] out of max range
[21:18:44] [PASSED] out of min range
[21:18:44] [PASSED] zero dst
[21:18:44] [PASSED] negative src
[21:18:44] [PASSED] negative dst
[21:18:44] ============ [PASSED] drm_test_rect_calc_vscale ============
[21:18:44] ================== drm_test_rect_rotate ===================
[21:18:44] [PASSED] reflect-x
[21:18:44] [PASSED] reflect-y
[21:18:44] [PASSED] rotate-0
[21:18:44] [PASSED] rotate-90
[21:18:44] [PASSED] rotate-180
[21:18:44] [PASSED] rotate-270
[21:18:44] ============== [PASSED] drm_test_rect_rotate ===============
[21:18:44] ================ drm_test_rect_rotate_inv =================
[21:18:44] [PASSED] reflect-x
[21:18:44] [PASSED] reflect-y
[21:18:44] [PASSED] rotate-0
[21:18:44] [PASSED] rotate-90
[21:18:44] [PASSED] rotate-180
[21:18:44] [PASSED] rotate-270
[21:18:44] ============ [PASSED] drm_test_rect_rotate_inv =============
[21:18:44] ==================== [PASSED] drm_rect =====================
[21:18:44] ============ drm_sysfb_modeset_test (1 subtest) ============
[21:18:44] ============ drm_test_sysfb_build_fourcc_list =============
[21:18:44] [PASSED] no native formats
[21:18:44] [PASSED] XRGB8888 as native format
[21:18:44] [PASSED] remove duplicates
[21:18:44] [PASSED] convert alpha formats
[21:18:44] [PASSED] random formats
[21:18:44] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[21:18:44] ============= [PASSED] drm_sysfb_modeset_test ==============
[21:18:44] ============================================================
[21:18:44] Testing complete. Ran 622 tests: passed: 622
[21:18:44] Elapsed time: 27.177s total, 1.730s configuring, 25.025s building, 0.386s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[21:18:44] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:18:46] 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
[21:18:55] Starting KUnit Kernel (1/1)...
[21:18:55] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:18:55] ================= ttm_device (5 subtests) ==================
[21:18:55] [PASSED] ttm_device_init_basic
[21:18:55] [PASSED] ttm_device_init_multiple
[21:18:55] [PASSED] ttm_device_fini_basic
[21:18:55] [PASSED] ttm_device_init_no_vma_man
[21:18:55] ================== ttm_device_init_pools ==================
[21:18:55] [PASSED] No DMA allocations, no DMA32 required
[21:18:55] [PASSED] DMA allocations, DMA32 required
[21:18:55] [PASSED] No DMA allocations, DMA32 required
[21:18:55] [PASSED] DMA allocations, no DMA32 required
[21:18:55] ============== [PASSED] ttm_device_init_pools ==============
[21:18:55] =================== [PASSED] ttm_device ====================
[21:18:55] ================== ttm_pool (8 subtests) ===================
[21:18:55] ================== ttm_pool_alloc_basic ===================
[21:18:55] [PASSED] One page
[21:18:55] [PASSED] More than one page
[21:18:55] [PASSED] Above the allocation limit
[21:18:55] [PASSED] One page, with coherent DMA mappings enabled
[21:18:55] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[21:18:55] ============== [PASSED] ttm_pool_alloc_basic ===============
[21:18:55] ============== ttm_pool_alloc_basic_dma_addr ==============
[21:18:55] [PASSED] One page
[21:18:55] [PASSED] More than one page
[21:18:55] [PASSED] Above the allocation limit
[21:18:55] [PASSED] One page, with coherent DMA mappings enabled
[21:18:55] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[21:18:55] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[21:18:55] [PASSED] ttm_pool_alloc_order_caching_match
[21:18:55] [PASSED] ttm_pool_alloc_caching_mismatch
[21:18:55] [PASSED] ttm_pool_alloc_order_mismatch
[21:18:55] [PASSED] ttm_pool_free_dma_alloc
[21:18:55] [PASSED] ttm_pool_free_no_dma_alloc
[21:18:55] [PASSED] ttm_pool_fini_basic
[21:18:55] ==================== [PASSED] ttm_pool =====================
[21:18:55] ================ ttm_resource (8 subtests) =================
[21:18:55] ================= ttm_resource_init_basic =================
[21:18:55] [PASSED] Init resource in TTM_PL_SYSTEM
[21:18:55] [PASSED] Init resource in TTM_PL_VRAM
[21:18:55] [PASSED] Init resource in a private placement
[21:18:55] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[21:18:55] ============= [PASSED] ttm_resource_init_basic =============
[21:18:55] [PASSED] ttm_resource_init_pinned
[21:18:55] [PASSED] ttm_resource_fini_basic
[21:18:55] [PASSED] ttm_resource_manager_init_basic
[21:18:55] [PASSED] ttm_resource_manager_usage_basic
[21:18:55] [PASSED] ttm_resource_manager_set_used_basic
[21:18:55] [PASSED] ttm_sys_man_alloc_basic
[21:18:55] [PASSED] ttm_sys_man_free_basic
[21:18:55] ================== [PASSED] ttm_resource ===================
[21:18:55] =================== ttm_tt (15 subtests) ===================
[21:18:55] ==================== ttm_tt_init_basic ====================
[21:18:55] [PASSED] Page-aligned size
[21:18:55] [PASSED] Extra pages requested
[21:18:55] ================ [PASSED] ttm_tt_init_basic ================
[21:18:55] [PASSED] ttm_tt_init_misaligned
[21:18:55] [PASSED] ttm_tt_fini_basic
[21:18:55] [PASSED] ttm_tt_fini_sg
[21:18:55] [PASSED] ttm_tt_fini_shmem
[21:18:55] [PASSED] ttm_tt_create_basic
[21:18:55] [PASSED] ttm_tt_create_invalid_bo_type
[21:18:55] [PASSED] ttm_tt_create_ttm_exists
[21:18:55] [PASSED] ttm_tt_create_failed
[21:18:55] [PASSED] ttm_tt_destroy_basic
[21:18:55] [PASSED] ttm_tt_populate_null_ttm
[21:18:55] [PASSED] ttm_tt_populate_populated_ttm
[21:18:55] [PASSED] ttm_tt_unpopulate_basic
[21:18:55] [PASSED] ttm_tt_unpopulate_empty_ttm
[21:18:55] [PASSED] ttm_tt_swapin_basic
[21:18:55] ===================== [PASSED] ttm_tt ======================
[21:18:55] =================== ttm_bo (14 subtests) ===================
[21:18:55] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[21:18:55] [PASSED] Cannot be interrupted and sleeps
[21:18:55] [PASSED] Cannot be interrupted, locks straight away
[21:18:55] [PASSED] Can be interrupted, sleeps
[21:18:55] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[21:18:55] [PASSED] ttm_bo_reserve_locked_no_sleep
[21:18:55] [PASSED] ttm_bo_reserve_no_wait_ticket
[21:18:56] [PASSED] ttm_bo_reserve_double_resv
[21:18:56] [PASSED] ttm_bo_reserve_interrupted
[21:18:56] [PASSED] ttm_bo_reserve_deadlock
[21:18:56] [PASSED] ttm_bo_unreserve_basic
[21:18:56] [PASSED] ttm_bo_unreserve_pinned
[21:18:56] [PASSED] ttm_bo_unreserve_bulk
[21:18:56] [PASSED] ttm_bo_fini_basic
[21:18:56] [PASSED] ttm_bo_fini_shared_resv
[21:18:56] [PASSED] ttm_bo_pin_basic
[21:18:56] [PASSED] ttm_bo_pin_unpin_resource
[21:18:56] [PASSED] ttm_bo_multiple_pin_one_unpin
[21:18:56] ===================== [PASSED] ttm_bo ======================
[21:18:56] ============== ttm_bo_validate (21 subtests) ===============
[21:18:56] ============== ttm_bo_init_reserved_sys_man ===============
[21:18:56] [PASSED] Buffer object for userspace
[21:18:56] [PASSED] Kernel buffer object
[21:18:56] [PASSED] Shared buffer object
[21:18:56] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[21:18:56] ============== ttm_bo_init_reserved_mock_man ==============
[21:18:56] [PASSED] Buffer object for userspace
[21:18:56] [PASSED] Kernel buffer object
[21:18:56] [PASSED] Shared buffer object
[21:18:56] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[21:18:56] [PASSED] ttm_bo_init_reserved_resv
[21:18:56] ================== ttm_bo_validate_basic ==================
[21:18:56] [PASSED] Buffer object for userspace
[21:18:56] [PASSED] Kernel buffer object
[21:18:56] [PASSED] Shared buffer object
[21:18:56] ============== [PASSED] ttm_bo_validate_basic ==============
[21:18:56] [PASSED] ttm_bo_validate_invalid_placement
[21:18:56] ============= ttm_bo_validate_same_placement ==============
[21:18:56] [PASSED] System manager
[21:18:56] [PASSED] VRAM manager
[21:18:56] ========= [PASSED] ttm_bo_validate_same_placement ==========
[21:18:56] [PASSED] ttm_bo_validate_failed_alloc
[21:18:56] [PASSED] ttm_bo_validate_pinned
[21:18:56] [PASSED] ttm_bo_validate_busy_placement
[21:18:56] ================ ttm_bo_validate_multihop =================
[21:18:56] [PASSED] Buffer object for userspace
[21:18:56] [PASSED] Kernel buffer object
[21:18:56] [PASSED] Shared buffer object
[21:18:56] ============ [PASSED] ttm_bo_validate_multihop =============
[21:18:56] ========== ttm_bo_validate_no_placement_signaled ==========
[21:18:56] [PASSED] Buffer object in system domain, no page vector
[21:18:56] [PASSED] Buffer object in system domain with an existing page vector
[21:18:56] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[21:18:56] ======== ttm_bo_validate_no_placement_not_signaled ========
[21:18:56] [PASSED] Buffer object for userspace
[21:18:56] [PASSED] Kernel buffer object
[21:18:56] [PASSED] Shared buffer object
[21:18:56] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[21:18:56] [PASSED] ttm_bo_validate_move_fence_signaled
[21:18:56] ========= ttm_bo_validate_move_fence_not_signaled =========
[21:18:56] [PASSED] Waits for GPU
[21:18:56] [PASSED] Tries to lock straight away
[21:18:56] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[21:18:56] [PASSED] ttm_bo_validate_happy_evict
[21:18:56] [PASSED] ttm_bo_validate_all_pinned_evict
[21:18:56] [PASSED] ttm_bo_validate_allowed_only_evict
[21:18:56] [PASSED] ttm_bo_validate_deleted_evict
[21:18:56] [PASSED] ttm_bo_validate_busy_domain_evict
[21:18:56] [PASSED] ttm_bo_validate_evict_gutting
[21:18:56] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[21:18:56] ================= [PASSED] ttm_bo_validate =================
[21:18:56] ============================================================
[21:18:56] Testing complete. Ran 101 tests: passed: 101
[21:18:56] Elapsed time: 11.380s total, 1.683s configuring, 9.482s building, 0.177s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 11+ messages in thread