* [PATCH 2/2] drm/xe/lrc: fix spurious warning when reading context timestamp
2026-06-09 14:44 [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues Rodrigo Vivi
@ 2026-06-09 14:44 ` Rodrigo Vivi
2026-06-09 16:23 ` Ghimiray, Himal Prasad
2026-06-09 14:49 ` ✗ CI.checkpatch: warning for series starting with [1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues Patchwork
` (6 subsequent siblings)
7 siblings, 1 reply; 17+ messages in thread
From: Rodrigo Vivi @ 2026-06-09 14:44 UTC (permalink / raw)
To: intel-xe
Cc: Rodrigo Vivi, Matthew Auld, Matthew Brost, Sanjay Yadav,
Himal Prasad Ghimiray
Fixes the following warning that fires during timeout handling for a
context running on the USM-reserved copy engine:
xe 0000:03:00.0: [drm] Tile0: GT0: Unexpected engine class:instance 3:8 for utilization
WARNING: at engine_id_to_hwe+0x88/0xc0 [xe]
xe_lrc_context_timestamp+0x61/0xb0 [xe]
guc_exec_queue_timedout_job+0x713/0x1020 [xe]
class:instance 3:8 is XE_ENGINE_CLASS_COPY on the highest BCS instance,
which xe_hw_engine.c reserves for USM (gt->usm.reserved_bcs_instance) and
on which the migrate engine runs kernel contexts. When such a context's
utilization is read - e.g. from the TDR path - engine_id_to_hwe()
rejected it because xe_hw_engine_is_reserved() is true, firing WARN_ONCE
and returning NULL, which made the timestamp read silently fall back to
stale data.
The reserved-engine guard was added defensively with the original WA BB
utilization support and simply overlooked that the migrate engine is a
valid, present engine whose CTX_TIMESTAMP can legitimately be read.
Allow the USM-reserved copy engine specifically (xe_gt_is_usm_hwe()),
while still rejecting the other reserved cases (GSCCS / XE_ENGINE_CLASS_
OTHER and ccs_mode-disabled compute engines), which would indeed be
unexpected on this path. The dynamic engine resolution via the ENGINE_ID
stashed in the PPHWSP by the WA BB is kept intact, so utilization for
load-balanced/virtual exec queues still resolves the engine the context
is actually running on.
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Assisted-by: GitHub-Copilot:claude-sonnet-4.6
Assisted-by: GitHub-Copilot:claude-opus-4.8
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/xe_lrc.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
index a4292a11391d..3e7c995085d0 100644
--- a/drivers/gpu/drm/xe/xe_lrc.c
+++ b/drivers/gpu/drm/xe/xe_lrc.c
@@ -2618,13 +2618,19 @@ void xe_lrc_snapshot_free(struct xe_lrc_snapshot *snapshot)
kfree(snapshot);
}
+static bool engine_valid_for_utilization(struct xe_gt *gt, struct xe_hw_engine *hwe)
+{
+ /* The USM-reserved copy engine runs kernel migrate contexts queried here */
+ return hwe && (!xe_hw_engine_is_reserved(hwe) || xe_gt_is_usm_hwe(gt, hwe));
+}
+
static struct xe_hw_engine *engine_id_to_hwe(struct xe_gt *gt, u32 engine_id)
{
u16 class = REG_FIELD_GET(ENGINE_CLASS_ID, engine_id);
u16 instance = REG_FIELD_GET(ENGINE_INSTANCE_ID, engine_id);
struct xe_hw_engine *hwe = xe_gt_hw_engine(gt, class, instance, false);
- if (xe_gt_WARN_ONCE(gt, !hwe || xe_hw_engine_is_reserved(hwe),
+ if (xe_gt_WARN_ONCE(gt, !engine_valid_for_utilization(gt, hwe),
"Unexpected engine class:instance %d:%d for utilization\n",
class, instance))
return NULL;
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread* Re: [PATCH 2/2] drm/xe/lrc: fix spurious warning when reading context timestamp
2026-06-09 14:44 ` [PATCH 2/2] drm/xe/lrc: fix spurious warning when reading context timestamp Rodrigo Vivi
@ 2026-06-09 16:23 ` Ghimiray, Himal Prasad
0 siblings, 0 replies; 17+ messages in thread
From: Ghimiray, Himal Prasad @ 2026-06-09 16:23 UTC (permalink / raw)
To: Rodrigo Vivi, intel-xe; +Cc: Matthew Auld, Matthew Brost, Sanjay Yadav
On 09-06-2026 20:14, Rodrigo Vivi wrote:
> Fixes the following warning that fires during timeout handling for a
> context running on the USM-reserved copy engine:
>
> xe 0000:03:00.0: [drm] Tile0: GT0: Unexpected engine class:instance 3:8 for utilization
> WARNING: at engine_id_to_hwe+0x88/0xc0 [xe]
> xe_lrc_context_timestamp+0x61/0xb0 [xe]
> guc_exec_queue_timedout_job+0x713/0x1020 [xe]
>
> class:instance 3:8 is XE_ENGINE_CLASS_COPY on the highest BCS instance,
> which xe_hw_engine.c reserves for USM (gt->usm.reserved_bcs_instance) and
> on which the migrate engine runs kernel contexts. When such a context's
> utilization is read - e.g. from the TDR path - engine_id_to_hwe()
> rejected it because xe_hw_engine_is_reserved() is true, firing WARN_ONCE
> and returning NULL, which made the timestamp read silently fall back to
> stale data.
>
> The reserved-engine guard was added defensively with the original WA BB
> utilization support and simply overlooked that the migrate engine is a
> valid, present engine whose CTX_TIMESTAMP can legitimately be read.
>
> Allow the USM-reserved copy engine specifically (xe_gt_is_usm_hwe()),
> while still rejecting the other reserved cases (GSCCS / XE_ENGINE_CLASS_
> OTHER and ccs_mode-disabled compute engines), which would indeed be
> unexpected on this path. The dynamic engine resolution via the ENGINE_ID
> stashed in the PPHWSP by the WA BB is kept intact, so utilization for
> load-balanced/virtual exec queues still resolves the engine the context
> is actually running on.
>
> Cc: Matthew Auld <matthew.auld@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
> Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Assisted-by: GitHub-Copilot:claude-sonnet-4.6
> Assisted-by: GitHub-Copilot:claude-opus-4.8
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_lrc.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
> index a4292a11391d..3e7c995085d0 100644
> --- a/drivers/gpu/drm/xe/xe_lrc.c
> +++ b/drivers/gpu/drm/xe/xe_lrc.c
> @@ -2618,13 +2618,19 @@ void xe_lrc_snapshot_free(struct xe_lrc_snapshot *snapshot)
> kfree(snapshot);
> }
>
> +static bool engine_valid_for_utilization(struct xe_gt *gt, struct xe_hw_engine *hwe)
> +{
> + /* The USM-reserved copy engine runs kernel migrate contexts queried here */
> + return hwe && (!xe_hw_engine_is_reserved(hwe) || xe_gt_is_usm_hwe(gt, hwe));
> +}
> +
LGTM
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> static struct xe_hw_engine *engine_id_to_hwe(struct xe_gt *gt, u32 engine_id)
> {
> u16 class = REG_FIELD_GET(ENGINE_CLASS_ID, engine_id);
> u16 instance = REG_FIELD_GET(ENGINE_INSTANCE_ID, engine_id);
> struct xe_hw_engine *hwe = xe_gt_hw_engine(gt, class, instance, false);
>
> - if (xe_gt_WARN_ONCE(gt, !hwe || xe_hw_engine_is_reserved(hwe),
> + if (xe_gt_WARN_ONCE(gt, !engine_valid_for_utilization(gt, hwe),
> "Unexpected engine class:instance %d:%d for utilization\n",
> class, instance))
> return NULL;
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✗ CI.checkpatch: warning for series starting with [1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-09 14:44 [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues Rodrigo Vivi
2026-06-09 14:44 ` [PATCH 2/2] drm/xe/lrc: fix spurious warning when reading context timestamp Rodrigo Vivi
@ 2026-06-09 14:49 ` Patchwork
2026-06-09 14:51 ` ✓ CI.KUnit: success " Patchwork
` (5 subsequent siblings)
7 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-06-09 14:49 UTC (permalink / raw)
To: Rodrigo Vivi; +Cc: intel-xe
== Series Details ==
Series: series starting with [1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
URL : https://patchwork.freedesktop.org/series/168191/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
061140b9bc586ae7f40abc1249c97e1cc72d1b9d
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 6c01b29751044aa7f76443394ead78b200bc7abd
Author: Rodrigo Vivi <rodrigo.vivi@intel.com>
Date: Tue Jun 9 10:44:14 2026 -0400
drm/xe/lrc: fix spurious warning when reading context timestamp
Fixes the following warning that fires during timeout handling for a
context running on the USM-reserved copy engine:
xe 0000:03:00.0: [drm] Tile0: GT0: Unexpected engine class:instance 3:8 for utilization
WARNING: at engine_id_to_hwe+0x88/0xc0 [xe]
xe_lrc_context_timestamp+0x61/0xb0 [xe]
guc_exec_queue_timedout_job+0x713/0x1020 [xe]
class:instance 3:8 is XE_ENGINE_CLASS_COPY on the highest BCS instance,
which xe_hw_engine.c reserves for USM (gt->usm.reserved_bcs_instance) and
on which the migrate engine runs kernel contexts. When such a context's
utilization is read - e.g. from the TDR path - engine_id_to_hwe()
rejected it because xe_hw_engine_is_reserved() is true, firing WARN_ONCE
and returning NULL, which made the timestamp read silently fall back to
stale data.
The reserved-engine guard was added defensively with the original WA BB
utilization support and simply overlooked that the migrate engine is a
valid, present engine whose CTX_TIMESTAMP can legitimately be read.
Allow the USM-reserved copy engine specifically (xe_gt_is_usm_hwe()),
while still rejecting the other reserved cases (GSCCS / XE_ENGINE_CLASS_
OTHER and ccs_mode-disabled compute engines), which would indeed be
unexpected on this path. The dynamic engine resolution via the ENGINE_ID
stashed in the PPHWSP by the WA BB is kept intact, so utilization for
load-balanced/virtual exec queues still resolves the engine the context
is actually running on.
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Assisted-by: GitHub-Copilot:claude-sonnet-4.6
Assisted-by: GitHub-Copilot:claude-opus-4.8
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
+ /mt/dim checkpatch 1e8798282ef0590ad21ca33d80e225208d9c7864 drm-intel
5f70df778ecc drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
6c01b2975104 drm/xe/lrc: fix spurious warning when reading context timestamp
-:10: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#10:
xe 0000:03:00.0: [drm] Tile0: GT0: Unexpected engine class:instance 3:8 for utilization
total: 0 errors, 1 warnings, 0 checks, 20 lines checked
^ permalink raw reply [flat|nested] 17+ messages in thread* ✓ CI.KUnit: success for series starting with [1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-09 14:44 [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues Rodrigo Vivi
2026-06-09 14:44 ` [PATCH 2/2] drm/xe/lrc: fix spurious warning when reading context timestamp Rodrigo Vivi
2026-06-09 14:49 ` ✗ CI.checkpatch: warning for series starting with [1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues Patchwork
@ 2026-06-09 14:51 ` Patchwork
2026-06-09 15:34 ` [PATCH 1/2] " Matthew Brost
` (4 subsequent siblings)
7 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-06-09 14:51 UTC (permalink / raw)
To: Rodrigo Vivi; +Cc: intel-xe
== Series Details ==
Series: series starting with [1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
URL : https://patchwork.freedesktop.org/series/168191/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[14:49:51] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:49:55] 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
[14:50:26] Starting KUnit Kernel (1/1)...
[14:50:26] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:50:26] ================== guc_buf (11 subtests) ===================
[14:50:26] [PASSED] test_smallest
[14:50:26] [PASSED] test_largest
[14:50:26] [PASSED] test_granular
[14:50:26] [PASSED] test_unique
[14:50:26] [PASSED] test_overlap
[14:50:26] [PASSED] test_reusable
[14:50:26] [PASSED] test_too_big
[14:50:26] [PASSED] test_flush
[14:50:26] [PASSED] test_lookup
[14:50:26] [PASSED] test_data
[14:50:26] [PASSED] test_class
[14:50:26] ===================== [PASSED] guc_buf =====================
[14:50:26] =================== guc_dbm (7 subtests) ===================
[14:50:26] [PASSED] test_empty
[14:50:26] [PASSED] test_default
[14:50:26] ======================== test_size ========================
[14:50:26] [PASSED] 4
[14:50:26] [PASSED] 8
[14:50:26] [PASSED] 32
[14:50:26] [PASSED] 256
[14:50:26] ==================== [PASSED] test_size ====================
[14:50:26] ======================= test_reuse ========================
[14:50:26] [PASSED] 4
[14:50:26] [PASSED] 8
[14:50:26] [PASSED] 32
[14:50:26] [PASSED] 256
[14:50:26] =================== [PASSED] test_reuse ====================
[14:50:26] =================== test_range_overlap ====================
[14:50:26] [PASSED] 4
[14:50:26] [PASSED] 8
[14:50:26] [PASSED] 32
[14:50:26] [PASSED] 256
[14:50:26] =============== [PASSED] test_range_overlap ================
[14:50:26] =================== test_range_compact ====================
[14:50:26] [PASSED] 4
[14:50:26] [PASSED] 8
[14:50:26] [PASSED] 32
[14:50:26] [PASSED] 256
[14:50:26] =============== [PASSED] test_range_compact ================
[14:50:26] ==================== test_range_spare =====================
[14:50:26] [PASSED] 4
[14:50:26] [PASSED] 8
[14:50:26] [PASSED] 32
[14:50:26] [PASSED] 256
[14:50:26] ================ [PASSED] test_range_spare =================
[14:50:26] ===================== [PASSED] guc_dbm =====================
[14:50:26] =================== guc_idm (6 subtests) ===================
[14:50:26] [PASSED] bad_init
[14:50:26] [PASSED] no_init
[14:50:26] [PASSED] init_fini
[14:50:26] [PASSED] check_used
[14:50:26] [PASSED] check_quota
[14:50:26] [PASSED] check_all
[14:50:26] ===================== [PASSED] guc_idm =====================
[14:50:26] ================== no_relay (3 subtests) ===================
[14:50:26] [PASSED] xe_drops_guc2pf_if_not_ready
[14:50:26] [PASSED] xe_drops_guc2vf_if_not_ready
[14:50:26] [PASSED] xe_rejects_send_if_not_ready
[14:50:26] ==================== [PASSED] no_relay =====================
[14:50:26] ================== pf_relay (14 subtests) ==================
[14:50:26] [PASSED] pf_rejects_guc2pf_too_short
[14:50:26] [PASSED] pf_rejects_guc2pf_too_long
[14:50:26] [PASSED] pf_rejects_guc2pf_no_payload
[14:50:26] [PASSED] pf_fails_no_payload
[14:50:26] [PASSED] pf_fails_bad_origin
[14:50:26] [PASSED] pf_fails_bad_type
[14:50:26] [PASSED] pf_txn_reports_error
[14:50:26] [PASSED] pf_txn_sends_pf2guc
[14:50:26] [PASSED] pf_sends_pf2guc
[14:50:26] [SKIPPED] pf_loopback_nop
[14:50:26] [SKIPPED] pf_loopback_echo
[14:50:26] [SKIPPED] pf_loopback_fail
[14:50:26] [SKIPPED] pf_loopback_busy
[14:50:26] [SKIPPED] pf_loopback_retry
[14:50:26] ==================== [PASSED] pf_relay =====================
[14:50:26] ================== vf_relay (3 subtests) ===================
[14:50:26] [PASSED] vf_rejects_guc2vf_too_short
[14:50:26] [PASSED] vf_rejects_guc2vf_too_long
[14:50:26] [PASSED] vf_rejects_guc2vf_no_payload
[14:50:26] ==================== [PASSED] vf_relay =====================
[14:50:26] ================ pf_gt_config (9 subtests) =================
[14:50:26] [PASSED] fair_contexts_1vf
[14:50:26] [PASSED] fair_doorbells_1vf
[14:50:26] [PASSED] fair_ggtt_1vf
[14:50:26] ====================== fair_vram_1vf ======================
[14:50:26] [PASSED] 3.50 GiB
[14:50:26] [PASSED] 11.5 GiB
[14:50:26] [PASSED] 15.5 GiB
[14:50:26] [PASSED] 31.5 GiB
[14:50:26] [PASSED] 63.5 GiB
[14:50:26] [PASSED] 1.91 GiB
[14:50:26] ================== [PASSED] fair_vram_1vf ==================
[14:50:26] ================ fair_vram_1vf_admin_only =================
[14:50:26] [PASSED] 3.50 GiB
[14:50:26] [PASSED] 11.5 GiB
[14:50:26] [PASSED] 15.5 GiB
[14:50:26] [PASSED] 31.5 GiB
[14:50:26] [PASSED] 63.5 GiB
[14:50:26] [PASSED] 1.91 GiB
[14:50:26] ============ [PASSED] fair_vram_1vf_admin_only =============
[14:50:26] ====================== fair_contexts ======================
[14:50:26] [PASSED] 1 VF
[14:50:26] [PASSED] 2 VFs
[14:50:26] [PASSED] 3 VFs
[14:50:26] [PASSED] 4 VFs
[14:50:26] [PASSED] 5 VFs
[14:50:26] [PASSED] 6 VFs
[14:50:26] [PASSED] 7 VFs
[14:50:26] [PASSED] 8 VFs
[14:50:26] [PASSED] 9 VFs
[14:50:26] [PASSED] 10 VFs
[14:50:26] [PASSED] 11 VFs
[14:50:26] [PASSED] 12 VFs
[14:50:26] [PASSED] 13 VFs
[14:50:26] [PASSED] 14 VFs
[14:50:26] [PASSED] 15 VFs
[14:50:26] [PASSED] 16 VFs
[14:50:26] [PASSED] 17 VFs
[14:50:26] [PASSED] 18 VFs
[14:50:26] [PASSED] 19 VFs
[14:50:26] [PASSED] 20 VFs
[14:50:27] [PASSED] 21 VFs
[14:50:27] [PASSED] 22 VFs
[14:50:27] [PASSED] 23 VFs
[14:50:27] [PASSED] 24 VFs
[14:50:27] [PASSED] 25 VFs
[14:50:27] [PASSED] 26 VFs
[14:50:27] [PASSED] 27 VFs
[14:50:27] [PASSED] 28 VFs
[14:50:27] [PASSED] 29 VFs
[14:50:27] [PASSED] 30 VFs
[14:50:27] [PASSED] 31 VFs
[14:50:27] [PASSED] 32 VFs
[14:50:27] [PASSED] 33 VFs
[14:50:27] [PASSED] 34 VFs
[14:50:27] [PASSED] 35 VFs
[14:50:27] [PASSED] 36 VFs
[14:50:27] [PASSED] 37 VFs
[14:50:27] [PASSED] 38 VFs
[14:50:27] [PASSED] 39 VFs
[14:50:27] [PASSED] 40 VFs
[14:50:27] [PASSED] 41 VFs
[14:50:27] [PASSED] 42 VFs
[14:50:27] [PASSED] 43 VFs
[14:50:27] [PASSED] 44 VFs
[14:50:27] [PASSED] 45 VFs
[14:50:27] [PASSED] 46 VFs
[14:50:27] [PASSED] 47 VFs
[14:50:27] [PASSED] 48 VFs
[14:50:27] [PASSED] 49 VFs
[14:50:27] [PASSED] 50 VFs
[14:50:27] [PASSED] 51 VFs
[14:50:27] [PASSED] 52 VFs
[14:50:27] [PASSED] 53 VFs
[14:50:27] [PASSED] 54 VFs
[14:50:27] [PASSED] 55 VFs
[14:50:27] [PASSED] 56 VFs
[14:50:27] [PASSED] 57 VFs
[14:50:27] [PASSED] 58 VFs
[14:50:27] [PASSED] 59 VFs
[14:50:27] [PASSED] 60 VFs
[14:50:27] [PASSED] 61 VFs
[14:50:27] [PASSED] 62 VFs
[14:50:27] [PASSED] 63 VFs
[14:50:27] ================== [PASSED] fair_contexts ==================
[14:50:27] ===================== fair_doorbells ======================
[14:50:27] [PASSED] 1 VF
[14:50:27] [PASSED] 2 VFs
[14:50:27] [PASSED] 3 VFs
[14:50:27] [PASSED] 4 VFs
[14:50:27] [PASSED] 5 VFs
[14:50:27] [PASSED] 6 VFs
[14:50:27] [PASSED] 7 VFs
[14:50:27] [PASSED] 8 VFs
[14:50:27] [PASSED] 9 VFs
[14:50:27] [PASSED] 10 VFs
[14:50:27] [PASSED] 11 VFs
[14:50:27] [PASSED] 12 VFs
[14:50:27] [PASSED] 13 VFs
[14:50:27] [PASSED] 14 VFs
[14:50:27] [PASSED] 15 VFs
[14:50:27] [PASSED] 16 VFs
[14:50:27] [PASSED] 17 VFs
[14:50:27] [PASSED] 18 VFs
[14:50:27] [PASSED] 19 VFs
[14:50:27] [PASSED] 20 VFs
[14:50:27] [PASSED] 21 VFs
[14:50:27] [PASSED] 22 VFs
[14:50:27] [PASSED] 23 VFs
[14:50:27] [PASSED] 24 VFs
[14:50:27] [PASSED] 25 VFs
[14:50:27] [PASSED] 26 VFs
[14:50:27] [PASSED] 27 VFs
[14:50:27] [PASSED] 28 VFs
[14:50:27] [PASSED] 29 VFs
[14:50:27] [PASSED] 30 VFs
[14:50:27] [PASSED] 31 VFs
[14:50:27] [PASSED] 32 VFs
[14:50:27] [PASSED] 33 VFs
[14:50:27] [PASSED] 34 VFs
[14:50:27] [PASSED] 35 VFs
[14:50:27] [PASSED] 36 VFs
[14:50:27] [PASSED] 37 VFs
[14:50:27] [PASSED] 38 VFs
[14:50:27] [PASSED] 39 VFs
[14:50:27] [PASSED] 40 VFs
[14:50:27] [PASSED] 41 VFs
[14:50:27] [PASSED] 42 VFs
[14:50:27] [PASSED] 43 VFs
[14:50:27] [PASSED] 44 VFs
[14:50:27] [PASSED] 45 VFs
[14:50:27] [PASSED] 46 VFs
[14:50:27] [PASSED] 47 VFs
[14:50:27] [PASSED] 48 VFs
[14:50:27] [PASSED] 49 VFs
[14:50:27] [PASSED] 50 VFs
[14:50:27] [PASSED] 51 VFs
[14:50:27] [PASSED] 52 VFs
[14:50:27] [PASSED] 53 VFs
[14:50:27] [PASSED] 54 VFs
[14:50:27] [PASSED] 55 VFs
[14:50:27] [PASSED] 56 VFs
[14:50:27] [PASSED] 57 VFs
[14:50:27] [PASSED] 58 VFs
[14:50:27] [PASSED] 59 VFs
[14:50:27] [PASSED] 60 VFs
[14:50:27] [PASSED] 61 VFs
[14:50:27] [PASSED] 62 VFs
[14:50:27] [PASSED] 63 VFs
[14:50:27] ================= [PASSED] fair_doorbells ==================
[14:50:27] ======================== fair_ggtt ========================
[14:50:27] [PASSED] 1 VF
[14:50:27] [PASSED] 2 VFs
[14:50:27] [PASSED] 3 VFs
[14:50:27] [PASSED] 4 VFs
[14:50:27] [PASSED] 5 VFs
[14:50:27] [PASSED] 6 VFs
[14:50:27] [PASSED] 7 VFs
[14:50:27] [PASSED] 8 VFs
[14:50:27] [PASSED] 9 VFs
[14:50:27] [PASSED] 10 VFs
[14:50:27] [PASSED] 11 VFs
[14:50:27] [PASSED] 12 VFs
[14:50:27] [PASSED] 13 VFs
[14:50:27] [PASSED] 14 VFs
[14:50:27] [PASSED] 15 VFs
[14:50:27] [PASSED] 16 VFs
[14:50:27] [PASSED] 17 VFs
[14:50:27] [PASSED] 18 VFs
[14:50:27] [PASSED] 19 VFs
[14:50:27] [PASSED] 20 VFs
[14:50:27] [PASSED] 21 VFs
[14:50:27] [PASSED] 22 VFs
[14:50:27] [PASSED] 23 VFs
[14:50:27] [PASSED] 24 VFs
[14:50:27] [PASSED] 25 VFs
[14:50:27] [PASSED] 26 VFs
[14:50:27] [PASSED] 27 VFs
[14:50:27] [PASSED] 28 VFs
[14:50:27] [PASSED] 29 VFs
[14:50:27] [PASSED] 30 VFs
[14:50:27] [PASSED] 31 VFs
[14:50:27] [PASSED] 32 VFs
[14:50:27] [PASSED] 33 VFs
[14:50:27] [PASSED] 34 VFs
[14:50:27] [PASSED] 35 VFs
[14:50:27] [PASSED] 36 VFs
[14:50:27] [PASSED] 37 VFs
[14:50:27] [PASSED] 38 VFs
[14:50:27] [PASSED] 39 VFs
[14:50:27] [PASSED] 40 VFs
[14:50:27] [PASSED] 41 VFs
[14:50:27] [PASSED] 42 VFs
[14:50:27] [PASSED] 43 VFs
[14:50:27] [PASSED] 44 VFs
[14:50:27] [PASSED] 45 VFs
[14:50:27] [PASSED] 46 VFs
[14:50:27] [PASSED] 47 VFs
[14:50:27] [PASSED] 48 VFs
[14:50:27] [PASSED] 49 VFs
[14:50:27] [PASSED] 50 VFs
[14:50:27] [PASSED] 51 VFs
[14:50:27] [PASSED] 52 VFs
[14:50:27] [PASSED] 53 VFs
[14:50:27] [PASSED] 54 VFs
[14:50:27] [PASSED] 55 VFs
[14:50:27] [PASSED] 56 VFs
[14:50:27] [PASSED] 57 VFs
[14:50:27] [PASSED] 58 VFs
[14:50:27] [PASSED] 59 VFs
[14:50:27] [PASSED] 60 VFs
[14:50:27] [PASSED] 61 VFs
[14:50:27] [PASSED] 62 VFs
[14:50:27] [PASSED] 63 VFs
[14:50:27] ==================== [PASSED] fair_ggtt ====================
[14:50:27] ======================== fair_vram ========================
[14:50:27] [PASSED] 1 VF
[14:50:27] [PASSED] 2 VFs
[14:50:27] [PASSED] 3 VFs
[14:50:27] [PASSED] 4 VFs
[14:50:27] [PASSED] 5 VFs
[14:50:27] [PASSED] 6 VFs
[14:50:27] [PASSED] 7 VFs
[14:50:27] [PASSED] 8 VFs
[14:50:27] [PASSED] 9 VFs
[14:50:27] [PASSED] 10 VFs
[14:50:27] [PASSED] 11 VFs
[14:50:27] [PASSED] 12 VFs
[14:50:27] [PASSED] 13 VFs
[14:50:27] [PASSED] 14 VFs
[14:50:27] [PASSED] 15 VFs
[14:50:27] [PASSED] 16 VFs
[14:50:27] [PASSED] 17 VFs
[14:50:27] [PASSED] 18 VFs
[14:50:27] [PASSED] 19 VFs
[14:50:27] [PASSED] 20 VFs
[14:50:27] [PASSED] 21 VFs
[14:50:27] [PASSED] 22 VFs
[14:50:27] [PASSED] 23 VFs
[14:50:27] [PASSED] 24 VFs
[14:50:27] [PASSED] 25 VFs
[14:50:27] [PASSED] 26 VFs
[14:50:27] [PASSED] 27 VFs
[14:50:27] [PASSED] 28 VFs
[14:50:27] [PASSED] 29 VFs
[14:50:27] [PASSED] 30 VFs
[14:50:27] [PASSED] 31 VFs
[14:50:27] [PASSED] 32 VFs
[14:50:27] [PASSED] 33 VFs
[14:50:27] [PASSED] 34 VFs
[14:50:27] [PASSED] 35 VFs
[14:50:27] [PASSED] 36 VFs
[14:50:27] [PASSED] 37 VFs
[14:50:27] [PASSED] 38 VFs
[14:50:27] [PASSED] 39 VFs
[14:50:27] [PASSED] 40 VFs
[14:50:27] [PASSED] 41 VFs
[14:50:27] [PASSED] 42 VFs
[14:50:27] [PASSED] 43 VFs
[14:50:27] [PASSED] 44 VFs
[14:50:27] [PASSED] 45 VFs
[14:50:27] [PASSED] 46 VFs
[14:50:27] [PASSED] 47 VFs
[14:50:27] [PASSED] 48 VFs
[14:50:27] [PASSED] 49 VFs
[14:50:27] [PASSED] 50 VFs
[14:50:27] [PASSED] 51 VFs
[14:50:27] [PASSED] 52 VFs
[14:50:27] [PASSED] 53 VFs
[14:50:27] [PASSED] 54 VFs
[14:50:27] [PASSED] 55 VFs
[14:50:27] [PASSED] 56 VFs
[14:50:27] [PASSED] 57 VFs
[14:50:27] [PASSED] 58 VFs
[14:50:27] [PASSED] 59 VFs
[14:50:27] [PASSED] 60 VFs
[14:50:27] [PASSED] 61 VFs
[14:50:27] [PASSED] 62 VFs
[14:50:27] [PASSED] 63 VFs
[14:50:27] ==================== [PASSED] fair_vram ====================
[14:50:27] ================== [PASSED] pf_gt_config ===================
[14:50:27] ===================== lmtt (1 subtest) =====================
[14:50:27] ======================== test_ops =========================
[14:50:27] [PASSED] 2-level
[14:50:27] [PASSED] multi-level
[14:50:27] ==================== [PASSED] test_ops =====================
[14:50:27] ====================== [PASSED] lmtt =======================
[14:50:27] ================= pf_service (11 subtests) =================
[14:50:27] [PASSED] pf_negotiate_any
[14:50:27] [PASSED] pf_negotiate_base_match
[14:50:27] [PASSED] pf_negotiate_base_newer
[14:50:27] [PASSED] pf_negotiate_base_next
[14:50:27] [SKIPPED] pf_negotiate_base_older
[14:50:27] [PASSED] pf_negotiate_base_prev
[14:50:27] [PASSED] pf_negotiate_latest_match
[14:50:27] [PASSED] pf_negotiate_latest_newer
[14:50:27] [PASSED] pf_negotiate_latest_next
[14:50:27] [SKIPPED] pf_negotiate_latest_older
[14:50:27] [SKIPPED] pf_negotiate_latest_prev
[14:50:27] =================== [PASSED] pf_service ====================
[14:50:27] ================= xe_guc_g2g (2 subtests) ==================
[14:50:27] ============== xe_live_guc_g2g_kunit_default ==============
[14:50:27] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[14:50:27] ============== xe_live_guc_g2g_kunit_allmem ===============
[14:50:27] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[14:50:27] =================== [SKIPPED] xe_guc_g2g ===================
[14:50:27] =================== xe_mocs (2 subtests) ===================
[14:50:27] ================ xe_live_mocs_kernel_kunit ================
[14:50:27] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[14:50:27] ================ xe_live_mocs_reset_kunit =================
[14:50:27] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[14:50:27] ==================== [SKIPPED] xe_mocs =====================
[14:50:27] ================= xe_migrate (2 subtests) ==================
[14:50:27] ================= xe_migrate_sanity_kunit =================
[14:50:27] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[14:50:27] ================== xe_validate_ccs_kunit ==================
[14:50:27] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[14:50:27] =================== [SKIPPED] xe_migrate ===================
[14:50:27] ================== xe_dma_buf (1 subtest) ==================
[14:50:27] ==================== xe_dma_buf_kunit =====================
[14:50:27] ================ [SKIPPED] xe_dma_buf_kunit ================
[14:50:27] =================== [SKIPPED] xe_dma_buf ===================
[14:50:27] ================= xe_bo_shrink (1 subtest) =================
[14:50:27] =================== xe_bo_shrink_kunit ====================
[14:50:27] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[14:50:27] ================== [SKIPPED] xe_bo_shrink ==================
[14:50:27] ==================== xe_bo (2 subtests) ====================
[14:50:27] ================== xe_ccs_migrate_kunit ===================
[14:50:27] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[14:50:27] ==================== xe_bo_evict_kunit ====================
[14:50:27] =============== [SKIPPED] xe_bo_evict_kunit ================
[14:50:27] ===================== [SKIPPED] xe_bo ======================
[14:50:27] ==================== args (13 subtests) ====================
[14:50:27] [PASSED] count_args_test
[14:50:27] [PASSED] call_args_example
[14:50:27] [PASSED] call_args_test
[14:50:27] [PASSED] drop_first_arg_example
[14:50:27] [PASSED] drop_first_arg_test
[14:50:27] [PASSED] first_arg_example
[14:50:27] [PASSED] first_arg_test
[14:50:27] [PASSED] last_arg_example
[14:50:27] [PASSED] last_arg_test
[14:50:27] [PASSED] pick_arg_example
[14:50:27] [PASSED] if_args_example
[14:50:27] [PASSED] if_args_test
[14:50:27] [PASSED] sep_comma_example
[14:50:27] ====================== [PASSED] args =======================
[14:50:27] =================== xe_pci (3 subtests) ====================
[14:50:27] ==================== check_graphics_ip ====================
[14:50:27] [PASSED] 12.00 Xe_LP
[14:50:27] [PASSED] 12.10 Xe_LP+
[14:50:27] [PASSED] 12.55 Xe_HPG
[14:50:27] [PASSED] 12.60 Xe_HPC
[14:50:27] [PASSED] 12.70 Xe_LPG
[14:50:27] [PASSED] 12.71 Xe_LPG
[14:50:27] [PASSED] 12.74 Xe_LPG+
[14:50:27] [PASSED] 20.01 Xe2_HPG
[14:50:27] [PASSED] 20.02 Xe2_HPG
[14:50:27] [PASSED] 20.04 Xe2_LPG
[14:50:27] [PASSED] 30.00 Xe3_LPG
[14:50:27] [PASSED] 30.01 Xe3_LPG
[14:50:27] [PASSED] 30.03 Xe3_LPG
[14:50:27] [PASSED] 30.04 Xe3_LPG
[14:50:27] [PASSED] 30.05 Xe3_LPG
[14:50:27] [PASSED] 35.10 Xe3p_LPG
[14:50:27] [PASSED] 35.11 Xe3p_XPC
[14:50:27] ================ [PASSED] check_graphics_ip ================
[14:50:27] ===================== check_media_ip ======================
[14:50:27] [PASSED] 12.00 Xe_M
[14:50:27] [PASSED] 12.55 Xe_HPM
[14:50:27] [PASSED] 13.00 Xe_LPM+
[14:50:27] [PASSED] 13.01 Xe2_HPM
[14:50:27] [PASSED] 20.00 Xe2_LPM
[14:50:27] [PASSED] 30.00 Xe3_LPM
[14:50:27] [PASSED] 30.02 Xe3_LPM
[14:50:27] [PASSED] 35.00 Xe3p_LPM
[14:50:27] [PASSED] 35.03 Xe3p_HPM
[14:50:27] ================= [PASSED] check_media_ip ==================
[14:50:27] =================== check_platform_desc ===================
[14:50:27] [PASSED] 0x9A60 (TIGERLAKE)
[14:50:27] [PASSED] 0x9A68 (TIGERLAKE)
[14:50:27] [PASSED] 0x9A70 (TIGERLAKE)
[14:50:27] [PASSED] 0x9A40 (TIGERLAKE)
[14:50:27] [PASSED] 0x9A49 (TIGERLAKE)
[14:50:27] [PASSED] 0x9A59 (TIGERLAKE)
[14:50:27] [PASSED] 0x9A78 (TIGERLAKE)
[14:50:27] [PASSED] 0x9AC0 (TIGERLAKE)
[14:50:27] [PASSED] 0x9AC9 (TIGERLAKE)
[14:50:27] [PASSED] 0x9AD9 (TIGERLAKE)
[14:50:27] [PASSED] 0x9AF8 (TIGERLAKE)
[14:50:27] [PASSED] 0x4C80 (ROCKETLAKE)
[14:50:27] [PASSED] 0x4C8A (ROCKETLAKE)
[14:50:27] [PASSED] 0x4C8B (ROCKETLAKE)
[14:50:27] [PASSED] 0x4C8C (ROCKETLAKE)
[14:50:27] [PASSED] 0x4C90 (ROCKETLAKE)
[14:50:27] [PASSED] 0x4C9A (ROCKETLAKE)
[14:50:27] [PASSED] 0x4680 (ALDERLAKE_S)
[14:50:27] [PASSED] 0x4682 (ALDERLAKE_S)
[14:50:27] [PASSED] 0x4688 (ALDERLAKE_S)
[14:50:27] [PASSED] 0x468A (ALDERLAKE_S)
[14:50:27] [PASSED] 0x468B (ALDERLAKE_S)
[14:50:27] [PASSED] 0x4690 (ALDERLAKE_S)
[14:50:27] [PASSED] 0x4692 (ALDERLAKE_S)
[14:50:27] [PASSED] 0x4693 (ALDERLAKE_S)
[14:50:27] [PASSED] 0x46A0 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46A1 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46A2 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46A3 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46A6 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46A8 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46AA (ALDERLAKE_P)
[14:50:27] [PASSED] 0x462A (ALDERLAKE_P)
[14:50:27] [PASSED] 0x4626 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x4628 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46B0 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46B1 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46B2 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46B3 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46C0 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46C1 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46C2 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46C3 (ALDERLAKE_P)
[14:50:27] [PASSED] 0x46D0 (ALDERLAKE_N)
[14:50:27] [PASSED] 0x46D1 (ALDERLAKE_N)
[14:50:27] [PASSED] 0x46D2 (ALDERLAKE_N)
[14:50:27] [PASSED] 0x46D3 (ALDERLAKE_N)
[14:50:27] [PASSED] 0x46D4 (ALDERLAKE_N)
[14:50:27] [PASSED] 0xA721 (ALDERLAKE_P)
[14:50:27] [PASSED] 0xA7A1 (ALDERLAKE_P)
[14:50:27] [PASSED] 0xA7A9 (ALDERLAKE_P)
[14:50:27] [PASSED] 0xA7AC (ALDERLAKE_P)
[14:50:27] [PASSED] 0xA7AD (ALDERLAKE_P)
[14:50:27] [PASSED] 0xA720 (ALDERLAKE_P)
[14:50:27] [PASSED] 0xA7A0 (ALDERLAKE_P)
[14:50:27] [PASSED] 0xA7A8 (ALDERLAKE_P)
[14:50:27] [PASSED] 0xA7AA (ALDERLAKE_P)
[14:50:27] [PASSED] 0xA7AB (ALDERLAKE_P)
[14:50:27] [PASSED] 0xA780 (ALDERLAKE_S)
[14:50:27] [PASSED] 0xA781 (ALDERLAKE_S)
[14:50:27] [PASSED] 0xA782 (ALDERLAKE_S)
[14:50:27] [PASSED] 0xA783 (ALDERLAKE_S)
[14:50:27] [PASSED] 0xA788 (ALDERLAKE_S)
[14:50:27] [PASSED] 0xA789 (ALDERLAKE_S)
[14:50:27] [PASSED] 0xA78A (ALDERLAKE_S)
[14:50:27] [PASSED] 0xA78B (ALDERLAKE_S)
[14:50:27] [PASSED] 0x4905 (DG1)
[14:50:27] [PASSED] 0x4906 (DG1)
[14:50:27] [PASSED] 0x4907 (DG1)
[14:50:27] [PASSED] 0x4908 (DG1)
[14:50:27] [PASSED] 0x4909 (DG1)
[14:50:27] [PASSED] 0x56C0 (DG2)
[14:50:27] [PASSED] 0x56C2 (DG2)
[14:50:27] [PASSED] 0x56C1 (DG2)
[14:50:27] [PASSED] 0x7D51 (METEORLAKE)
[14:50:27] [PASSED] 0x7DD1 (METEORLAKE)
[14:50:27] [PASSED] 0x7D41 (METEORLAKE)
[14:50:27] [PASSED] 0x7D67 (METEORLAKE)
[14:50:27] [PASSED] 0xB640 (METEORLAKE)
[14:50:27] [PASSED] 0x56A0 (DG2)
[14:50:27] [PASSED] 0x56A1 (DG2)
[14:50:27] [PASSED] 0x56A2 (DG2)
[14:50:27] [PASSED] 0x56BE (DG2)
[14:50:27] [PASSED] 0x56BF (DG2)
[14:50:27] [PASSED] 0x5690 (DG2)
[14:50:27] [PASSED] 0x5691 (DG2)
[14:50:27] [PASSED] 0x5692 (DG2)
[14:50:27] [PASSED] 0x56A5 (DG2)
[14:50:27] [PASSED] 0x56A6 (DG2)
[14:50:27] [PASSED] 0x56B0 (DG2)
[14:50:27] [PASSED] 0x56B1 (DG2)
[14:50:27] [PASSED] 0x56BA (DG2)
[14:50:27] [PASSED] 0x56BB (DG2)
[14:50:27] [PASSED] 0x56BC (DG2)
[14:50:27] [PASSED] 0x56BD (DG2)
[14:50:27] [PASSED] 0x5693 (DG2)
[14:50:27] [PASSED] 0x5694 (DG2)
[14:50:27] [PASSED] 0x5695 (DG2)
[14:50:27] [PASSED] 0x56A3 (DG2)
[14:50:27] [PASSED] 0x56A4 (DG2)
[14:50:27] [PASSED] 0x56B2 (DG2)
[14:50:27] [PASSED] 0x56B3 (DG2)
[14:50:27] [PASSED] 0x5696 (DG2)
[14:50:27] [PASSED] 0x5697 (DG2)
[14:50:27] [PASSED] 0xB69 (PVC)
[14:50:27] [PASSED] 0xB6E (PVC)
[14:50:27] [PASSED] 0xBD4 (PVC)
[14:50:27] [PASSED] 0xBD5 (PVC)
[14:50:27] [PASSED] 0xBD6 (PVC)
[14:50:27] [PASSED] 0xBD7 (PVC)
[14:50:27] [PASSED] 0xBD8 (PVC)
[14:50:27] [PASSED] 0xBD9 (PVC)
[14:50:27] [PASSED] 0xBDA (PVC)
[14:50:27] [PASSED] 0xBDB (PVC)
[14:50:27] [PASSED] 0xBE0 (PVC)
[14:50:27] [PASSED] 0xBE1 (PVC)
[14:50:27] [PASSED] 0xBE5 (PVC)
[14:50:27] [PASSED] 0x7D40 (METEORLAKE)
[14:50:27] [PASSED] 0x7D45 (METEORLAKE)
[14:50:27] [PASSED] 0x7D55 (METEORLAKE)
[14:50:27] [PASSED] 0x7D60 (METEORLAKE)
[14:50:27] [PASSED] 0x7DD5 (METEORLAKE)
[14:50:27] [PASSED] 0x6420 (LUNARLAKE)
[14:50:27] [PASSED] 0x64A0 (LUNARLAKE)
[14:50:27] [PASSED] 0x64B0 (LUNARLAKE)
[14:50:27] [PASSED] 0xE202 (BATTLEMAGE)
[14:50:27] [PASSED] 0xE209 (BATTLEMAGE)
[14:50:27] [PASSED] 0xE20B (BATTLEMAGE)
[14:50:27] [PASSED] 0xE20C (BATTLEMAGE)
[14:50:27] [PASSED] 0xE20D (BATTLEMAGE)
[14:50:27] [PASSED] 0xE210 (BATTLEMAGE)
[14:50:27] [PASSED] 0xE211 (BATTLEMAGE)
[14:50:27] [PASSED] 0xE212 (BATTLEMAGE)
[14:50:27] [PASSED] 0xE216 (BATTLEMAGE)
[14:50:27] [PASSED] 0xE220 (BATTLEMAGE)
[14:50:27] [PASSED] 0xE221 (BATTLEMAGE)
[14:50:27] [PASSED] 0xE222 (BATTLEMAGE)
[14:50:27] [PASSED] 0xE223 (BATTLEMAGE)
[14:50:27] [PASSED] 0xB080 (PANTHERLAKE)
[14:50:27] [PASSED] 0xB081 (PANTHERLAKE)
[14:50:27] [PASSED] 0xB082 (PANTHERLAKE)
[14:50:27] [PASSED] 0xB083 (PANTHERLAKE)
[14:50:27] [PASSED] 0xB084 (PANTHERLAKE)
[14:50:27] [PASSED] 0xB085 (PANTHERLAKE)
[14:50:27] [PASSED] 0xB086 (PANTHERLAKE)
[14:50:27] [PASSED] 0xB087 (PANTHERLAKE)
[14:50:27] [PASSED] 0xB08F (PANTHERLAKE)
[14:50:27] [PASSED] 0xB090 (PANTHERLAKE)
[14:50:27] [PASSED] 0xB0A0 (PANTHERLAKE)
[14:50:27] [PASSED] 0xB0B0 (PANTHERLAKE)
[14:50:27] [PASSED] 0xFD80 (PANTHERLAKE)
[14:50:27] [PASSED] 0xFD81 (PANTHERLAKE)
[14:50:27] [PASSED] 0xD740 (NOVALAKE_S)
[14:50:27] [PASSED] 0xD741 (NOVALAKE_S)
[14:50:27] [PASSED] 0xD742 (NOVALAKE_S)
[14:50:27] [PASSED] 0xD743 (NOVALAKE_S)
[14:50:27] [PASSED] 0xD744 (NOVALAKE_S)
[14:50:27] [PASSED] 0xD745 (NOVALAKE_S)
[14:50:27] [PASSED] 0x674C (CRESCENTISLAND)
[14:50:27] [PASSED] 0x674D (CRESCENTISLAND)
[14:50:27] [PASSED] 0x674E (CRESCENTISLAND)
[14:50:27] [PASSED] 0x674F (CRESCENTISLAND)
[14:50:27] [PASSED] 0x6750 (CRESCENTISLAND)
[14:50:27] [PASSED] 0xD750 (NOVALAKE_P)
[14:50:27] [PASSED] 0xD751 (NOVALAKE_P)
[14:50:27] [PASSED] 0xD752 (NOVALAKE_P)
[14:50:27] [PASSED] 0xD753 (NOVALAKE_P)
[14:50:27] [PASSED] 0xD754 (NOVALAKE_P)
[14:50:27] [PASSED] 0xD755 (NOVALAKE_P)
[14:50:27] [PASSED] 0xD756 (NOVALAKE_P)
[14:50:27] [PASSED] 0xD757 (NOVALAKE_P)
[14:50:27] [PASSED] 0xD75F (NOVALAKE_P)
[14:50:27] =============== [PASSED] check_platform_desc ===============
[14:50:27] ===================== [PASSED] xe_pci ======================
[14:50:27] ============= xe_rtp_tables_test (4 subtests) ==============
[14:50:27] ================== xe_rtp_table_gt_test ===================
[14:50:27] [PASSED] gt_was/14011060649
[14:50:27] [PASSED] gt_was/14011059788
[14:50:27] [PASSED] gt_was/14015795083
[14:50:27] [PASSED] gt_was/16021867713
[14:50:27] [PASSED] gt_was/14019449301
[14:50:27] [PASSED] gt_was/16028005424
[14:50:27] [PASSED] gt_was/14026578760
[14:50:27] [PASSED] gt_was/1409420604
[14:50:27] [PASSED] gt_was/1408615072
[14:50:27] [PASSED] gt_was/22010523718
[14:50:27] [PASSED] gt_was/14011006942
[14:50:27] [PASSED] gt_was/14014830051
[14:50:27] [PASSED] gt_was/18018781329
[14:50:27] [PASSED] gt_was/1509235366
[14:50:27] [PASSED] gt_was/18018781329
[14:50:27] [PASSED] gt_was/16016694945
[14:50:27] [PASSED] gt_was/14018575942
[14:50:27] [PASSED] gt_was/22016670082
[14:50:27] [PASSED] gt_was/22016670082
[14:50:27] [PASSED] gt_was/14017421178
[14:50:27] [PASSED] gt_was/16025250150
[14:50:27] [PASSED] gt_was/14021871409
[14:50:27] [PASSED] gt_was/16021865536
[14:50:27] [PASSED] gt_was/14021486841
[14:50:27] [PASSED] gt_was/14025160223
[14:50:27] [PASSED] gt_was/14026144927, 16029437861
[14:50:27] [PASSED] gt_was/14025635424
[14:50:27] [PASSED] gt_was/16028005424
[14:50:27] ============== [PASSED] xe_rtp_table_gt_test ===============
[14:50:27] ================== xe_rtp_table_gt_test ===================
[14:50:27] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[14:50:27] [PASSED] gt_tunings/Tuning: 32B Access Enable
[14:50:27] [PASSED] gt_tunings/Tuning: L3 cache
[14:50:27] [PASSED] gt_tunings/Tuning: L3 cache - media
[14:50:27] [PASSED] gt_tunings/Tuning: Compression Overfetch
[14:50:27] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[14:50:27] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[14:50:27] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[14:50:27] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[14:50:27] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[14:50:27] [PASSED] gt_tunings/Tuning: Stateless compression control
[14:50:27] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[14:50:27] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[14:50:27] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[14:50:27] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[14:50:27] ============== [PASSED] xe_rtp_table_gt_test ===============
[14:50:27] ================== xe_rtp_table_oob_test ==================
[14:50:27] [PASSED] oob_was/1607983814
[14:50:27] [PASSED] oob_was/16010904313
[14:50:27] [PASSED] oob_was/18022495364
[14:50:27] [PASSED] oob_was/22012773006
[14:50:27] [PASSED] oob_was/14014475959
[14:50:27] [PASSED] oob_was/22011391025
[14:50:27] [PASSED] oob_was/22012727170
[14:50:27] [PASSED] oob_was/22012727685
[14:50:27] [PASSED] oob_was/22016596838
[14:50:27] [PASSED] oob_was/18020744125
[14:50:27] [PASSED] oob_was/1409600907
[14:50:27] [PASSED] oob_was/22014953428
[14:50:27] [PASSED] oob_was/16017236439
[14:50:27] [PASSED] oob_was/14019821291
[14:50:27] [PASSED] oob_was/14015076503
[14:50:27] [PASSED] oob_was/14018913170
[14:50:27] [PASSED] oob_was/14018094691
[14:50:27] [PASSED] oob_was/18024947630
[14:50:27] [PASSED] oob_was/16022287689
[14:50:27] [PASSED] oob_was/13011645652
[14:50:27] [PASSED] oob_was/14022293748
[14:50:27] [PASSED] oob_was/22019794406
[14:50:27] [PASSED] oob_was/22019338487
[14:50:27] [PASSED] oob_was/16023588340
[14:50:27] [PASSED] oob_was/14019789679
[14:50:27] [PASSED] oob_was/14022866841
[14:50:27] [PASSED] oob_was/16021333562
[14:50:27] [PASSED] oob_was/14016712196
[14:50:27] [PASSED] oob_was/14015568240
[14:50:27] [PASSED] oob_was/18013179988
[14:50:27] [PASSED] oob_was/1508761755
[14:50:27] [PASSED] oob_was/16023105232
[14:50:27] [PASSED] oob_was/16026508708
[14:50:27] [PASSED] oob_was/14020001231
[14:50:27] [PASSED] oob_was/16023683509
[14:50:27] [PASSED] oob_was/14025515070
[14:50:27] [PASSED] oob_was/15015404425_disable
[14:50:27] [PASSED] oob_was/16026007364
[14:50:27] [PASSED] oob_was/14020316580
[14:50:27] [PASSED] oob_was/14025883347
[14:50:27] ============== [PASSED] xe_rtp_table_oob_test ==============
[14:50:27] ================ xe_rtp_table_dev_oob_test ================
[14:50:27] [PASSED] device_oob_was/22010954014
[14:50:27] [PASSED] device_oob_was/15015404425
[14:50:27] [PASSED] device_oob_was/22019338487_display
[14:50:27] [PASSED] device_oob_was/14022085890
[14:50:27] [PASSED] device_oob_was/14026539277
[14:50:27] [PASSED] device_oob_was/14026633728
[14:50:27] [PASSED] device_oob_was/14026746987
[14:50:27] [PASSED] device_oob_was/14026779378
[14:50:27] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[14:50:27] =============== [PASSED] xe_rtp_tables_test ================
[14:50:27] =================== xe_rtp (3 subtests) ====================
[14:50:27] =================== xe_rtp_rules_tests ====================
[14:50:27] [PASSED] no
[14:50:27] [PASSED] yes
[14:50:27] [PASSED] no-and-no
[14:50:27] [PASSED] no-and-yes
[14:50:27] [PASSED] yes-and-no
[14:50:27] [PASSED] yes-and-yes
[14:50:27] [PASSED] no-or-no
[14:50:27] [PASSED] no-or-yes
[14:50:27] [PASSED] yes-or-no
[14:50:27] [PASSED] yes-or-yes
[14:50:27] [PASSED] no-yes-or-yes-no
[14:50:27] [PASSED] no-yes-or-yes-yes
[14:50:27] [PASSED] yes-yes-or-no-yes
[14:50:27] [PASSED] yes-yes-or-yes-yes
[14:50:27] [PASSED] no-no-or-yes-or-no
[14:50:27] [PASSED] or
[14:50:27] [PASSED] or-yes
[14:50:27] [PASSED] or-no
[14:50:27] [PASSED] yes-or
[14:50:27] [PASSED] no-or
[14:50:27] [PASSED] no-or-or-yes
[14:50:27] [PASSED] yes-or-or-no
[14:50:27] [PASSED] no-or-or-no
[14:50:27] [PASSED] missing-context-engine-class
[14:50:27] [PASSED] missing-context-engine-class-or-yes
[14:50:27] [PASSED] missing-context-engine-class-or-or-yes
[14:50:27] =============== [PASSED] xe_rtp_rules_tests ================
[14:50:27] =============== xe_rtp_process_to_sr_tests ================
[14:50:27] [PASSED] coalesce-same-reg
[14:50:27] [PASSED] no-match-no-add
[14:50:27] [PASSED] two-regs-two-entries
[14:50:27] [PASSED] clr-one-set-other
[14:50:27] [PASSED] set-field
[14:50:27] [PASSED] conflict-duplicate
[14:50:27] [PASSED] conflict-not-disjoint
[14:50:27] [PASSED] conflict-reg-type
[14:50:27] [PASSED] bad-mcr-reg-forced-to-regular
[14:50:27] [PASSED] bad-regular-reg-forced-to-mcr
[14:50:27] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[14:50:27] ================== xe_rtp_process_tests ===================
[14:50:27] [PASSED] active1
[14:50:27] [PASSED] active2
[14:50:27] [PASSED] active-inactive
[14:50:27] [PASSED] inactive-active
[14:50:27] [PASSED] inactive-active-inactive
[14:50:27] [PASSED] inactive-inactive-inactive
[14:50:27] ============== [PASSED] xe_rtp_process_tests ===============
[14:50:27] ===================== [PASSED] xe_rtp ======================
[14:50:27] ==================== xe_wa (1 subtest) =====================
[14:50:27] ======================== xe_wa_gt =========================
[14:50:27] [PASSED] TIGERLAKE B0
[14:50:27] [PASSED] DG1 A0
[14:50:27] [PASSED] DG1 B0
[14:50:27] [PASSED] ALDERLAKE_S A0
[14:50:27] [PASSED] ALDERLAKE_S B0
[14:50:27] [PASSED] ALDERLAKE_S C0
[14:50:27] [PASSED] ALDERLAKE_S D0
[14:50:27] [PASSED] ALDERLAKE_P A0
[14:50:27] [PASSED] ALDERLAKE_P B0
[14:50:27] [PASSED] ALDERLAKE_P C0
[14:50:27] [PASSED] ALDERLAKE_S RPLS D0
[14:50:27] [PASSED] ALDERLAKE_P RPLU E0
[14:50:27] [PASSED] DG2 G10 C0
[14:50:27] [PASSED] DG2 G11 B1
[14:50:27] [PASSED] DG2 G12 A1
[14:50:27] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[14:50:27] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[14:50:27] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[14:50:27] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[14:50:27] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[14:50:27] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[14:50:27] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[14:50:27] ==================== [PASSED] xe_wa_gt =====================
[14:50:27] ====================== [PASSED] xe_wa ======================
[14:50:27] ============================================================
[14:50:27] Testing complete. Ran 715 tests: passed: 697, skipped: 18
[14:50:27] Elapsed time: 36.204s total, 4.317s configuring, 31.221s building, 0.653s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[14:50:27] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:50:29] 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
[14:50:53] Starting KUnit Kernel (1/1)...
[14:50:53] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:50:53] ============ drm_test_pick_cmdline (2 subtests) ============
[14:50:53] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[14:50:53] =============== drm_test_pick_cmdline_named ===============
[14:50:53] [PASSED] NTSC
[14:50:53] [PASSED] NTSC-J
[14:50:53] [PASSED] PAL
[14:50:53] [PASSED] PAL-M
[14:50:53] =========== [PASSED] drm_test_pick_cmdline_named ===========
[14:50:53] ============== [PASSED] drm_test_pick_cmdline ==============
[14:50:53] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[14:50:53] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[14:50:53] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[14:50:53] =========== drm_validate_clone_mode (2 subtests) ===========
[14:50:53] ============== drm_test_check_in_clone_mode ===============
[14:50:53] [PASSED] in_clone_mode
[14:50:53] [PASSED] not_in_clone_mode
[14:50:53] ========== [PASSED] drm_test_check_in_clone_mode ===========
[14:50:53] =============== drm_test_check_valid_clones ===============
[14:50:53] [PASSED] not_in_clone_mode
[14:50:53] [PASSED] valid_clone
[14:50:53] [PASSED] invalid_clone
[14:50:53] =========== [PASSED] drm_test_check_valid_clones ===========
[14:50:53] ============= [PASSED] drm_validate_clone_mode =============
[14:50:53] ============= drm_validate_modeset (1 subtest) =============
[14:50:53] [PASSED] drm_test_check_connector_changed_modeset
[14:50:53] ============== [PASSED] drm_validate_modeset ===============
[14:50:53] ====== drm_test_bridge_get_current_state (2 subtests) ======
[14:50:53] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[14:50:53] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[14:50:53] ======== [PASSED] drm_test_bridge_get_current_state ========
[14:50:53] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[14:50:53] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[14:50:53] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[14:50:53] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[14:50:53] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[14:50:53] ============== drm_bridge_alloc (2 subtests) ===============
[14:50:53] [PASSED] drm_test_drm_bridge_alloc_basic
[14:50:53] [PASSED] drm_test_drm_bridge_alloc_get_put
[14:50:53] ================ [PASSED] drm_bridge_alloc =================
[14:50:53] ============= drm_cmdline_parser (40 subtests) =============
[14:50:53] [PASSED] drm_test_cmdline_force_d_only
[14:50:53] [PASSED] drm_test_cmdline_force_D_only_dvi
[14:50:53] [PASSED] drm_test_cmdline_force_D_only_hdmi
[14:50:53] [PASSED] drm_test_cmdline_force_D_only_not_digital
[14:50:53] [PASSED] drm_test_cmdline_force_e_only
[14:50:53] [PASSED] drm_test_cmdline_res
[14:50:53] [PASSED] drm_test_cmdline_res_vesa
[14:50:53] [PASSED] drm_test_cmdline_res_vesa_rblank
[14:50:53] [PASSED] drm_test_cmdline_res_rblank
[14:50:53] [PASSED] drm_test_cmdline_res_bpp
[14:50:53] [PASSED] drm_test_cmdline_res_refresh
[14:50:53] [PASSED] drm_test_cmdline_res_bpp_refresh
[14:50:53] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[14:50:53] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[14:50:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[14:50:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[14:50:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[14:50:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[14:50:53] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[14:50:53] [PASSED] drm_test_cmdline_res_margins_force_on
[14:50:53] [PASSED] drm_test_cmdline_res_vesa_margins
[14:50:53] [PASSED] drm_test_cmdline_name
[14:50:53] [PASSED] drm_test_cmdline_name_bpp
[14:50:53] [PASSED] drm_test_cmdline_name_option
[14:50:53] [PASSED] drm_test_cmdline_name_bpp_option
[14:50:53] [PASSED] drm_test_cmdline_rotate_0
[14:50:53] [PASSED] drm_test_cmdline_rotate_90
[14:50:53] [PASSED] drm_test_cmdline_rotate_180
[14:50:53] [PASSED] drm_test_cmdline_rotate_270
[14:50:53] [PASSED] drm_test_cmdline_hmirror
[14:50:53] [PASSED] drm_test_cmdline_vmirror
[14:50:53] [PASSED] drm_test_cmdline_margin_options
[14:50:53] [PASSED] drm_test_cmdline_multiple_options
[14:50:53] [PASSED] drm_test_cmdline_bpp_extra_and_option
[14:50:53] [PASSED] drm_test_cmdline_extra_and_option
[14:50:53] [PASSED] drm_test_cmdline_freestanding_options
[14:50:53] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[14:50:53] [PASSED] drm_test_cmdline_panel_orientation
[14:50:53] ================ drm_test_cmdline_invalid =================
[14:50:53] [PASSED] margin_only
[14:50:53] [PASSED] interlace_only
[14:50:53] [PASSED] res_missing_x
[14:50:53] [PASSED] res_missing_y
[14:50:53] [PASSED] res_bad_y
[14:50:53] [PASSED] res_missing_y_bpp
[14:50:53] [PASSED] res_bad_bpp
[14:50:53] [PASSED] res_bad_refresh
[14:50:53] [PASSED] res_bpp_refresh_force_on_off
[14:50:53] [PASSED] res_invalid_mode
[14:50:53] [PASSED] res_bpp_wrong_place_mode
[14:50:53] [PASSED] name_bpp_refresh
[14:50:53] [PASSED] name_refresh
[14:50:53] [PASSED] name_refresh_wrong_mode
[14:50:53] [PASSED] name_refresh_invalid_mode
[14:50:53] [PASSED] rotate_multiple
[14:50:53] [PASSED] rotate_invalid_val
[14:50:53] [PASSED] rotate_truncated
[14:50:53] [PASSED] invalid_option
[14:50:53] [PASSED] invalid_tv_option
[14:50:53] [PASSED] truncated_tv_option
[14:50:53] ============ [PASSED] drm_test_cmdline_invalid =============
[14:50:53] =============== drm_test_cmdline_tv_options ===============
[14:50:53] [PASSED] NTSC
[14:50:53] [PASSED] NTSC_443
[14:50:53] [PASSED] NTSC_J
[14:50:53] [PASSED] PAL
[14:50:53] [PASSED] PAL_M
[14:50:53] [PASSED] PAL_N
[14:50:53] [PASSED] SECAM
[14:50:53] [PASSED] MONO_525
[14:50:53] [PASSED] MONO_625
[14:50:53] =========== [PASSED] drm_test_cmdline_tv_options ===========
[14:50:53] =============== [PASSED] drm_cmdline_parser ================
[14:50:53] ========== drmm_connector_hdmi_init (20 subtests) ==========
[14:50:53] [PASSED] drm_test_connector_hdmi_init_valid
[14:50:53] [PASSED] drm_test_connector_hdmi_init_bpc_8
[14:50:53] [PASSED] drm_test_connector_hdmi_init_bpc_10
[14:50:53] [PASSED] drm_test_connector_hdmi_init_bpc_12
[14:50:53] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[14:50:53] [PASSED] drm_test_connector_hdmi_init_bpc_null
[14:50:53] [PASSED] drm_test_connector_hdmi_init_formats_empty
[14:50:53] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[14:50:53] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[14:50:53] [PASSED] supported_formats=0x9 yuv420_allowed=1
[14:50:53] [PASSED] supported_formats=0x9 yuv420_allowed=0
[14:50:53] [PASSED] supported_formats=0x5 yuv420_allowed=1
[14:50:53] [PASSED] supported_formats=0x5 yuv420_allowed=0
[14:50:53] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[14:50:53] [PASSED] drm_test_connector_hdmi_init_null_ddc
[14:50:53] [PASSED] drm_test_connector_hdmi_init_null_product
[14:50:53] [PASSED] drm_test_connector_hdmi_init_null_vendor
[14:50:53] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[14:50:53] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[14:50:53] [PASSED] drm_test_connector_hdmi_init_product_valid
[14:50:53] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[14:50:53] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[14:50:53] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[14:50:53] ========= drm_test_connector_hdmi_init_type_valid =========
[14:50:53] [PASSED] HDMI-A
[14:50:53] [PASSED] HDMI-B
[14:50:53] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[14:50:53] ======== drm_test_connector_hdmi_init_type_invalid ========
[14:50:53] [PASSED] Unknown
[14:50:53] [PASSED] VGA
[14:50:53] [PASSED] DVI-I
[14:50:53] [PASSED] DVI-D
[14:50:53] [PASSED] DVI-A
[14:50:53] [PASSED] Composite
[14:50:53] [PASSED] SVIDEO
[14:50:53] [PASSED] LVDS
[14:50:53] [PASSED] Component
[14:50:53] [PASSED] DIN
[14:50:53] [PASSED] DP
[14:50:53] [PASSED] TV
[14:50:53] [PASSED] eDP
[14:50:53] [PASSED] Virtual
[14:50:53] [PASSED] DSI
[14:50:53] [PASSED] DPI
[14:50:53] [PASSED] Writeback
[14:50:53] [PASSED] SPI
[14:50:53] [PASSED] USB
[14:50:53] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[14:50:53] ============ [PASSED] drmm_connector_hdmi_init =============
[14:50:53] ============= drmm_connector_init (3 subtests) =============
[14:50:53] [PASSED] drm_test_drmm_connector_init
[14:50:53] [PASSED] drm_test_drmm_connector_init_null_ddc
[14:50:53] ========= drm_test_drmm_connector_init_type_valid =========
[14:50:53] [PASSED] Unknown
[14:50:53] [PASSED] VGA
[14:50:53] [PASSED] DVI-I
[14:50:53] [PASSED] DVI-D
[14:50:53] [PASSED] DVI-A
[14:50:53] [PASSED] Composite
[14:50:53] [PASSED] SVIDEO
[14:50:53] [PASSED] LVDS
[14:50:53] [PASSED] Component
[14:50:53] [PASSED] DIN
[14:50:53] [PASSED] DP
[14:50:53] [PASSED] HDMI-A
[14:50:53] [PASSED] HDMI-B
[14:50:53] [PASSED] TV
[14:50:53] [PASSED] eDP
[14:50:53] [PASSED] Virtual
[14:50:53] [PASSED] DSI
[14:50:53] [PASSED] DPI
[14:50:53] [PASSED] Writeback
[14:50:53] [PASSED] SPI
[14:50:53] [PASSED] USB
[14:50:53] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[14:50:53] =============== [PASSED] drmm_connector_init ===============
[14:50:53] ========= drm_connector_dynamic_init (6 subtests) ==========
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_init
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_init_properties
[14:50:53] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[14:50:53] [PASSED] Unknown
[14:50:53] [PASSED] VGA
[14:50:53] [PASSED] DVI-I
[14:50:53] [PASSED] DVI-D
[14:50:53] [PASSED] DVI-A
[14:50:53] [PASSED] Composite
[14:50:53] [PASSED] SVIDEO
[14:50:53] [PASSED] LVDS
[14:50:53] [PASSED] Component
[14:50:53] [PASSED] DIN
[14:50:53] [PASSED] DP
[14:50:53] [PASSED] HDMI-A
[14:50:53] [PASSED] HDMI-B
[14:50:53] [PASSED] TV
[14:50:53] [PASSED] eDP
[14:50:53] [PASSED] Virtual
[14:50:53] [PASSED] DSI
[14:50:53] [PASSED] DPI
[14:50:53] [PASSED] Writeback
[14:50:53] [PASSED] SPI
[14:50:53] [PASSED] USB
[14:50:53] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[14:50:53] ======== drm_test_drm_connector_dynamic_init_name =========
[14:50:53] [PASSED] Unknown
[14:50:53] [PASSED] VGA
[14:50:53] [PASSED] DVI-I
[14:50:53] [PASSED] DVI-D
[14:50:53] [PASSED] DVI-A
[14:50:53] [PASSED] Composite
[14:50:53] [PASSED] SVIDEO
[14:50:53] [PASSED] LVDS
[14:50:53] [PASSED] Component
[14:50:53] [PASSED] DIN
[14:50:53] [PASSED] DP
[14:50:53] [PASSED] HDMI-A
[14:50:53] [PASSED] HDMI-B
[14:50:53] [PASSED] TV
[14:50:53] [PASSED] eDP
[14:50:53] [PASSED] Virtual
[14:50:53] [PASSED] DSI
[14:50:53] [PASSED] DPI
[14:50:53] [PASSED] Writeback
[14:50:53] [PASSED] SPI
[14:50:53] [PASSED] USB
[14:50:53] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[14:50:53] =========== [PASSED] drm_connector_dynamic_init ============
[14:50:53] ==== drm_connector_dynamic_register_early (4 subtests) =====
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[14:50:53] ====== [PASSED] drm_connector_dynamic_register_early =======
[14:50:53] ======= drm_connector_dynamic_register (7 subtests) ========
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[14:50:53] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[14:50:53] ========= [PASSED] drm_connector_dynamic_register ==========
[14:50:53] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[14:50:53] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[14:50:53] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[14:50:53] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[14:50:53] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[14:50:53] ========== drm_test_get_tv_mode_from_name_valid ===========
[14:50:53] [PASSED] NTSC
[14:50:53] [PASSED] NTSC-443
[14:50:53] [PASSED] NTSC-J
[14:50:53] [PASSED] PAL
[14:50:53] [PASSED] PAL-M
[14:50:53] [PASSED] PAL-N
[14:50:53] [PASSED] SECAM
[14:50:53] [PASSED] Mono
[14:50:53] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[14:50:53] [PASSED] drm_test_get_tv_mode_from_name_truncated
[14:50:53] ============ [PASSED] drm_get_tv_mode_from_name ============
[14:50:53] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[14:50:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[14:50:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[14:50:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[14:50:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[14:50:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[14:50:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[14:50:53] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[14:50:53] [PASSED] VIC 96
[14:50:53] [PASSED] VIC 97
[14:50:53] [PASSED] VIC 101
[14:50:53] [PASSED] VIC 102
[14:50:53] [PASSED] VIC 106
[14:50:53] [PASSED] VIC 107
[14:50:53] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[14:50:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[14:50:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[14:50:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[14:50:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[14:50:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[14:50:53] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[14:50:53] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[14:50:53] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[14:50:53] [PASSED] Automatic
[14:50:53] [PASSED] Full
[14:50:53] [PASSED] Limited 16:235
[14:50:53] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[14:50:53] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[14:50:53] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[14:50:53] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[14:50:53] === drm_test_drm_hdmi_connector_get_output_format_name ====
[14:50:53] [PASSED] RGB
[14:50:53] [PASSED] YUV 4:2:0
[14:50:53] [PASSED] YUV 4:2:2
[14:50:53] [PASSED] YUV 4:4:4
[14:50:53] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[14:50:53] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[14:50:53] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[14:50:53] ============= drm_damage_helper (21 subtests) ==============
[14:50:53] [PASSED] drm_test_damage_iter_no_damage
[14:50:53] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[14:50:53] [PASSED] drm_test_damage_iter_no_damage_src_moved
[14:50:53] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[14:50:53] [PASSED] drm_test_damage_iter_no_damage_not_visible
[14:50:53] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[14:50:53] [PASSED] drm_test_damage_iter_no_damage_no_fb
[14:50:53] [PASSED] drm_test_damage_iter_simple_damage
[14:50:53] [PASSED] drm_test_damage_iter_single_damage
[14:50:53] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[14:50:53] [PASSED] drm_test_damage_iter_single_damage_outside_src
[14:50:53] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[14:50:53] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[14:50:53] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[14:50:53] [PASSED] drm_test_damage_iter_single_damage_src_moved
[14:50:53] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[14:50:53] [PASSED] drm_test_damage_iter_damage
[14:50:53] [PASSED] drm_test_damage_iter_damage_one_intersect
[14:50:53] [PASSED] drm_test_damage_iter_damage_one_outside
[14:50:53] [PASSED] drm_test_damage_iter_damage_src_moved
[14:50:53] [PASSED] drm_test_damage_iter_damage_not_visible
[14:50:53] ================ [PASSED] drm_damage_helper ================
[14:50:53] ============== drm_dp_mst_helper (3 subtests) ==============
[14:50:53] ============== drm_test_dp_mst_calc_pbn_mode ==============
[14:50:53] [PASSED] Clock 154000 BPP 30 DSC disabled
[14:50:53] [PASSED] Clock 234000 BPP 30 DSC disabled
[14:50:53] [PASSED] Clock 297000 BPP 24 DSC disabled
[14:50:53] [PASSED] Clock 332880 BPP 24 DSC enabled
[14:50:53] [PASSED] Clock 324540 BPP 24 DSC enabled
[14:50:53] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[14:50:53] ============== drm_test_dp_mst_calc_pbn_div ===============
[14:50:53] [PASSED] Link rate 2000000 lane count 4
[14:50:53] [PASSED] Link rate 2000000 lane count 2
[14:50:53] [PASSED] Link rate 2000000 lane count 1
[14:50:53] [PASSED] Link rate 1350000 lane count 4
[14:50:53] [PASSED] Link rate 1350000 lane count 2
[14:50:53] [PASSED] Link rate 1350000 lane count 1
[14:50:53] [PASSED] Link rate 1000000 lane count 4
[14:50:53] [PASSED] Link rate 1000000 lane count 2
[14:50:53] [PASSED] Link rate 1000000 lane count 1
[14:50:53] [PASSED] Link rate 810000 lane count 4
[14:50:53] [PASSED] Link rate 810000 lane count 2
[14:50:53] [PASSED] Link rate 810000 lane count 1
[14:50:53] [PASSED] Link rate 540000 lane count 4
[14:50:53] [PASSED] Link rate 540000 lane count 2
[14:50:53] [PASSED] Link rate 540000 lane count 1
[14:50:53] [PASSED] Link rate 270000 lane count 4
[14:50:53] [PASSED] Link rate 270000 lane count 2
[14:50:53] [PASSED] Link rate 270000 lane count 1
[14:50:53] [PASSED] Link rate 162000 lane count 4
[14:50:53] [PASSED] Link rate 162000 lane count 2
[14:50:53] [PASSED] Link rate 162000 lane count 1
[14:50:53] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[14:50:53] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[14:50:53] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[14:50:53] [PASSED] DP_POWER_UP_PHY with port number
[14:50:53] [PASSED] DP_POWER_DOWN_PHY with port number
[14:50:53] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[14:50:53] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[14:50:53] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[14:50:53] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[14:50:53] [PASSED] DP_QUERY_PAYLOAD with port number
[14:50:53] [PASSED] DP_QUERY_PAYLOAD with VCPI
[14:50:53] [PASSED] DP_REMOTE_DPCD_READ with port number
[14:50:53] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[14:50:53] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[14:50:53] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[14:50:53] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[14:50:53] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[14:50:53] [PASSED] DP_REMOTE_I2C_READ with port number
[14:50:53] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[14:50:53] [PASSED] DP_REMOTE_I2C_READ with transactions array
[14:50:53] [PASSED] DP_REMOTE_I2C_WRITE with port number
[14:50:53] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[14:50:53] [PASSED] DP_REMOTE_I2C_WRITE with data array
[14:50:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[14:50:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[14:50:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[14:50:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[14:50:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[14:50:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[14:50:53] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[14:50:53] ================ [PASSED] drm_dp_mst_helper ================
[14:50:53] ================== drm_exec (7 subtests) ===================
[14:50:53] [PASSED] sanitycheck
[14:50:53] [PASSED] test_lock
[14:50:53] [PASSED] test_lock_unlock
[14:50:53] [PASSED] test_duplicates
[14:50:53] [PASSED] test_prepare
[14:50:53] [PASSED] test_prepare_array
[14:50:53] [PASSED] test_multiple_loops
[14:50:53] ==================== [PASSED] drm_exec =====================
[14:50:53] =========== drm_format_helper_test (17 subtests) ===========
[14:50:53] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[14:50:53] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[14:50:53] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[14:50:53] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[14:50:53] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[14:50:53] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[14:50:53] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[14:50:53] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[14:50:53] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[14:50:53] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[14:50:53] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[14:50:53] ============== drm_test_fb_xrgb8888_to_mono ===============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[14:50:53] ==================== drm_test_fb_swab =====================
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ================ [PASSED] drm_test_fb_swab =================
[14:50:53] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[14:50:53] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[14:50:53] [PASSED] single_pixel_source_buffer
[14:50:53] [PASSED] single_pixel_clip_rectangle
[14:50:53] [PASSED] well_known_colors
[14:50:53] [PASSED] destination_pitch
[14:50:53] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[14:50:53] ================= drm_test_fb_clip_offset =================
[14:50:53] [PASSED] pass through
[14:50:53] [PASSED] horizontal offset
[14:50:53] [PASSED] vertical offset
[14:50:53] [PASSED] horizontal and vertical offset
[14:50:53] [PASSED] horizontal offset (custom pitch)
[14:50:53] [PASSED] vertical offset (custom pitch)
[14:50:53] [PASSED] horizontal and vertical offset (custom pitch)
[14:50:53] ============= [PASSED] drm_test_fb_clip_offset =============
[14:50:53] =================== drm_test_fb_memcpy ====================
[14:50:53] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[14:50:53] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[14:50:53] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[14:50:53] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[14:50:53] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[14:50:53] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[14:50:53] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[14:50:53] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[14:50:53] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[14:50:53] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[14:50:53] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[14:50:53] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[14:50:53] =============== [PASSED] drm_test_fb_memcpy ================
[14:50:53] ============= [PASSED] drm_format_helper_test ==============
[14:50:53] ================= drm_format (18 subtests) =================
[14:50:53] [PASSED] drm_test_format_block_width_invalid
[14:50:53] [PASSED] drm_test_format_block_width_one_plane
[14:50:53] [PASSED] drm_test_format_block_width_two_plane
[14:50:53] [PASSED] drm_test_format_block_width_three_plane
[14:50:53] [PASSED] drm_test_format_block_width_tiled
[14:50:53] [PASSED] drm_test_format_block_height_invalid
[14:50:53] [PASSED] drm_test_format_block_height_one_plane
[14:50:53] [PASSED] drm_test_format_block_height_two_plane
[14:50:53] [PASSED] drm_test_format_block_height_three_plane
[14:50:53] [PASSED] drm_test_format_block_height_tiled
[14:50:53] [PASSED] drm_test_format_min_pitch_invalid
[14:50:53] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[14:50:53] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[14:50:53] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[14:50:53] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[14:50:53] [PASSED] drm_test_format_min_pitch_two_plane
[14:50:53] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[14:50:53] [PASSED] drm_test_format_min_pitch_tiled
[14:50:53] =================== [PASSED] drm_format ====================
[14:50:53] ============== drm_framebuffer (10 subtests) ===============
[14:50:53] ========== drm_test_framebuffer_check_src_coords ==========
[14:50:53] [PASSED] Success: source fits into fb
[14:50:53] [PASSED] Fail: overflowing fb with x-axis coordinate
[14:50:53] [PASSED] Fail: overflowing fb with y-axis coordinate
[14:50:53] [PASSED] Fail: overflowing fb with source width
[14:50:53] [PASSED] Fail: overflowing fb with source height
[14:50:53] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[14:50:53] [PASSED] drm_test_framebuffer_cleanup
[14:50:53] =============== drm_test_framebuffer_create ===============
[14:50:53] [PASSED] ABGR8888 normal sizes
[14:50:53] [PASSED] ABGR8888 max sizes
[14:50:53] [PASSED] ABGR8888 pitch greater than min required
[14:50:53] [PASSED] ABGR8888 pitch less than min required
[14:50:53] [PASSED] ABGR8888 Invalid width
[14:50:53] [PASSED] ABGR8888 Invalid buffer handle
[14:50:53] [PASSED] No pixel format
[14:50:53] [PASSED] ABGR8888 Width 0
[14:50:53] [PASSED] ABGR8888 Height 0
[14:50:53] [PASSED] ABGR8888 Out of bound height * pitch combination
[14:50:53] [PASSED] ABGR8888 Large buffer offset
[14:50:53] [PASSED] ABGR8888 Buffer offset for inexistent plane
[14:50:53] [PASSED] ABGR8888 Invalid flag
[14:50:53] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[14:50:53] [PASSED] ABGR8888 Valid buffer modifier
[14:50:53] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[14:50:53] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[14:50:53] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[14:50:53] [PASSED] NV12 Normal sizes
[14:50:53] [PASSED] NV12 Max sizes
[14:50:53] [PASSED] NV12 Invalid pitch
[14:50:53] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[14:50:53] [PASSED] NV12 different modifier per-plane
[14:50:53] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[14:50:53] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[14:50:53] [PASSED] NV12 Modifier for inexistent plane
[14:50:53] [PASSED] NV12 Handle for inexistent plane
[14:50:53] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[14:50:53] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[14:50:53] [PASSED] YVU420 Normal sizes
[14:50:53] [PASSED] YVU420 Max sizes
[14:50:53] [PASSED] YVU420 Invalid pitch
[14:50:53] [PASSED] YVU420 Different pitches
[14:50:53] [PASSED] YVU420 Different buffer offsets/pitches
[14:50:53] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[14:50:53] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[14:50:53] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[14:50:53] [PASSED] YVU420 Valid modifier
[14:50:53] [PASSED] YVU420 Different modifiers per plane
[14:50:53] [PASSED] YVU420 Modifier for inexistent plane
[14:50:53] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[14:50:53] [PASSED] X0L2 Normal sizes
[14:50:53] [PASSED] X0L2 Max sizes
[14:50:53] [PASSED] X0L2 Invalid pitch
[14:50:53] [PASSED] X0L2 Pitch greater than minimum required
[14:50:53] [PASSED] X0L2 Handle for inexistent plane
[14:50:53] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[14:50:53] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[14:50:53] [PASSED] X0L2 Valid modifier
[14:50:53] [PASSED] X0L2 Modifier for inexistent plane
[14:50:53] =========== [PASSED] drm_test_framebuffer_create ===========
[14:50:53] [PASSED] drm_test_framebuffer_free
[14:50:53] [PASSED] drm_test_framebuffer_init
[14:50:53] [PASSED] drm_test_framebuffer_init_bad_format
[14:50:53] [PASSED] drm_test_framebuffer_init_dev_mismatch
[14:50:53] [PASSED] drm_test_framebuffer_lookup
[14:50:53] [PASSED] drm_test_framebuffer_lookup_inexistent
[14:50:53] [PASSED] drm_test_framebuffer_modifiers_not_supported
[14:50:53] ================= [PASSED] drm_framebuffer =================
[14:50:53] ================ drm_gem_shmem (8 subtests) ================
[14:50:53] [PASSED] drm_gem_shmem_test_obj_create
[14:50:53] [PASSED] drm_gem_shmem_test_obj_create_private
[14:50:53] [PASSED] drm_gem_shmem_test_pin_pages
[14:50:53] [PASSED] drm_gem_shmem_test_vmap
[14:50:53] [PASSED] drm_gem_shmem_test_get_sg_table
[14:50:53] [PASSED] drm_gem_shmem_test_get_pages_sgt
[14:50:53] [PASSED] drm_gem_shmem_test_madvise
[14:50:53] [PASSED] drm_gem_shmem_test_purge
[14:50:53] ================== [PASSED] drm_gem_shmem ==================
[14:50:53] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[14:50:53] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[14:50:53] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[14:50:53] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[14:50:53] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[14:50:53] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[14:50:53] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[14:50:53] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[14:50:53] [PASSED] Automatic
[14:50:53] [PASSED] Full
[14:50:53] [PASSED] Limited 16:235
[14:50:53] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[14:50:53] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[14:50:53] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[14:50:53] [PASSED] drm_test_check_disable_connector
[14:50:53] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[14:50:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[14:50:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[14:50:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[14:50:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[14:50:53] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[14:50:53] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[14:50:53] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[14:50:53] [PASSED] drm_test_check_output_bpc_dvi
[14:50:53] [PASSED] drm_test_check_output_bpc_format_vic_1
[14:50:53] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[14:50:53] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[14:50:53] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[14:50:53] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[14:50:53] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[14:50:53] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[14:50:53] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[14:50:53] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[14:50:53] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[14:50:53] [PASSED] drm_test_check_broadcast_rgb_value
[14:50:53] [PASSED] drm_test_check_bpc_8_value
[14:50:53] [PASSED] drm_test_check_bpc_10_value
[14:50:53] [PASSED] drm_test_check_bpc_12_value
[14:50:53] [PASSED] drm_test_check_format_value
[14:50:53] [PASSED] drm_test_check_tmds_char_value
[14:50:53] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[14:50:53] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[14:50:53] [PASSED] drm_test_check_mode_valid
[14:50:53] [PASSED] drm_test_check_mode_valid_reject
[14:50:53] [PASSED] drm_test_check_mode_valid_reject_rate
[14:50:53] [PASSED] drm_test_check_mode_valid_reject_max_clock
[14:50:53] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[14:50:53] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[14:50:53] [PASSED] drm_test_check_infoframes
[14:50:53] [PASSED] drm_test_check_reject_avi_infoframe
[14:50:53] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[14:50:53] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[14:50:53] [PASSED] drm_test_check_reject_audio_infoframe
[14:50:53] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[14:50:53] ================= drm_managed (2 subtests) =================
[14:50:53] [PASSED] drm_test_managed_release_action
[14:50:53] [PASSED] drm_test_managed_run_action
[14:50:53] =================== [PASSED] drm_managed ===================
[14:50:53] =================== drm_mm (6 subtests) ====================
[14:50:53] [PASSED] drm_test_mm_init
[14:50:53] [PASSED] drm_test_mm_debug
[14:50:53] [PASSED] drm_test_mm_align32
[14:50:53] [PASSED] drm_test_mm_align64
[14:50:53] [PASSED] drm_test_mm_lowest
[14:50:53] [PASSED] drm_test_mm_highest
[14:50:53] ===================== [PASSED] drm_mm ======================
[14:50:53] ============= drm_modes_analog_tv (5 subtests) =============
[14:50:53] [PASSED] drm_test_modes_analog_tv_mono_576i
[14:50:53] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[14:50:53] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[14:50:53] [PASSED] drm_test_modes_analog_tv_pal_576i
[14:50:53] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[14:50:53] =============== [PASSED] drm_modes_analog_tv ===============
[14:50:53] ============== drm_plane_helper (2 subtests) ===============
[14:50:53] =============== drm_test_check_plane_state ================
[14:50:53] [PASSED] clipping_simple
[14:50:53] [PASSED] clipping_rotate_reflect
[14:50:53] [PASSED] positioning_simple
[14:50:53] [PASSED] upscaling
[14:50:53] [PASSED] downscaling
[14:50:53] [PASSED] rounding1
[14:50:53] [PASSED] rounding2
[14:50:53] [PASSED] rounding3
[14:50:53] [PASSED] rounding4
[14:50:53] =========== [PASSED] drm_test_check_plane_state ============
[14:50:53] =========== drm_test_check_invalid_plane_state ============
[14:50:53] [PASSED] positioning_invalid
[14:50:53] [PASSED] upscaling_invalid
[14:50:53] [PASSED] downscaling_invalid
[14:50:53] ======= [PASSED] drm_test_check_invalid_plane_state ========
[14:50:53] ================ [PASSED] drm_plane_helper =================
[14:50:53] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[14:50:53] ====== drm_test_connector_helper_tv_get_modes_check =======
[14:50:53] [PASSED] None
[14:50:53] [PASSED] PAL
[14:50:53] [PASSED] NTSC
[14:50:53] [PASSED] Both, NTSC Default
[14:50:53] [PASSED] Both, PAL Default
[14:50:53] [PASSED] Both, NTSC Default, with PAL on command-line
[14:50:53] [PASSED] Both, PAL Default, with NTSC on command-line
[14:50:53] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[14:50:53] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[14:50:53] ================== drm_rect (9 subtests) ===================
[14:50:53] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[14:50:53] [PASSED] drm_test_rect_clip_scaled_not_clipped
[14:50:53] [PASSED] drm_test_rect_clip_scaled_clipped
[14:50:53] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[14:50:53] ================= drm_test_rect_intersect =================
[14:50:53] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[14:50:53] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[14:50:53] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[14:50:53] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[14:50:53] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[14:50:53] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[14:50:53] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[14:50:53] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[14:50:53] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[14:50:53] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[14:50:53] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[14:50:53] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[14:50:53] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[14:50:53] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[14:50:53] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[14:50:53] ============= [PASSED] drm_test_rect_intersect =============
[14:50:53] ================ drm_test_rect_calc_hscale ================
[14:50:53] [PASSED] normal use
[14:50:53] [PASSED] out of max range
[14:50:53] [PASSED] out of min range
[14:50:53] [PASSED] zero dst
[14:50:53] [PASSED] negative src
[14:50:53] [PASSED] negative dst
[14:50:53] ============ [PASSED] drm_test_rect_calc_hscale ============
[14:50:53] ================ drm_test_rect_calc_vscale ================
[14:50:53] [PASSED] normal use
[14:50:53] [PASSED] out of max range
[14:50:53] [PASSED] out of min range
[14:50:53] [PASSED] zero dst
[14:50:53] [PASSED] negative src
[14:50:53] [PASSED] negative dst
[14:50:53] ============ [PASSED] drm_test_rect_calc_vscale ============
[14:50:53] ================== drm_test_rect_rotate ===================
[14:50:53] [PASSED] reflect-x
[14:50:53] [PASSED] reflect-y
[14:50:53] [PASSED] rotate-0
[14:50:53] [PASSED] rotate-90
[14:50:53] [PASSED] rotate-180
[14:50:53] [PASSED] rotate-270
[14:50:53] ============== [PASSED] drm_test_rect_rotate ===============
[14:50:53] ================ drm_test_rect_rotate_inv =================
[14:50:53] [PASSED] reflect-x
[14:50:53] [PASSED] reflect-y
[14:50:53] [PASSED] rotate-0
[14:50:53] [PASSED] rotate-90
[14:50:53] [PASSED] rotate-180
[14:50:53] [PASSED] rotate-270
[14:50:53] ============ [PASSED] drm_test_rect_rotate_inv =============
[14:50:53] ==================== [PASSED] drm_rect =====================
[14:50:53] ============ drm_sysfb_modeset_test (1 subtest) ============
[14:50:53] ============ drm_test_sysfb_build_fourcc_list =============
[14:50:53] [PASSED] no native formats
[14:50:53] [PASSED] XRGB8888 as native format
[14:50:53] [PASSED] remove duplicates
[14:50:53] [PASSED] convert alpha formats
[14:50:53] [PASSED] random formats
[14:50:53] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[14:50:53] ============= [PASSED] drm_sysfb_modeset_test ==============
[14:50:53] ================== drm_fixp (2 subtests) ===================
[14:50:53] [PASSED] drm_test_int2fixp
[14:50:53] [PASSED] drm_test_sm2fixp
[14:50:53] ==================== [PASSED] drm_fixp =====================
[14:50:53] ============================================================
[14:50:53] Testing complete. Ran 621 tests: passed: 621
[14:50:53] Elapsed time: 26.145s total, 1.781s configuring, 24.198s building, 0.162s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[14:50:53] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:50:55] 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
[14:51:05] Starting KUnit Kernel (1/1)...
[14:51:05] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:51:05] ================= ttm_device (5 subtests) ==================
[14:51:05] [PASSED] ttm_device_init_basic
[14:51:05] [PASSED] ttm_device_init_multiple
[14:51:05] [PASSED] ttm_device_fini_basic
[14:51:05] [PASSED] ttm_device_init_no_vma_man
[14:51:05] ================== ttm_device_init_pools ==================
[14:51:05] [PASSED] No DMA allocations, no DMA32 required
[14:51:05] [PASSED] DMA allocations, DMA32 required
[14:51:05] [PASSED] No DMA allocations, DMA32 required
[14:51:05] [PASSED] DMA allocations, no DMA32 required
[14:51:05] ============== [PASSED] ttm_device_init_pools ==============
[14:51:05] =================== [PASSED] ttm_device ====================
[14:51:05] ================== ttm_pool (8 subtests) ===================
[14:51:05] ================== ttm_pool_alloc_basic ===================
[14:51:05] [PASSED] One page
[14:51:05] [PASSED] More than one page
[14:51:05] [PASSED] Above the allocation limit
[14:51:05] [PASSED] One page, with coherent DMA mappings enabled
[14:51:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[14:51:05] ============== [PASSED] ttm_pool_alloc_basic ===============
[14:51:05] ============== ttm_pool_alloc_basic_dma_addr ==============
[14:51:05] [PASSED] One page
[14:51:05] [PASSED] More than one page
[14:51:05] [PASSED] Above the allocation limit
[14:51:05] [PASSED] One page, with coherent DMA mappings enabled
[14:51:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[14:51:05] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[14:51:05] [PASSED] ttm_pool_alloc_order_caching_match
[14:51:05] [PASSED] ttm_pool_alloc_caching_mismatch
[14:51:05] [PASSED] ttm_pool_alloc_order_mismatch
[14:51:05] [PASSED] ttm_pool_free_dma_alloc
[14:51:05] [PASSED] ttm_pool_free_no_dma_alloc
[14:51:05] [PASSED] ttm_pool_fini_basic
[14:51:05] ==================== [PASSED] ttm_pool =====================
[14:51:05] ================ ttm_resource (8 subtests) =================
[14:51:05] ================= ttm_resource_init_basic =================
[14:51:05] [PASSED] Init resource in TTM_PL_SYSTEM
[14:51:05] [PASSED] Init resource in TTM_PL_VRAM
[14:51:05] [PASSED] Init resource in a private placement
[14:51:05] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[14:51:05] ============= [PASSED] ttm_resource_init_basic =============
[14:51:05] [PASSED] ttm_resource_init_pinned
[14:51:05] [PASSED] ttm_resource_fini_basic
[14:51:05] [PASSED] ttm_resource_manager_init_basic
[14:51:05] [PASSED] ttm_resource_manager_usage_basic
[14:51:05] [PASSED] ttm_resource_manager_set_used_basic
[14:51:05] [PASSED] ttm_sys_man_alloc_basic
[14:51:05] [PASSED] ttm_sys_man_free_basic
[14:51:05] ================== [PASSED] ttm_resource ===================
[14:51:05] =================== ttm_tt (15 subtests) ===================
[14:51:05] ==================== ttm_tt_init_basic ====================
[14:51:05] [PASSED] Page-aligned size
[14:51:05] [PASSED] Extra pages requested
[14:51:05] ================ [PASSED] ttm_tt_init_basic ================
[14:51:05] [PASSED] ttm_tt_init_misaligned
[14:51:05] [PASSED] ttm_tt_fini_basic
[14:51:05] [PASSED] ttm_tt_fini_sg
[14:51:05] [PASSED] ttm_tt_fini_shmem
[14:51:05] [PASSED] ttm_tt_create_basic
[14:51:05] [PASSED] ttm_tt_create_invalid_bo_type
[14:51:05] [PASSED] ttm_tt_create_ttm_exists
[14:51:05] [PASSED] ttm_tt_create_failed
[14:51:05] [PASSED] ttm_tt_destroy_basic
[14:51:05] [PASSED] ttm_tt_populate_null_ttm
[14:51:05] [PASSED] ttm_tt_populate_populated_ttm
[14:51:05] [PASSED] ttm_tt_unpopulate_basic
[14:51:05] [PASSED] ttm_tt_unpopulate_empty_ttm
[14:51:05] [PASSED] ttm_tt_swapin_basic
[14:51:05] ===================== [PASSED] ttm_tt ======================
[14:51:05] =================== ttm_bo (14 subtests) ===================
[14:51:05] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[14:51:05] [PASSED] Cannot be interrupted and sleeps
[14:51:05] [PASSED] Cannot be interrupted, locks straight away
[14:51:05] [PASSED] Can be interrupted, sleeps
[14:51:05] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[14:51:05] [PASSED] ttm_bo_reserve_locked_no_sleep
[14:51:05] [PASSED] ttm_bo_reserve_no_wait_ticket
[14:51:05] [PASSED] ttm_bo_reserve_double_resv
[14:51:05] [PASSED] ttm_bo_reserve_interrupted
[14:51:05] [PASSED] ttm_bo_reserve_deadlock
[14:51:05] [PASSED] ttm_bo_unreserve_basic
[14:51:05] [PASSED] ttm_bo_unreserve_pinned
[14:51:05] [PASSED] ttm_bo_unreserve_bulk
[14:51:05] [PASSED] ttm_bo_fini_basic
[14:51:05] [PASSED] ttm_bo_fini_shared_resv
[14:51:05] [PASSED] ttm_bo_pin_basic
[14:51:05] [PASSED] ttm_bo_pin_unpin_resource
[14:51:05] [PASSED] ttm_bo_multiple_pin_one_unpin
[14:51:05] ===================== [PASSED] ttm_bo ======================
[14:51:05] ============== ttm_bo_validate (22 subtests) ===============
[14:51:05] ============== ttm_bo_init_reserved_sys_man ===============
[14:51:05] [PASSED] Buffer object for userspace
[14:51:05] [PASSED] Kernel buffer object
[14:51:05] [PASSED] Shared buffer object
[14:51:05] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[14:51:05] ============== ttm_bo_init_reserved_mock_man ==============
[14:51:05] [PASSED] Buffer object for userspace
[14:51:05] [PASSED] Kernel buffer object
[14:51:05] [PASSED] Shared buffer object
[14:51:05] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[14:51:05] [PASSED] ttm_bo_init_reserved_resv
[14:51:05] ================== ttm_bo_validate_basic ==================
[14:51:05] [PASSED] Buffer object for userspace
[14:51:05] [PASSED] Kernel buffer object
[14:51:05] [PASSED] Shared buffer object
[14:51:05] ============== [PASSED] ttm_bo_validate_basic ==============
[14:51:05] [PASSED] ttm_bo_validate_invalid_placement
[14:51:05] ============= ttm_bo_validate_same_placement ==============
[14:51:05] [PASSED] System manager
[14:51:05] [PASSED] VRAM manager
[14:51:05] ========= [PASSED] ttm_bo_validate_same_placement ==========
[14:51:05] [PASSED] ttm_bo_validate_failed_alloc
[14:51:05] [PASSED] ttm_bo_validate_pinned
[14:51:05] [PASSED] ttm_bo_validate_busy_placement
[14:51:05] ================ ttm_bo_validate_multihop =================
[14:51:05] [PASSED] Buffer object for userspace
[14:51:05] [PASSED] Kernel buffer object
[14:51:05] [PASSED] Shared buffer object
[14:51:05] ============ [PASSED] ttm_bo_validate_multihop =============
[14:51:05] ========== ttm_bo_validate_no_placement_signaled ==========
[14:51:05] [PASSED] Buffer object in system domain, no page vector
[14:51:05] [PASSED] Buffer object in system domain with an existing page vector
[14:51:05] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[14:51:05] ======== ttm_bo_validate_no_placement_not_signaled ========
[14:51:05] [PASSED] Buffer object for userspace
[14:51:05] [PASSED] Kernel buffer object
[14:51:05] [PASSED] Shared buffer object
[14:51:05] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[14:51:05] [PASSED] ttm_bo_validate_move_fence_signaled
[14:51:05] ========= ttm_bo_validate_move_fence_not_signaled =========
[14:51:05] [PASSED] Waits for GPU
[14:51:05] [PASSED] Tries to lock straight away
[14:51:05] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[14:51:05] [PASSED] ttm_bo_validate_swapout
[14:51:05] [PASSED] ttm_bo_validate_happy_evict
[14:51:05] [PASSED] ttm_bo_validate_all_pinned_evict
[14:51:05] [PASSED] ttm_bo_validate_allowed_only_evict
[14:51:05] [PASSED] ttm_bo_validate_deleted_evict
[14:51:05] [PASSED] ttm_bo_validate_busy_domain_evict
[14:51:05] [PASSED] ttm_bo_validate_evict_gutting
[14:51:05] [PASSED] ttm_bo_validate_recrusive_evict
[14:51:05] ================= [PASSED] ttm_bo_validate =================
[14:51:05] ============================================================
[14:51:05] Testing complete. Ran 102 tests: passed: 102
[14:51:05] Elapsed time: 11.546s total, 1.715s configuring, 9.615s building, 0.185s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-09 14:44 [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues Rodrigo Vivi
` (2 preceding siblings ...)
2026-06-09 14:51 ` ✓ CI.KUnit: success " Patchwork
@ 2026-06-09 15:34 ` Matthew Brost
2026-06-09 16:05 ` Rodrigo Vivi
2026-06-09 15:46 ` ✓ Xe.CI.BAT: success for series starting with [1/2] " Patchwork
` (3 subsequent siblings)
7 siblings, 1 reply; 17+ messages in thread
From: Matthew Brost @ 2026-06-09 15:34 UTC (permalink / raw)
To: Rodrigo Vivi; +Cc: intel-xe, Matthew Auld, Sanjay Yadav, Himal Prasad Ghimiray
On Tue, Jun 09, 2026 at 10:44:13AM -0400, Rodrigo Vivi wrote:
> Jobs that GuC never scheduled were silently errored out instead of
> triggering a GT reset. Kernel jobs that exhaust all recovery attempts
> should wedge the device rather than silently fail, and userspace VM bind
> queues should stay permanently banned rather than being reset and retried.
>
> The queue is banned early in the timeout handler to signal the G2H
> scheduling-done handler so it wakes the disable-scheduling waiter; without
> it the waiter sleeps the full 5s timeout. For not started works the ban is
> cleared before rearming so that guc_exec_queue_start() can resubmit jobs
> after the GT reset — a banned queue would block resubmission and cause an
> infinite TDR loop.
>
> v2: (Himal) Do it for any queue type, not just kernel/migration
>
> Cc: Matthew Auld <matthew.auld@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
> Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Assisted-by: GitHub-Copilot:claude-sonnet-4.6
> Assisted-by: GitHub-Copilot:claude-opus-4.8
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_guc_submit.c | 41 ++++++++++++++++++++----------
> 1 file changed, 27 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> index 4b247a3019d2..5c40eee41103 100644
> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> @@ -157,6 +157,11 @@ static void set_exec_queue_banned(struct xe_exec_queue *q)
> atomic_or(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> }
>
> +static void clear_exec_queue_banned(struct xe_exec_queue *q)
> +{
> + atomic_andnot(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> +}
> +
> static bool exec_queue_suspended(struct xe_exec_queue *q)
> {
> return atomic_read(&q->guc->state) & EXEC_QUEUE_STATE_SUSPENDED;
> @@ -1363,7 +1368,8 @@ static bool check_timeout(struct xe_exec_queue *q, struct xe_sched_job *job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id);
>
> - return xe_sched_invalidate_job(job, 2);
> + /* GuC never scheduled this job - let the caller trigger a GT reset. */
> + return true;
I think there are some edge cases in the VK conformance tests where,
with a large number of queues, 5 seconds isn’t enough time for queues to
start after submission. Based on a 1 ms timeslice, this would correspond
to more than 5,000 queues.
The current code allows a 10-second window, which is just as arbitrary
as 5s. This isn’t a blocker—just something to consider.
> }
>
> ctx_timestamp = lower_32_bits(xe_lrc_timestamp(q->lrc[0]));
> @@ -1460,6 +1466,12 @@ static void disable_scheduling(struct xe_exec_queue *q, bool immediate)
> G2H_LEN_DW_SCHED_CONTEXT_MODE_SET, 1);
> }
>
> +/* Unstarted jobs (GuC scheduling failure) and kernel queues recover via GT reset */
> +static bool timeout_needs_gt_reset(struct xe_exec_queue *q, struct xe_sched_job *job)
> +{
> + return !xe_sched_job_started(job) || (q->flags & EXEC_QUEUE_FLAG_KERNEL);
> +}
> +
> static enum drm_gpu_sched_stat
> guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> {
> @@ -1608,19 +1620,20 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id, q->flags);
>
> - /*
> - * Kernel jobs should never fail, nor should VM jobs if they do
> - * somethings has gone wrong and the GT needs a reset
> - */
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_KERNEL,
> - "Kernel-submitted job timed out\n");
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
> - "VM job timed out on non-killed execqueue\n");
> - if (!wedged && (q->flags & EXEC_QUEUE_FLAG_KERNEL ||
> - (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)))) {
> - if (!xe_sched_invalidate_job(job, 2)) {
> - xe_gt_reset_async(q->gt);
> - goto rearm;
> + if (!wedged) {
> + if (timeout_needs_gt_reset(q, job)) {
> + /* Retry after a GT reset; wedge a kernel queue once karma is exhausted */
> + if (!xe_sched_invalidate_job(job, 2)) {
> + clear_exec_queue_banned(q);
> + xe_gt_reset_async(q->gt);
> + goto rearm;
> + }
> + if (q->flags & EXEC_QUEUE_FLAG_KERNEL) {
> + xe_gt_WARN(q->gt, true, "Kernel-submitted job timed out\n");
> + xe_device_declare_wedged(gt_to_xe(q->gt));
> + }
This part LGTM. I have seen when a device gets in a bad state and kernel
jobs fail (typically a bug somewhere else in the driver) kernel jobs
just spun forever - I never spent the time trying to fix that. I think
this should fix this problem?
Matt
> + } else if (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)) {
> + xe_gt_WARN(q->gt, true, "VM job timed out on non-killed execqueue\n");
> }
> }
>
> --
> 2.54.0
>
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-09 15:34 ` [PATCH 1/2] " Matthew Brost
@ 2026-06-09 16:05 ` Rodrigo Vivi
2026-06-09 16:12 ` Matthew Brost
0 siblings, 1 reply; 17+ messages in thread
From: Rodrigo Vivi @ 2026-06-09 16:05 UTC (permalink / raw)
To: Matthew Brost; +Cc: intel-xe, Matthew Auld, Sanjay Yadav, Himal Prasad Ghimiray
On Tue, Jun 09, 2026 at 08:34:15AM -0700, Matthew Brost wrote:
> On Tue, Jun 09, 2026 at 10:44:13AM -0400, Rodrigo Vivi wrote:
> > Jobs that GuC never scheduled were silently errored out instead of
> > triggering a GT reset. Kernel jobs that exhaust all recovery attempts
> > should wedge the device rather than silently fail, and userspace VM bind
> > queues should stay permanently banned rather than being reset and retried.
> >
> > The queue is banned early in the timeout handler to signal the G2H
> > scheduling-done handler so it wakes the disable-scheduling waiter; without
> > it the waiter sleeps the full 5s timeout. For not started works the ban is
> > cleared before rearming so that guc_exec_queue_start() can resubmit jobs
> > after the GT reset — a banned queue would block resubmission and cause an
> > infinite TDR loop.
> >
> > v2: (Himal) Do it for any queue type, not just kernel/migration
> >
> > Cc: Matthew Auld <matthew.auld@intel.com>
> > Cc: Matthew Brost <matthew.brost@intel.com>
> > Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
> > Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> > Assisted-by: GitHub-Copilot:claude-sonnet-4.6
> > Assisted-by: GitHub-Copilot:claude-opus-4.8
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > ---
> > drivers/gpu/drm/xe/xe_guc_submit.c | 41 ++++++++++++++++++++----------
> > 1 file changed, 27 insertions(+), 14 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> > index 4b247a3019d2..5c40eee41103 100644
> > --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> > @@ -157,6 +157,11 @@ static void set_exec_queue_banned(struct xe_exec_queue *q)
> > atomic_or(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> > }
> >
> > +static void clear_exec_queue_banned(struct xe_exec_queue *q)
> > +{
> > + atomic_andnot(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> > +}
> > +
> > static bool exec_queue_suspended(struct xe_exec_queue *q)
> > {
> > return atomic_read(&q->guc->state) & EXEC_QUEUE_STATE_SUSPENDED;
> > @@ -1363,7 +1368,8 @@ static bool check_timeout(struct xe_exec_queue *q, struct xe_sched_job *job)
> > xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> > q->guc->id);
> >
> > - return xe_sched_invalidate_job(job, 2);
> > + /* GuC never scheduled this job - let the caller trigger a GT reset. */
> > + return true;
>
> I think there are some edge cases in the VK conformance tests where,
> with a large number of queues, 5 seconds isn’t enough time for queues to
> start after submission. Based on a 1 ms timeslice, this would correspond
> to more than 5,000 queues.
>
> The current code allows a 10-second window, which is just as arbitrary
> as 5s. This isn’t a blocker—just something to consider.
Indeed. The ambiguous 'reasonable time'. But better this then the loop I believe...
>
> > }
> >
> > ctx_timestamp = lower_32_bits(xe_lrc_timestamp(q->lrc[0]));
> > @@ -1460,6 +1466,12 @@ static void disable_scheduling(struct xe_exec_queue *q, bool immediate)
> > G2H_LEN_DW_SCHED_CONTEXT_MODE_SET, 1);
> > }
> >
> > +/* Unstarted jobs (GuC scheduling failure) and kernel queues recover via GT reset */
> > +static bool timeout_needs_gt_reset(struct xe_exec_queue *q, struct xe_sched_job *job)
> > +{
> > + return !xe_sched_job_started(job) || (q->flags & EXEC_QUEUE_FLAG_KERNEL);
> > +}
> > +
> > static enum drm_gpu_sched_stat
> > guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> > {
> > @@ -1608,19 +1620,20 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> > xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> > q->guc->id, q->flags);
> >
> > - /*
> > - * Kernel jobs should never fail, nor should VM jobs if they do
> > - * somethings has gone wrong and the GT needs a reset
> > - */
> > - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_KERNEL,
> > - "Kernel-submitted job timed out\n");
> > - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
> > - "VM job timed out on non-killed execqueue\n");
> > - if (!wedged && (q->flags & EXEC_QUEUE_FLAG_KERNEL ||
> > - (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)))) {
> > - if (!xe_sched_invalidate_job(job, 2)) {
> > - xe_gt_reset_async(q->gt);
> > - goto rearm;
> > + if (!wedged) {
> > + if (timeout_needs_gt_reset(q, job)) {
> > + /* Retry after a GT reset; wedge a kernel queue once karma is exhausted */
> > + if (!xe_sched_invalidate_job(job, 2)) {
> > + clear_exec_queue_banned(q);
> > + xe_gt_reset_async(q->gt);
> > + goto rearm;
> > + }
> > + if (q->flags & EXEC_QUEUE_FLAG_KERNEL) {
> > + xe_gt_WARN(q->gt, true, "Kernel-submitted job timed out\n");
> > + xe_device_declare_wedged(gt_to_xe(q->gt));
> > + }
>
> This part LGTM. I have seen when a device gets in a bad state and kernel
> jobs fail (typically a bug somewhere else in the driver) kernel jobs
> just spun forever - I never spent the time trying to fix that. I think
> this should fix this problem?
That's exactly my hope.
Issues like Linus was facing here:
https://lore.kernel.org/intel-xe/CAHk-=whiv=b+dAvjaZDsZkfUEzjZMSSLExDOWVcbJ0exsCj6_Q@mail.gmail.com/
and some other issues that had similar signatures:
https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/7810
https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/7814
https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/7893
https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/8003
I don't believe that this patch here will solve any of these issues themselves.
At least not the source of the initial GPU Hang.
But at least the machine won't be locked in the infinite TDR handling
with never started jobs, what will allow us to debug the true bug when
that happens...
Thanks,
Rodrigo.
>
> Matt
>
> > + } else if (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)) {
> > + xe_gt_WARN(q->gt, true, "VM job timed out on non-killed execqueue\n");
> > }
> > }
> >
> > --
> > 2.54.0
> >
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-09 16:05 ` Rodrigo Vivi
@ 2026-06-09 16:12 ` Matthew Brost
0 siblings, 0 replies; 17+ messages in thread
From: Matthew Brost @ 2026-06-09 16:12 UTC (permalink / raw)
To: Rodrigo Vivi; +Cc: intel-xe, Matthew Auld, Sanjay Yadav, Himal Prasad Ghimiray
On Tue, Jun 09, 2026 at 12:05:12PM -0400, Rodrigo Vivi wrote:
> On Tue, Jun 09, 2026 at 08:34:15AM -0700, Matthew Brost wrote:
> > On Tue, Jun 09, 2026 at 10:44:13AM -0400, Rodrigo Vivi wrote:
> > > Jobs that GuC never scheduled were silently errored out instead of
> > > triggering a GT reset. Kernel jobs that exhaust all recovery attempts
> > > should wedge the device rather than silently fail, and userspace VM bind
> > > queues should stay permanently banned rather than being reset and retried.
> > >
> > > The queue is banned early in the timeout handler to signal the G2H
> > > scheduling-done handler so it wakes the disable-scheduling waiter; without
> > > it the waiter sleeps the full 5s timeout. For not started works the ban is
> > > cleared before rearming so that guc_exec_queue_start() can resubmit jobs
> > > after the GT reset — a banned queue would block resubmission and cause an
> > > infinite TDR loop.
> > >
> > > v2: (Himal) Do it for any queue type, not just kernel/migration
> > >
> > > Cc: Matthew Auld <matthew.auld@intel.com>
> > > Cc: Matthew Brost <matthew.brost@intel.com>
> > > Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
> > > Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> > > Assisted-by: GitHub-Copilot:claude-sonnet-4.6
> > > Assisted-by: GitHub-Copilot:claude-opus-4.8
> > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > ---
> > > drivers/gpu/drm/xe/xe_guc_submit.c | 41 ++++++++++++++++++++----------
> > > 1 file changed, 27 insertions(+), 14 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> > > index 4b247a3019d2..5c40eee41103 100644
> > > --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> > > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> > > @@ -157,6 +157,11 @@ static void set_exec_queue_banned(struct xe_exec_queue *q)
> > > atomic_or(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> > > }
> > >
> > > +static void clear_exec_queue_banned(struct xe_exec_queue *q)
> > > +{
> > > + atomic_andnot(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> > > +}
> > > +
> > > static bool exec_queue_suspended(struct xe_exec_queue *q)
> > > {
> > > return atomic_read(&q->guc->state) & EXEC_QUEUE_STATE_SUSPENDED;
> > > @@ -1363,7 +1368,8 @@ static bool check_timeout(struct xe_exec_queue *q, struct xe_sched_job *job)
> > > xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> > > q->guc->id);
> > >
> > > - return xe_sched_invalidate_job(job, 2);
> > > + /* GuC never scheduled this job - let the caller trigger a GT reset. */
> > > + return true;
> >
> > I think there are some edge cases in the VK conformance tests where,
> > with a large number of queues, 5 seconds isn’t enough time for queues to
> > start after submission. Based on a 1 ms timeslice, this would correspond
> > to more than 5,000 queues.
> >
> > The current code allows a 10-second window, which is just as arbitrary
> > as 5s. This isn’t a blocker—just something to consider.
>
> Indeed. The ambiguous 'reasonable time'. But better this then the loop I believe...
>
> >
> > > }
> > >
> > > ctx_timestamp = lower_32_bits(xe_lrc_timestamp(q->lrc[0]));
> > > @@ -1460,6 +1466,12 @@ static void disable_scheduling(struct xe_exec_queue *q, bool immediate)
> > > G2H_LEN_DW_SCHED_CONTEXT_MODE_SET, 1);
> > > }
> > >
> > > +/* Unstarted jobs (GuC scheduling failure) and kernel queues recover via GT reset */
> > > +static bool timeout_needs_gt_reset(struct xe_exec_queue *q, struct xe_sched_job *job)
> > > +{
> > > + return !xe_sched_job_started(job) || (q->flags & EXEC_QUEUE_FLAG_KERNEL);
> > > +}
> > > +
> > > static enum drm_gpu_sched_stat
> > > guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> > > {
> > > @@ -1608,19 +1620,20 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> > > xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> > > q->guc->id, q->flags);
> > >
> > > - /*
> > > - * Kernel jobs should never fail, nor should VM jobs if they do
> > > - * somethings has gone wrong and the GT needs a reset
> > > - */
> > > - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_KERNEL,
> > > - "Kernel-submitted job timed out\n");
> > > - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
> > > - "VM job timed out on non-killed execqueue\n");
> > > - if (!wedged && (q->flags & EXEC_QUEUE_FLAG_KERNEL ||
> > > - (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)))) {
> > > - if (!xe_sched_invalidate_job(job, 2)) {
> > > - xe_gt_reset_async(q->gt);
> > > - goto rearm;
> > > + if (!wedged) {
> > > + if (timeout_needs_gt_reset(q, job)) {
> > > + /* Retry after a GT reset; wedge a kernel queue once karma is exhausted */
> > > + if (!xe_sched_invalidate_job(job, 2)) {
> > > + clear_exec_queue_banned(q);
> > > + xe_gt_reset_async(q->gt);
> > > + goto rearm;
> > > + }
> > > + if (q->flags & EXEC_QUEUE_FLAG_KERNEL) {
> > > + xe_gt_WARN(q->gt, true, "Kernel-submitted job timed out\n");
> > > + xe_device_declare_wedged(gt_to_xe(q->gt));
> > > + }
> >
> > This part LGTM. I have seen when a device gets in a bad state and kernel
> > jobs fail (typically a bug somewhere else in the driver) kernel jobs
> > just spun forever - I never spent the time trying to fix that. I think
> > this should fix this problem?
>
> That's exactly my hope.
>
> Issues like Linus was facing here:
> https://lore.kernel.org/intel-xe/CAHk-=whiv=b+dAvjaZDsZkfUEzjZMSSLExDOWVcbJ0exsCj6_Q@mail.gmail.com/
>
> and some other issues that had similar signatures:
>
> https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/7810
> https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/7814
> https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/7893
> https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/8003
>
> I don't believe that this patch here will solve any of these issues themselves.
> At least not the source of the initial GPU Hang.
>
> But at least the machine won't be locked in the infinite TDR handling
> with never started jobs, what will allow us to debug the true bug when
> that happens...
Yes, will be a step in the right direction.
So with that:
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
>
> Thanks,
> Rodrigo.
>
> >
> > Matt
> >
> > > + } else if (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)) {
> > > + xe_gt_WARN(q->gt, true, "VM job timed out on non-killed execqueue\n");
> > > }
> > > }
> > >
> > > --
> > > 2.54.0
> > >
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✓ Xe.CI.BAT: success for series starting with [1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-09 14:44 [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues Rodrigo Vivi
` (3 preceding siblings ...)
2026-06-09 15:34 ` [PATCH 1/2] " Matthew Brost
@ 2026-06-09 15:46 ` Patchwork
2026-06-09 16:16 ` [PATCH 1/2] " Ghimiray, Himal Prasad
` (2 subsequent siblings)
7 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-06-09 15:46 UTC (permalink / raw)
To: Rodrigo Vivi; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 966 bytes --]
== Series Details ==
Series: series starting with [1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
URL : https://patchwork.freedesktop.org/series/168191/
State : success
== Summary ==
CI Bug Log - changes from xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864_BAT -> xe-pw-168191v1_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* IGT: IGT_8955 -> IGT_8956
* Linux: xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864 -> xe-pw-168191v1
IGT_8955: 8955
IGT_8956: 8956
xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864: 1e8798282ef0590ad21ca33d80e225208d9c7864
xe-pw-168191v1: 168191v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/index.html
[-- Attachment #2: Type: text/html, Size: 1528 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-09 14:44 [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues Rodrigo Vivi
` (4 preceding siblings ...)
2026-06-09 15:46 ` ✓ Xe.CI.BAT: success for series starting with [1/2] " Patchwork
@ 2026-06-09 16:16 ` Ghimiray, Himal Prasad
2026-06-10 3:38 ` ✗ Xe.CI.FULL: failure for series starting with [1/2] " Patchwork
2026-06-10 9:47 ` [PATCH 1/2] " Yadav, Sanjay Kumar
7 siblings, 0 replies; 17+ messages in thread
From: Ghimiray, Himal Prasad @ 2026-06-09 16:16 UTC (permalink / raw)
To: Rodrigo Vivi, intel-xe; +Cc: Matthew Auld, Matthew Brost, Sanjay Yadav
On 09-06-2026 20:14, Rodrigo Vivi wrote:
> Jobs that GuC never scheduled were silently errored out instead of
> triggering a GT reset. Kernel jobs that exhaust all recovery attempts
> should wedge the device rather than silently fail, and userspace VM bind
> queues should stay permanently banned rather than being reset and retried.
>
> The queue is banned early in the timeout handler to signal the G2H
> scheduling-done handler so it wakes the disable-scheduling waiter; without
> it the waiter sleeps the full 5s timeout. For not started works the ban is
> cleared before rearming so that guc_exec_queue_start() can resubmit jobs
> after the GT reset — a banned queue would block resubmission and cause an
> infinite TDR loop.
>
> v2: (Himal) Do it for any queue type, not just kernel/migration
>
> Cc: Matthew Auld <matthew.auld@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
> Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Assisted-by: GitHub-Copilot:claude-sonnet-4.6
> Assisted-by: GitHub-Copilot:claude-opus-4.8
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_guc_submit.c | 41 ++++++++++++++++++++----------
> 1 file changed, 27 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> index 4b247a3019d2..5c40eee41103 100644
> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> @@ -157,6 +157,11 @@ static void set_exec_queue_banned(struct xe_exec_queue *q)
> atomic_or(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> }
>
> +static void clear_exec_queue_banned(struct xe_exec_queue *q)
> +{
> + atomic_andnot(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> +}
> +
> static bool exec_queue_suspended(struct xe_exec_queue *q)
> {
> return atomic_read(&q->guc->state) & EXEC_QUEUE_STATE_SUSPENDED;
> @@ -1363,7 +1368,8 @@ static bool check_timeout(struct xe_exec_queue *q, struct xe_sched_job *job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id);
>
> - return xe_sched_invalidate_job(job, 2);
> + /* GuC never scheduled this job - let the caller trigger a GT reset. */
> + return true;
> }
>
> ctx_timestamp = lower_32_bits(xe_lrc_timestamp(q->lrc[0]));
> @@ -1460,6 +1466,12 @@ static void disable_scheduling(struct xe_exec_queue *q, bool immediate)
> G2H_LEN_DW_SCHED_CONTEXT_MODE_SET, 1);
> }
>
> +/* Unstarted jobs (GuC scheduling failure) and kernel queues recover via GT reset */
> +static bool timeout_needs_gt_reset(struct xe_exec_queue *q, struct xe_sched_job *job)
> +{
> + return !xe_sched_job_started(job) || (q->flags & EXEC_QUEUE_FLAG_KERNEL);
> +}
> +
> static enum drm_gpu_sched_stat
> guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> {
> @@ -1608,19 +1620,20 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id, q->flags);
>
> - /*
> - * Kernel jobs should never fail, nor should VM jobs if they do
> - * somethings has gone wrong and the GT needs a reset
> - */
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_KERNEL,
> - "Kernel-submitted job timed out\n");
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
> - "VM job timed out on non-killed execqueue\n");
> - if (!wedged && (q->flags & EXEC_QUEUE_FLAG_KERNEL ||
> - (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)))) {
> - if (!xe_sched_invalidate_job(job, 2)) {
> - xe_gt_reset_async(q->gt);
> - goto rearm;
> + if (!wedged) {
> + if (timeout_needs_gt_reset(q, job)) {
> + /* Retry after a GT reset; wedge a kernel queue once karma is exhausted */
> + if (!xe_sched_invalidate_job(job, 2)) {
> + clear_exec_queue_banned(q);
> + xe_gt_reset_async(q->gt);
> + goto rearm;
> + }
> + if (q->flags & EXEC_QUEUE_FLAG_KERNEL) {
> + xe_gt_WARN(q->gt, true, "Kernel-submitted job timed out\n");
> + xe_device_declare_wedged(gt_to_xe(q->gt));
> + }
> + } else if (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)) {
> + xe_gt_WARN(q->gt, true, "VM job timed out on non-killed execqueue\n");
> }
LGTM
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> }
>
^ permalink raw reply [flat|nested] 17+ messages in thread* ✗ Xe.CI.FULL: failure for series starting with [1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-09 14:44 [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues Rodrigo Vivi
` (5 preceding siblings ...)
2026-06-09 16:16 ` [PATCH 1/2] " Ghimiray, Himal Prasad
@ 2026-06-10 3:38 ` Patchwork
2026-06-10 9:47 ` [PATCH 1/2] " Yadav, Sanjay Kumar
7 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-06-10 3:38 UTC (permalink / raw)
To: Rodrigo Vivi; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 39175 bytes --]
== Series Details ==
Series: series starting with [1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
URL : https://patchwork.freedesktop.org/series/168191/
State : failure
== Summary ==
CI Bug Log - changes from xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864_FULL -> xe-pw-168191v1_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-168191v1_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-168191v1_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-168191v1_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_exec_threads@threads-hang-fd-userptr-rebind:
- shard-bmg: NOTRUN -> [DMESG-FAIL][1]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-1/igt@xe_exec_threads@threads-hang-fd-userptr-rebind.html
* igt@xe_exec_threads@threads-hang-rebind:
- shard-bmg: [PASS][2] -> [DMESG-FAIL][3] +12 other tests dmesg-fail
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-10/igt@xe_exec_threads@threads-hang-rebind.html
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@xe_exec_threads@threads-hang-rebind.html
* igt@xe_exec_threads@threads-hang-rebind-err:
- shard-lnl: NOTRUN -> [DMESG-FAIL][4]
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-8/igt@xe_exec_threads@threads-hang-rebind-err.html
* igt@xe_exec_threads@threads-hang-userptr-rebind-err:
- shard-lnl: [PASS][5] -> [DMESG-FAIL][6] +12 other tests dmesg-fail
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-lnl-6/igt@xe_exec_threads@threads-hang-userptr-rebind-err.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-1/igt@xe_exec_threads@threads-hang-userptr-rebind-err.html
Known issues
------------
Here are the changes found in xe-pw-168191v1_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@x-tiled-32bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][7] ([Intel XE#2327])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-1/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-16bpp-rotate-180:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#1124]) +4 other tests skip
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-6/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
- shard-lnl: NOTRUN -> [SKIP][9] ([Intel XE#1124]) +1 other test skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-7/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
* igt@kms_bw@connected-linear-tiling-4-displays-target-1920x1080p:
- shard-lnl: NOTRUN -> [SKIP][10] ([Intel XE#7676])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-7/igt@kms_bw@connected-linear-tiling-4-displays-target-1920x1080p.html
* igt@kms_bw@connected-linear-tiling-4-displays-target-3840x2160p:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#7679])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-8/igt@kms_bw@connected-linear-tiling-4-displays-target-3840x2160p.html
* igt@kms_bw@linear-tiling-4-displays-target-2160x1440p:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#367])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@kms_bw@linear-tiling-4-displays-target-2160x1440p.html
* igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#2887]) +3 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-10/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-d-hdmi-a-3:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#2652]) +8 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs@pipe-d-hdmi-a-3.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs:
- shard-lnl: NOTRUN -> [SKIP][15] ([Intel XE#2887]) +1 other test skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-7/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs.html
* igt@kms_chamelium_color@ctm-max:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#2325] / [Intel XE#7358])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-3/igt@kms_chamelium_color@ctm-max.html
* igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#2252]) +2 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-5/igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode.html
* igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe:
- shard-lnl: NOTRUN -> [SKIP][18] ([Intel XE#373]) +1 other test skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-4/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html
* igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
- shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#6974])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-5/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#2390] / [Intel XE#6974])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-10/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#2321] / [Intel XE#7355])
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-5/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x32:
- shard-lnl: NOTRUN -> [SKIP][22] ([Intel XE#1424])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-4/igt@kms_cursor_crc@cursor-rapid-movement-32x32.html
* igt@kms_cursor_crc@cursor-sliding-64x21:
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#2320]) +2 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-5/igt@kms_cursor_crc@cursor-sliding-64x21.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
- shard-lnl: NOTRUN -> [SKIP][24] ([Intel XE#309] / [Intel XE#7343])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-5/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-bmg: [PASS][25] -> [FAIL][26] ([Intel XE#7809])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
* igt@kms_dp_linktrain_fallback@dsc-fallback:
- shard-lnl: NOTRUN -> [SKIP][27] ([Intel XE#4331] / [Intel XE#7227])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-1/igt@kms_dp_linktrain_fallback@dsc-fallback.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#8265])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-2/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#8265]) +1 other test skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-9/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_feature_discovery@display-2x:
- shard-lnl: NOTRUN -> [SKIP][30] ([Intel XE#702] / [Intel XE#7344])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-1/igt@kms_feature_discovery@display-2x.html
* igt@kms_flip@2x-flip-vs-wf_vblank:
- shard-lnl: NOTRUN -> [SKIP][31] ([Intel XE#1421])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-5/igt@kms_flip@2x-flip-vs-wf_vblank.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-bmg: [PASS][32] -> [FAIL][33] ([Intel XE#3321]) +1 other test fail
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-9/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-1/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#7178] / [Intel XE#7351]) +2 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#7178] / [Intel XE#7349])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][36] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][37] ([Intel XE#1397] / [Intel XE#7385])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-p016-linear-to-p016-linear-reflect-x:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#7179])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-8/igt@kms_flip_scaled_crc@flip-p016-linear-to-p016-linear-reflect-x.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#2311]) +24 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-render:
- shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#6312] / [Intel XE#651]) +1 other test skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-2/igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#4141]) +8 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-9/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-indfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][42] ([Intel XE#6312])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-plflip-blt:
- shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#656] / [Intel XE#7905]) +6 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-move:
- shard-lnl: NOTRUN -> [SKIP][44] ([Intel XE#7865]) +2 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-1/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-render:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#7061] / [Intel XE#7356])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-render.html
* igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][46] ([Intel XE#7905]) +5 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-8/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#2313]) +23 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-9/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psrhdr-abgr161616f-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#7061])
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-1/igt@kms_frontbuffer_tracking@psrhdr-abgr161616f-draw-blt.html
* igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#7915]) +1 other test skip
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-8/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f.html
* igt@kms_joiner@basic-ultra-joiner:
- shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#6911] / [Intel XE#7378])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-8/igt@kms_joiner@basic-ultra-joiner.html
* igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier-source-clamping:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#7283]) +2 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier-source-clamping.html
* igt@kms_plane_multiple@2x-tiling-none:
- shard-lnl: NOTRUN -> [SKIP][52] ([Intel XE#4596] / [Intel XE#5854])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-4/igt@kms_plane_multiple@2x-tiling-none.html
* igt@kms_pm_backlight@fade:
- shard-bmg: NOTRUN -> [SKIP][53] ([Intel XE#7376] / [Intel XE#7760] / [Intel XE#870])
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-3/igt@kms_pm_backlight@fade.html
* igt@kms_pm_dc@dc6-dpms:
- shard-lnl: [PASS][54] -> [FAIL][55] ([Intel XE#7340])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-lnl-6/igt@kms_pm_dc@dc6-dpms.html
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-4/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_rpm@modeset-lpsp-stress:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#7383] / [Intel XE#836])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@kms_pm_rpm@modeset-lpsp-stress.html
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-lnl: NOTRUN -> [SKIP][57] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#7383])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-6/igt@kms_pm_rpm@modeset-non-lpsp.html
* igt@kms_psr2_sf@pr-cursor-plane-update-sf:
- shard-lnl: NOTRUN -> [SKIP][58] ([Intel XE#2893] / [Intel XE#7304])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-7/igt@kms_psr2_sf@pr-cursor-plane-update-sf.html
* igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area:
- shard-bmg: NOTRUN -> [SKIP][59] ([Intel XE#1489]) +2 other tests skip
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html
* igt@kms_psr2_su@frontbuffer-xrgb8888:
- shard-bmg: NOTRUN -> [SKIP][60] ([Intel XE#2387] / [Intel XE#7429])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-5/igt@kms_psr2_su@frontbuffer-xrgb8888.html
* igt@kms_psr@fbc-psr2-no-drrs:
- shard-lnl: NOTRUN -> [SKIP][61] ([Intel XE#1406] / [Intel XE#7345])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-8/igt@kms_psr@fbc-psr2-no-drrs.html
* igt@kms_psr@fbc-psr2-no-drrs@edp-1:
- shard-lnl: NOTRUN -> [SKIP][62] ([Intel XE#1406] / [Intel XE#4609])
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-8/igt@kms_psr@fbc-psr2-no-drrs@edp-1.html
* igt@kms_psr@pr-sprite-plane-move:
- shard-lnl: NOTRUN -> [SKIP][63] ([Intel XE#1406])
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-5/igt@kms_psr@pr-sprite-plane-move.html
* igt@kms_psr@pr-sprite-plane-onoff:
- shard-bmg: NOTRUN -> [SKIP][64] ([Intel XE#2234] / [Intel XE#2850]) +5 other tests skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-8/igt@kms_psr@pr-sprite-plane-onoff.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-bmg: NOTRUN -> [SKIP][65] ([Intel XE#3904] / [Intel XE#7342])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
* igt@kms_scaling_modes@scaling-mode-full:
- shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#2413])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-6/igt@kms_scaling_modes@scaling-mode-full.html
* igt@kms_setmode@basic@pipe-b-edp-1:
- shard-lnl: [PASS][67] -> [FAIL][68] ([Intel XE#6361]) +2 other tests fail
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-lnl-1/igt@kms_setmode@basic@pipe-b-edp-1.html
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-6/igt@kms_setmode@basic@pipe-b-edp-1.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: NOTRUN -> [SKIP][69] ([Intel XE#2426] / [Intel XE#5848])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_vrr@lobf:
- shard-bmg: NOTRUN -> [SKIP][70] ([Intel XE#2168] / [Intel XE#7444])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-4/igt@kms_vrr@lobf.html
* igt@xe_compute@ccs-mode-compute-kernel:
- shard-bmg: NOTRUN -> [SKIP][71] ([Intel XE#6599])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-5/igt@xe_compute@ccs-mode-compute-kernel.html
* igt@xe_eudebug_online@pagefault-read-stress:
- shard-lnl: NOTRUN -> [SKIP][72] ([Intel XE#7636]) +2 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-2/igt@xe_eudebug_online@pagefault-read-stress.html
* igt@xe_eudebug_online@single-step:
- shard-bmg: NOTRUN -> [SKIP][73] ([Intel XE#7636]) +4 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-5/igt@xe_eudebug_online@single-step.html
* igt@xe_evict@evict-beng-large-external-cm:
- shard-lnl: NOTRUN -> [SKIP][74] ([Intel XE#6540] / [Intel XE#688]) +1 other test skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-5/igt@xe_evict@evict-beng-large-external-cm.html
* igt@xe_exec_balancer@many-cm-virtual-userptr-invalidate-race:
- shard-lnl: NOTRUN -> [SKIP][75] ([Intel XE#7482]) +3 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-6/igt@xe_exec_balancer@many-cm-virtual-userptr-invalidate-race.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate:
- shard-bmg: NOTRUN -> [SKIP][76] ([Intel XE#2322] / [Intel XE#7372]) +3 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-4/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate.html
* igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-invalidate-race-imm:
- shard-lnl: NOTRUN -> [SKIP][77] ([Intel XE#7136])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-5/igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-invalidate-race-imm.html
* igt@xe_exec_fault_mode@twice-multi-queue-imm:
- shard-bmg: NOTRUN -> [SKIP][78] ([Intel XE#7136]) +6 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-6/igt@xe_exec_fault_mode@twice-multi-queue-imm.html
* igt@xe_exec_multi_queue@max-queues-preempt-mode-fault-dyn-priority:
- shard-bmg: NOTRUN -> [SKIP][79] ([Intel XE#6874]) +12 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-10/igt@xe_exec_multi_queue@max-queues-preempt-mode-fault-dyn-priority.html
* igt@xe_exec_multi_queue@one-queue-basic:
- shard-lnl: NOTRUN -> [SKIP][80] ([Intel XE#6874]) +1 other test skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-4/igt@xe_exec_multi_queue@one-queue-basic.html
* igt@xe_exec_reset@multi-queue-cancel:
- shard-lnl: NOTRUN -> [SKIP][81] ([Intel XE#7866])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-5/igt@xe_exec_reset@multi-queue-cancel.html
* igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr-rebind:
- shard-bmg: NOTRUN -> [SKIP][82] ([Intel XE#7138]) +3 other tests skip
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-9/igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr-rebind.html
* igt@xe_exec_threads@threads-multi-queue-shared-vm-userptr:
- shard-lnl: NOTRUN -> [SKIP][83] ([Intel XE#7138])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-7/igt@xe_exec_threads@threads-multi-queue-shared-vm-userptr.html
* igt@xe_mmap@small-bar:
- shard-bmg: NOTRUN -> [SKIP][84] ([Intel XE#586] / [Intel XE#7323] / [Intel XE#7384])
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@xe_mmap@small-bar.html
* igt@xe_multigpu_svm@mgpu-latency-copy-prefetch:
- shard-bmg: NOTRUN -> [SKIP][85] ([Intel XE#6964])
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-10/igt@xe_multigpu_svm@mgpu-latency-copy-prefetch.html
* igt@xe_page_reclaim@many-vma-same-bo:
- shard-bmg: NOTRUN -> [SKIP][86] ([Intel XE#7793]) +1 other test skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-10/igt@xe_page_reclaim@many-vma-same-bo.html
* igt@xe_pxp@pxp-stale-bo-bind-post-termination-irq:
- shard-bmg: NOTRUN -> [SKIP][87] ([Intel XE#4733] / [Intel XE#7417])
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-4/igt@xe_pxp@pxp-stale-bo-bind-post-termination-irq.html
* igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
- shard-lnl: NOTRUN -> [SKIP][88] ([Intel XE#944])
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-2/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html
* igt@xe_query@multigpu-query-topology:
- shard-bmg: NOTRUN -> [SKIP][89] ([Intel XE#944])
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-3/igt@xe_query@multigpu-query-topology.html
* igt@xe_sriov_flr@flr-twice:
- shard-bmg: [PASS][90] -> [FAIL][91] ([Intel XE#6569])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-5/igt@xe_sriov_flr@flr-twice.html
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-8/igt@xe_sriov_flr@flr-twice.html
* igt@xe_sriov_vram@vf-access-beyond:
- shard-lnl: NOTRUN -> [SKIP][92] ([Intel XE#6376] / [Intel XE#7330] / [Intel XE#7422])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-1/igt@xe_sriov_vram@vf-access-beyond.html
* igt@xe_wedged@wedged-mode-toggle:
- shard-bmg: [PASS][93] -> [ABORT][94] ([Intel XE#8007])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-7/igt@xe_wedged@wedged-mode-toggle.html
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-6/igt@xe_wedged@wedged-mode-toggle.html
#### Possible fixes ####
* igt@kms_async_flips@alternate-sync-async-flip-atomic:
- shard-bmg: [FAIL][95] ([Intel XE#3718] / [Intel XE#6078]) -> [PASS][96]
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-10/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-5/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-c-dp-2:
- shard-bmg: [FAIL][97] ([Intel XE#6078]) -> [PASS][98]
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-10/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-c-dp-2.html
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-5/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-c-dp-2.html
* igt@kms_cursor_crc@cursor-sliding-256x256:
- shard-bmg: [FAIL][99] ([Intel XE#8117] / [Intel XE#8197]) -> [PASS][100]
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-5/igt@kms_cursor_crc@cursor-sliding-256x256.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@kms_cursor_crc@cursor-sliding-256x256.html
* igt@kms_cursor_crc@cursor-sliding-256x256@pipe-d-dp-2:
- shard-bmg: [FAIL][101] ([Intel XE#8197]) -> [PASS][102]
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-5/igt@kms_cursor_crc@cursor-sliding-256x256@pipe-d-dp-2.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-7/igt@kms_cursor_crc@cursor-sliding-256x256@pipe-d-dp-2.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [FAIL][103] ([Intel XE#7809]) -> [PASS][104]
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-4/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-8/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_hdr@invalid-metadata-sizes@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: [SKIP][105] ([Intel XE#7915]) -> [PASS][106] +1 other test pass
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-6/igt@kms_hdr@invalid-metadata-sizes@pipe-a-hdmi-a-3-xrgb16161616f.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-1/igt@kms_hdr@invalid-metadata-sizes@pipe-a-hdmi-a-3-xrgb16161616f.html
* igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling@numvfs-random:
- shard-bmg: [FAIL][107] ([Intel XE#7992]) -> [PASS][108] +1 other test pass
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-8/igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling@numvfs-random.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-1/igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling@numvfs-random.html
#### Warnings ####
* igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-scndscrn-indfb-pgflip-blt:
- shard-bmg: [ABORT][109] ([Intel XE#8007]) -> [SKIP][110] ([Intel XE#2311])
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-scndscrn-indfb-pgflip-blt.html
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-scndscrn-indfb-pgflip-blt.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][111] ([Intel XE#3544] / [Intel XE#7915] / [Intel XE#7916]) -> [SKIP][112] ([Intel XE#3544] / [Intel XE#7916])
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-8/igt@kms_hdr@brightness-with-hdr.html
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-5/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: [SKIP][113] ([Intel XE#7915]) -> [SKIP][114] ([Intel XE#7916]) +1 other test skip
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-bmg-8/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-bmg-5/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html
* igt@xe_exec_multi_queue@one-queue-preempt-mode-priority-smem:
- shard-lnl: [SKIP][115] ([Intel XE#6874]) -> [ABORT][116] ([Intel XE#8007])
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864/shard-lnl-3/igt@xe_exec_multi_queue@one-queue-preempt-mode-priority-smem.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/shard-lnl-4/igt@xe_exec_multi_queue@one-queue-preempt-mode-priority-smem.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
[Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
[Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
[Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4331
[Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
[Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#5854]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5854
[Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586
[Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#6361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6361
[Intel XE#6376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6376
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
[Intel XE#6599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6599
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
[Intel XE#702]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/702
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
[Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7179]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7179
[Intel XE#7227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7227
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
[Intel XE#7323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7323
[Intel XE#7330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7330
[Intel XE#7340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7340
[Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
[Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
[Intel XE#7344]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7344
[Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345
[Intel XE#7349]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7349
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
[Intel XE#7378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7378
[Intel XE#7383]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7383
[Intel XE#7384]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7384
[Intel XE#7385]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7385
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7422
[Intel XE#7429]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7429
[Intel XE#7444]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7444
[Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
[Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
[Intel XE#7676]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7676
[Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
[Intel XE#7760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7760
[Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
[Intel XE#7809]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7809
[Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
[Intel XE#7866]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7866
[Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
[Intel XE#7915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7915
[Intel XE#7916]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7916
[Intel XE#7992]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7992
[Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
[Intel XE#8117]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8117
[Intel XE#8197]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8197
[Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
[Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* IGT: IGT_8955 -> IGT_8956
* Linux: xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864 -> xe-pw-168191v1
IGT_8955: 8955
IGT_8956: 8956
xe-5225-1e8798282ef0590ad21ca33d80e225208d9c7864: 1e8798282ef0590ad21ca33d80e225208d9c7864
xe-pw-168191v1: 168191v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168191v1/index.html
[-- Attachment #2: Type: text/html, Size: 44084 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-09 14:44 [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues Rodrigo Vivi
` (6 preceding siblings ...)
2026-06-10 3:38 ` ✗ Xe.CI.FULL: failure for series starting with [1/2] " Patchwork
@ 2026-06-10 9:47 ` Yadav, Sanjay Kumar
2026-06-10 15:24 ` Rodrigo Vivi
7 siblings, 1 reply; 17+ messages in thread
From: Yadav, Sanjay Kumar @ 2026-06-10 9:47 UTC (permalink / raw)
To: Rodrigo Vivi, intel-xe; +Cc: Matthew Auld, Matthew Brost, Himal Prasad Ghimiray
On 09-06-2026 20:14, Rodrigo Vivi wrote:
> Jobs that GuC never scheduled were silently errored out instead of
> triggering a GT reset. Kernel jobs that exhaust all recovery attempts
> should wedge the device rather than silently fail, and userspace VM bind
> queues should stay permanently banned rather than being reset and retried.
>
> The queue is banned early in the timeout handler to signal the G2H
> scheduling-done handler so it wakes the disable-scheduling waiter; without
> it the waiter sleeps the full 5s timeout. For not started works the ban is
> cleared before rearming so that guc_exec_queue_start() can resubmit jobs
> after the GT reset — a banned queue would block resubmission and cause an
> infinite TDR loop.
>
> v2: (Himal) Do it for any queue type, not just kernel/migration
>
> Cc: Matthew Auld <matthew.auld@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
> Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Assisted-by: GitHub-Copilot:claude-sonnet-4.6
> Assisted-by: GitHub-Copilot:claude-opus-4.8
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_guc_submit.c | 41 ++++++++++++++++++++----------
> 1 file changed, 27 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> index 4b247a3019d2..5c40eee41103 100644
> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> @@ -157,6 +157,11 @@ static void set_exec_queue_banned(struct xe_exec_queue *q)
> atomic_or(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> }
>
> +static void clear_exec_queue_banned(struct xe_exec_queue *q)
> +{
> + atomic_andnot(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> +}
> +
> static bool exec_queue_suspended(struct xe_exec_queue *q)
> {
> return atomic_read(&q->guc->state) & EXEC_QUEUE_STATE_SUSPENDED;
> @@ -1363,7 +1368,8 @@ static bool check_timeout(struct xe_exec_queue *q, struct xe_sched_job *job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id);
>
> - return xe_sched_invalidate_job(job, 2);
> + /* GuC never scheduled this job - let the caller trigger a GT reset. */
> + return true;
> }
>
> ctx_timestamp = lower_32_bits(xe_lrc_timestamp(q->lrc[0]));
> @@ -1460,6 +1466,12 @@ static void disable_scheduling(struct xe_exec_queue *q, bool immediate)
> G2H_LEN_DW_SCHED_CONTEXT_MODE_SET, 1);
> }
>
> +/* Unstarted jobs (GuC scheduling failure) and kernel queues recover via GT reset */
> +static bool timeout_needs_gt_reset(struct xe_exec_queue *q, struct xe_sched_job *job)
> +{
> + return !xe_sched_job_started(job) || (q->flags & EXEC_QUEUE_FLAG_KERNEL);
> +}
> +
1. With IGT reproducer:
Works correctly, no infinite GT reset loop. Kernel queue recovery
behaves as expected.
2. also tried this threads-hang-userptr-rebind-err [since failing in CI]
IGT hangs and the GT reset("trying reset") is stuck in an infinite loop
for non-kernel (userspace, GUC ID != 0) queues.
also any userspace job[threads-hang*] that GuC never scheduled
(unstarted) hits timeout_needs_gt_reset(),
returns true enters the GT reset + rearm --> Just ban the queue and
error out with -ETIME for Userspace jobs?
OR GT reset for only for kernel job failure? -->Please ignore if am
missing something
-Sanjay
> static enum drm_gpu_sched_stat
> guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> {
> @@ -1608,19 +1620,20 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id, q->flags);
>
> - /*
> - * Kernel jobs should never fail, nor should VM jobs if they do
> - * somethings has gone wrong and the GT needs a reset
> - */
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_KERNEL,
> - "Kernel-submitted job timed out\n");
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
> - "VM job timed out on non-killed execqueue\n");
> - if (!wedged && (q->flags & EXEC_QUEUE_FLAG_KERNEL ||
> - (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)))) {
> - if (!xe_sched_invalidate_job(job, 2)) {
> - xe_gt_reset_async(q->gt);
> - goto rearm;
> + if (!wedged) {
> + if (timeout_needs_gt_reset(q, job)) {
> + /* Retry after a GT reset; wedge a kernel queue once karma is exhausted */
> + if (!xe_sched_invalidate_job(job, 2)) {
> + clear_exec_queue_banned(q);
> + xe_gt_reset_async(q->gt);
> + goto rearm;
> + }
> + if (q->flags & EXEC_QUEUE_FLAG_KERNEL) {
> + xe_gt_WARN(q->gt, true, "Kernel-submitted job timed out\n");
> + xe_device_declare_wedged(gt_to_xe(q->gt));
> + }
> + } else if (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)) {
> + xe_gt_WARN(q->gt, true, "VM job timed out on non-killed execqueue\n");
> }
> }
>
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-10 9:47 ` [PATCH 1/2] " Yadav, Sanjay Kumar
@ 2026-06-10 15:24 ` Rodrigo Vivi
0 siblings, 0 replies; 17+ messages in thread
From: Rodrigo Vivi @ 2026-06-10 15:24 UTC (permalink / raw)
To: Yadav, Sanjay Kumar
Cc: intel-xe, Matthew Auld, Matthew Brost, Himal Prasad Ghimiray
On Wed, Jun 10, 2026 at 03:17:04PM +0530, Yadav, Sanjay Kumar wrote:
>
> On 09-06-2026 20:14, Rodrigo Vivi wrote:
> > Jobs that GuC never scheduled were silently errored out instead of
> > triggering a GT reset. Kernel jobs that exhaust all recovery attempts
> > should wedge the device rather than silently fail, and userspace VM bind
> > queues should stay permanently banned rather than being reset and retried.
> >
> > The queue is banned early in the timeout handler to signal the G2H
> > scheduling-done handler so it wakes the disable-scheduling waiter; without
> > it the waiter sleeps the full 5s timeout. For not started works the ban is
> > cleared before rearming so that guc_exec_queue_start() can resubmit jobs
> > after the GT reset — a banned queue would block resubmission and cause an
> > infinite TDR loop.
> >
> > v2: (Himal) Do it for any queue type, not just kernel/migration
> >
> > Cc: Matthew Auld <matthew.auld@intel.com>
> > Cc: Matthew Brost <matthew.brost@intel.com>
> > Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
> > Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> > Assisted-by: GitHub-Copilot:claude-sonnet-4.6
> > Assisted-by: GitHub-Copilot:claude-opus-4.8
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > ---
> > drivers/gpu/drm/xe/xe_guc_submit.c | 41 ++++++++++++++++++++----------
> > 1 file changed, 27 insertions(+), 14 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> > index 4b247a3019d2..5c40eee41103 100644
> > --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> > @@ -157,6 +157,11 @@ static void set_exec_queue_banned(struct xe_exec_queue *q)
> > atomic_or(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> > }
> > +static void clear_exec_queue_banned(struct xe_exec_queue *q)
> > +{
> > + atomic_andnot(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> > +}
> > +
> > static bool exec_queue_suspended(struct xe_exec_queue *q)
> > {
> > return atomic_read(&q->guc->state) & EXEC_QUEUE_STATE_SUSPENDED;
> > @@ -1363,7 +1368,8 @@ static bool check_timeout(struct xe_exec_queue *q, struct xe_sched_job *job)
> > xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> > q->guc->id);
> > - return xe_sched_invalidate_job(job, 2);
> > + /* GuC never scheduled this job - let the caller trigger a GT reset. */
> > + return true;
> > }
> > ctx_timestamp = lower_32_bits(xe_lrc_timestamp(q->lrc[0]));
> > @@ -1460,6 +1466,12 @@ static void disable_scheduling(struct xe_exec_queue *q, bool immediate)
> > G2H_LEN_DW_SCHED_CONTEXT_MODE_SET, 1);
> > }
> > +/* Unstarted jobs (GuC scheduling failure) and kernel queues recover via GT reset */
> > +static bool timeout_needs_gt_reset(struct xe_exec_queue *q, struct xe_sched_job *job)
> > +{
> > + return !xe_sched_job_started(job) || (q->flags & EXEC_QUEUE_FLAG_KERNEL);
> > +}
> > +
> 1. With IGT reproducer:
> Works correctly, no infinite GT reset loop. Kernel queue
> recovery behaves as expected.
>
> 2. also tried this threads-hang-userptr-rebind-err [since failing in CI]
> IGT hangs and the GT reset("trying reset") is stuck in an
> infinite loop for non-kernel (userspace, GUC ID != 0)
> queues.
>
> also any userspace job[threads-hang*] that GuC never
> scheduled (unstarted) hits timeout_needs_gt_reset(),
> returns true enters the GT reset + rearm --> Just ban the
> queue and error out with -ETIME for Userspace jobs?
>
> OR GT reset for only for kernel job failure? -->Please
> ignore if am missing something
Great catch! Sashiko also agrees with you:
https://sashiko.dev/#/patchset/20260609144412.244678-3-rodrigo.vivi%40intel.com
I prepared a v3 that now passes this case and will likely make sashiko happy again...
>
> -Sanjay
>
> > static enum drm_gpu_sched_stat
> > guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> > {
> > @@ -1608,19 +1620,20 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> > xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> > q->guc->id, q->flags);
> > - /*
> > - * Kernel jobs should never fail, nor should VM jobs if they do
> > - * somethings has gone wrong and the GT needs a reset
> > - */
> > - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_KERNEL,
> > - "Kernel-submitted job timed out\n");
> > - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
> > - "VM job timed out on non-killed execqueue\n");
> > - if (!wedged && (q->flags & EXEC_QUEUE_FLAG_KERNEL ||
> > - (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)))) {
> > - if (!xe_sched_invalidate_job(job, 2)) {
> > - xe_gt_reset_async(q->gt);
> > - goto rearm;
> > + if (!wedged) {
> > + if (timeout_needs_gt_reset(q, job)) {
> > + /* Retry after a GT reset; wedge a kernel queue once karma is exhausted */
> > + if (!xe_sched_invalidate_job(job, 2)) {
> > + clear_exec_queue_banned(q);
> > + xe_gt_reset_async(q->gt);
> > + goto rearm;
> > + }
> > + if (q->flags & EXEC_QUEUE_FLAG_KERNEL) {
> > + xe_gt_WARN(q->gt, true, "Kernel-submitted job timed out\n");
> > + xe_device_declare_wedged(gt_to_xe(q->gt));
> > + }
> > + } else if (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)) {
> > + xe_gt_WARN(q->gt, true, "VM job timed out on non-killed execqueue\n");
> > }
> > }
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-10 15:25 Rodrigo Vivi
@ 2026-06-10 16:07 ` Ghimiray, Himal Prasad
2026-06-10 16:30 ` Matthew Brost
2026-06-11 4:55 ` Yadav, Sanjay Kumar
2 siblings, 0 replies; 17+ messages in thread
From: Ghimiray, Himal Prasad @ 2026-06-10 16:07 UTC (permalink / raw)
To: Rodrigo Vivi, intel-xe; +Cc: Matthew Auld, Matthew Brost, Sanjay Yadav
On 10-06-2026 20:55, Rodrigo Vivi wrote:
> A job that GuC never scheduled (never started) indicates a GuC
> scheduling failure; previously such jobs were silently errored out
> instead of triggering a GT reset to recover. Trigger a GT reset and
> resubmit them, but only when the queue was not already killed or banned:
> an unstarted job on an already banned queue is the ban working as
> intended and must neither clear the ban nor kick off a reset, otherwise
> a banned userspace queue could be resurrected and spam GT resets.
>
> Kernel queues are always recovered this way and wedge the device once
> recovery attempts are exhausted, since kernel work must not silently
> fail. A started job that times out on a userspace VM bind queue stays
> banned rather than being reset and retried.
>
> The queue is banned early in the timeout handler to signal the G2H
> scheduling-done handler so it wakes the disable-scheduling waiter;
> without it the waiter sleeps the full 5s timeout. When a reset is
> warranted the ban is cleared before rearming so that
> guc_exec_queue_start() can resubmit jobs after the GT reset - a
> still-banned queue would block resubmission and cause an infinite TDR
> loop. The already-banned case is gated out before this point via
> skip_timeout_check, so it is unaffected.
>
> v2: (Himal) Do it for any queue type, not just kernel/migration
> v3: - (Sashiko and Sanjay): don't clear the ban / GT reset for already
> killed/banned queues on unstarted-job timeout
> - Update commit message
> - (Matt) Add Fixes tag
>
> Fixes: fe05cee4d953 ("drm/xe: Don't short circuit TDR on jobs not started")
> Cc: Matthew Auld <matthew.auld@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
> Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Assisted-by: GitHub-Copilot:claude-sonnet-4.6
> Assisted-by: GitHub-Copilot:claude-opus-4.8
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_guc_submit.c | 49 +++++++++++++++++++++---------
> 1 file changed, 35 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> index b29cc08e6291..e82018445b7c 100644
> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> @@ -157,6 +157,11 @@ static void set_exec_queue_banned(struct xe_exec_queue *q)
> atomic_or(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> }
>
> +static void clear_exec_queue_banned(struct xe_exec_queue *q)
> +{
> + atomic_andnot(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> +}
> +
> static bool exec_queue_suspended(struct xe_exec_queue *q)
> {
> return atomic_read(&q->guc->state) & EXEC_QUEUE_STATE_SUSPENDED;
> @@ -1363,7 +1368,8 @@ static bool check_timeout(struct xe_exec_queue *q, struct xe_sched_job *job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id);
>
> - return xe_sched_invalidate_job(job, 2);
> + /* GuC never scheduled this job - let the caller trigger a GT reset. */
> + return true;
> }
>
> ctx_timestamp = lower_32_bits(xe_lrc_timestamp(q->lrc[0]));
> @@ -1460,6 +1466,21 @@ static void disable_scheduling(struct xe_exec_queue *q, bool immediate)
> G2H_LEN_DW_SCHED_CONTEXT_MODE_SET, 1);
> }
>
> +/*
> + * Recover via GT reset for a kernel queue, or for a GuC scheduling failure (job
> + * never started) on a queue that was not already killed or banned. An already
> + * banned queue must stay banned, so its unstarted jobs do not clear the ban or
> + * trigger a reset.
> + */
> +static bool timeout_needs_gt_reset(struct xe_exec_queue *q, struct xe_sched_job *job,
> + bool skip_timeout_check)
> +{
> + if (q->flags & EXEC_QUEUE_FLAG_KERNEL)
> + return true;
> +
> + return !skip_timeout_check && !xe_sched_job_started(job);
Looks good.
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> +}
> +
> static enum drm_gpu_sched_stat
> guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> {
> @@ -1608,19 +1629,19 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id, q->flags);
>
> - /*
> - * Kernel jobs should never fail, nor should VM jobs if they do
> - * somethings has gone wrong and the GT needs a reset
> - */
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_KERNEL,
> - "Kernel-submitted job timed out\n");
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
> - "VM job timed out on non-killed execqueue\n");
> - if (!wedged && (q->flags & EXEC_QUEUE_FLAG_KERNEL ||
> - (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)))) {
> - if (!xe_sched_invalidate_job(job, 2)) {
> - xe_gt_reset_async(q->gt);
> - goto rearm;
> + if (!wedged) {
> + if (timeout_needs_gt_reset(q, job, skip_timeout_check)) {
> + if (!xe_sched_invalidate_job(job, 2)) {
> + clear_exec_queue_banned(q);
> + xe_gt_reset_async(q->gt);
> + goto rearm;
> + }
> + if (q->flags & EXEC_QUEUE_FLAG_KERNEL) {
> + xe_gt_WARN(q->gt, true, "Kernel-submitted job timed out\n");
> + xe_device_declare_wedged(gt_to_xe(q->gt));
> + }
> + } else if (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)) {
> + xe_gt_WARN(q->gt, true, "VM job timed out on non-killed execqueue\n");
> }
> }
>
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-10 15:25 Rodrigo Vivi
2026-06-10 16:07 ` Ghimiray, Himal Prasad
@ 2026-06-10 16:30 ` Matthew Brost
2026-06-11 4:55 ` Yadav, Sanjay Kumar
2 siblings, 0 replies; 17+ messages in thread
From: Matthew Brost @ 2026-06-10 16:30 UTC (permalink / raw)
To: Rodrigo Vivi; +Cc: intel-xe, Matthew Auld, Sanjay Yadav, Himal Prasad Ghimiray
On Wed, Jun 10, 2026 at 11:25:49AM -0400, Rodrigo Vivi wrote:
> A job that GuC never scheduled (never started) indicates a GuC
> scheduling failure; previously such jobs were silently errored out
> instead of triggering a GT reset to recover. Trigger a GT reset and
> resubmit them, but only when the queue was not already killed or banned:
> an unstarted job on an already banned queue is the ban working as
> intended and must neither clear the ban nor kick off a reset, otherwise
> a banned userspace queue could be resurrected and spam GT resets.
>
> Kernel queues are always recovered this way and wedge the device once
> recovery attempts are exhausted, since kernel work must not silently
> fail. A started job that times out on a userspace VM bind queue stays
> banned rather than being reset and retried.
>
> The queue is banned early in the timeout handler to signal the G2H
> scheduling-done handler so it wakes the disable-scheduling waiter;
> without it the waiter sleeps the full 5s timeout. When a reset is
> warranted the ban is cleared before rearming so that
> guc_exec_queue_start() can resubmit jobs after the GT reset - a
> still-banned queue would block resubmission and cause an infinite TDR
> loop. The already-banned case is gated out before this point via
> skip_timeout_check, so it is unaffected.
>
> v2: (Himal) Do it for any queue type, not just kernel/migration
> v3: - (Sashiko and Sanjay): don't clear the ban / GT reset for already
> killed/banned queues on unstarted-job timeout
> - Update commit message
> - (Matt) Add Fixes tag
>
> Fixes: fe05cee4d953 ("drm/xe: Don't short circuit TDR on jobs not started")
> Cc: Matthew Auld <matthew.auld@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
> Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
> Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Assisted-by: GitHub-Copilot:claude-sonnet-4.6
> Assisted-by: GitHub-Copilot:claude-opus-4.8
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_guc_submit.c | 49 +++++++++++++++++++++---------
> 1 file changed, 35 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> index b29cc08e6291..e82018445b7c 100644
> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> @@ -157,6 +157,11 @@ static void set_exec_queue_banned(struct xe_exec_queue *q)
> atomic_or(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> }
>
> +static void clear_exec_queue_banned(struct xe_exec_queue *q)
> +{
> + atomic_andnot(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> +}
> +
> static bool exec_queue_suspended(struct xe_exec_queue *q)
> {
> return atomic_read(&q->guc->state) & EXEC_QUEUE_STATE_SUSPENDED;
> @@ -1363,7 +1368,8 @@ static bool check_timeout(struct xe_exec_queue *q, struct xe_sched_job *job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id);
>
> - return xe_sched_invalidate_job(job, 2);
> + /* GuC never scheduled this job - let the caller trigger a GT reset. */
> + return true;
> }
>
> ctx_timestamp = lower_32_bits(xe_lrc_timestamp(q->lrc[0]));
> @@ -1460,6 +1466,21 @@ static void disable_scheduling(struct xe_exec_queue *q, bool immediate)
> G2H_LEN_DW_SCHED_CONTEXT_MODE_SET, 1);
> }
>
> +/*
> + * Recover via GT reset for a kernel queue, or for a GuC scheduling failure (job
> + * never started) on a queue that was not already killed or banned. An already
> + * banned queue must stay banned, so its unstarted jobs do not clear the ban or
> + * trigger a reset.
> + */
> +static bool timeout_needs_gt_reset(struct xe_exec_queue *q, struct xe_sched_job *job,
> + bool skip_timeout_check)
> +{
> + if (q->flags & EXEC_QUEUE_FLAG_KERNEL)
> + return true;
> +
> + return !skip_timeout_check && !xe_sched_job_started(job);
> +}
> +
> static enum drm_gpu_sched_stat
> guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> {
> @@ -1608,19 +1629,19 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id, q->flags);
>
> - /*
> - * Kernel jobs should never fail, nor should VM jobs if they do
> - * somethings has gone wrong and the GT needs a reset
> - */
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_KERNEL,
> - "Kernel-submitted job timed out\n");
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
> - "VM job timed out on non-killed execqueue\n");
> - if (!wedged && (q->flags & EXEC_QUEUE_FLAG_KERNEL ||
> - (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)))) {
> - if (!xe_sched_invalidate_job(job, 2)) {
> - xe_gt_reset_async(q->gt);
> - goto rearm;
> + if (!wedged) {
> + if (timeout_needs_gt_reset(q, job, skip_timeout_check)) {
> + if (!xe_sched_invalidate_job(job, 2)) {
> + clear_exec_queue_banned(q);
> + xe_gt_reset_async(q->gt);
> + goto rearm;
> + }
> + if (q->flags & EXEC_QUEUE_FLAG_KERNEL) {
> + xe_gt_WARN(q->gt, true, "Kernel-submitted job timed out\n");
> + xe_device_declare_wedged(gt_to_xe(q->gt));
> + }
> + } else if (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)) {
> + xe_gt_WARN(q->gt, true, "VM job timed out on non-killed execqueue\n");
> }
> }
>
> --
> 2.54.0
>
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 1/2] drm/xe: fix job timeout recovery for unstarted jobs and kernel queues
2026-06-10 15:25 Rodrigo Vivi
2026-06-10 16:07 ` Ghimiray, Himal Prasad
2026-06-10 16:30 ` Matthew Brost
@ 2026-06-11 4:55 ` Yadav, Sanjay Kumar
2 siblings, 0 replies; 17+ messages in thread
From: Yadav, Sanjay Kumar @ 2026-06-11 4:55 UTC (permalink / raw)
To: Rodrigo Vivi, intel-xe; +Cc: Matthew Auld, Matthew Brost, Himal Prasad Ghimiray
On 10-06-2026 20:55, Rodrigo Vivi wrote:
> A job that GuC never scheduled (never started) indicates a GuC
> scheduling failure; previously such jobs were silently errored out
> instead of triggering a GT reset to recover. Trigger a GT reset and
> resubmit them, but only when the queue was not already killed or banned:
> an unstarted job on an already banned queue is the ban working as
> intended and must neither clear the ban nor kick off a reset, otherwise
> a banned userspace queue could be resurrected and spam GT resets.
>
> Kernel queues are always recovered this way and wedge the device once
> recovery attempts are exhausted, since kernel work must not silently
> fail. A started job that times out on a userspace VM bind queue stays
> banned rather than being reset and retried.
>
> The queue is banned early in the timeout handler to signal the G2H
> scheduling-done handler so it wakes the disable-scheduling waiter;
> without it the waiter sleeps the full 5s timeout. When a reset is
> warranted the ban is cleared before rearming so that
> guc_exec_queue_start() can resubmit jobs after the GT reset - a
> still-banned queue would block resubmission and cause an infinite TDR
> loop. The already-banned case is gated out before this point via
> skip_timeout_check, so it is unaffected.
>
> v2: (Himal) Do it for any queue type, not just kernel/migration
> v3: - (Sashiko and Sanjay): don't clear the ban / GT reset for already
> killed/banned queues on unstarted-job timeout
> - Update commit message
> - (Matt) Add Fixes tag
>
> Fixes: fe05cee4d953 ("drm/xe: Don't short circuit TDR on jobs not started")
> Cc: Matthew Auld <matthew.auld@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
> Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Assisted-by: GitHub-Copilot:claude-sonnet-4.6
> Assisted-by: GitHub-Copilot:claude-opus-4.8
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Tested-by: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
Reviewed-by: Sanjay Yadav <sanjay.kumar.yadav@intel.com>
Looks good to me.
Tested with the reproducer IGT, followed by xe_evict. Recovery behaves
as expected, and all migration subtests pass.
Thanks,
Sanjay
> ---
> drivers/gpu/drm/xe/xe_guc_submit.c | 49 +++++++++++++++++++++---------
> 1 file changed, 35 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> index b29cc08e6291..e82018445b7c 100644
> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> @@ -157,6 +157,11 @@ static void set_exec_queue_banned(struct xe_exec_queue *q)
> atomic_or(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> }
>
> +static void clear_exec_queue_banned(struct xe_exec_queue *q)
> +{
> + atomic_andnot(EXEC_QUEUE_STATE_BANNED, &q->guc->state);
> +}
> +
> static bool exec_queue_suspended(struct xe_exec_queue *q)
> {
> return atomic_read(&q->guc->state) & EXEC_QUEUE_STATE_SUSPENDED;
> @@ -1363,7 +1368,8 @@ static bool check_timeout(struct xe_exec_queue *q, struct xe_sched_job *job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id);
>
> - return xe_sched_invalidate_job(job, 2);
> + /* GuC never scheduled this job - let the caller trigger a GT reset. */
> + return true;
> }
>
> ctx_timestamp = lower_32_bits(xe_lrc_timestamp(q->lrc[0]));
> @@ -1460,6 +1466,21 @@ static void disable_scheduling(struct xe_exec_queue *q, bool immediate)
> G2H_LEN_DW_SCHED_CONTEXT_MODE_SET, 1);
> }
>
> +/*
> + * Recover via GT reset for a kernel queue, or for a GuC scheduling failure (job
> + * never started) on a queue that was not already killed or banned. An already
> + * banned queue must stay banned, so its unstarted jobs do not clear the ban or
> + * trigger a reset.
> + */
> +static bool timeout_needs_gt_reset(struct xe_exec_queue *q, struct xe_sched_job *job,
> + bool skip_timeout_check)
> +{
> + if (q->flags & EXEC_QUEUE_FLAG_KERNEL)
> + return true;
> +
> + return !skip_timeout_check && !xe_sched_job_started(job);
> +}
> +
> static enum drm_gpu_sched_stat
> guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> {
> @@ -1608,19 +1629,19 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
> xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
> q->guc->id, q->flags);
>
> - /*
> - * Kernel jobs should never fail, nor should VM jobs if they do
> - * somethings has gone wrong and the GT needs a reset
> - */
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_KERNEL,
> - "Kernel-submitted job timed out\n");
> - xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
> - "VM job timed out on non-killed execqueue\n");
> - if (!wedged && (q->flags & EXEC_QUEUE_FLAG_KERNEL ||
> - (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)))) {
> - if (!xe_sched_invalidate_job(job, 2)) {
> - xe_gt_reset_async(q->gt);
> - goto rearm;
> + if (!wedged) {
> + if (timeout_needs_gt_reset(q, job, skip_timeout_check)) {
> + if (!xe_sched_invalidate_job(job, 2)) {
> + clear_exec_queue_banned(q);
> + xe_gt_reset_async(q->gt);
> + goto rearm;
> + }
> + if (q->flags & EXEC_QUEUE_FLAG_KERNEL) {
> + xe_gt_WARN(q->gt, true, "Kernel-submitted job timed out\n");
> + xe_device_declare_wedged(gt_to_xe(q->gt));
> + }
> + } else if (q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q)) {
> + xe_gt_WARN(q->gt, true, "VM job timed out on non-killed execqueue\n");
> }
> }
>
^ permalink raw reply [flat|nested] 17+ messages in thread