* ✗ CI.checkpatch: warning for ANDROID: Add GPU work period support for Xe driver
2025-08-08 9:09 [PATCH] ANDROID: Add GPU work period support for Xe driver Aakash Deep Sarkar
@ 2025-08-08 10:30 ` Patchwork
2025-08-08 10:31 ` ✓ CI.KUnit: success " Patchwork
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2025-08-08 10:30 UTC (permalink / raw)
To: Aakash Deep Sarkar; +Cc: intel-xe
== Series Details ==
Series: ANDROID: Add GPU work period support for Xe driver
URL : https://patchwork.freedesktop.org/series/152678/
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
c298eac5978c38dcc62a70c0d73c91765e7cc296
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 5fc47ee2e66d4822a31ec46c6ea4305f0f4f79dc
Author: Aakash Deep Sarkar <aakash.deep.sarkar@intel.com>
Date: Fri Aug 8 09:09:19 2025 +0000
ANDROID: Add GPU work period support for Xe driver
This patch implements the Android requirement GPU work
period event for Intel Xe driver.
|GpuWorkPeriodEvent| defines a non-overlapping, non-zero period
of time from |start_time_ns| (inclusive) until |end_time_ns|
(exclusive) for a given |uid|, and includes details of how much
work the GPU was performing for |uid| during the period. When
GPU work for a given |uid| runs on the GPU, the driver must track
one or more periods that cover the time where the work was running,
and emit events soon after.
Full requirement is defined in the following file:
https://cs.android.com/android/platform/superproject/main/+\
/main:frameworks/native/services/gpuservice/gpuwork/bpfprogs/gpuWork.c;l=35
The requirement is implemented using a timer to give periodic
interrupts and a worker thread per user id instance to accumulate
its run time on gpu and emit the event. Each user id instance is
tracked using a xe_user structure and the runtime is updated at
each timer interrupt. The timer period is hardcoded to 500 msecs.
The runtime on the gpu is collected for each xe file individually
inside the function xe_exec_queue_update_run_ticks() and accumulated
into the corresponding xe_user active_duration_ns field. The HW
Context timestamp field in the GTT is used to derive the runtime
in clock ticks and then converted into nanosecs before updating the
active duration.
Signed-off-by: Aakash Deep Sarkar <aakash.deep.sarkar@intel.com>
+ /mt/dim checkpatch 0a8f74a5dde6c5327dac9522cf1441003f2ebcba drm-intel
5fc47ee2e66d ANDROID: Add GPU work period support for Xe driver
-:72: CHECK:SPACING: No space is necessary after a cast
#72: FILE: drivers/gpu/drm/xe/xe_device.c:117:
+ uid = (int) cred->euid.val;
-:99: CHECK:LINE_SPACING: Please don't use multiple blank lines
#99: FILE: drivers/gpu/drm/xe/xe_device.c:144:
+
+
-:108: CHECK:SPACING: No space is necessary after a cast
#108: FILE: drivers/gpu/drm/xe/xe_device.c:153:
+ user->uid = (unsigned int) uid;
-:309: CHECK:BRACES: Blank lines aren't necessary after an open brace '{'
#309: FILE: drivers/gpu/drm/xe/xe_drm_client.c:437:
+ list_for_each_entry(xef, &user->filelist, user_link) {
+
-:311: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#311: FILE: drivers/gpu/drm/xe/xe_drm_client.c:439:
+ wait_var_event(&xef->exec_queue.pending_removal,
+ !atomic_read(&xef->exec_queue.pending_removal));
-:540: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#540:
new file mode 100644
-:567: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#567: FILE: drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h:23:
+TRACE_EVENT(gpu_work_period,
+
-:568: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#568: FILE: drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h:24:
+ TP_PROTO(
-:578: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#578: FILE: drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h:34:
+ TP_STRUCT__entry(
-:586: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#586: FILE: drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h:42:
+ TP_fast_assign(
-:595: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#595: FILE: drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h:51:
+ TP_printk("gpu_id=%u uid=%u start_time_ns=%llu end_time_ns=%llu total_active_duration_ns=%llu",
+ __entry->gpu_id,
total: 0 errors, 1 warnings, 10 checks, 515 lines checked
^ permalink raw reply [flat|nested] 7+ messages in thread* ✓ CI.KUnit: success for ANDROID: Add GPU work period support for Xe driver
2025-08-08 9:09 [PATCH] ANDROID: Add GPU work period support for Xe driver Aakash Deep Sarkar
2025-08-08 10:30 ` ✗ CI.checkpatch: warning for " Patchwork
@ 2025-08-08 10:31 ` Patchwork
2025-08-08 11:41 ` ✗ Xe.CI.BAT: failure " Patchwork
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2025-08-08 10:31 UTC (permalink / raw)
To: Aakash Deep Sarkar; +Cc: intel-xe
== Series Details ==
Series: ANDROID: Add GPU work period support for Xe driver
URL : https://patchwork.freedesktop.org/series/152678/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[10:30:50] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:30:54] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[10:31:21] Starting KUnit Kernel (1/1)...
[10:31:21] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:31:21] ================== guc_buf (11 subtests) ===================
[10:31:21] [PASSED] test_smallest
[10:31:21] [PASSED] test_largest
[10:31:22] [PASSED] test_granular
[10:31:22] [PASSED] test_unique
[10:31:22] [PASSED] test_overlap
[10:31:22] [PASSED] test_reusable
[10:31:22] [PASSED] test_too_big
[10:31:22] [PASSED] test_flush
[10:31:22] [PASSED] test_lookup
[10:31:22] [PASSED] test_data
[10:31:22] [PASSED] test_class
[10:31:22] ===================== [PASSED] guc_buf =====================
[10:31:22] =================== guc_dbm (7 subtests) ===================
[10:31:22] [PASSED] test_empty
[10:31:22] [PASSED] test_default
[10:31:22] ======================== test_size ========================
[10:31:22] [PASSED] 4
[10:31:22] [PASSED] 8
[10:31:22] [PASSED] 32
[10:31:22] [PASSED] 256
[10:31:22] ==================== [PASSED] test_size ====================
[10:31:22] ======================= test_reuse ========================
[10:31:22] [PASSED] 4
[10:31:22] [PASSED] 8
[10:31:22] [PASSED] 32
[10:31:22] [PASSED] 256
[10:31:22] =================== [PASSED] test_reuse ====================
[10:31:22] =================== test_range_overlap ====================
[10:31:22] [PASSED] 4
[10:31:22] [PASSED] 8
[10:31:22] [PASSED] 32
[10:31:22] [PASSED] 256
[10:31:22] =============== [PASSED] test_range_overlap ================
[10:31:22] =================== test_range_compact ====================
[10:31:22] [PASSED] 4
[10:31:22] [PASSED] 8
[10:31:22] [PASSED] 32
[10:31:22] [PASSED] 256
[10:31:22] =============== [PASSED] test_range_compact ================
[10:31:22] ==================== test_range_spare =====================
[10:31:22] [PASSED] 4
[10:31:22] [PASSED] 8
[10:31:22] [PASSED] 32
[10:31:22] [PASSED] 256
[10:31:22] ================ [PASSED] test_range_spare =================
[10:31:22] ===================== [PASSED] guc_dbm =====================
[10:31:22] =================== guc_idm (6 subtests) ===================
[10:31:22] [PASSED] bad_init
[10:31:22] [PASSED] no_init
[10:31:22] [PASSED] init_fini
[10:31:22] [PASSED] check_used
[10:31:22] [PASSED] check_quota
[10:31:22] [PASSED] check_all
[10:31:22] ===================== [PASSED] guc_idm =====================
[10:31:22] ================== no_relay (3 subtests) ===================
[10:31:22] [PASSED] xe_drops_guc2pf_if_not_ready
[10:31:22] [PASSED] xe_drops_guc2vf_if_not_ready
[10:31:22] [PASSED] xe_rejects_send_if_not_ready
[10:31:22] ==================== [PASSED] no_relay =====================
[10:31:22] ================== pf_relay (14 subtests) ==================
[10:31:22] [PASSED] pf_rejects_guc2pf_too_short
[10:31:22] [PASSED] pf_rejects_guc2pf_too_long
[10:31:22] [PASSED] pf_rejects_guc2pf_no_payload
[10:31:22] [PASSED] pf_fails_no_payload
[10:31:22] [PASSED] pf_fails_bad_origin
[10:31:22] [PASSED] pf_fails_bad_type
[10:31:22] [PASSED] pf_txn_reports_error
[10:31:22] [PASSED] pf_txn_sends_pf2guc
[10:31:22] [PASSED] pf_sends_pf2guc
[10:31:22] [SKIPPED] pf_loopback_nop
[10:31:22] [SKIPPED] pf_loopback_echo
[10:31:22] [SKIPPED] pf_loopback_fail
[10:31:22] [SKIPPED] pf_loopback_busy
[10:31:22] [SKIPPED] pf_loopback_retry
[10:31:22] ==================== [PASSED] pf_relay =====================
[10:31:22] ================== vf_relay (3 subtests) ===================
[10:31:22] [PASSED] vf_rejects_guc2vf_too_short
[10:31:22] [PASSED] vf_rejects_guc2vf_too_long
[10:31:22] [PASSED] vf_rejects_guc2vf_no_payload
[10:31:22] ==================== [PASSED] vf_relay =====================
[10:31:22] ===================== lmtt (1 subtest) =====================
[10:31:22] ======================== test_ops =========================
[10:31:22] [PASSED] 2-level
[10:31:22] [PASSED] multi-level
[10:31:22] ==================== [PASSED] test_ops =====================
[10:31:22] ====================== [PASSED] lmtt =======================
[10:31:22] ================= pf_service (11 subtests) =================
[10:31:22] [PASSED] pf_negotiate_any
[10:31:22] [PASSED] pf_negotiate_base_match
[10:31:22] [PASSED] pf_negotiate_base_newer
[10:31:22] [PASSED] pf_negotiate_base_next
[10:31:22] [SKIPPED] pf_negotiate_base_older
[10:31:22] [PASSED] pf_negotiate_base_prev
[10:31:22] [PASSED] pf_negotiate_latest_match
[10:31:22] [PASSED] pf_negotiate_latest_newer
[10:31:22] [PASSED] pf_negotiate_latest_next
[10:31:22] [SKIPPED] pf_negotiate_latest_older
[10:31:22] [SKIPPED] pf_negotiate_latest_prev
[10:31:22] =================== [PASSED] pf_service ====================
[10:31:22] =================== xe_mocs (2 subtests) ===================
[10:31:22] ================ xe_live_mocs_kernel_kunit ================
[10:31:22] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[10:31:22] ================ xe_live_mocs_reset_kunit =================
[10:31:22] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[10:31:22] ==================== [SKIPPED] xe_mocs =====================
[10:31:22] ================= xe_migrate (2 subtests) ==================
[10:31:22] ================= xe_migrate_sanity_kunit =================
[10:31:22] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[10:31:22] ================== xe_validate_ccs_kunit ==================
[10:31:22] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[10:31:22] =================== [SKIPPED] xe_migrate ===================
[10:31:22] ================== xe_dma_buf (1 subtest) ==================
[10:31:22] ==================== xe_dma_buf_kunit =====================
[10:31:22] ================ [SKIPPED] xe_dma_buf_kunit ================
[10:31:22] =================== [SKIPPED] xe_dma_buf ===================
[10:31:22] ================= xe_bo_shrink (1 subtest) =================
[10:31:22] =================== xe_bo_shrink_kunit ====================
[10:31:22] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[10:31:22] ================== [SKIPPED] xe_bo_shrink ==================
[10:31:22] ==================== xe_bo (2 subtests) ====================
[10:31:22] ================== xe_ccs_migrate_kunit ===================
[10:31:22] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[10:31:22] ==================== xe_bo_evict_kunit ====================
[10:31:22] =============== [SKIPPED] xe_bo_evict_kunit ================
[10:31:22] ===================== [SKIPPED] xe_bo ======================
[10:31:22] ==================== args (11 subtests) ====================
[10:31:22] [PASSED] count_args_test
[10:31:22] [PASSED] call_args_example
[10:31:22] [PASSED] call_args_test
[10:31:22] [PASSED] drop_first_arg_example
[10:31:22] [PASSED] drop_first_arg_test
[10:31:22] [PASSED] first_arg_example
[10:31:22] [PASSED] first_arg_test
[10:31:22] [PASSED] last_arg_example
[10:31:22] [PASSED] last_arg_test
[10:31:22] [PASSED] pick_arg_example
[10:31:22] [PASSED] sep_comma_example
[10:31:22] ====================== [PASSED] args =======================
[10:31:22] =================== xe_pci (3 subtests) ====================
[10:31:22] ==================== check_graphics_ip ====================
[10:31:22] [PASSED] 12.70 Xe_LPG
[10:31:22] [PASSED] 12.71 Xe_LPG
[10:31:22] [PASSED] 12.74 Xe_LPG+
[10:31:22] [PASSED] 20.01 Xe2_HPG
[10:31:22] [PASSED] 20.02 Xe2_HPG
[10:31:22] [PASSED] 20.04 Xe2_LPG
[10:31:22] [PASSED] 30.00 Xe3_LPG
[10:31:22] [PASSED] 30.01 Xe3_LPG
[10:31:22] [PASSED] 30.03 Xe3_LPG
[10:31:22] ================ [PASSED] check_graphics_ip ================
[10:31:22] ===================== check_media_ip ======================
[10:31:22] [PASSED] 13.00 Xe_LPM+
[10:31:22] [PASSED] 13.01 Xe2_HPM
[10:31:22] [PASSED] 20.00 Xe2_LPM
[10:31:22] [PASSED] 30.00 Xe3_LPM
[10:31:22] [PASSED] 30.02 Xe3_LPM
[10:31:22] ================= [PASSED] check_media_ip ==================
[10:31:22] ================= check_platform_gt_count =================
[10:31:22] [PASSED] 0x9A60 (TIGERLAKE)
[10:31:22] [PASSED] 0x9A68 (TIGERLAKE)
[10:31:22] [PASSED] 0x9A70 (TIGERLAKE)
[10:31:22] [PASSED] 0x9A40 (TIGERLAKE)
[10:31:22] [PASSED] 0x9A49 (TIGERLAKE)
[10:31:22] [PASSED] 0x9A59 (TIGERLAKE)
[10:31:22] [PASSED] 0x9A78 (TIGERLAKE)
[10:31:22] [PASSED] 0x9AC0 (TIGERLAKE)
[10:31:22] [PASSED] 0x9AC9 (TIGERLAKE)
[10:31:22] [PASSED] 0x9AD9 (TIGERLAKE)
[10:31:22] [PASSED] 0x9AF8 (TIGERLAKE)
[10:31:22] [PASSED] 0x4C80 (ROCKETLAKE)
[10:31:22] [PASSED] 0x4C8A (ROCKETLAKE)
[10:31:22] [PASSED] 0x4C8B (ROCKETLAKE)
[10:31:22] [PASSED] 0x4C8C (ROCKETLAKE)
[10:31:22] [PASSED] 0x4C90 (ROCKETLAKE)
[10:31:22] [PASSED] 0x4C9A (ROCKETLAKE)
[10:31:22] [PASSED] 0x4680 (ALDERLAKE_S)
[10:31:22] [PASSED] 0x4682 (ALDERLAKE_S)
[10:31:22] [PASSED] 0x4688 (ALDERLAKE_S)
[10:31:22] [PASSED] 0x468A (ALDERLAKE_S)
[10:31:22] [PASSED] 0x468B (ALDERLAKE_S)
[10:31:22] [PASSED] 0x4690 (ALDERLAKE_S)
[10:31:22] [PASSED] 0x4692 (ALDERLAKE_S)
[10:31:22] [PASSED] 0x4693 (ALDERLAKE_S)
[10:31:22] [PASSED] 0x46A0 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46A1 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46A2 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46A3 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46A6 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46A8 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46AA (ALDERLAKE_P)
[10:31:22] [PASSED] 0x462A (ALDERLAKE_P)
[10:31:22] [PASSED] 0x4626 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x4628 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46B0 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46B1 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46B2 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46B3 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46C0 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46C1 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46C2 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46C3 (ALDERLAKE_P)
[10:31:22] [PASSED] 0x46D0 (ALDERLAKE_N)
[10:31:22] [PASSED] 0x46D1 (ALDERLAKE_N)
[10:31:22] [PASSED] 0x46D2 (ALDERLAKE_N)
[10:31:22] [PASSED] 0x46D3 (ALDERLAKE_N)
[10:31:22] [PASSED] 0x46D4 (ALDERLAKE_N)
[10:31:22] [PASSED] 0xA721 (ALDERLAKE_P)
[10:31:22] [PASSED] 0xA7A1 (ALDERLAKE_P)
[10:31:22] [PASSED] 0xA7A9 (ALDERLAKE_P)
[10:31:22] [PASSED] 0xA7AC (ALDERLAKE_P)
[10:31:22] [PASSED] 0xA7AD (ALDERLAKE_P)
[10:31:22] [PASSED] 0xA720 (ALDERLAKE_P)
[10:31:22] [PASSED] 0xA7A0 (ALDERLAKE_P)
[10:31:22] [PASSED] 0xA7A8 (ALDERLAKE_P)
[10:31:22] [PASSED] 0xA7AA (ALDERLAKE_P)
[10:31:22] [PASSED] 0xA7AB (ALDERLAKE_P)
[10:31:22] [PASSED] 0xA780 (ALDERLAKE_S)
[10:31:22] [PASSED] 0xA781 (ALDERLAKE_S)
[10:31:22] [PASSED] 0xA782 (ALDERLAKE_S)
[10:31:22] [PASSED] 0xA783 (ALDERLAKE_S)
[10:31:22] [PASSED] 0xA788 (ALDERLAKE_S)
[10:31:22] [PASSED] 0xA789 (ALDERLAKE_S)
[10:31:22] [PASSED] 0xA78A (ALDERLAKE_S)
[10:31:22] [PASSED] 0xA78B (ALDERLAKE_S)
[10:31:22] [PASSED] 0x4905 (DG1)
[10:31:22] [PASSED] 0x4906 (DG1)
[10:31:22] [PASSED] 0x4907 (DG1)
[10:31:22] [PASSED] 0x4908 (DG1)
[10:31:22] [PASSED] 0x4909 (DG1)
[10:31:22] [PASSED] 0x56C0 (DG2)
[10:31:22] [PASSED] 0x56C2 (DG2)
[10:31:22] [PASSED] 0x56C1 (DG2)
[10:31:22] [PASSED] 0x7D51 (METEORLAKE)
[10:31:22] [PASSED] 0x7DD1 (METEORLAKE)
[10:31:22] [PASSED] 0x7D41 (METEORLAKE)
[10:31:22] [PASSED] 0x7D67 (METEORLAKE)
[10:31:22] [PASSED] 0xB640 (METEORLAKE)
[10:31:22] [PASSED] 0x56A0 (DG2)
[10:31:22] [PASSED] 0x56A1 (DG2)
[10:31:22] [PASSED] 0x56A2 (DG2)
[10:31:22] [PASSED] 0x56BE (DG2)
[10:31:22] [PASSED] 0x56BF (DG2)
[10:31:22] [PASSED] 0x5690 (DG2)
[10:31:22] [PASSED] 0x5691 (DG2)
[10:31:22] [PASSED] 0x5692 (DG2)
[10:31:22] [PASSED] 0x56A5 (DG2)
[10:31:22] [PASSED] 0x56A6 (DG2)
[10:31:22] [PASSED] 0x56B0 (DG2)
[10:31:22] [PASSED] 0x56B1 (DG2)
[10:31:22] [PASSED] 0x56BA (DG2)
[10:31:22] [PASSED] 0x56BB (DG2)
[10:31:22] [PASSED] 0x56BC (DG2)
[10:31:22] [PASSED] 0x56BD (DG2)
[10:31:22] [PASSED] 0x5693 (DG2)
[10:31:22] [PASSED] 0x5694 (DG2)
[10:31:22] [PASSED] 0x5695 (DG2)
[10:31:22] [PASSED] 0x56A3 (DG2)
[10:31:22] [PASSED] 0x56A4 (DG2)
[10:31:22] [PASSED] 0x56B2 (DG2)
[10:31:22] [PASSED] 0x56B3 (DG2)
[10:31:22] [PASSED] 0x5696 (DG2)
[10:31:22] [PASSED] 0x5697 (DG2)
[10:31:22] [PASSED] 0xB69 (PVC)
[10:31:22] [PASSED] 0xB6E (PVC)
[10:31:22] [PASSED] 0xBD4 (PVC)
[10:31:22] [PASSED] 0xBD5 (PVC)
[10:31:22] [PASSED] 0xBD6 (PVC)
[10:31:22] [PASSED] 0xBD7 (PVC)
[10:31:22] [PASSED] 0xBD8 (PVC)
[10:31:22] [PASSED] 0xBD9 (PVC)
[10:31:22] [PASSED] 0xBDA (PVC)
[10:31:22] [PASSED] 0xBDB (PVC)
[10:31:22] [PASSED] 0xBE0 (PVC)
[10:31:22] [PASSED] 0xBE1 (PVC)
[10:31:22] [PASSED] 0xBE5 (PVC)
[10:31:22] [PASSED] 0x7D40 (METEORLAKE)
[10:31:22] [PASSED] 0x7D45 (METEORLAKE)
[10:31:22] [PASSED] 0x7D55 (METEORLAKE)
[10:31:22] [PASSED] 0x7D60 (METEORLAKE)
[10:31:22] [PASSED] 0x7DD5 (METEORLAKE)
[10:31:22] [PASSED] 0x6420 (LUNARLAKE)
[10:31:22] [PASSED] 0x64A0 (LUNARLAKE)
[10:31:22] [PASSED] 0x64B0 (LUNARLAKE)
[10:31:22] [PASSED] 0xE202 (BATTLEMAGE)
[10:31:22] [PASSED] 0xE209 (BATTLEMAGE)
[10:31:22] [PASSED] 0xE20B (BATTLEMAGE)
[10:31:22] [PASSED] 0xE20C (BATTLEMAGE)
[10:31:22] [PASSED] 0xE20D (BATTLEMAGE)
[10:31:22] [PASSED] 0xE210 (BATTLEMAGE)
[10:31:22] [PASSED] 0xE211 (BATTLEMAGE)
[10:31:22] [PASSED] 0xE212 (BATTLEMAGE)
[10:31:22] [PASSED] 0xE216 (BATTLEMAGE)
[10:31:22] [PASSED] 0xE220 (BATTLEMAGE)
[10:31:22] [PASSED] 0xE221 (BATTLEMAGE)
[10:31:22] [PASSED] 0xE222 (BATTLEMAGE)
[10:31:22] [PASSED] 0xE223 (BATTLEMAGE)
[10:31:22] [PASSED] 0xB080 (PANTHERLAKE)
[10:31:22] [PASSED] 0xB081 (PANTHERLAKE)
[10:31:22] [PASSED] 0xB082 (PANTHERLAKE)
[10:31:22] [PASSED] 0xB083 (PANTHERLAKE)
[10:31:22] [PASSED] 0xB084 (PANTHERLAKE)
[10:31:22] [PASSED] 0xB085 (PANTHERLAKE)
[10:31:22] [PASSED] 0xB086 (PANTHERLAKE)
[10:31:22] [PASSED] 0xB087 (PANTHERLAKE)
[10:31:22] [PASSED] 0xB08F (PANTHERLAKE)
[10:31:22] [PASSED] 0xB090 (PANTHERLAKE)
[10:31:22] [PASSED] 0xB0A0 (PANTHERLAKE)
[10:31:22] [PASSED] 0xB0B0 (PANTHERLAKE)
[10:31:22] [PASSED] 0xFD80 (PANTHERLAKE)
[10:31:22] [PASSED] 0xFD81 (PANTHERLAKE)
[10:31:22] ============= [PASSED] check_platform_gt_count =============
[10:31:22] ===================== [PASSED] xe_pci ======================
[10:31:22] =================== xe_rtp (2 subtests) ====================
[10:31:22] =============== xe_rtp_process_to_sr_tests ================
[10:31:22] [PASSED] coalesce-same-reg
[10:31:22] [PASSED] no-match-no-add
[10:31:22] [PASSED] match-or
[10:31:22] [PASSED] match-or-xfail
[10:31:22] [PASSED] no-match-no-add-multiple-rules
[10:31:22] [PASSED] two-regs-two-entries
[10:31:22] [PASSED] clr-one-set-other
[10:31:22] [PASSED] set-field
[10:31:22] [PASSED] conflict-duplicate
[10:31:22] [PASSED] conflict-not-disjoint
[10:31:22] [PASSED] conflict-reg-type
[10:31:22] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[10:31:22] ================== xe_rtp_process_tests ===================
[10:31:22] [PASSED] active1
[10:31:22] [PASSED] active2
[10:31:22] [PASSED] active-inactive
[10:31:22] [PASSED] inactive-active
[10:31:22] [PASSED] inactive-1st_or_active-inactive
[10:31:22] [PASSED] inactive-2nd_or_active-inactive
[10:31:22] [PASSED] inactive-last_or_active-inactive
[10:31:22] [PASSED] inactive-no_or_active-inactive
[10:31:22] ============== [PASSED] xe_rtp_process_tests ===============
[10:31:22] ===================== [PASSED] xe_rtp ======================
[10:31:22] ==================== xe_wa (1 subtest) =====================
[10:31:22] ======================== xe_wa_gt =========================
[10:31:22] [PASSED] TIGERLAKE (B0)
[10:31:22] [PASSED] DG1 (A0)
[10:31:22] [PASSED] DG1 (B0)
[10:31:22] [PASSED] ALDERLAKE_S (A0)
[10:31:22] [PASSED] ALDERLAKE_S (B0)
[10:31:22] [PASSED] ALDERLAKE_S (C0)
[10:31:22] [PASSED] ALDERLAKE_S (D0)
[10:31:22] [PASSED] ALDERLAKE_P (A0)
[10:31:22] [PASSED] ALDERLAKE_P (B0)
[10:31:22] [PASSED] ALDERLAKE_P (C0)
[10:31:22] [PASSED] ALDERLAKE_S_RPLS (D0)
[10:31:22] [PASSED] ALDERLAKE_P_RPLU (E0)
[10:31:22] [PASSED] DG2_G10 (C0)
[10:31:22] [PASSED] DG2_G11 (B1)
[10:31:22] [PASSED] DG2_G12 (A1)
[10:31:22] [PASSED] METEORLAKE (g:A0, m:A0)
[10:31:22] [PASSED] METEORLAKE (g:A0, m:A0)
[10:31:22] [PASSED] METEORLAKE (g:A0, m:A0)
[10:31:22] [PASSED] LUNARLAKE (g:A0, m:A0)
[10:31:22] [PASSED] LUNARLAKE (g:B0, m:A0)
stty: 'standard input': Inappropriate ioctl for device
[10:31:22] [PASSED] BATTLEMAGE (g:A0, m:A1)
[10:31:22] ==================== [PASSED] xe_wa_gt =====================
[10:31:22] ====================== [PASSED] xe_wa ======================
[10:31:22] ============================================================
[10:31:22] Testing complete. Ran 297 tests: passed: 281, skipped: 16
[10:31:22] Elapsed time: 31.720s total, 4.186s configuring, 27.168s building, 0.312s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[10:31:22] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:31:23] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[10:31:45] Starting KUnit Kernel (1/1)...
[10:31:45] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:31:45] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[10:31:45] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[10:31:45] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[10:31:45] =========== drm_validate_clone_mode (2 subtests) ===========
[10:31:45] ============== drm_test_check_in_clone_mode ===============
[10:31:45] [PASSED] in_clone_mode
[10:31:45] [PASSED] not_in_clone_mode
[10:31:45] ========== [PASSED] drm_test_check_in_clone_mode ===========
[10:31:45] =============== drm_test_check_valid_clones ===============
[10:31:45] [PASSED] not_in_clone_mode
[10:31:45] [PASSED] valid_clone
[10:31:45] [PASSED] invalid_clone
[10:31:45] =========== [PASSED] drm_test_check_valid_clones ===========
[10:31:45] ============= [PASSED] drm_validate_clone_mode =============
[10:31:45] ============= drm_validate_modeset (1 subtest) =============
[10:31:45] [PASSED] drm_test_check_connector_changed_modeset
[10:31:45] ============== [PASSED] drm_validate_modeset ===============
[10:31:45] ====== drm_test_bridge_get_current_state (2 subtests) ======
[10:31:45] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[10:31:45] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[10:31:45] ======== [PASSED] drm_test_bridge_get_current_state ========
[10:31:45] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[10:31:45] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[10:31:45] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[10:31:45] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[10:31:45] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[10:31:45] ============== drm_bridge_alloc (2 subtests) ===============
[10:31:45] [PASSED] drm_test_drm_bridge_alloc_basic
[10:31:45] [PASSED] drm_test_drm_bridge_alloc_get_put
[10:31:45] ================ [PASSED] drm_bridge_alloc =================
[10:31:45] ================== drm_buddy (7 subtests) ==================
[10:31:45] [PASSED] drm_test_buddy_alloc_limit
[10:31:45] [PASSED] drm_test_buddy_alloc_optimistic
[10:31:45] [PASSED] drm_test_buddy_alloc_pessimistic
[10:31:45] [PASSED] drm_test_buddy_alloc_pathological
[10:31:45] [PASSED] drm_test_buddy_alloc_contiguous
[10:31:45] [PASSED] drm_test_buddy_alloc_clear
[10:31:45] [PASSED] drm_test_buddy_alloc_range_bias
[10:31:45] ==================== [PASSED] drm_buddy ====================
[10:31:45] ============= drm_cmdline_parser (40 subtests) =============
[10:31:45] [PASSED] drm_test_cmdline_force_d_only
[10:31:45] [PASSED] drm_test_cmdline_force_D_only_dvi
[10:31:45] [PASSED] drm_test_cmdline_force_D_only_hdmi
[10:31:45] [PASSED] drm_test_cmdline_force_D_only_not_digital
[10:31:45] [PASSED] drm_test_cmdline_force_e_only
[10:31:45] [PASSED] drm_test_cmdline_res
[10:31:45] [PASSED] drm_test_cmdline_res_vesa
[10:31:45] [PASSED] drm_test_cmdline_res_vesa_rblank
[10:31:45] [PASSED] drm_test_cmdline_res_rblank
[10:31:45] [PASSED] drm_test_cmdline_res_bpp
[10:31:45] [PASSED] drm_test_cmdline_res_refresh
[10:31:45] [PASSED] drm_test_cmdline_res_bpp_refresh
[10:31:45] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[10:31:45] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[10:31:45] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[10:31:45] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[10:31:45] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[10:31:45] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[10:31:45] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[10:31:45] [PASSED] drm_test_cmdline_res_margins_force_on
[10:31:45] [PASSED] drm_test_cmdline_res_vesa_margins
[10:31:45] [PASSED] drm_test_cmdline_name
[10:31:45] [PASSED] drm_test_cmdline_name_bpp
[10:31:45] [PASSED] drm_test_cmdline_name_option
[10:31:45] [PASSED] drm_test_cmdline_name_bpp_option
[10:31:45] [PASSED] drm_test_cmdline_rotate_0
[10:31:45] [PASSED] drm_test_cmdline_rotate_90
[10:31:45] [PASSED] drm_test_cmdline_rotate_180
[10:31:45] [PASSED] drm_test_cmdline_rotate_270
[10:31:45] [PASSED] drm_test_cmdline_hmirror
[10:31:45] [PASSED] drm_test_cmdline_vmirror
[10:31:45] [PASSED] drm_test_cmdline_margin_options
[10:31:45] [PASSED] drm_test_cmdline_multiple_options
[10:31:45] [PASSED] drm_test_cmdline_bpp_extra_and_option
[10:31:45] [PASSED] drm_test_cmdline_extra_and_option
[10:31:45] [PASSED] drm_test_cmdline_freestanding_options
[10:31:45] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[10:31:45] [PASSED] drm_test_cmdline_panel_orientation
[10:31:45] ================ drm_test_cmdline_invalid =================
[10:31:45] [PASSED] margin_only
[10:31:45] [PASSED] interlace_only
[10:31:45] [PASSED] res_missing_x
[10:31:45] [PASSED] res_missing_y
[10:31:45] [PASSED] res_bad_y
[10:31:45] [PASSED] res_missing_y_bpp
[10:31:45] [PASSED] res_bad_bpp
[10:31:45] [PASSED] res_bad_refresh
[10:31:45] [PASSED] res_bpp_refresh_force_on_off
[10:31:45] [PASSED] res_invalid_mode
[10:31:45] [PASSED] res_bpp_wrong_place_mode
[10:31:45] [PASSED] name_bpp_refresh
[10:31:45] [PASSED] name_refresh
[10:31:45] [PASSED] name_refresh_wrong_mode
[10:31:45] [PASSED] name_refresh_invalid_mode
[10:31:45] [PASSED] rotate_multiple
[10:31:45] [PASSED] rotate_invalid_val
[10:31:45] [PASSED] rotate_truncated
[10:31:45] [PASSED] invalid_option
[10:31:45] [PASSED] invalid_tv_option
[10:31:45] [PASSED] truncated_tv_option
[10:31:45] ============ [PASSED] drm_test_cmdline_invalid =============
[10:31:45] =============== drm_test_cmdline_tv_options ===============
[10:31:45] [PASSED] NTSC
[10:31:45] [PASSED] NTSC_443
[10:31:45] [PASSED] NTSC_J
[10:31:45] [PASSED] PAL
[10:31:45] [PASSED] PAL_M
[10:31:45] [PASSED] PAL_N
[10:31:45] [PASSED] SECAM
[10:31:45] [PASSED] MONO_525
[10:31:45] [PASSED] MONO_625
[10:31:45] =========== [PASSED] drm_test_cmdline_tv_options ===========
[10:31:45] =============== [PASSED] drm_cmdline_parser ================
[10:31:45] ========== drmm_connector_hdmi_init (20 subtests) ==========
[10:31:45] [PASSED] drm_test_connector_hdmi_init_valid
[10:31:45] [PASSED] drm_test_connector_hdmi_init_bpc_8
[10:31:45] [PASSED] drm_test_connector_hdmi_init_bpc_10
[10:31:45] [PASSED] drm_test_connector_hdmi_init_bpc_12
[10:31:45] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[10:31:45] [PASSED] drm_test_connector_hdmi_init_bpc_null
[10:31:45] [PASSED] drm_test_connector_hdmi_init_formats_empty
[10:31:45] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[10:31:45] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[10:31:45] [PASSED] supported_formats=0x9 yuv420_allowed=1
[10:31:45] [PASSED] supported_formats=0x9 yuv420_allowed=0
[10:31:45] [PASSED] supported_formats=0x3 yuv420_allowed=1
[10:31:45] [PASSED] supported_formats=0x3 yuv420_allowed=0
[10:31:45] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[10:31:45] [PASSED] drm_test_connector_hdmi_init_null_ddc
[10:31:45] [PASSED] drm_test_connector_hdmi_init_null_product
[10:31:45] [PASSED] drm_test_connector_hdmi_init_null_vendor
[10:31:45] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[10:31:45] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[10:31:45] [PASSED] drm_test_connector_hdmi_init_product_valid
[10:31:45] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[10:31:45] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[10:31:45] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[10:31:45] ========= drm_test_connector_hdmi_init_type_valid =========
[10:31:45] [PASSED] HDMI-A
[10:31:45] [PASSED] HDMI-B
[10:31:45] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[10:31:45] ======== drm_test_connector_hdmi_init_type_invalid ========
[10:31:45] [PASSED] Unknown
[10:31:45] [PASSED] VGA
[10:31:45] [PASSED] DVI-I
[10:31:45] [PASSED] DVI-D
[10:31:45] [PASSED] DVI-A
[10:31:45] [PASSED] Composite
[10:31:45] [PASSED] SVIDEO
[10:31:45] [PASSED] LVDS
[10:31:45] [PASSED] Component
[10:31:45] [PASSED] DIN
[10:31:45] [PASSED] DP
[10:31:45] [PASSED] TV
[10:31:45] [PASSED] eDP
[10:31:45] [PASSED] Virtual
[10:31:45] [PASSED] DSI
[10:31:45] [PASSED] DPI
[10:31:45] [PASSED] Writeback
[10:31:45] [PASSED] SPI
[10:31:45] [PASSED] USB
[10:31:45] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[10:31:45] ============ [PASSED] drmm_connector_hdmi_init =============
[10:31:45] ============= drmm_connector_init (3 subtests) =============
[10:31:45] [PASSED] drm_test_drmm_connector_init
[10:31:45] [PASSED] drm_test_drmm_connector_init_null_ddc
[10:31:45] ========= drm_test_drmm_connector_init_type_valid =========
[10:31:45] [PASSED] Unknown
[10:31:45] [PASSED] VGA
[10:31:45] [PASSED] DVI-I
[10:31:45] [PASSED] DVI-D
[10:31:45] [PASSED] DVI-A
[10:31:45] [PASSED] Composite
[10:31:45] [PASSED] SVIDEO
[10:31:45] [PASSED] LVDS
[10:31:45] [PASSED] Component
[10:31:45] [PASSED] DIN
[10:31:45] [PASSED] DP
[10:31:45] [PASSED] HDMI-A
[10:31:45] [PASSED] HDMI-B
[10:31:45] [PASSED] TV
[10:31:45] [PASSED] eDP
[10:31:45] [PASSED] Virtual
[10:31:45] [PASSED] DSI
[10:31:45] [PASSED] DPI
[10:31:45] [PASSED] Writeback
[10:31:45] [PASSED] SPI
[10:31:45] [PASSED] USB
[10:31:45] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[10:31:45] =============== [PASSED] drmm_connector_init ===============
[10:31:45] ========= drm_connector_dynamic_init (6 subtests) ==========
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_init
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_init_properties
[10:31:45] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[10:31:45] [PASSED] Unknown
[10:31:45] [PASSED] VGA
[10:31:45] [PASSED] DVI-I
[10:31:45] [PASSED] DVI-D
[10:31:45] [PASSED] DVI-A
[10:31:45] [PASSED] Composite
[10:31:45] [PASSED] SVIDEO
[10:31:45] [PASSED] LVDS
[10:31:45] [PASSED] Component
[10:31:45] [PASSED] DIN
[10:31:45] [PASSED] DP
[10:31:45] [PASSED] HDMI-A
[10:31:45] [PASSED] HDMI-B
[10:31:45] [PASSED] TV
[10:31:45] [PASSED] eDP
[10:31:45] [PASSED] Virtual
[10:31:45] [PASSED] DSI
[10:31:45] [PASSED] DPI
[10:31:45] [PASSED] Writeback
[10:31:45] [PASSED] SPI
[10:31:45] [PASSED] USB
[10:31:45] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[10:31:45] ======== drm_test_drm_connector_dynamic_init_name =========
[10:31:45] [PASSED] Unknown
[10:31:45] [PASSED] VGA
[10:31:45] [PASSED] DVI-I
[10:31:45] [PASSED] DVI-D
[10:31:45] [PASSED] DVI-A
[10:31:45] [PASSED] Composite
[10:31:45] [PASSED] SVIDEO
[10:31:45] [PASSED] LVDS
[10:31:45] [PASSED] Component
[10:31:45] [PASSED] DIN
[10:31:45] [PASSED] DP
[10:31:45] [PASSED] HDMI-A
[10:31:45] [PASSED] HDMI-B
[10:31:45] [PASSED] TV
[10:31:45] [PASSED] eDP
[10:31:45] [PASSED] Virtual
[10:31:45] [PASSED] DSI
[10:31:45] [PASSED] DPI
[10:31:45] [PASSED] Writeback
[10:31:45] [PASSED] SPI
[10:31:45] [PASSED] USB
[10:31:45] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[10:31:45] =========== [PASSED] drm_connector_dynamic_init ============
[10:31:45] ==== drm_connector_dynamic_register_early (4 subtests) =====
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[10:31:45] ====== [PASSED] drm_connector_dynamic_register_early =======
[10:31:45] ======= drm_connector_dynamic_register (7 subtests) ========
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[10:31:45] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[10:31:45] ========= [PASSED] drm_connector_dynamic_register ==========
[10:31:45] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[10:31:45] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[10:31:45] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[10:31:45] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[10:31:45] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[10:31:45] ========== drm_test_get_tv_mode_from_name_valid ===========
[10:31:45] [PASSED] NTSC
[10:31:45] [PASSED] NTSC-443
[10:31:45] [PASSED] NTSC-J
[10:31:45] [PASSED] PAL
[10:31:45] [PASSED] PAL-M
[10:31:45] [PASSED] PAL-N
[10:31:45] [PASSED] SECAM
[10:31:45] [PASSED] Mono
[10:31:45] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[10:31:45] [PASSED] drm_test_get_tv_mode_from_name_truncated
[10:31:45] ============ [PASSED] drm_get_tv_mode_from_name ============
[10:31:45] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[10:31:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[10:31:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[10:31:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[10:31:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[10:31:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[10:31:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[10:31:45] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[10:31:45] [PASSED] VIC 96
[10:31:45] [PASSED] VIC 97
[10:31:45] [PASSED] VIC 101
[10:31:45] [PASSED] VIC 102
[10:31:45] [PASSED] VIC 106
[10:31:45] [PASSED] VIC 107
[10:31:45] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[10:31:45] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[10:31:45] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[10:31:45] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[10:31:45] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[10:31:45] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[10:31:45] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[10:31:45] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[10:31:45] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[10:31:45] [PASSED] Automatic
[10:31:45] [PASSED] Full
[10:31:45] [PASSED] Limited 16:235
[10:31:45] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[10:31:45] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[10:31:45] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[10:31:45] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[10:31:45] === drm_test_drm_hdmi_connector_get_output_format_name ====
[10:31:45] [PASSED] RGB
[10:31:45] [PASSED] YUV 4:2:0
[10:31:45] [PASSED] YUV 4:2:2
[10:31:45] [PASSED] YUV 4:4:4
[10:31:45] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[10:31:45] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[10:31:45] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[10:31:45] ============= drm_damage_helper (21 subtests) ==============
[10:31:45] [PASSED] drm_test_damage_iter_no_damage
[10:31:45] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[10:31:45] [PASSED] drm_test_damage_iter_no_damage_src_moved
[10:31:45] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[10:31:45] [PASSED] drm_test_damage_iter_no_damage_not_visible
[10:31:45] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[10:31:45] [PASSED] drm_test_damage_iter_no_damage_no_fb
[10:31:45] [PASSED] drm_test_damage_iter_simple_damage
[10:31:45] [PASSED] drm_test_damage_iter_single_damage
[10:31:45] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[10:31:45] [PASSED] drm_test_damage_iter_single_damage_outside_src
[10:31:45] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[10:31:45] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[10:31:45] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[10:31:45] [PASSED] drm_test_damage_iter_single_damage_src_moved
[10:31:45] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[10:31:45] [PASSED] drm_test_damage_iter_damage
[10:31:45] [PASSED] drm_test_damage_iter_damage_one_intersect
[10:31:45] [PASSED] drm_test_damage_iter_damage_one_outside
[10:31:45] [PASSED] drm_test_damage_iter_damage_src_moved
[10:31:45] [PASSED] drm_test_damage_iter_damage_not_visible
[10:31:45] ================ [PASSED] drm_damage_helper ================
[10:31:45] ============== drm_dp_mst_helper (3 subtests) ==============
[10:31:45] ============== drm_test_dp_mst_calc_pbn_mode ==============
[10:31:45] [PASSED] Clock 154000 BPP 30 DSC disabled
[10:31:45] [PASSED] Clock 234000 BPP 30 DSC disabled
[10:31:45] [PASSED] Clock 297000 BPP 24 DSC disabled
[10:31:45] [PASSED] Clock 332880 BPP 24 DSC enabled
[10:31:45] [PASSED] Clock 324540 BPP 24 DSC enabled
[10:31:45] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[10:31:45] ============== drm_test_dp_mst_calc_pbn_div ===============
[10:31:45] [PASSED] Link rate 2000000 lane count 4
[10:31:45] [PASSED] Link rate 2000000 lane count 2
[10:31:45] [PASSED] Link rate 2000000 lane count 1
[10:31:45] [PASSED] Link rate 1350000 lane count 4
[10:31:45] [PASSED] Link rate 1350000 lane count 2
[10:31:45] [PASSED] Link rate 1350000 lane count 1
[10:31:45] [PASSED] Link rate 1000000 lane count 4
[10:31:45] [PASSED] Link rate 1000000 lane count 2
[10:31:45] [PASSED] Link rate 1000000 lane count 1
[10:31:45] [PASSED] Link rate 810000 lane count 4
[10:31:45] [PASSED] Link rate 810000 lane count 2
[10:31:45] [PASSED] Link rate 810000 lane count 1
[10:31:45] [PASSED] Link rate 540000 lane count 4
[10:31:45] [PASSED] Link rate 540000 lane count 2
[10:31:45] [PASSED] Link rate 540000 lane count 1
[10:31:45] [PASSED] Link rate 270000 lane count 4
[10:31:45] [PASSED] Link rate 270000 lane count 2
[10:31:45] [PASSED] Link rate 270000 lane count 1
[10:31:45] [PASSED] Link rate 162000 lane count 4
[10:31:45] [PASSED] Link rate 162000 lane count 2
[10:31:45] [PASSED] Link rate 162000 lane count 1
[10:31:45] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[10:31:45] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[10:31:45] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[10:31:45] [PASSED] DP_POWER_UP_PHY with port number
[10:31:45] [PASSED] DP_POWER_DOWN_PHY with port number
[10:31:45] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[10:31:45] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[10:31:45] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[10:31:45] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[10:31:45] [PASSED] DP_QUERY_PAYLOAD with port number
[10:31:45] [PASSED] DP_QUERY_PAYLOAD with VCPI
[10:31:45] [PASSED] DP_REMOTE_DPCD_READ with port number
[10:31:45] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[10:31:45] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[10:31:45] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[10:31:45] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[10:31:45] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[10:31:45] [PASSED] DP_REMOTE_I2C_READ with port number
[10:31:45] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[10:31:45] [PASSED] DP_REMOTE_I2C_READ with transactions array
[10:31:45] [PASSED] DP_REMOTE_I2C_WRITE with port number
[10:31:45] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[10:31:45] [PASSED] DP_REMOTE_I2C_WRITE with data array
[10:31:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[10:31:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[10:31:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[10:31:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[10:31:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[10:31:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[10:31:45] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[10:31:45] ================ [PASSED] drm_dp_mst_helper ================
[10:31:45] ================== drm_exec (7 subtests) ===================
[10:31:45] [PASSED] sanitycheck
[10:31:45] [PASSED] test_lock
[10:31:45] [PASSED] test_lock_unlock
[10:31:45] [PASSED] test_duplicates
[10:31:45] [PASSED] test_prepare
[10:31:45] [PASSED] test_prepare_array
[10:31:45] [PASSED] test_multiple_loops
[10:31:45] ==================== [PASSED] drm_exec =====================
[10:31:45] =========== drm_format_helper_test (17 subtests) ===========
[10:31:45] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[10:31:45] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[10:31:45] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[10:31:45] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[10:31:45] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[10:31:45] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[10:31:45] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[10:31:45] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[10:31:45] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[10:31:45] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[10:31:45] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[10:31:45] ============== drm_test_fb_xrgb8888_to_mono ===============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[10:31:45] ==================== drm_test_fb_swab =====================
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ================ [PASSED] drm_test_fb_swab =================
[10:31:45] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[10:31:45] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[10:31:45] [PASSED] single_pixel_source_buffer
[10:31:45] [PASSED] single_pixel_clip_rectangle
[10:31:45] [PASSED] well_known_colors
[10:31:45] [PASSED] destination_pitch
[10:31:45] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[10:31:45] ================= drm_test_fb_clip_offset =================
[10:31:45] [PASSED] pass through
[10:31:45] [PASSED] horizontal offset
[10:31:45] [PASSED] vertical offset
[10:31:45] [PASSED] horizontal and vertical offset
[10:31:45] [PASSED] horizontal offset (custom pitch)
[10:31:45] [PASSED] vertical offset (custom pitch)
[10:31:45] [PASSED] horizontal and vertical offset (custom pitch)
[10:31:45] ============= [PASSED] drm_test_fb_clip_offset =============
[10:31:45] =================== drm_test_fb_memcpy ====================
[10:31:45] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[10:31:45] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[10:31:45] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[10:31:45] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[10:31:45] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[10:31:45] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[10:31:45] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[10:31:45] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[10:31:45] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[10:31:45] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[10:31:45] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[10:31:45] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[10:31:45] =============== [PASSED] drm_test_fb_memcpy ================
[10:31:45] ============= [PASSED] drm_format_helper_test ==============
[10:31:45] ================= drm_format (18 subtests) =================
[10:31:45] [PASSED] drm_test_format_block_width_invalid
[10:31:45] [PASSED] drm_test_format_block_width_one_plane
[10:31:45] [PASSED] drm_test_format_block_width_two_plane
[10:31:45] [PASSED] drm_test_format_block_width_three_plane
[10:31:45] [PASSED] drm_test_format_block_width_tiled
[10:31:45] [PASSED] drm_test_format_block_height_invalid
[10:31:45] [PASSED] drm_test_format_block_height_one_plane
[10:31:45] [PASSED] drm_test_format_block_height_two_plane
[10:31:45] [PASSED] drm_test_format_block_height_three_plane
[10:31:45] [PASSED] drm_test_format_block_height_tiled
[10:31:45] [PASSED] drm_test_format_min_pitch_invalid
[10:31:45] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[10:31:45] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[10:31:45] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[10:31:45] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[10:31:45] [PASSED] drm_test_format_min_pitch_two_plane
[10:31:45] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[10:31:45] [PASSED] drm_test_format_min_pitch_tiled
[10:31:45] =================== [PASSED] drm_format ====================
[10:31:45] ============== drm_framebuffer (10 subtests) ===============
[10:31:45] ========== drm_test_framebuffer_check_src_coords ==========
[10:31:45] [PASSED] Success: source fits into fb
[10:31:45] [PASSED] Fail: overflowing fb with x-axis coordinate
[10:31:45] [PASSED] Fail: overflowing fb with y-axis coordinate
[10:31:45] [PASSED] Fail: overflowing fb with source width
[10:31:45] [PASSED] Fail: overflowing fb with source height
[10:31:45] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[10:31:45] [PASSED] drm_test_framebuffer_cleanup
[10:31:45] =============== drm_test_framebuffer_create ===============
[10:31:45] [PASSED] ABGR8888 normal sizes
[10:31:45] [PASSED] ABGR8888 max sizes
[10:31:45] [PASSED] ABGR8888 pitch greater than min required
[10:31:45] [PASSED] ABGR8888 pitch less than min required
[10:31:45] [PASSED] ABGR8888 Invalid width
[10:31:45] [PASSED] ABGR8888 Invalid buffer handle
[10:31:45] [PASSED] No pixel format
[10:31:45] [PASSED] ABGR8888 Width 0
[10:31:45] [PASSED] ABGR8888 Height 0
[10:31:45] [PASSED] ABGR8888 Out of bound height * pitch combination
[10:31:45] [PASSED] ABGR8888 Large buffer offset
[10:31:45] [PASSED] ABGR8888 Buffer offset for inexistent plane
[10:31:45] [PASSED] ABGR8888 Invalid flag
[10:31:45] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[10:31:45] [PASSED] ABGR8888 Valid buffer modifier
[10:31:45] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[10:31:45] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[10:31:45] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[10:31:45] [PASSED] NV12 Normal sizes
[10:31:45] [PASSED] NV12 Max sizes
[10:31:45] [PASSED] NV12 Invalid pitch
[10:31:45] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[10:31:45] [PASSED] NV12 different modifier per-plane
[10:31:45] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[10:31:45] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[10:31:45] [PASSED] NV12 Modifier for inexistent plane
[10:31:45] [PASSED] NV12 Handle for inexistent plane
[10:31:45] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[10:31:45] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[10:31:45] [PASSED] YVU420 Normal sizes
[10:31:45] [PASSED] YVU420 Max sizes
[10:31:45] [PASSED] YVU420 Invalid pitch
[10:31:45] [PASSED] YVU420 Different pitches
[10:31:45] [PASSED] YVU420 Different buffer offsets/pitches
[10:31:45] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[10:31:45] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[10:31:45] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[10:31:45] [PASSED] YVU420 Valid modifier
[10:31:45] [PASSED] YVU420 Different modifiers per plane
[10:31:45] [PASSED] YVU420 Modifier for inexistent plane
[10:31:45] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[10:31:45] [PASSED] X0L2 Normal sizes
[10:31:45] [PASSED] X0L2 Max sizes
[10:31:45] [PASSED] X0L2 Invalid pitch
[10:31:45] [PASSED] X0L2 Pitch greater than minimum required
[10:31:45] [PASSED] X0L2 Handle for inexistent plane
[10:31:45] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[10:31:45] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[10:31:45] [PASSED] X0L2 Valid modifier
[10:31:45] [PASSED] X0L2 Modifier for inexistent plane
[10:31:45] =========== [PASSED] drm_test_framebuffer_create ===========
[10:31:45] [PASSED] drm_test_framebuffer_free
[10:31:45] [PASSED] drm_test_framebuffer_init
[10:31:45] [PASSED] drm_test_framebuffer_init_bad_format
[10:31:45] [PASSED] drm_test_framebuffer_init_dev_mismatch
[10:31:45] [PASSED] drm_test_framebuffer_lookup
[10:31:45] [PASSED] drm_test_framebuffer_lookup_inexistent
[10:31:45] [PASSED] drm_test_framebuffer_modifiers_not_supported
[10:31:45] ================= [PASSED] drm_framebuffer =================
[10:31:45] ================ drm_gem_shmem (8 subtests) ================
[10:31:45] [PASSED] drm_gem_shmem_test_obj_create
[10:31:45] [PASSED] drm_gem_shmem_test_obj_create_private
[10:31:45] [PASSED] drm_gem_shmem_test_pin_pages
[10:31:45] [PASSED] drm_gem_shmem_test_vmap
[10:31:45] [PASSED] drm_gem_shmem_test_get_pages_sgt
[10:31:45] [PASSED] drm_gem_shmem_test_get_sg_table
[10:31:45] [PASSED] drm_gem_shmem_test_madvise
[10:31:45] [PASSED] drm_gem_shmem_test_purge
[10:31:45] ================== [PASSED] drm_gem_shmem ==================
[10:31:45] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[10:31:45] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[10:31:45] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[10:31:45] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[10:31:45] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[10:31:45] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[10:31:45] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[10:31:45] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[10:31:45] [PASSED] Automatic
[10:31:45] [PASSED] Full
[10:31:45] [PASSED] Limited 16:235
[10:31:45] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[10:31:45] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[10:31:45] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[10:31:45] [PASSED] drm_test_check_disable_connector
[10:31:45] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[10:31:45] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[10:31:45] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[10:31:45] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[10:31:45] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[10:31:45] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[10:31:45] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[10:31:45] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[10:31:45] [PASSED] drm_test_check_output_bpc_dvi
[10:31:45] [PASSED] drm_test_check_output_bpc_format_vic_1
[10:31:45] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[10:31:45] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[10:31:45] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[10:31:45] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[10:31:45] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[10:31:45] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[10:31:45] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[10:31:45] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[10:31:45] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[10:31:45] [PASSED] drm_test_check_broadcast_rgb_value
[10:31:45] [PASSED] drm_test_check_bpc_8_value
[10:31:45] [PASSED] drm_test_check_bpc_10_value
[10:31:45] [PASSED] drm_test_check_bpc_12_value
[10:31:45] [PASSED] drm_test_check_format_value
[10:31:45] [PASSED] drm_test_check_tmds_char_value
[10:31:45] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[10:31:45] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[10:31:45] [PASSED] drm_test_check_mode_valid
[10:31:45] [PASSED] drm_test_check_mode_valid_reject
[10:31:45] [PASSED] drm_test_check_mode_valid_reject_rate
[10:31:45] [PASSED] drm_test_check_mode_valid_reject_max_clock
[10:31:45] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[10:31:45] ================= drm_managed (2 subtests) =================
[10:31:45] [PASSED] drm_test_managed_release_action
[10:31:45] [PASSED] drm_test_managed_run_action
[10:31:45] =================== [PASSED] drm_managed ===================
[10:31:45] =================== drm_mm (6 subtests) ====================
[10:31:45] [PASSED] drm_test_mm_init
[10:31:45] [PASSED] drm_test_mm_debug
[10:31:45] [PASSED] drm_test_mm_align32
[10:31:45] [PASSED] drm_test_mm_align64
[10:31:45] [PASSED] drm_test_mm_lowest
[10:31:45] [PASSED] drm_test_mm_highest
[10:31:45] ===================== [PASSED] drm_mm ======================
[10:31:45] ============= drm_modes_analog_tv (5 subtests) =============
[10:31:45] [PASSED] drm_test_modes_analog_tv_mono_576i
[10:31:45] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[10:31:45] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[10:31:45] [PASSED] drm_test_modes_analog_tv_pal_576i
[10:31:45] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[10:31:45] =============== [PASSED] drm_modes_analog_tv ===============
[10:31:45] ============== drm_plane_helper (2 subtests) ===============
[10:31:45] =============== drm_test_check_plane_state ================
[10:31:45] [PASSED] clipping_simple
[10:31:45] [PASSED] clipping_rotate_reflect
[10:31:45] [PASSED] positioning_simple
[10:31:45] [PASSED] upscaling
[10:31:45] [PASSED] downscaling
[10:31:45] [PASSED] rounding1
[10:31:45] [PASSED] rounding2
[10:31:45] [PASSED] rounding3
[10:31:45] [PASSED] rounding4
[10:31:45] =========== [PASSED] drm_test_check_plane_state ============
[10:31:45] =========== drm_test_check_invalid_plane_state ============
[10:31:45] [PASSED] positioning_invalid
[10:31:45] [PASSED] upscaling_invalid
[10:31:45] [PASSED] downscaling_invalid
[10:31:45] ======= [PASSED] drm_test_check_invalid_plane_state ========
[10:31:45] ================ [PASSED] drm_plane_helper =================
[10:31:45] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[10:31:45] ====== drm_test_connector_helper_tv_get_modes_check =======
[10:31:45] [PASSED] None
[10:31:45] [PASSED] PAL
[10:31:45] [PASSED] NTSC
[10:31:45] [PASSED] Both, NTSC Default
[10:31:45] [PASSED] Both, PAL Default
[10:31:45] [PASSED] Both, NTSC Default, with PAL on command-line
[10:31:45] [PASSED] Both, PAL Default, with NTSC on command-line
[10:31:45] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[10:31:45] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[10:31:45] ================== drm_rect (9 subtests) ===================
[10:31:45] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[10:31:45] [PASSED] drm_test_rect_clip_scaled_not_clipped
[10:31:45] [PASSED] drm_test_rect_clip_scaled_clipped
[10:31:45] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[10:31:45] ================= drm_test_rect_intersect =================
[10:31:45] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[10:31:45] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[10:31:45] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[10:31:45] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[10:31:45] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[10:31:45] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[10:31:45] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[10:31:45] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[10:31:45] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[10:31:45] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[10:31:45] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[10:31:45] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[10:31:45] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[10:31:45] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[10:31:45] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[10:31:45] ============= [PASSED] drm_test_rect_intersect =============
[10:31:45] ================ drm_test_rect_calc_hscale ================
[10:31:45] [PASSED] normal use
[10:31:45] [PASSED] out of max range
[10:31:45] [PASSED] out of min range
[10:31:45] [PASSED] zero dst
[10:31:45] [PASSED] negative src
[10:31:45] [PASSED] negative dst
[10:31:45] ============ [PASSED] drm_test_rect_calc_hscale ============
[10:31:45] ================ drm_test_rect_calc_vscale ================
[10:31:45] [PASSED] normal use
[10:31:45] [PASSED] out of max range
[10:31:45] [PASSED] out of min range
[10:31:45] [PASSED] zero dst
[10:31:45] [PASSED] negative src
[10:31:45] [PASSED] negative dst
[10:31:45] ============ [PASSED] drm_test_rect_calc_vscale ============
[10:31:45] ================== drm_test_rect_rotate ===================
[10:31:45] [PASSED] reflect-x
[10:31:45] [PASSED] reflect-y
[10:31:45] [PASSED] rotate-0
[10:31:45] [PASSED] rotate-90
[10:31:45] [PASSED] rotate-180
[10:31:45] [PASSED] rotate-270
stty: 'standard input': Inappropriate ioctl for device
[10:31:45] ============== [PASSED] drm_test_rect_rotate ===============
[10:31:45] ================ drm_test_rect_rotate_inv =================
[10:31:45] [PASSED] reflect-x
[10:31:45] [PASSED] reflect-y
[10:31:45] [PASSED] rotate-0
[10:31:45] [PASSED] rotate-90
[10:31:45] [PASSED] rotate-180
[10:31:45] [PASSED] rotate-270
[10:31:45] ============ [PASSED] drm_test_rect_rotate_inv =============
[10:31:45] ==================== [PASSED] drm_rect =====================
[10:31:45] ============ drm_sysfb_modeset_test (1 subtest) ============
[10:31:45] ============ drm_test_sysfb_build_fourcc_list =============
[10:31:45] [PASSED] no native formats
[10:31:45] [PASSED] XRGB8888 as native format
[10:31:45] [PASSED] remove duplicates
[10:31:45] [PASSED] convert alpha formats
[10:31:45] [PASSED] random formats
[10:31:45] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[10:31:45] ============= [PASSED] drm_sysfb_modeset_test ==============
[10:31:45] ============================================================
[10:31:45] Testing complete. Ran 616 tests: passed: 616
[10:31:45] Elapsed time: 23.366s total, 1.659s configuring, 21.485s building, 0.192s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[10:31:45] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:31:47] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[10:31:55] Starting KUnit Kernel (1/1)...
[10:31:55] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:31:55] ================= ttm_device (5 subtests) ==================
[10:31:55] [PASSED] ttm_device_init_basic
[10:31:55] [PASSED] ttm_device_init_multiple
[10:31:55] [PASSED] ttm_device_fini_basic
[10:31:55] [PASSED] ttm_device_init_no_vma_man
[10:31:55] ================== ttm_device_init_pools ==================
[10:31:55] [PASSED] No DMA allocations, no DMA32 required
[10:31:55] [PASSED] DMA allocations, DMA32 required
[10:31:55] [PASSED] No DMA allocations, DMA32 required
[10:31:55] [PASSED] DMA allocations, no DMA32 required
[10:31:55] ============== [PASSED] ttm_device_init_pools ==============
[10:31:55] =================== [PASSED] ttm_device ====================
[10:31:55] ================== ttm_pool (8 subtests) ===================
[10:31:55] ================== ttm_pool_alloc_basic ===================
[10:31:55] [PASSED] One page
[10:31:55] [PASSED] More than one page
[10:31:55] [PASSED] Above the allocation limit
[10:31:55] [PASSED] One page, with coherent DMA mappings enabled
[10:31:55] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[10:31:55] ============== [PASSED] ttm_pool_alloc_basic ===============
[10:31:55] ============== ttm_pool_alloc_basic_dma_addr ==============
[10:31:55] [PASSED] One page
[10:31:55] [PASSED] More than one page
[10:31:55] [PASSED] Above the allocation limit
[10:31:55] [PASSED] One page, with coherent DMA mappings enabled
[10:31:55] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[10:31:55] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[10:31:55] [PASSED] ttm_pool_alloc_order_caching_match
[10:31:55] [PASSED] ttm_pool_alloc_caching_mismatch
[10:31:55] [PASSED] ttm_pool_alloc_order_mismatch
[10:31:55] [PASSED] ttm_pool_free_dma_alloc
[10:31:55] [PASSED] ttm_pool_free_no_dma_alloc
[10:31:55] [PASSED] ttm_pool_fini_basic
[10:31:55] ==================== [PASSED] ttm_pool =====================
[10:31:55] ================ ttm_resource (8 subtests) =================
[10:31:55] ================= ttm_resource_init_basic =================
[10:31:55] [PASSED] Init resource in TTM_PL_SYSTEM
[10:31:55] [PASSED] Init resource in TTM_PL_VRAM
[10:31:55] [PASSED] Init resource in a private placement
[10:31:55] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[10:31:55] ============= [PASSED] ttm_resource_init_basic =============
[10:31:55] [PASSED] ttm_resource_init_pinned
[10:31:55] [PASSED] ttm_resource_fini_basic
[10:31:55] [PASSED] ttm_resource_manager_init_basic
[10:31:55] [PASSED] ttm_resource_manager_usage_basic
[10:31:55] [PASSED] ttm_resource_manager_set_used_basic
[10:31:55] [PASSED] ttm_sys_man_alloc_basic
[10:31:55] [PASSED] ttm_sys_man_free_basic
[10:31:55] ================== [PASSED] ttm_resource ===================
[10:31:55] =================== ttm_tt (15 subtests) ===================
[10:31:55] ==================== ttm_tt_init_basic ====================
[10:31:55] [PASSED] Page-aligned size
[10:31:55] [PASSED] Extra pages requested
[10:31:55] ================ [PASSED] ttm_tt_init_basic ================
[10:31:55] [PASSED] ttm_tt_init_misaligned
[10:31:55] [PASSED] ttm_tt_fini_basic
[10:31:55] [PASSED] ttm_tt_fini_sg
[10:31:55] [PASSED] ttm_tt_fini_shmem
[10:31:55] [PASSED] ttm_tt_create_basic
[10:31:55] [PASSED] ttm_tt_create_invalid_bo_type
[10:31:55] [PASSED] ttm_tt_create_ttm_exists
[10:31:55] [PASSED] ttm_tt_create_failed
[10:31:55] [PASSED] ttm_tt_destroy_basic
[10:31:55] [PASSED] ttm_tt_populate_null_ttm
[10:31:55] [PASSED] ttm_tt_populate_populated_ttm
[10:31:55] [PASSED] ttm_tt_unpopulate_basic
[10:31:55] [PASSED] ttm_tt_unpopulate_empty_ttm
[10:31:55] [PASSED] ttm_tt_swapin_basic
[10:31:55] ===================== [PASSED] ttm_tt ======================
[10:31:55] =================== ttm_bo (14 subtests) ===================
[10:31:55] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[10:31:55] [PASSED] Cannot be interrupted and sleeps
[10:31:55] [PASSED] Cannot be interrupted, locks straight away
[10:31:55] [PASSED] Can be interrupted, sleeps
[10:31:55] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[10:31:55] [PASSED] ttm_bo_reserve_locked_no_sleep
[10:31:55] [PASSED] ttm_bo_reserve_no_wait_ticket
[10:31:55] [PASSED] ttm_bo_reserve_double_resv
[10:31:55] [PASSED] ttm_bo_reserve_interrupted
[10:31:55] [PASSED] ttm_bo_reserve_deadlock
[10:31:55] [PASSED] ttm_bo_unreserve_basic
[10:31:55] [PASSED] ttm_bo_unreserve_pinned
[10:31:55] [PASSED] ttm_bo_unreserve_bulk
[10:31:55] [PASSED] ttm_bo_put_basic
[10:31:55] [PASSED] ttm_bo_put_shared_resv
[10:31:55] [PASSED] ttm_bo_pin_basic
[10:31:55] [PASSED] ttm_bo_pin_unpin_resource
[10:31:55] [PASSED] ttm_bo_multiple_pin_one_unpin
[10:31:55] ===================== [PASSED] ttm_bo ======================
[10:31:55] ============== ttm_bo_validate (21 subtests) ===============
[10:31:55] ============== ttm_bo_init_reserved_sys_man ===============
[10:31:55] [PASSED] Buffer object for userspace
[10:31:55] [PASSED] Kernel buffer object
[10:31:55] [PASSED] Shared buffer object
[10:31:55] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[10:31:55] ============== ttm_bo_init_reserved_mock_man ==============
[10:31:55] [PASSED] Buffer object for userspace
[10:31:55] [PASSED] Kernel buffer object
[10:31:55] [PASSED] Shared buffer object
[10:31:55] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[10:31:55] [PASSED] ttm_bo_init_reserved_resv
[10:31:55] ================== ttm_bo_validate_basic ==================
[10:31:55] [PASSED] Buffer object for userspace
[10:31:55] [PASSED] Kernel buffer object
[10:31:55] [PASSED] Shared buffer object
[10:31:55] ============== [PASSED] ttm_bo_validate_basic ==============
[10:31:55] [PASSED] ttm_bo_validate_invalid_placement
[10:31:55] ============= ttm_bo_validate_same_placement ==============
[10:31:55] [PASSED] System manager
[10:31:55] [PASSED] VRAM manager
[10:31:55] ========= [PASSED] ttm_bo_validate_same_placement ==========
[10:31:55] [PASSED] ttm_bo_validate_failed_alloc
[10:31:55] [PASSED] ttm_bo_validate_pinned
[10:31:55] [PASSED] ttm_bo_validate_busy_placement
[10:31:55] ================ ttm_bo_validate_multihop =================
[10:31:55] [PASSED] Buffer object for userspace
[10:31:55] [PASSED] Kernel buffer object
[10:31:55] [PASSED] Shared buffer object
[10:31:55] ============ [PASSED] ttm_bo_validate_multihop =============
[10:31:55] ========== ttm_bo_validate_no_placement_signaled ==========
[10:31:55] [PASSED] Buffer object in system domain, no page vector
[10:31:55] [PASSED] Buffer object in system domain with an existing page vector
[10:31:55] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[10:31:55] ======== ttm_bo_validate_no_placement_not_signaled ========
[10:31:55] [PASSED] Buffer object for userspace
[10:31:55] [PASSED] Kernel buffer object
[10:31:55] [PASSED] Shared buffer object
[10:31:55] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[10:31:55] [PASSED] ttm_bo_validate_move_fence_signaled
[10:31:55] ========= ttm_bo_validate_move_fence_not_signaled =========
[10:31:55] [PASSED] Waits for GPU
[10:31:55] [PASSED] Tries to lock straight away
[10:31:55] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[10:31:55] [PASSED] ttm_bo_validate_happy_evict
[10:31:55] [PASSED] ttm_bo_validate_all_pinned_evict
[10:31:55] [PASSED] ttm_bo_validate_allowed_only_evict
[10:31:55] [PASSED] ttm_bo_validate_deleted_evict
[10:31:55] [PASSED] ttm_bo_validate_busy_domain_evict
[10:31:55] [PASSED] ttm_bo_validate_evict_gutting
[10:31:55] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[10:31:55] ================= [PASSED] ttm_bo_validate =================
[10:31:55] ============================================================
[10:31:55] Testing complete. Ran 101 tests: passed: 101
[10:31:55] Elapsed time: 9.657s total, 1.677s configuring, 7.763s building, 0.181s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 7+ messages in thread* ✗ Xe.CI.BAT: failure for ANDROID: Add GPU work period support for Xe driver
2025-08-08 9:09 [PATCH] ANDROID: Add GPU work period support for Xe driver Aakash Deep Sarkar
2025-08-08 10:30 ` ✗ CI.checkpatch: warning for " Patchwork
2025-08-08 10:31 ` ✓ CI.KUnit: success " Patchwork
@ 2025-08-08 11:41 ` Patchwork
2025-08-08 12:46 ` ✗ Xe.CI.Full: " Patchwork
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2025-08-08 11:41 UTC (permalink / raw)
To: Aakash Deep Sarkar; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 4122 bytes --]
== Series Details ==
Series: ANDROID: Add GPU work period support for Xe driver
URL : https://patchwork.freedesktop.org/series/152678/
State : failure
== Summary ==
CI Bug Log - changes from xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba_BAT -> xe-pw-152678v1_BAT
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-152678v1_BAT absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-152678v1_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (11 -> 9)
------------------------------
Missing (2): bat-adlp-vm bat-ptl-vm
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-152678v1_BAT:
### IGT changes ###
#### Possible regressions ####
* igt@xe_create@create-execqueues-noleak:
- bat-bmg-1: [PASS][1] -> [ABORT][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/bat-bmg-1/igt@xe_create@create-execqueues-noleak.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/bat-bmg-1/igt@xe_create@create-execqueues-noleak.html
- bat-atsm-2: [PASS][3] -> [ABORT][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/bat-atsm-2/igt@xe_create@create-execqueues-noleak.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/bat-atsm-2/igt@xe_create@create-execqueues-noleak.html
New tests
---------
New tests have been introduced between xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba_BAT and xe-pw-152678v1_BAT:
### New IGT tests (2) ###
* igt@xe_exec_reset:
- Statuses :
- Exec time: [None] s
* igt@xe_intel_bb:
- Statuses :
- Exec time: [None] s
Known issues
------------
Here are the changes found in xe-pw-152678v1_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_flip@basic-plain-flip@d-edp1:
- bat-adlp-7: [PASS][5] -> [DMESG-WARN][6] ([Intel XE#4543]) +1 other test dmesg-warn
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/bat-adlp-7/igt@kms_flip@basic-plain-flip@d-edp1.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/bat-adlp-7/igt@kms_flip@basic-plain-flip@d-edp1.html
#### Possible fixes ####
* igt@kms_pipe_crc_basic@read-crc-frame-sequence:
- bat-bmg-1: [SKIP][7] -> [PASS][8]
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/bat-bmg-1/igt@kms_pipe_crc_basic@read-crc-frame-sequence.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/bat-bmg-1/igt@kms_pipe_crc_basic@read-crc-frame-sequence.html
* igt@xe_vm@bind-execqueues-independent:
- {bat-ptl-2}: [FAIL][9] ([Intel XE#5783]) -> [PASS][10]
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/bat-ptl-2/igt@xe_vm@bind-execqueues-independent.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/bat-ptl-2/igt@xe_vm@bind-execqueues-independent.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
[Intel XE#5783]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5783
Build changes
-------------
* Linux: xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba -> xe-pw-152678v1
IGT_8489: 4972020ea0f3d0ac8a0d7dd4f5419119b1b30995 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba: 0a8f74a5dde6c5327dac9522cf1441003f2ebcba
xe-pw-152678v1: 152678v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/index.html
[-- Attachment #2: Type: text/html, Size: 4876 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread* ✗ Xe.CI.Full: failure for ANDROID: Add GPU work period support for Xe driver
2025-08-08 9:09 [PATCH] ANDROID: Add GPU work period support for Xe driver Aakash Deep Sarkar
` (2 preceding siblings ...)
2025-08-08 11:41 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2025-08-08 12:46 ` Patchwork
2025-08-08 14:47 ` [PATCH] " Rodrigo Vivi
2025-08-08 17:14 ` Matthew Brost
5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2025-08-08 12:46 UTC (permalink / raw)
To: Aakash Deep Sarkar; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 54275 bytes --]
== Series Details ==
Series: ANDROID: Add GPU work period support for Xe driver
URL : https://patchwork.freedesktop.org/series/152678/
State : failure
== Summary ==
CI Bug Log - changes from xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba_FULL -> xe-pw-152678v1_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-152678v1_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-152678v1_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (4 -> 4)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-152678v1_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_pm_rpm@legacy-planes@plane-73:
- shard-adlp: NOTRUN -> [FAIL][1] +1 other test fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_pm_rpm@legacy-planes@plane-73.html
* igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-file-mlock-nomemset:
- shard-lnl: [PASS][2] -> [ABORT][3] +4 other tests abort
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-2/igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-file-mlock-nomemset.html
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-2/igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-file-mlock-nomemset.html
* igt@xe_exec_threads@threads-cm-fd-userptr-invalidate:
- shard-bmg: [PASS][4] -> [ABORT][5]
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-8/igt@xe_exec_threads@threads-cm-fd-userptr-invalidate.html
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-5/igt@xe_exec_threads@threads-cm-fd-userptr-invalidate.html
* igt@xe_exec_threads@threads-mixed-fd-rebind:
- shard-adlp: [PASS][6] -> [ABORT][7] +1 other test abort
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-adlp-6/igt@xe_exec_threads@threads-mixed-fd-rebind.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-2/igt@xe_exec_threads@threads-mixed-fd-rebind.html
* igt@xe_module_load@reload:
- shard-dg2-set2: [PASS][8] -> [ABORT][9] +2 other tests abort
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-dg2-464/igt@xe_module_load@reload.html
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-433/igt@xe_module_load@reload.html
- shard-lnl: [PASS][10] -> [INCOMPLETE][11] +1 other test incomplete
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-1/igt@xe_module_load@reload.html
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-3/igt@xe_module_load@reload.html
- shard-bmg: [PASS][12] -> [INCOMPLETE][13]
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-5/igt@xe_module_load@reload.html
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-2/igt@xe_module_load@reload.html
- shard-adlp: [PASS][14] -> [INCOMPLETE][15]
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-adlp-4/igt@xe_module_load@reload.html
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-9/igt@xe_module_load@reload.html
* igt@xe_pm@d3hot-mmap-vram:
- shard-bmg: [PASS][16] -> [FAIL][17]
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-6/igt@xe_pm@d3hot-mmap-vram.html
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-5/igt@xe_pm@d3hot-mmap-vram.html
- shard-dg2-set2: [PASS][18] -> [FAIL][19] +1 other test fail
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-dg2-432/igt@xe_pm@d3hot-mmap-vram.html
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@xe_pm@d3hot-mmap-vram.html
* igt@xe_pm@d3hot-mocs:
- shard-adlp: [PASS][20] -> [FAIL][21] +1 other test fail
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-adlp-9/igt@xe_pm@d3hot-mocs.html
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-6/igt@xe_pm@d3hot-mocs.html
#### Warnings ####
* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-wc:
- shard-bmg: [SKIP][22] ([Intel XE#5390]) -> [ABORT][23]
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-wc.html
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-wc.html
New tests
---------
New tests have been introduced between xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba_FULL and xe-pw-152678v1_FULL:
### New IGT tests (1) ###
* igt@kms_flip_scaled_crc:
- Statuses :
- Exec time: [None] s
Known issues
------------
Here are the changes found in xe-pw-152678v1_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@4-tiled-64bpp-rotate-270:
- shard-adlp: NOTRUN -> [SKIP][24] ([Intel XE#1124]) +1 other test skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-8bpp-rotate-90:
- shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#1407])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-64bpp-rotate-270:
- shard-adlp: NOTRUN -> [SKIP][26] ([Intel XE#316])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-adlp: NOTRUN -> [DMESG-FAIL][27] ([Intel XE#4543]) +1 other test dmesg-fail
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
- shard-adlp: [PASS][28] -> [DMESG-FAIL][29] ([Intel XE#4543])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-adlp-3/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
- shard-dg2-set2: NOTRUN -> [SKIP][30] ([Intel XE#1124]) +5 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-435/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
* igt@kms_bw@linear-tiling-3-displays-2160x1440p:
- shard-dg2-set2: NOTRUN -> [SKIP][31] ([Intel XE#367])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-435/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html
* igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][32] ([Intel XE#455] / [Intel XE#787]) +11 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-primary-basic-y-tiled-ccs@pipe-d-hdmi-a-2:
- shard-dg2-set2: NOTRUN -> [SKIP][33] ([Intel XE#787]) +90 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@kms_ccs@crc-primary-basic-y-tiled-ccs@pipe-d-hdmi-a-2.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs@pipe-b-dp-2:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#2652] / [Intel XE#787]) +3 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs@pipe-b-dp-2.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [PASS][35] -> [INCOMPLETE][36] ([Intel XE#3862]) +1 other test incomplete
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-2/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][37] ([Intel XE#787]) +17 other tests skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs:
- shard-lnl: NOTRUN -> [SKIP][38] ([Intel XE#2669]) +3 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
- shard-dg2-set2: NOTRUN -> [INCOMPLETE][39] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522]) +1 other test incomplete
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-mtl-mc-ccs@pipe-d-dp-2:
- shard-dg2-set2: NOTRUN -> [SKIP][40] ([Intel XE#455] / [Intel XE#787]) +15 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-mtl-mc-ccs@pipe-d-dp-2.html
* igt@kms_chamelium_edid@dp-edid-resolution-list:
- shard-adlp: NOTRUN -> [SKIP][41] ([Intel XE#373]) +1 other test skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_chamelium_edid@dp-edid-resolution-list.html
* igt@kms_chamelium_edid@hdmi-mode-timings:
- shard-dg2-set2: NOTRUN -> [SKIP][42] ([Intel XE#373]) +3 other tests skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@kms_chamelium_edid@hdmi-mode-timings.html
* igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode:
- shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#373])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode.html
* igt@kms_chamelium_hpd@vga-hpd-after-suspend:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#2252])
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@kms_chamelium_hpd@vga-hpd-after-suspend.html
* igt@kms_content_protection@dp-mst-type-0:
- shard-dg2-set2: NOTRUN -> [SKIP][45] ([Intel XE#307])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@kms_content_protection@dp-mst-type-0.html
* igt@kms_content_protection@lic-type-0@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][46] ([Intel XE#1178])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@kms_content_protection@lic-type-0@pipe-a-dp-2.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-dg2-set2: NOTRUN -> [SKIP][47] ([Intel XE#308])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-onscreen-max-size:
- shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#2320])
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@kms_cursor_crc@cursor-onscreen-max-size.html
* igt@kms_cursor_crc@cursor-rapid-movement-512x512:
- shard-adlp: NOTRUN -> [SKIP][49] ([Intel XE#308])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
- shard-bmg: [PASS][50] -> [SKIP][51] ([Intel XE#2291]) +1 other test skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-2/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-legacy:
- shard-adlp: NOTRUN -> [SKIP][52] ([Intel XE#309])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [PASS][53] -> [FAIL][54] ([Intel XE#4633])
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-8/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-5/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_dp_link_training@non-uhbr-mst:
- shard-adlp: NOTRUN -> [SKIP][55] ([Intel XE#4354])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_dp_link_training@non-uhbr-mst.html
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
- shard-dg2-set2: NOTRUN -> [SKIP][56] ([Intel XE#4422])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html
* igt@kms_fbcon_fbt@psr:
- shard-dg2-set2: NOTRUN -> [SKIP][57] ([Intel XE#776])
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-435/igt@kms_fbcon_fbt@psr.html
* igt@kms_feature_discovery@dp-mst:
- shard-adlp: NOTRUN -> [SKIP][58] ([Intel XE#1137])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_feature_discovery@dp-mst.html
* igt@kms_flip@2x-flip-vs-panning-interruptible:
- shard-bmg: [PASS][59] -> [SKIP][60] ([Intel XE#2316]) +1 other test skip
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-2/igt@kms_flip@2x-flip-vs-panning-interruptible.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-6/igt@kms_flip@2x-flip-vs-panning-interruptible.html
* igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset:
- shard-adlp: NOTRUN -> [SKIP][61] ([Intel XE#310]) +2 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset.html
* igt@kms_flip@flip-vs-suspend:
- shard-bmg: [PASS][62] -> [INCOMPLETE][63] ([Intel XE#2049] / [Intel XE#2597]) +1 other test incomplete
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-2/igt@kms_flip@flip-vs-suspend.html
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-6/igt@kms_flip@flip-vs-suspend.html
- shard-dg2-set2: [PASS][64] -> [INCOMPLETE][65] ([Intel XE#2049] / [Intel XE#2597])
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-dg2-434/igt@kms_flip@flip-vs-suspend.html
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@kms_flip@flip-vs-suspend.html
* igt@kms_flip@flip-vs-suspend-interruptible@d-hdmi-a1:
- shard-adlp: [PASS][66] -> [DMESG-WARN][67] ([Intel XE#4543]) +4 other tests dmesg-warn
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-adlp-9/igt@kms_flip@flip-vs-suspend-interruptible@d-hdmi-a1.html
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-6/igt@kms_flip@flip-vs-suspend-interruptible@d-hdmi-a1.html
* igt@kms_flip@flip-vs-suspend@d-dp2:
- shard-dg2-set2: NOTRUN -> [INCOMPLETE][68] ([Intel XE#2049] / [Intel XE#2597])
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@kms_flip@flip-vs-suspend@d-dp2.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
- shard-dg2-set2: NOTRUN -> [SKIP][69] ([Intel XE#455]) +5 other tests skip
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-plflip-blt:
- shard-bmg: NOTRUN -> [SKIP][70] ([Intel XE#2311])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render:
- shard-adlp: NOTRUN -> [SKIP][71] ([Intel XE#656]) +7 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc:
- shard-dg2-set2: NOTRUN -> [SKIP][72] ([Intel XE#651]) +8 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-435/igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-pri-indfb-multidraw:
- shard-adlp: NOTRUN -> [SKIP][73] ([Intel XE#651]) +4 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_frontbuffer_tracking@fbcdrrs-1p-pri-indfb-multidraw.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move:
- shard-adlp: NOTRUN -> [SKIP][74] ([Intel XE#653]) +2 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][75] ([Intel XE#656]) +2 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render:
- shard-dg2-set2: NOTRUN -> [SKIP][76] ([Intel XE#653]) +8 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [PASS][77] -> [SKIP][78] ([Intel XE#1503])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-4/igt@kms_hdr@invalid-hdr.html
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-1/igt@kms_hdr@invalid-hdr.html
* igt@kms_joiner@basic-big-joiner:
- shard-adlp: NOTRUN -> [SKIP][79] ([Intel XE#346])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_joiner@basic-big-joiner.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-dg2-set2: NOTRUN -> [SKIP][80] ([Intel XE#356])
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_plane_scaling@invalid-num-scalers:
- shard-adlp: [PASS][81] -> [DMESG-WARN][82] ([Intel XE#2953] / [Intel XE#4173]) +8 other tests dmesg-warn
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-adlp-9/igt@kms_plane_scaling@invalid-num-scalers.html
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-6/igt@kms_plane_scaling@invalid-num-scalers.html
* igt@kms_pm_backlight@fade-with-dpms:
- shard-dg2-set2: NOTRUN -> [SKIP][83] ([Intel XE#870])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@kms_pm_backlight@fade-with-dpms.html
* igt@kms_pm_dc@dc5-psr:
- shard-adlp: NOTRUN -> [SKIP][84] ([Intel XE#1129])
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_pm_dc@dc5-psr.html
* igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-sf:
- shard-dg2-set2: NOTRUN -> [SKIP][85] ([Intel XE#1489])
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf:
- shard-adlp: NOTRUN -> [SKIP][86] ([Intel XE#1489]) +1 other test skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf.html
* igt@kms_psr@fbc-pr-dpms:
- shard-dg2-set2: NOTRUN -> [SKIP][87] ([Intel XE#2850] / [Intel XE#929]) +1 other test skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@kms_psr@fbc-pr-dpms.html
* igt@kms_psr@fbc-pr-no-drrs:
- shard-bmg: NOTRUN -> [SKIP][88] ([Intel XE#2234] / [Intel XE#2850])
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@kms_psr@fbc-pr-no-drrs.html
* igt@kms_psr@fbc-psr2-cursor-render:
- shard-adlp: NOTRUN -> [SKIP][89] ([Intel XE#2850] / [Intel XE#929]) +2 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_psr@fbc-psr2-cursor-render.html
* igt@kms_psr@fbc-psr2-primary-blt:
- shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#1406])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@kms_psr@fbc-psr2-primary-blt.html
* igt@kms_psr@fbc-psr2-primary-blt@edp-1:
- shard-lnl: NOTRUN -> [SKIP][91] ([Intel XE#4609])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@kms_psr@fbc-psr2-primary-blt@edp-1.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-adlp: NOTRUN -> [SKIP][92] ([Intel XE#2939] / [Intel XE#5585])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
- shard-adlp: NOTRUN -> [SKIP][93] ([Intel XE#3414])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html
* igt@kms_vrr@flip-suspend:
- shard-adlp: NOTRUN -> [SKIP][94] ([Intel XE#455]) +3 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@kms_vrr@flip-suspend.html
* igt@xe_eu_stall@invalid-gt-id:
- shard-dg2-set2: NOTRUN -> [SKIP][95] ([Intel XE#5626])
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-435/igt@xe_eu_stall@invalid-gt-id.html
* igt@xe_eudebug_online@breakpoint-many-sessions-tiles:
- shard-adlp: NOTRUN -> [SKIP][96] ([Intel XE#4837] / [Intel XE#5565]) +3 other tests skip
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@xe_eudebug_online@breakpoint-many-sessions-tiles.html
* igt@xe_eudebug_online@writes-caching-sram-bb-sram-target-sram:
- shard-dg2-set2: NOTRUN -> [SKIP][97] ([Intel XE#4837]) +5 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@xe_eudebug_online@writes-caching-sram-bb-sram-target-sram.html
* igt@xe_eudebug_online@writes-caching-sram-bb-sram-target-vram:
- shard-lnl: NOTRUN -> [SKIP][98] ([Intel XE#4837])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@xe_eudebug_online@writes-caching-sram-bb-sram-target-vram.html
* igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd:
- shard-adlp: NOTRUN -> [SKIP][99] ([Intel XE#688])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue:
- shard-dg2-set2: NOTRUN -> [SKIP][100] ([Intel XE#1392])
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue.html
* igt@xe_exec_basic@multigpu-once-basic:
- shard-dg2-set2: [PASS][101] -> [SKIP][102] ([Intel XE#1392]) +1 other test skip
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-dg2-434/igt@xe_exec_basic@multigpu-once-basic.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@xe_exec_basic@multigpu-once-basic.html
* igt@xe_exec_basic@multigpu-once-userptr-invalidate-race:
- shard-adlp: NOTRUN -> [SKIP][103] ([Intel XE#1392] / [Intel XE#5575]) +2 other tests skip
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@xe_exec_basic@multigpu-once-userptr-invalidate-race.html
* igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-rebind-imm:
- shard-dg2-set2: NOTRUN -> [SKIP][104] ([Intel XE#288]) +11 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-rebind-imm.html
* igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-imm:
- shard-adlp: NOTRUN -> [SKIP][105] ([Intel XE#288] / [Intel XE#5561]) +5 other tests skip
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-imm.html
* igt@xe_exec_system_allocator@many-large-mmap-huge:
- shard-bmg: NOTRUN -> [SKIP][106] ([Intel XE#4943])
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@xe_exec_system_allocator@many-large-mmap-huge.html
* igt@xe_exec_system_allocator@once-mmap-remap-ro-dontunmap:
- shard-adlp: NOTRUN -> [SKIP][107] ([Intel XE#4915]) +60 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@xe_exec_system_allocator@once-mmap-remap-ro-dontunmap.html
* igt@xe_exec_system_allocator@threads-many-stride-mmap-remap-eocheck:
- shard-dg2-set2: NOTRUN -> [SKIP][108] ([Intel XE#4915]) +80 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-435/igt@xe_exec_system_allocator@threads-many-stride-mmap-remap-eocheck.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-huge:
- shard-lnl: NOTRUN -> [SKIP][109] ([Intel XE#4943]) +1 other test skip
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-huge.html
* igt@xe_exec_threads@threads-fd-userptr-rebind:
- shard-adlp: [PASS][110] -> [INCOMPLETE][111] ([Intel XE#3868])
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-adlp-8/igt@xe_exec_threads@threads-fd-userptr-rebind.html
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-3/igt@xe_exec_threads@threads-fd-userptr-rebind.html
* igt@xe_mmap@pci-membarrier-bad-object:
- shard-adlp: NOTRUN -> [SKIP][112] ([Intel XE#5100])
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@xe_mmap@pci-membarrier-bad-object.html
* igt@xe_module_load@many-reload:
- shard-lnl: [PASS][113] -> [ABORT][114] ([Intel XE#5087])
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-3/igt@xe_module_load@many-reload.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-5/igt@xe_module_load@many-reload.html
* igt@xe_oa@syncs-syncobj-wait-cfg:
- shard-adlp: NOTRUN -> [SKIP][115] ([Intel XE#3573]) +1 other test skip
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-1/igt@xe_oa@syncs-syncobj-wait-cfg.html
* igt@xe_oa@syncs-userptr-wait-cfg:
- shard-dg2-set2: NOTRUN -> [SKIP][116] ([Intel XE#3573]) +4 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@xe_oa@syncs-userptr-wait-cfg.html
* igt@xe_peer2peer@read:
- shard-lnl: NOTRUN -> [SKIP][117] ([Intel XE#1061])
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@xe_peer2peer@read.html
* igt@xe_pm@d3cold-multiple-execs:
- shard-dg2-set2: NOTRUN -> [SKIP][118] ([Intel XE#2284] / [Intel XE#366])
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@xe_pm@d3cold-multiple-execs.html
* igt@xe_pm@d3hot-mocs:
- shard-bmg: [PASS][119] -> [FAIL][120] ([Intel XE#2142])
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-6/igt@xe_pm@d3hot-mocs.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@xe_pm@d3hot-mocs.html
- shard-lnl: [PASS][121] -> [FAIL][122] ([Intel XE#2142])
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-7/igt@xe_pm@d3hot-mocs.html
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-1/igt@xe_pm@d3hot-mocs.html
* igt@xe_pxp@display-pxp-fb:
- shard-dg2-set2: NOTRUN -> [SKIP][123] ([Intel XE#4733])
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-435/igt@xe_pxp@display-pxp-fb.html
* igt@xe_query@multigpu-query-oa-units:
- shard-dg2-set2: NOTRUN -> [SKIP][124] ([Intel XE#944]) +2 other tests skip
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@xe_query@multigpu-query-oa-units.html
* igt@xe_render_copy@render-stress-4-copies:
- shard-dg2-set2: NOTRUN -> [SKIP][125] ([Intel XE#4814])
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-464/igt@xe_render_copy@render-stress-4-copies.html
* igt@xe_sriov_auto_provisioning@selfconfig-basic:
- shard-lnl: NOTRUN -> [SKIP][126] ([Intel XE#4130])
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@xe_sriov_auto_provisioning@selfconfig-basic.html
* igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs:
- shard-dg2-set2: NOTRUN -> [SKIP][127] ([Intel XE#4130])
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-435/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs.html
#### Possible fixes ####
* igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size:
- shard-bmg: [SKIP][128] ([Intel XE#2291]) -> [PASS][129] +1 other test pass
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html
* igt@kms_flip@2x-nonexisting-fb:
- shard-bmg: [SKIP][130] ([Intel XE#2316]) -> [PASS][131] +6 other tests pass
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-6/igt@kms_flip@2x-nonexisting-fb.html
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@kms_flip@2x-nonexisting-fb.html
* igt@kms_flip@basic-plain-flip@b-hdmi-a1:
- shard-adlp: [DMESG-WARN][132] ([Intel XE#4543]) -> [PASS][133] +5 other tests pass
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-adlp-6/igt@kms_flip@basic-plain-flip@b-hdmi-a1.html
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-2/igt@kms_flip@basic-plain-flip@b-hdmi-a1.html
* igt@kms_flip@flip-vs-rmfb:
- shard-adlp: [DMESG-WARN][134] ([Intel XE#4543] / [Intel XE#5208]) -> [PASS][135]
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-adlp-9/igt@kms_flip@flip-vs-rmfb.html
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-6/igt@kms_flip@flip-vs-rmfb.html
* igt@kms_hdr@static-toggle:
- shard-bmg: [SKIP][136] ([Intel XE#1503]) -> [PASS][137]
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-6/igt@kms_hdr@static-toggle.html
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-5/igt@kms_hdr@static-toggle.html
- shard-dg2-set2: [INCOMPLETE][138] -> [PASS][139]
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-dg2-432/igt@kms_hdr@static-toggle.html
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-432/igt@kms_hdr@static-toggle.html
* igt@kms_setmode@invalid-clone-single-crtc-stealing:
- shard-bmg: [SKIP][140] ([Intel XE#1435]) -> [PASS][141]
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-6/igt@kms_setmode@invalid-clone-single-crtc-stealing.html
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@kms_setmode@invalid-clone-single-crtc-stealing.html
* igt@xe_exec_basic@multigpu-once-null-defer-mmap:
- shard-dg2-set2: [SKIP][142] ([Intel XE#1392]) -> [PASS][143] +1 other test pass
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-dg2-432/igt@xe_exec_basic@multigpu-once-null-defer-mmap.html
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-dg2-435/igt@xe_exec_basic@multigpu-once-null-defer-mmap.html
* igt@xe_module_load@load:
- shard-lnl: ([PASS][144], [PASS][145], [PASS][146], [SKIP][147], [PASS][148], [PASS][149], [PASS][150], [PASS][151], [PASS][152], [PASS][153], [PASS][154], [PASS][155], [PASS][156], [PASS][157], [PASS][158], [PASS][159], [PASS][160], [PASS][161], [PASS][162], [PASS][163], [PASS][164], [PASS][165], [PASS][166], [PASS][167], [PASS][168], [PASS][169]) ([Intel XE#378]) -> ([PASS][170], [PASS][171], [PASS][172], [PASS][173], [PASS][174], [PASS][175], [PASS][176], [PASS][177], [PASS][178], [PASS][179], [PASS][180], [PASS][181], [PASS][182], [PASS][183], [PASS][184], [PASS][185], [PASS][186], [PASS][187], [PASS][188], [PASS][189], [PASS][190], [PASS][191], [PASS][192], [PASS][193], [PASS][194])
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-4/igt@xe_module_load@load.html
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-2/igt@xe_module_load@load.html
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-2/igt@xe_module_load@load.html
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-2/igt@xe_module_load@load.html
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-1/igt@xe_module_load@load.html
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-4/igt@xe_module_load@load.html
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-8/igt@xe_module_load@load.html
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-8/igt@xe_module_load@load.html
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-8/igt@xe_module_load@load.html
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-3/igt@xe_module_load@load.html
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-7/igt@xe_module_load@load.html
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-4/igt@xe_module_load@load.html
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-7/igt@xe_module_load@load.html
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-1/igt@xe_module_load@load.html
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-3/igt@xe_module_load@load.html
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-3/igt@xe_module_load@load.html
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-3/igt@xe_module_load@load.html
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-2/igt@xe_module_load@load.html
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-7/igt@xe_module_load@load.html
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-7/igt@xe_module_load@load.html
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-5/igt@xe_module_load@load.html
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-4/igt@xe_module_load@load.html
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-5/igt@xe_module_load@load.html
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-5/igt@xe_module_load@load.html
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-1/igt@xe_module_load@load.html
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-5/igt@xe_module_load@load.html
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-3/igt@xe_module_load@load.html
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-4/igt@xe_module_load@load.html
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-4/igt@xe_module_load@load.html
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-7/igt@xe_module_load@load.html
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-4/igt@xe_module_load@load.html
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-1/igt@xe_module_load@load.html
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-7/igt@xe_module_load@load.html
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-7/igt@xe_module_load@load.html
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-7/igt@xe_module_load@load.html
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-1/igt@xe_module_load@load.html
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-2/igt@xe_module_load@load.html
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-2/igt@xe_module_load@load.html
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@xe_module_load@load.html
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-5/igt@xe_module_load@load.html
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-3/igt@xe_module_load@load.html
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-1/igt@xe_module_load@load.html
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-2/igt@xe_module_load@load.html
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-2/igt@xe_module_load@load.html
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@xe_module_load@load.html
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-1/igt@xe_module_load@load.html
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-5/igt@xe_module_load@load.html
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-5/igt@xe_module_load@load.html
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-5/igt@xe_module_load@load.html
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@xe_module_load@load.html
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-3/igt@xe_module_load@load.html
#### Warnings ####
* igt@kms_content_protection@lic-type-0:
- shard-bmg: [SKIP][195] ([Intel XE#2341]) -> [FAIL][196] ([Intel XE#1178])
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-6/igt@kms_content_protection@lic-type-0.html
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-8/igt@kms_content_protection@lic-type-0.html
* igt@kms_flip@flip-vs-suspend@b-hdmi-a1:
- shard-adlp: [DMESG-WARN][197] ([Intel XE#4543]) -> [DMESG-WARN][198] ([Intel XE#2953] / [Intel XE#4173] / [Intel XE#4543]) +1 other test dmesg-warn
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-adlp-8/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-adlp-3/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling:
- shard-lnl: [ABORT][199] ([Intel XE#4760]) -> [SKIP][200] ([Intel XE#1397] / [Intel XE#1745])
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-4/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling.html
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/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: [ABORT][201] ([Intel XE#4760]) -> [SKIP][202] ([Intel XE#1397])
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-lnl-4/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode.html
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-onoff:
- shard-bmg: [SKIP][203] ([Intel XE#2311]) -> [SKIP][204] ([Intel XE#2312]) +5 other tests skip
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-2/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-onoff.html
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt:
- shard-bmg: [SKIP][205] ([Intel XE#2312]) -> [SKIP][206] ([Intel XE#2311]) +11 other tests skip
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt.html
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-1/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt:
- shard-bmg: [SKIP][207] ([Intel XE#2312]) -> [SKIP][208] ([Intel XE#5390]) +2 other tests skip
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt.html
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt:
- shard-bmg: [SKIP][209] ([Intel XE#5390]) -> [SKIP][210] ([Intel XE#2312]) +1 other test skip
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt:
- shard-bmg: [SKIP][211] ([Intel XE#2313]) -> [SKIP][212] ([Intel XE#2312]) +6 other tests skip
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
- shard-bmg: [SKIP][213] ([Intel XE#2312]) -> [SKIP][214] ([Intel XE#2313]) +13 other tests skip
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
[Intel XE#1137]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1137
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[Intel XE#2142]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2142
[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#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
[Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
[Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939
[Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
[Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
[Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
[Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
[Intel XE#356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/356
[Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
[Intel XE#3862]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3862
[Intel XE#3868]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3868
[Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
[Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
[Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
[Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4522
[Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
[Intel XE#4633]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4633
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#4760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4760
[Intel XE#4814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4814
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5007
[Intel XE#5087]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5087
[Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
[Intel XE#5191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5191
[Intel XE#5208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5208
[Intel XE#5300]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5300
[Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
[Intel XE#5561]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5561
[Intel XE#5565]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5565
[Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
[Intel XE#5585]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5585
[Intel XE#5626]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5626
[Intel XE#5786]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5786
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba -> xe-pw-152678v1
IGT_8489: 4972020ea0f3d0ac8a0d7dd4f5419119b1b30995 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-3517-0a8f74a5dde6c5327dac9522cf1441003f2ebcba: 0a8f74a5dde6c5327dac9522cf1441003f2ebcba
xe-pw-152678v1: 152678v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-152678v1/index.html
[-- Attachment #2: Type: text/html, Size: 61705 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] ANDROID: Add GPU work period support for Xe driver
2025-08-08 9:09 [PATCH] ANDROID: Add GPU work period support for Xe driver Aakash Deep Sarkar
` (3 preceding siblings ...)
2025-08-08 12:46 ` ✗ Xe.CI.Full: " Patchwork
@ 2025-08-08 14:47 ` Rodrigo Vivi
2025-08-08 17:14 ` Matthew Brost
5 siblings, 0 replies; 7+ messages in thread
From: Rodrigo Vivi @ 2025-08-08 14:47 UTC (permalink / raw)
To: Aakash Deep Sarkar; +Cc: intel-xe, jeevaka.badrappan
On Fri, Aug 08, 2025 at 09:09:19AM +0000, Aakash Deep Sarkar wrote:
> This patch implements the Android requirement GPU work
> period event for Intel Xe driver.
>
> |GpuWorkPeriodEvent| defines a non-overlapping, non-zero period
> of time from |start_time_ns| (inclusive) until |end_time_ns|
> (exclusive) for a given |uid|, and includes details of how much
> work the GPU was performing for |uid| during the period. When
> GPU work for a given |uid| runs on the GPU, the driver must track
> one or more periods that cover the time where the work was running,
> and emit events soon after.
>
> Full requirement is defined in the following file:
> https://cs.android.com/android/platform/superproject/main/+\
> /main:frameworks/native/services/gpuservice/gpuwork/bpfprogs/gpuWork.c;l=35
This is a great content, but for a cover letter.
Please split this into smaller patches that will be easier to
digest and review. The patches need to make sense and be compiled
individually but together they have the ultimate goal of fulfilling
this requirement, hence please keep the whole android mention and
motivation in the cover letter while keeping the individual patches
telling what they are doing and why (a why different then the android goal)
Thanks,
Rodrigo.
>
> The requirement is implemented using a timer to give periodic
> interrupts and a worker thread per user id instance to accumulate
> its run time on gpu and emit the event. Each user id instance is
> tracked using a xe_user structure and the runtime is updated at
> each timer interrupt. The timer period is hardcoded to 500 msecs.
>
> The runtime on the gpu is collected for each xe file individually
> inside the function xe_exec_queue_update_run_ticks() and accumulated
> into the corresponding xe_user active_duration_ns field. The HW
> Context timestamp field in the GTT is used to derive the runtime
> in clock ticks and then converted into nanosecs before updating the
> active duration.
>
> Signed-off-by: Aakash Deep Sarkar <aakash.deep.sarkar@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 98 +++++++++++++++-
> drivers/gpu/drm/xe/xe_device_types.h | 27 +++++
> drivers/gpu/drm/xe/xe_drm_client.c | 108 ++++++++++++++++++
> drivers/gpu/drm/xe/xe_drm_client.h | 75 +++++++++++-
> drivers/gpu/drm/xe/xe_exec_queue.c | 5 +
> drivers/gpu/drm/xe/xe_gt_clock.c | 5 +
> drivers/gpu/drm/xe/xe_gt_clock.h | 1 +
> .../drm/xe/xe_power_gpu_work_period_trace.h | 61 ++++++++++
> 8 files changed, 378 insertions(+), 2 deletions(-)
> create mode 100644 drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 57edbc63da6f..116247007a4d 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -8,6 +8,7 @@
> #include <linux/aperture.h>
> #include <linux/delay.h>
> #include <linux/fault-inject.h>
> +#include <linux/jiffies.h>
> #include <linux/units.h>
>
> #include <drm/drm_atomic_helper.h>
> @@ -76,9 +77,13 @@ static int xe_file_open(struct drm_device *dev, struct drm_file *file)
> {
> struct xe_device *xe = to_xe_device(dev);
> struct xe_drm_client *client;
> + struct xe_user *user;
> struct xe_file *xef;
> int ret = -ENOMEM;
> + unsigned long flags;
> + int uid = -EINVAL;
> struct task_struct *task = NULL;
> + const struct cred *cred = NULL;
>
> xef = kzalloc(sizeof(*xef), GFP_KERNEL);
> if (!xef)
> @@ -103,13 +108,66 @@ static int xe_file_open(struct drm_device *dev, struct drm_file *file)
> file->driver_priv = xef;
> kref_init(&xef->refcount);
>
> + INIT_LIST_HEAD(&xef->user_link);
> +
> task = get_pid_task(rcu_access_pointer(file->pid), PIDTYPE_PID);
> if (task) {
> + cred = get_task_cred(task);
> + if (cred) {
> + uid = (int) cred->euid.val;
> + put_cred(cred);
> + }
> xef->process_name = kstrdup(task->comm, GFP_KERNEL);
> xef->pid = task->pid;
> put_task_struct(task);
> }
>
> + if (uid < 0)
> + goto out;
> +
> + /*
> + * Check if the calling process/uid has already been registered
> + * with the xe device during a previous open call. If so then
> + * take a reference to this xe file and add it to the list of xe
> + * files belonging to the this user
> + */
> + spin_lock_irqsave(&xe->work_period.lock, flags);
> + list_for_each_entry(user, &xe->work_period.user_list, entry) {
> + if (user->uid == uid) {
> + xef->user = xe_user_get(user);
> + spin_unlock_irqrestore(&xe->work_period.lock, flags);
> + goto filelist_add;
> + }
> + }
> + spin_unlock_irqrestore(&xe->work_period.lock, flags);
> +
> +
> + /*
> + * We couldn't find a xe user for this process. Allocate a new
> + * struct xe_user and register it with this xe device
> + */
> + user = xe_user_alloc();
> + if (!user)
> + goto out;
> +
> + user->uid = (unsigned int) uid;
> + user->last_timestamp_ns = ktime_get_raw_ns();
> + user->xe = xe;
> +
> + /* Add this xe_user to xe_device->work_period.user_list */
> + spin_lock_irqsave(&xe->work_period.lock, flags);
> + list_add(&user->entry, &xe->work_period.user_list);
> + spin_unlock_irqrestore(&xe->work_period.lock, flags);
> +
> + drm_dev_get(&xe->drm);
> + xef->user = user;
> +
> +filelist_add:
> + /* Add this xe_file to xe_user->filelist */
> + mutex_lock(&user->filelist_lock);
> + list_add(&xef->user_link, &user->filelist);
> + mutex_unlock(&user->filelist_lock);
> +out:
> return 0;
> }
>
> @@ -124,6 +182,12 @@ static void xe_file_destroy(struct kref *ref)
>
> xe_drm_client_put(xef->client);
> kfree(xef->process_name);
> +
> + mutex_lock(&xef->user->filelist_lock);
> + list_del(&xef->user_link);
> + mutex_unlock(&xef->user->filelist_lock);
> + xe_user_put(xef->user);
> +
> kfree(xef);
> }
>
> @@ -347,6 +411,23 @@ static int xe_mmap(struct file *filp, struct vm_area_struct *vma)
> return drm_gem_mmap(filp, vma);
> }
>
> +static void work_period_timer_fn(struct timer_list *timer)
> +{
> + struct xe_device *xe = container_of(timer, typeof(*xe), work_period.timer);
> + struct xe_user *user;
> + unsigned long timeout = 0;
> +
> + spin_lock(&xe->work_period.lock);
> + list_for_each_entry(user, &xe->work_period.user_list, entry) {
> + xe_user_get(user);
> + queue_work(xe->work_period.wq, &user->work);
> + }
> + spin_unlock(&xe->work_period.lock);
> + timeout = jiffies + msecs_to_jiffies(500);
> +
> + mod_timer(timer, timeout);
> +}
> +
> static const struct file_operations xe_driver_fops = {
> .owner = THIS_MODULE,
> .open = drm_open,
> @@ -409,6 +490,11 @@ static void xe_device_destroy(struct drm_device *dev, void *dummy)
> if (xe->destroy_wq)
> destroy_workqueue(xe->destroy_wq);
>
> + if (xe->work_period.wq)
> + destroy_workqueue(xe->work_period.wq);
> +
> + timer_delete_sync(&xe->work_period.timer);
> +
> ttm_device_fini(&xe->ttm);
> }
>
> @@ -477,11 +563,21 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
>
> xe->preempt_fence_wq = alloc_ordered_workqueue("xe-preempt-fence-wq",
> WQ_MEM_RECLAIM);
> +
> + spin_lock_init(&xe->work_period.lock);
> + INIT_LIST_HEAD(&xe->work_period.user_list);
> + timer_setup(&xe->work_period.timer, work_period_timer_fn, 0);
> + xe->work_period.timer.expires = jiffies + msecs_to_jiffies(1000);
> + add_timer(&xe->work_period.timer);
> +
> + xe->work_period.wq = alloc_workqueue("xe-work-period-wq", 0, 0);
> +
> xe->ordered_wq = alloc_ordered_workqueue("xe-ordered-wq", 0);
> xe->unordered_wq = alloc_workqueue("xe-unordered-wq", 0, 0);
> xe->destroy_wq = alloc_workqueue("xe-destroy-wq", 0, 0);
> if (!xe->ordered_wq || !xe->unordered_wq ||
> - !xe->preempt_fence_wq || !xe->destroy_wq) {
> + !xe->preempt_fence_wq || !xe->destroy_wq ||
> + !xe->work_period.wq) {
> /*
> * Cleanup done in xe_device_destroy via
> * drmm_add_action_or_reset register above
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index 01e8fa0d2f9f..32b63b5f1c2e 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -418,6 +418,20 @@ struct xe_device {
> } late;
> } pinned;
>
> + /** @work_period: gpu work period event */
> + struct {
> + /** @lock: lock protecting this structure */
> + spinlock_t lock;
> + /** @timer: timer to give periodic interrupts to emit the
> + * gpu work period event
> + */
> + struct timer_list timer;
> + /** @user_list: list of xe users using this xe device */
> + struct list_head user_list;
> + /** @wq: workqueue for gpu work period event emitting work */
> + struct workqueue_struct *wq;
> + } work_period;
> +
> /** @ufence_wq: user fence wait queue */
> wait_queue_head_t ufence_wq;
>
> @@ -656,6 +670,9 @@ struct xe_file {
> /** @run_ticks: hw engine class run time in ticks for this drm client */
> u64 run_ticks[XE_ENGINE_CLASS_MAX];
>
> + /** @active_duration_ns: total run time in ns for this xe file */
> + u64 active_duration_ns;
> +
> /** @client: drm client */
> struct xe_drm_client *client;
>
> @@ -671,6 +688,16 @@ struct xe_file {
> */
> pid_t pid;
>
> + /**
> + * @user_link: entry into xe_user.filelist list
> + */
> + struct list_head user_link;
> +
> + /**
> + * @user: pointer to the xe user this xe file belongs to
> + */
> + struct xe_user *user;
> +
> /** @refcount: ref count of this xe file */
> struct kref refcount;
> };
> diff --git a/drivers/gpu/drm/xe/xe_drm_client.c b/drivers/gpu/drm/xe/xe_drm_client.c
> index f931ff9b1ec0..7a21d8e83310 100644
> --- a/drivers/gpu/drm/xe/xe_drm_client.c
> +++ b/drivers/gpu/drm/xe/xe_drm_client.c
> @@ -5,10 +5,12 @@
> #include "xe_drm_client.h"
>
> #include <drm/drm_print.h>
> +#include <drm/drm_drv.h>
> #include <uapi/drm/xe_drm.h>
> #include <linux/kernel.h>
> #include <linux/slab.h>
> #include <linux/types.h>
> +#include <linux/spinlock.h>
>
> #include "xe_assert.h"
> #include "xe_bo.h"
> @@ -21,6 +23,9 @@
> #include "xe_pm.h"
> #include "xe_trace.h"
>
> +#define CREATE_TRACE_POINTS
> +#include "xe_power_gpu_work_period_trace.h"
> +
> /**
> * DOC: DRM Client usage stats
> *
> @@ -404,3 +409,106 @@ void xe_drm_client_fdinfo(struct drm_printer *p, struct drm_file *file)
> show_run_ticks(p, file);
> }
> #endif
> +
> +/**
> + * worker thread to emit gpu work period event for this xe user
> + * @work: work instance for this xe user
> + *
> + * Return: void
> + */
> +static inline void work_period_worker(struct work_struct *work)
> +{
> + struct xe_user *user = container_of(work, struct xe_user, work);
> + struct xe_device *xe = user->xe;
> + struct xe_file *xef;
> + struct xe_exec_queue *q;
> + u64 last_active_duration, last_timestamp;
> + u32 gpuid = 0, uid = user->uid;
> + u64 start_time, end_time, active_duration;
> + unsigned long i;
> +
> + last_active_duration = user->active_duration_ns;
> + last_timestamp = user->last_timestamp_ns;
> +
> + xe_pm_runtime_get(xe);
> +
> + mutex_lock(&user->filelist_lock);
> + list_for_each_entry(xef, &user->filelist, user_link) {
> +
> + wait_var_event(&xef->exec_queue.pending_removal,
> + !atomic_read(&xef->exec_queue.pending_removal));
> +
> + /* Accumulate all the exec queues from this user */
> + mutex_lock(&xef->exec_queue.lock);
> + xa_for_each(&xef->exec_queue.xa, i, q) {
> + xe_exec_queue_get(q);
> + mutex_unlock(&xef->exec_queue.lock);
> +
> + xe_exec_queue_update_run_ticks(q);
> +
> + mutex_lock(&xef->exec_queue.lock);
> + xe_exec_queue_put(q);
> + }
> + mutex_unlock(&xef->exec_queue.lock);
> + user->active_duration_ns += xef->active_duration_ns;
> + }
> + mutex_unlock(&user->filelist_lock);
> +
> + xe_pm_runtime_put(xe);
> +
> + start_time = last_timestamp + 1;
> + end_time = ktime_get_raw_ns();
> + active_duration = user->active_duration_ns - last_active_duration;
> + trace_gpu_work_period(gpuid, uid, start_time, end_time, active_duration);
> + user->last_timestamp_ns = end_time;
> +
> + xe_user_put(user);
> +}
> +
> +/**
> + * xe_user_alloc() - Allocate xe user
> + * @void: No arg
> + *
> + * Allocate xe user struct to track activity on the gpu
> + * by the application. Call this API whenever a new app
> + * has opened xe device.
> + *
> + * Return: pointer to user struct or NULL if can't allocate
> + */
> +struct xe_user *xe_user_alloc(void)
> +{
> + struct xe_user *user;
> +
> + user = kzalloc(sizeof(*user), GFP_KERNEL);
> + if (!user)
> + return NULL;
> +
> + kref_init(&user->refcount);
> + mutex_init(&user->filelist_lock);
> + INIT_LIST_HEAD(&user->filelist);
> + INIT_LIST_HEAD(&user->entry);
> + INIT_WORK(&user->work, work_period_worker);
> + return user;
> +}
> +
> +/**
> + * __xe_user_free() - Free user struct
> + * @kref: The reference
> + *
> + * Return: void
> + */
> +void __xe_user_free(struct kref *kref)
> +{
> + struct xe_user *user =
> + container_of(kref, struct xe_user, refcount);
> + struct xe_device *xe = user->xe;
> + unsigned long flags;
> +
> + /* Remove the xe_user from xe_device.user_list */
> + spin_lock_irqsave(&xe->work_period.lock, flags);
> + list_del(&user->entry);
> + spin_unlock_irqrestore(&xe->work_period.lock, flags);
> +
> + drm_dev_put(&user->xe->drm);
> + kfree(user);
> +}
> diff --git a/drivers/gpu/drm/xe/xe_drm_client.h b/drivers/gpu/drm/xe/xe_drm_client.h
> index a9649aa36011..cf5f27e79251 100644
> --- a/drivers/gpu/drm/xe/xe_drm_client.h
> +++ b/drivers/gpu/drm/xe/xe_drm_client.h
> @@ -12,6 +12,7 @@
> #include <linux/rcupdate.h>
> #include <linux/sched.h>
> #include <linux/spinlock.h>
> +#include <linux/workqueue.h>
>
> struct drm_file;
> struct drm_printer;
> @@ -34,7 +35,63 @@ struct xe_drm_client {
> #endif
> };
>
> - static inline struct xe_drm_client *
> +/**
> + * This is a per process/user id structure for a xe device
> + * client. It is allocated when a new process/app opens the
> + * xe device and destroyed when the last xe file belonging
> + * to this user id is destroyed.
> + */
> +struct xe_user {
> + /**
> + * @refcount: reference count
> + */
> + struct kref refcount;
> +
> + /**
> + * @xe: pointer to the xe_device
> + */
> + struct xe_device *xe;
> +
> + /**
> + * @filelist_lock: lock protecting the filelist
> + */
> + struct mutex filelist_lock;
> +
> + /**
> + * @filelist: list of xe files belonging to this xe user
> + */
> + struct list_head filelist;
> +
> + /**
> + * @entry: entry into the xe.work_period.user_list list
> + */
> + struct list_head entry;
> +
> + /**
> + * @work: work to emit the gpu work period event for this
> + * xe user
> + */
> + struct work_struct work;
> +
> + /**
> + * @uid: user id for this xe_user
> + */
> + u32 uid;
> +
> + /**
> + * @active_duration_ns: sum total of xe_file.active_duration_ns
> + * for all xe files belonging to this xe user
> + */
> + u64 active_duration_ns;
> +
> + /**
> + * @last_timestamp_ns: timestamp in ns when we last emitted event
> + * for this xe user
> + */
> + u64 last_timestamp_ns;
> +};
> +
> +static inline struct xe_drm_client *
> xe_drm_client_get(struct xe_drm_client *client)
> {
> kref_get(&client->kref);
> @@ -67,4 +124,20 @@ static inline void xe_drm_client_remove_bo(struct xe_bo *bo)
> {
> }
> #endif
> +
> +struct xe_user *xe_user_alloc(void);
> +
> +static inline struct xe_user *
> +xe_user_get(struct xe_user *user)
> +{
> + kref_get(&user->refcount);
> + return user;
> +}
> +
> +void __xe_user_free(struct kref *kref);
> +
> +static inline void xe_user_put(struct xe_user *user)
> +{
> + kref_put(&user->refcount, __xe_user_free);
> +}
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
> index 6c176183ed58..59d69863f626 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue.c
> +++ b/drivers/gpu/drm/xe/xe_exec_queue.c
> @@ -15,6 +15,7 @@
> #include "xe_dep_scheduler.h"
> #include "xe_device.h"
> #include "xe_gt.h"
> +#include "xe_gt_clock.h"
> #include "xe_hw_engine_class_sysfs.h"
> #include "xe_hw_engine_group.h"
> #include "xe_hw_fence.h"
> @@ -865,6 +866,7 @@ void xe_exec_queue_update_run_ticks(struct xe_exec_queue *q)
> struct xe_device *xe = gt_to_xe(q->gt);
> struct xe_lrc *lrc;
> u64 old_ts, new_ts;
> + struct xe_gt *gt = q->gt;
> int idx;
>
> /*
> @@ -889,6 +891,9 @@ void xe_exec_queue_update_run_ticks(struct xe_exec_queue *q)
> new_ts = xe_lrc_update_timestamp(lrc, &old_ts);
> q->xef->run_ticks[q->class] += (new_ts - old_ts) * q->width;
>
> + q->xef->active_duration_ns +=
> + xe_gt_clock_interval_to_ns(gt, (new_ts - old_ts));
> +
> drm_dev_exit(idx);
> }
>
> diff --git a/drivers/gpu/drm/xe/xe_gt_clock.c b/drivers/gpu/drm/xe/xe_gt_clock.c
> index 4f011d1573c6..6ba807837198 100644
> --- a/drivers/gpu/drm/xe/xe_gt_clock.c
> +++ b/drivers/gpu/drm/xe/xe_gt_clock.c
> @@ -110,3 +110,8 @@ u64 xe_gt_clock_interval_to_ms(struct xe_gt *gt, u64 count)
> {
> return div_u64_roundup(count * MSEC_PER_SEC, gt->info.reference_clock);
> }
> +
> +u64 xe_gt_clock_interval_to_ns(struct xe_gt *gt, u64 count)
> +{
> + return div_u64_roundup(count * NSEC_PER_SEC, gt->info.reference_clock);
> +}
> diff --git a/drivers/gpu/drm/xe/xe_gt_clock.h b/drivers/gpu/drm/xe/xe_gt_clock.h
> index 3adeb7baaca4..bd87971bce97 100644
> --- a/drivers/gpu/drm/xe/xe_gt_clock.h
> +++ b/drivers/gpu/drm/xe/xe_gt_clock.h
> @@ -12,5 +12,6 @@ struct xe_gt;
>
> int xe_gt_clock_init(struct xe_gt *gt);
> u64 xe_gt_clock_interval_to_ms(struct xe_gt *gt, u64 count);
> +u64 xe_gt_clock_interval_to_ns(struct xe_gt *gt, u64 count);
>
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h b/drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h
> new file mode 100644
> index 000000000000..2de05f1b64f3
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h
> @@ -0,0 +1,61 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2024 Intel Corporation
> + */
> +
> +#ifndef _TRACE_POWER_GPU_WORK_PERIOD_INTEL
> +#define _TRACE_POWER_GPU_WORK_PERIOD_INTEL
> +#endif
> +
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM power
> +#undef TRACE_INCLUDE_FILE
> +#define TRACE_INCLUDE_FILE xe_power_gpu_work_period_trace
> +#undef TRACE_INCLUDE_PATH
> +#define TRACE_INCLUDE_PATH .
> +
> +#if !defined(_TRACE_POWER_GPU_WORK_PERIOD_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_POWER_GPU_WORK_PERIOD_H
> +
> +#include <linux/tracepoint.h>
> +
> +TRACE_EVENT(gpu_work_period,
> +
> + TP_PROTO(
> + u32 gpu_id,
> + u32 uid,
> + u64 start_time_ns,
> + u64 end_time_ns,
> + u64 total_active_duration_ns
> + ),
> +
> + TP_ARGS(gpu_id, uid, start_time_ns, end_time_ns, total_active_duration_ns),
> +
> + TP_STRUCT__entry(
> + __field(u32, gpu_id)
> + __field(u32, uid)
> + __field(u64, start_time_ns)
> + __field(u64, end_time_ns)
> + __field(u64, total_active_duration_ns)
> + ),
> +
> + TP_fast_assign(
> + __entry->gpu_id = gpu_id;
> + __entry->uid = uid;
> + __entry->start_time_ns = start_time_ns;
> + __entry->end_time_ns = end_time_ns;
> + __entry->total_active_duration_ns = total_active_duration_ns;
> + ),
> +
> + TP_printk("gpu_id=%u uid=%u start_time_ns=%llu end_time_ns=%llu total_active_duration_ns=%llu",
> + __entry->gpu_id,
> + __entry->uid,
> + __entry->start_time_ns,
> + __entry->end_time_ns,
> + __entry->total_active_duration_ns)
> +);
> +
> +#endif /* _TRACE_POWER_GPU_WORK_PERIOD_H */
> +
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>
> --
> 2.49.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH] ANDROID: Add GPU work period support for Xe driver
2025-08-08 9:09 [PATCH] ANDROID: Add GPU work period support for Xe driver Aakash Deep Sarkar
` (4 preceding siblings ...)
2025-08-08 14:47 ` [PATCH] " Rodrigo Vivi
@ 2025-08-08 17:14 ` Matthew Brost
5 siblings, 0 replies; 7+ messages in thread
From: Matthew Brost @ 2025-08-08 17:14 UTC (permalink / raw)
To: Aakash Deep Sarkar; +Cc: intel-xe, jeevaka.badrappan
On Fri, Aug 08, 2025 at 09:09:19AM +0000, Aakash Deep Sarkar wrote:
> This patch implements the Android requirement GPU work
> period event for Intel Xe driver.
>
Since this is an Android requirement, can this feature be disabled on
non-Android builds? Having a worker performing sampling has a non-zero
cost in terms of CPU cycles, plus runtime PM waking the device.
I’m not suggesting compiling out the implementation—just never starting
the sample timer on non-Android builds.
> |GpuWorkPeriodEvent| defines a non-overlapping, non-zero period
> of time from |start_time_ns| (inclusive) until |end_time_ns|
> (exclusive) for a given |uid|, and includes details of how much
> work the GPU was performing for |uid| during the period. When
> GPU work for a given |uid| runs on the GPU, the driver must track
> one or more periods that cover the time where the work was running,
> and emit events soon after.
>
> Full requirement is defined in the following file:
> https://cs.android.com/android/platform/superproject/main/+\
> /main:frameworks/native/services/gpuservice/gpuwork/bpfprogs/gpuWork.c;l=35
>
> The requirement is implemented using a timer to give periodic
> interrupts and a worker thread per user id instance to accumulate
> its run time on gpu and emit the event. Each user id instance is
> tracked using a xe_user structure and the runtime is updated at
> each timer interrupt. The timer period is hardcoded to 500 msecs.
>
> The runtime on the gpu is collected for each xe file individually
> inside the function xe_exec_queue_update_run_ticks() and accumulated
> into the corresponding xe_user active_duration_ns field. The HW
> Context timestamp field in the GTT is used to derive the runtime
> in clock ticks and then converted into nanosecs before updating the
> active duration.
>
> Signed-off-by: Aakash Deep Sarkar <aakash.deep.sarkar@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 98 +++++++++++++++-
> drivers/gpu/drm/xe/xe_device_types.h | 27 +++++
> drivers/gpu/drm/xe/xe_drm_client.c | 108 ++++++++++++++++++
> drivers/gpu/drm/xe/xe_drm_client.h | 75 +++++++++++-
> drivers/gpu/drm/xe/xe_exec_queue.c | 5 +
> drivers/gpu/drm/xe/xe_gt_clock.c | 5 +
> drivers/gpu/drm/xe/xe_gt_clock.h | 1 +
> .../drm/xe/xe_power_gpu_work_period_trace.h | 61 ++++++++++
> 8 files changed, 378 insertions(+), 2 deletions(-)
> create mode 100644 drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 57edbc63da6f..116247007a4d 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -8,6 +8,7 @@
> #include <linux/aperture.h>
> #include <linux/delay.h>
> #include <linux/fault-inject.h>
> +#include <linux/jiffies.h>
> #include <linux/units.h>
>
> #include <drm/drm_atomic_helper.h>
> @@ -76,9 +77,13 @@ static int xe_file_open(struct drm_device *dev, struct drm_file *file)
> {
> struct xe_device *xe = to_xe_device(dev);
> struct xe_drm_client *client;
> + struct xe_user *user;
> struct xe_file *xef;
> int ret = -ENOMEM;
> + unsigned long flags;
> + int uid = -EINVAL;
> struct task_struct *task = NULL;
> + const struct cred *cred = NULL;
>
> xef = kzalloc(sizeof(*xef), GFP_KERNEL);
> if (!xef)
> @@ -103,13 +108,66 @@ static int xe_file_open(struct drm_device *dev, struct drm_file *file)
> file->driver_priv = xef;
> kref_init(&xef->refcount);
>
> + INIT_LIST_HEAD(&xef->user_link);
> +
> task = get_pid_task(rcu_access_pointer(file->pid), PIDTYPE_PID);
> if (task) {
> + cred = get_task_cred(task);
> + if (cred) {
> + uid = (int) cred->euid.val;
> + put_cred(cred);
> + }
> xef->process_name = kstrdup(task->comm, GFP_KERNEL);
> xef->pid = task->pid;
> put_task_struct(task);
> }
>
> + if (uid < 0)
> + goto out;
> +
> + /*
> + * Check if the calling process/uid has already been registered
> + * with the xe device during a previous open call. If so then
> + * take a reference to this xe file and add it to the list of xe
> + * files belonging to the this user
> + */
> + spin_lock_irqsave(&xe->work_period.lock, flags);
I don't think you need irqsave rather just spin_lock_irq as this code in
always in process context.
> + list_for_each_entry(user, &xe->work_period.user_list, entry) {
> + if (user->uid == uid) {
> + xef->user = xe_user_get(user);
> + spin_unlock_irqrestore(&xe->work_period.lock, flags);
> + goto filelist_add;
> + }
> + }
> + spin_unlock_irqrestore(&xe->work_period.lock, flags);
> +
> +
> + /*
> + * We couldn't find a xe user for this process. Allocate a new
> + * struct xe_user and register it with this xe device
> + */
> + user = xe_user_alloc();
> + if (!user)
> + goto out;
> +
> + user->uid = (unsigned int) uid;
> + user->last_timestamp_ns = ktime_get_raw_ns();
> + user->xe = xe;
> +
> + /* Add this xe_user to xe_device->work_period.user_list */
> + spin_lock_irqsave(&xe->work_period.lock, flags);
> + list_add(&user->entry, &xe->work_period.user_list);
> + spin_unlock_irqrestore(&xe->work_period.lock, flags);
> +
> + drm_dev_get(&xe->drm);
> + xef->user = user;
> +
> +filelist_add:
> + /* Add this xe_file to xe_user->filelist */
> + mutex_lock(&user->filelist_lock);
> + list_add(&xef->user_link, &user->filelist);
> + mutex_unlock(&user->filelist_lock);
> +out:
> return 0;
> }
>
> @@ -124,6 +182,12 @@ static void xe_file_destroy(struct kref *ref)
>
> xe_drm_client_put(xef->client);
> kfree(xef->process_name);
> +
> + mutex_lock(&xef->user->filelist_lock);
> + list_del(&xef->user_link);
> + mutex_unlock(&xef->user->filelist_lock);
> + xe_user_put(xef->user);
> +
> kfree(xef);
> }
>
> @@ -347,6 +411,23 @@ static int xe_mmap(struct file *filp, struct vm_area_struct *vma)
> return drm_gem_mmap(filp, vma);
> }
>
> +static void work_period_timer_fn(struct timer_list *timer)
> +{
> + struct xe_device *xe = container_of(timer, typeof(*xe), work_period.timer);
> + struct xe_user *user;
> + unsigned long timeout = 0;
> +
> + spin_lock(&xe->work_period.lock);
> + list_for_each_entry(user, &xe->work_period.user_list, entry) {
> + xe_user_get(user);
I’m pretty sure it’s possible to leak a ref here. If work_period.wq is
already queued, it won’t get queued again.
Beyond that, do you really need a timer here? Could every xe_user just
have a delayed worker that continually queues itself?
Also, the work_period.user_list is a little odd. If you get rid of the
timer and use a delayed worker, I think you could use an xarray, indexed
by uid, to store xe_user and have it remove itself from the xarray when
its refcount goes to zero.
> + queue_work(xe->work_period.wq, &user->work);
> + }
> + spin_unlock(&xe->work_period.lock);
> + timeout = jiffies + msecs_to_jiffies(500);
> +
> + mod_timer(timer, timeout);
> +}
> +
> static const struct file_operations xe_driver_fops = {
> .owner = THIS_MODULE,
> .open = drm_open,
> @@ -409,6 +490,11 @@ static void xe_device_destroy(struct drm_device *dev, void *dummy)
> if (xe->destroy_wq)
> destroy_workqueue(xe->destroy_wq);
>
> + if (xe->work_period.wq)
> + destroy_workqueue(xe->work_period.wq);
> +
> + timer_delete_sync(&xe->work_period.timer);
> +
> ttm_device_fini(&xe->ttm);
> }
>
> @@ -477,11 +563,21 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
>
> xe->preempt_fence_wq = alloc_ordered_workqueue("xe-preempt-fence-wq",
> WQ_MEM_RECLAIM);
> +
> + spin_lock_init(&xe->work_period.lock);
> + INIT_LIST_HEAD(&xe->work_period.user_list);
> + timer_setup(&xe->work_period.timer, work_period_timer_fn, 0);
> + xe->work_period.timer.expires = jiffies + msecs_to_jiffies(1000);
> + add_timer(&xe->work_period.timer);
> +
> + xe->work_period.wq = alloc_workqueue("xe-work-period-wq", 0, 0);
We are a little overzealous in allocating work queues in Xe. I would
like to reduce the number of WQs in Xe — some are certainly needed, but
others are not. I’d say this usage falls into the “not needed” category;
I believe one of the system_wqs here would work just fine.
> +
> xe->ordered_wq = alloc_ordered_workqueue("xe-ordered-wq", 0);
> xe->unordered_wq = alloc_workqueue("xe-unordered-wq", 0, 0);
> xe->destroy_wq = alloc_workqueue("xe-destroy-wq", 0, 0);
> if (!xe->ordered_wq || !xe->unordered_wq ||
> - !xe->preempt_fence_wq || !xe->destroy_wq) {
> + !xe->preempt_fence_wq || !xe->destroy_wq ||
> + !xe->work_period.wq) {
> /*
> * Cleanup done in xe_device_destroy via
> * drmm_add_action_or_reset register above
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index 01e8fa0d2f9f..32b63b5f1c2e 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -418,6 +418,20 @@ struct xe_device {
> } late;
> } pinned;
>
> + /** @work_period: gpu work period event */
> + struct {
> + /** @lock: lock protecting this structure */
> + spinlock_t lock;
> + /** @timer: timer to give periodic interrupts to emit the
> + * gpu work period event
> + */
> + struct timer_list timer;
> + /** @user_list: list of xe users using this xe device */
> + struct list_head user_list;
> + /** @wq: workqueue for gpu work period event emitting work */
> + struct workqueue_struct *wq;
> + } work_period;
> +
> /** @ufence_wq: user fence wait queue */
> wait_queue_head_t ufence_wq;
>
> @@ -656,6 +670,9 @@ struct xe_file {
> /** @run_ticks: hw engine class run time in ticks for this drm client */
> u64 run_ticks[XE_ENGINE_CLASS_MAX];
>
> + /** @active_duration_ns: total run time in ns for this xe file */
> + u64 active_duration_ns;
> +
> /** @client: drm client */
> struct xe_drm_client *client;
>
> @@ -671,6 +688,16 @@ struct xe_file {
> */
> pid_t pid;
>
> + /**
> + * @user_link: entry into xe_user.filelist list
> + */
> + struct list_head user_link;
> +
> + /**
> + * @user: pointer to the xe user this xe file belongs to
> + */
> + struct xe_user *user;
> +
> /** @refcount: ref count of this xe file */
> struct kref refcount;
> };
> diff --git a/drivers/gpu/drm/xe/xe_drm_client.c b/drivers/gpu/drm/xe/xe_drm_client.c
> index f931ff9b1ec0..7a21d8e83310 100644
> --- a/drivers/gpu/drm/xe/xe_drm_client.c
> +++ b/drivers/gpu/drm/xe/xe_drm_client.c
> @@ -5,10 +5,12 @@
> #include "xe_drm_client.h"
>
> #include <drm/drm_print.h>
> +#include <drm/drm_drv.h>
> #include <uapi/drm/xe_drm.h>
> #include <linux/kernel.h>
> #include <linux/slab.h>
> #include <linux/types.h>
> +#include <linux/spinlock.h>
>
> #include "xe_assert.h"
> #include "xe_bo.h"
> @@ -21,6 +23,9 @@
> #include "xe_pm.h"
> #include "xe_trace.h"
>
> +#define CREATE_TRACE_POINTS
> +#include "xe_power_gpu_work_period_trace.h"
> +
> /**
> * DOC: DRM Client usage stats
> *
> @@ -404,3 +409,106 @@ void xe_drm_client_fdinfo(struct drm_printer *p, struct drm_file *file)
> show_run_ticks(p, file);
> }
> #endif
> +
> +/**
> + * worker thread to emit gpu work period event for this xe user
> + * @work: work instance for this xe user
> + *
> + * Return: void
> + */
> +static inline void work_period_worker(struct work_struct *work)
> +{
> + struct xe_user *user = container_of(work, struct xe_user, work);
> + struct xe_device *xe = user->xe;
> + struct xe_file *xef;
> + struct xe_exec_queue *q;
> + u64 last_active_duration, last_timestamp;
> + u32 gpuid = 0, uid = user->uid;
> + u64 start_time, end_time, active_duration;
> + unsigned long i;
> +
> + last_active_duration = user->active_duration_ns;
> + last_timestamp = user->last_timestamp_ns;
> +
> + xe_pm_runtime_get(xe);
> +
> + mutex_lock(&user->filelist_lock);
> + list_for_each_entry(xef, &user->filelist, user_link) {
> +
> + wait_var_event(&xef->exec_queue.pending_removal,
> + !atomic_read(&xef->exec_queue.pending_removal));
> +
> + /* Accumulate all the exec queues from this user */
> + mutex_lock(&xef->exec_queue.lock);
> + xa_for_each(&xef->exec_queue.xa, i, q) {
> + xe_exec_queue_get(q);
> + mutex_unlock(&xef->exec_queue.lock);
> +
> + xe_exec_queue_update_run_ticks(q);
> +
> + mutex_lock(&xef->exec_queue.lock);
> + xe_exec_queue_put(q);
> + }
> + mutex_unlock(&xef->exec_queue.lock);
> + user->active_duration_ns += xef->active_duration_ns;
> + }
> + mutex_unlock(&user->filelist_lock);
> +
> + xe_pm_runtime_put(xe);
> +
> + start_time = last_timestamp + 1;
> + end_time = ktime_get_raw_ns();
> + active_duration = user->active_duration_ns - last_active_duration;
> + trace_gpu_work_period(gpuid, uid, start_time, end_time, active_duration);
> + user->last_timestamp_ns = end_time;
> +
> + xe_user_put(user);
> +}
> +
> +/**
> + * xe_user_alloc() - Allocate xe user
> + * @void: No arg
> + *
> + * Allocate xe user struct to track activity on the gpu
> + * by the application. Call this API whenever a new app
> + * has opened xe device.
> + *
> + * Return: pointer to user struct or NULL if can't allocate
> + */
> +struct xe_user *xe_user_alloc(void)
If possible, I stick all xe_user implementation into it's own file +
define types in a dedicated header.
Matt
> +{
> + struct xe_user *user;
> +
> + user = kzalloc(sizeof(*user), GFP_KERNEL);
> + if (!user)
> + return NULL;
> +
> + kref_init(&user->refcount);
> + mutex_init(&user->filelist_lock);
> + INIT_LIST_HEAD(&user->filelist);
> + INIT_LIST_HEAD(&user->entry);
> + INIT_WORK(&user->work, work_period_worker);
> + return user;
> +}
> +
> +/**
> + * __xe_user_free() - Free user struct
> + * @kref: The reference
> + *
> + * Return: void
> + */
> +void __xe_user_free(struct kref *kref)
> +{
> + struct xe_user *user =
> + container_of(kref, struct xe_user, refcount);
> + struct xe_device *xe = user->xe;
> + unsigned long flags;
> +
> + /* Remove the xe_user from xe_device.user_list */
> + spin_lock_irqsave(&xe->work_period.lock, flags);
> + list_del(&user->entry);
> + spin_unlock_irqrestore(&xe->work_period.lock, flags);
> +
> + drm_dev_put(&user->xe->drm);
> + kfree(user);
> +}
> diff --git a/drivers/gpu/drm/xe/xe_drm_client.h b/drivers/gpu/drm/xe/xe_drm_client.h
> index a9649aa36011..cf5f27e79251 100644
> --- a/drivers/gpu/drm/xe/xe_drm_client.h
> +++ b/drivers/gpu/drm/xe/xe_drm_client.h
> @@ -12,6 +12,7 @@
> #include <linux/rcupdate.h>
> #include <linux/sched.h>
> #include <linux/spinlock.h>
> +#include <linux/workqueue.h>
>
> struct drm_file;
> struct drm_printer;
> @@ -34,7 +35,63 @@ struct xe_drm_client {
> #endif
> };
>
> - static inline struct xe_drm_client *
> +/**
> + * This is a per process/user id structure for a xe device
> + * client. It is allocated when a new process/app opens the
> + * xe device and destroyed when the last xe file belonging
> + * to this user id is destroyed.
> + */
> +struct xe_user {
> + /**
> + * @refcount: reference count
> + */
> + struct kref refcount;
> +
> + /**
> + * @xe: pointer to the xe_device
> + */
> + struct xe_device *xe;
> +
> + /**
> + * @filelist_lock: lock protecting the filelist
> + */
> + struct mutex filelist_lock;
> +
> + /**
> + * @filelist: list of xe files belonging to this xe user
> + */
> + struct list_head filelist;
> +
> + /**
> + * @entry: entry into the xe.work_period.user_list list
> + */
> + struct list_head entry;
> +
> + /**
> + * @work: work to emit the gpu work period event for this
> + * xe user
> + */
> + struct work_struct work;
> +
> + /**
> + * @uid: user id for this xe_user
> + */
> + u32 uid;
> +
> + /**
> + * @active_duration_ns: sum total of xe_file.active_duration_ns
> + * for all xe files belonging to this xe user
> + */
> + u64 active_duration_ns;
> +
> + /**
> + * @last_timestamp_ns: timestamp in ns when we last emitted event
> + * for this xe user
> + */
> + u64 last_timestamp_ns;
> +};
> +
> +static inline struct xe_drm_client *
> xe_drm_client_get(struct xe_drm_client *client)
> {
> kref_get(&client->kref);
> @@ -67,4 +124,20 @@ static inline void xe_drm_client_remove_bo(struct xe_bo *bo)
> {
> }
> #endif
> +
> +struct xe_user *xe_user_alloc(void);
> +
> +static inline struct xe_user *
> +xe_user_get(struct xe_user *user)
> +{
> + kref_get(&user->refcount);
> + return user;
> +}
> +
> +void __xe_user_free(struct kref *kref);
> +
> +static inline void xe_user_put(struct xe_user *user)
> +{
> + kref_put(&user->refcount, __xe_user_free);
> +}
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
> index 6c176183ed58..59d69863f626 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue.c
> +++ b/drivers/gpu/drm/xe/xe_exec_queue.c
> @@ -15,6 +15,7 @@
> #include "xe_dep_scheduler.h"
> #include "xe_device.h"
> #include "xe_gt.h"
> +#include "xe_gt_clock.h"
> #include "xe_hw_engine_class_sysfs.h"
> #include "xe_hw_engine_group.h"
> #include "xe_hw_fence.h"
> @@ -865,6 +866,7 @@ void xe_exec_queue_update_run_ticks(struct xe_exec_queue *q)
> struct xe_device *xe = gt_to_xe(q->gt);
> struct xe_lrc *lrc;
> u64 old_ts, new_ts;
> + struct xe_gt *gt = q->gt;
> int idx;
>
> /*
> @@ -889,6 +891,9 @@ void xe_exec_queue_update_run_ticks(struct xe_exec_queue *q)
> new_ts = xe_lrc_update_timestamp(lrc, &old_ts);
> q->xef->run_ticks[q->class] += (new_ts - old_ts) * q->width;
>
> + q->xef->active_duration_ns +=
> + xe_gt_clock_interval_to_ns(gt, (new_ts - old_ts));
> +
> drm_dev_exit(idx);
> }
>
> diff --git a/drivers/gpu/drm/xe/xe_gt_clock.c b/drivers/gpu/drm/xe/xe_gt_clock.c
> index 4f011d1573c6..6ba807837198 100644
> --- a/drivers/gpu/drm/xe/xe_gt_clock.c
> +++ b/drivers/gpu/drm/xe/xe_gt_clock.c
> @@ -110,3 +110,8 @@ u64 xe_gt_clock_interval_to_ms(struct xe_gt *gt, u64 count)
> {
> return div_u64_roundup(count * MSEC_PER_SEC, gt->info.reference_clock);
> }
> +
> +u64 xe_gt_clock_interval_to_ns(struct xe_gt *gt, u64 count)
> +{
> + return div_u64_roundup(count * NSEC_PER_SEC, gt->info.reference_clock);
> +}
> diff --git a/drivers/gpu/drm/xe/xe_gt_clock.h b/drivers/gpu/drm/xe/xe_gt_clock.h
> index 3adeb7baaca4..bd87971bce97 100644
> --- a/drivers/gpu/drm/xe/xe_gt_clock.h
> +++ b/drivers/gpu/drm/xe/xe_gt_clock.h
> @@ -12,5 +12,6 @@ struct xe_gt;
>
> int xe_gt_clock_init(struct xe_gt *gt);
> u64 xe_gt_clock_interval_to_ms(struct xe_gt *gt, u64 count);
> +u64 xe_gt_clock_interval_to_ns(struct xe_gt *gt, u64 count);
>
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h b/drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h
> new file mode 100644
> index 000000000000..2de05f1b64f3
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h
> @@ -0,0 +1,61 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2024 Intel Corporation
> + */
> +
> +#ifndef _TRACE_POWER_GPU_WORK_PERIOD_INTEL
> +#define _TRACE_POWER_GPU_WORK_PERIOD_INTEL
> +#endif
> +
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM power
> +#undef TRACE_INCLUDE_FILE
> +#define TRACE_INCLUDE_FILE xe_power_gpu_work_period_trace
> +#undef TRACE_INCLUDE_PATH
> +#define TRACE_INCLUDE_PATH .
> +
> +#if !defined(_TRACE_POWER_GPU_WORK_PERIOD_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_POWER_GPU_WORK_PERIOD_H
> +
> +#include <linux/tracepoint.h>
> +
> +TRACE_EVENT(gpu_work_period,
> +
> + TP_PROTO(
> + u32 gpu_id,
> + u32 uid,
> + u64 start_time_ns,
> + u64 end_time_ns,
> + u64 total_active_duration_ns
> + ),
> +
> + TP_ARGS(gpu_id, uid, start_time_ns, end_time_ns, total_active_duration_ns),
> +
> + TP_STRUCT__entry(
> + __field(u32, gpu_id)
> + __field(u32, uid)
> + __field(u64, start_time_ns)
> + __field(u64, end_time_ns)
> + __field(u64, total_active_duration_ns)
> + ),
> +
> + TP_fast_assign(
> + __entry->gpu_id = gpu_id;
> + __entry->uid = uid;
> + __entry->start_time_ns = start_time_ns;
> + __entry->end_time_ns = end_time_ns;
> + __entry->total_active_duration_ns = total_active_duration_ns;
> + ),
> +
> + TP_printk("gpu_id=%u uid=%u start_time_ns=%llu end_time_ns=%llu total_active_duration_ns=%llu",
> + __entry->gpu_id,
> + __entry->uid,
> + __entry->start_time_ns,
> + __entry->end_time_ns,
> + __entry->total_active_duration_ns)
> +);
> +
> +#endif /* _TRACE_POWER_GPU_WORK_PERIOD_H */
> +
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>
> --
> 2.49.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread